PingCastle Notify is a tool that will monitor your PingCastle reports ! You will be notified every time a change between a scan and a previous scan is made.
How it works ? PingCastle-Notify is a PS1 script that will run a PingCastle scan, compare the difference between a previous scan, highlight the diff and send the result into a Slack / Teams channel or a log file !
The slack/teams/log message will notify you regarding the different states: correction, recession etc
⚠️ If you don't want to use Slack or Teams setSLACK_ENABLED=0
andTEAMS_ENABLED=0
in the.env
file. Skip the step "Create a BOT" and check the log file inside the Reports folder.
▶️ No new vulnerability
No result in slack since reports are the same
🔰 Adding the result of the current scan
Set the variable $print_current_result
to 1 in the script, the rules flagged on the current scan will be added as a thread into Slack or after the rule diff on Teams.
Slack | Teams |
---|---|
![]() |
![]() |
SECU-TOOL-SCAN/
- PingCastle-Notify.ps1
- .env <-- Configuration file
- modules/
- Slack.psm1
- Teams.psm1
- PingCastle/
- Reports/
- domain.local.xml
- domain.local.html
- scan.logs <-- contains the logs of the scan (diff scan)
- Pingcastle.exe
- ...
- Download PingCastle
- Unzip the archive
- Create a "Reports" folder inside the PingCastle folder
- Download the PingCastle-Notify repository
- Copy
.env.example
to.env
and configure your settings
Create a .env
file in the root directory with your configuration:
# Copy the example file
cp .env.example .env
Then edit the .env
file with your settings:
# Slack Configuration
SLACK_CHANNEL=#pingcastle-scan
SLACK_TOKEN=xoxb-your-slack-bot-token-here
SLACK_ENABLED=1
# Teams Configuration
TEAMS_ENABLED=0
TEAMS_URI=https://your-org.webhook.office.com/webhookb2/your-webhook-url-here
# Report Configuration
PRINT_CURRENT_RESULT=1
# Domain Configuration
DOMAIN=your-domain.local
Configuration Options:
SLACK_ENABLED
: Set to1
to enable Slack notifications,0
to disableSLACK_CHANNEL
: The Slack channel to send notifications to (include the #)SLACK_TOKEN
: Your Slack bot token (starts withxoxb-
)TEAMS_ENABLED
: Set to1
to enable Teams notifications,0
to disableTEAMS_URI
: Your Teams webhook URLPRINT_CURRENT_RESULT
: Set to1
to include current scan results in notificationsDOMAIN
: Your domain name (optional, will use$env:USERDNSDOMAIN
if not set)
▶️ Slack BOT
- In Slack create an application https://api.slack.com/apps
- Add the following rights
- Click on "Add features and functionality" -> Bots (configure the name)
- Click on "Add features and functionality" -> Permissions (add the following permissions)
- Generate a "Bot User OAuth Token" on the Permissions tab
- Get your token and add it to the
.env
file asSLACK_TOKEN
- Create a slack channel and add your bot user to the channel
- You can test your bot using https://api.slack.com/methods/chat.postMessage/test
- Add the channel to the
.env
file asSLACK_CHANNEL
- Set
SLACK_ENABLED=1
in your.env
file - Run the script to test using this command:
powershell.exe -exec bypass C:\YOUR_PATH\SECU-TOOL-SCAN\PingCastle-Notify.ps1
▶️ Teams BOT
- Create a channel pingcastle-scan
- Click on the "..." dots and select "Connectors"
- Search for Webhook
- Add the webhook
- Re-click on the connectors button and on the webhook click "configure"
- Add a title and a logo and click Create, copy the webhook URL
- Update the
.env
file:- Set
TEAMS_ENABLED=1
- Set
TEAMS_URI
to your webhook URL
- Set
On your Windows Server go to
- Create a service account that will run the PS1 script every night (no need to set the service account as domain admin)
- Give privileges to the service account on the folder "Reports"
- Run taskschd.msc to open the Scheduler Task
- Create a Task and use the service account you just created
- In Actions tab set "Start a program" -> "Script":
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-> "Arguments" ->-exec bypass -f C:\PINGCASTLE\Pingcastle-Notify.ps1
- Give the permission "Log on as Batch Job" to service account https://danblee.com/log-on-as-batch-job-rights-for-task-scheduler/
- Run the scheduled task to test the result
- Enjoy :)
The PingCastle-Notify system is designed to be easily extensible. You can add new notification connectors (Discord, Email, SMS, etc.) by creating a new module file.
Create a new PowerShell module file in the modules
folder:
modules/YourConnector.psm1
- Place your module file in the
modules
folder - Add configuration to
.env
- Run the script - your connector will be automatically discovered and loaded
- Check the console output for "Loading module: YourConnector"
- No changes needed to the main script when adding new connectors
- The system automatically discovers all
.psm1
files in themodules
folder - Function names must follow the pattern:
FunctionName-YourConnectorName
- Your connector will only be used if enabled in the
.env
file - Both hashtable and string body types are supported
- Vincent Le Toux - https://twitter.com/mysmartlogon
- Romain Tiennot - https://github.com/aikiox
- Lilian Arago - https://github.com/NahisWayard
- Romain Bourgue - https://github.com/raomin
MIT License