
Canary Hunterは、canarytokens.org上で無料で生成されたさまざまな形式の一般的なカナリーをチェックするための、手軽なPowerShellスクリプトを目指しています。
過去数年にわたり複数のレッドチーム演習を実施する中で、実行したアクションに対してSOCに警告を発する可能性のあるCanary Tokenに何度も遭遇しました。そのため、環境内に存在するファイル内でこれらのカナリーを検出する方法がないか、しばらく徹底的に調査しました。Canary Hunterは、canarytokens.orgで無料生成された様々な形式の一般的なカナリーを迅速にチェックするために作成されました。
Canary Tokenは、防御者が侵害を検出するための(攻撃者に自ら存在を宣言させることによる)無料で迅速かつ手間のかからない方法です。Canary Tokenとは何か、また無料での生成方法の詳細については、以下を確認してください。 https://blog.thinkst.com/p/canarytokensorg-quick-free-detection.html
現在、このスクリプトは以下の形式のカナリーを検出できます。
PS C:\> Import-Module .\CanaryHunter.psd1
docxをzipにコピーし、Canary Tokenドメインを含む正規表現をXMLコンテンツから検索します。
PS C:\> Invoke-DocxCheck -DocxPath gwfrr71nre84bk5gobf3h96ms.docx
Url Found:
http://canarytokens.com/feedback/traffic/gwfrr71nre84bk5gobf3h96ms/index.html
xlsxをzipにコピーし、Canary Tokenドメインを含む正規表現をxml.relsコンテンツから検索します。
PS C:\> Invoke-XlsxCheck -XlsxPath .\gwfrr71nre84bk5gobf3h96ms.xlsx
Url Found:
http://canarytokens.com/images/tags/articles/gwfrr71nre84bk5gobf3h96ms/contact.php
指定された.pdfに対してPDFStreamDumperを実行し、.unkストリームファイル内のキーワード"Canary"を検索します。
PS C:\> Invoke-PDFCheck -StreamDumperPath C:\PDFStreamDumper\PDFStreamDumper.exe -PDFPath .\gwfrr71nre84bk5gobf3h96ms.pdf
Url Found:
http://gwfrr71nre84bk5gobf3h96ms.canarytokens.net/RNGPLTCJSTEKJHOMLLYCQINNXOVOWCUVME
デフォルトでは"HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit"をチェックしてサイレント終了監視を使用するプロセスを探し、Monitor Processプロパティに対して正規表現を実行します。
PS C:\> Invoke-RegistryCheck
Sensitive Command Canary Found For:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\net.exe
Monitor Process Canary Value Found:
cmd.exe /c start /min powershell.exe -windowstyle hidden -command "$($u=$(\"u$env:username\"
-replace('[^\x00-\x7f]|\s', ''))[0..63] -join '';$c=$(\"c$env:computername\" -replace('[^\x00-\x7f]|\s', ''));
Resolve-DnsName -Name \"$c.UN.$u.CMD.gwfrr71nre84bk5gobf3h96ms.canarytokens.com\")"
Bobby Linのブログに基づき、無料のCanary tokenサービスで使用されているAWSアカウントに属する可能性のあるAWSアクセスキーをスキャンします。
PS C:\> Invoke-AWSCheck -AWSPath .\AWS.config
Possible Canary Config Found:
AWS.config:2:aws_access_key_id = AKIAYVP4CIPPJUYTRES
既知のCanary Token IPアドレスを検出するため、WireGuard設定をスキャンします。
PS C:\> Invoke-WireguardCheck -WireGuardPath .\WireguardConfig
Possible Canary Config Found:
Endpoint = 52.18.63.80
既知のCanary Token IPアドレスを検出するため、Kube設定をスキャンします。
PS C:\> Invoke-KubeCheck -KubeConfigPath .\KubeConfig
Possible Canary Config Found:
server: https://52.18.63.80:6443
MYSQLダンプをスキャンしてSET @b=を探し、MASTER HOSTに既知のCanary Token IPアドレスが含まれているかどうかを正規表現で判定します。
PS C:\> Invoke-MySqlDumpCheck -MySQLDumpPath .\gwfrr71nre84bk5gobf3h96ms_mysql_dump.sql
Url Found:
MASTER_HOST='gwfrr71nre84bk5gobf3h96ms.canarytokens.com'
既知のCanary IPをブロックします。
PS C:\> Invoke-BlockCanaries
DisplayName : Block All Known Canary IP Addresses
Enabled : True
Profile : Any
Direction : Outbound
Action : Block
Firewall Rule to Block Canary IP Addresses Succesffully Created