2020年12月25日金曜日

SolarWinds SunBurstマルウェアの検知とブロックの実現

2020年12月13日にCISA(The Cybersecurity and Infrastructure Security Agency),CERT(Computer Emergency Readiness Team)がアナウンスしたSunBurstマルウェアに対して、FireEyeとMicrosoftがキルスイッチ(avsvmcloud[.]comの名前解決の押収によるC2サーバーへの接続不可)を作成しました。

文:ジュピターテクノロジー よしひろ


このキルスイッチによって、SunBurstの影響は限定的となりつつありますが、ntop製品を活用してこれを検知・ブロックできるか?の疑問に回答したいと思います。


本ブログ記事は、ntop社のブログ「Efficiently Detecting and Blocking SunBurst Malware」を意訳してご紹介しております。


12月初旬にSunBurstと名付けられたマルウェアが明らかになり、直ぐに対策が講じられました。

実際にSnortやSuricataは、対応するルールを開示しました。


ntop社はこのルールを分析し、ntopが提供するツールでSunBurstを検知しブロックできるか?の検証をしました。


この疑問に対する答えは、YESです。


先ずは上記のルールをいくつかみてみましょう。

any/anyでルールが記述されていることに気が付くと思います。

これは、IDSは総てのシングルコネクションを監視することを意味します。

このIDSの総チェックによって、IDS自体のパフォーマンスが低下し誤検知が発生する可能性があります。


alert tcp any any <> any 443 (msg:"APT.Backdoor.MSIL.SUNBURST"; content:"|16 03|"; depth:2; content:"avsvmcloud.com"; distance:0; sid:77600845; rev:1;) 

alert tcp any any <> any 443 (msg:"APT.Backdoor.MSIL.SUNBURST"; content:"|16 03|"; depth:2; content:"|55 04 03|"; distance:0; content:"digitalcollege.org"; within:50; sid:77600846; rev:1;) 

alert tcp any any <> any 443 (msg:"APT.Backdoor.MSIL.SUNBURST"; content:"|16 03|"; depth:2; content:"|55 04 03|"; distance:0; content:"freescanonline.com"; within:50; sid:77600847; rev:1;)



SunBurstは、TLS SNI(Server Name Indication)で検索できます。 



つまり、ntopのnDPIで検知することができます。

上記のルールは、暗号化されたトラフィックの接続前に実行されるため、最適ではありません。

非常に初歩的なルールであり、範囲が制限されてしまいます。

一方、nDPIがどのようにSunBurstの実際のTLSトラフィックを分析しているかを確認してみましょう。


TCP 192.168.1.102:51293 <-> 20.140.0.1:443 [proto: 91/TLS][cat: Web/5][7 pkts/998 bytes <-> 6 pkts/1553 bytes][Goodput ratio: 52/74][1.74 sec][ALPN: h2;http/1.1][bytes ratio: -0.218 (Download)][IAT c2s/s2c min/avg/max/stddev: 0/109 253/420 1142/1033 447/434][Pkt Len c2s/s2c min/avg/max/stddev: 66/66 143/259 583/1215 180/428][Risk: ** Self-signed Certificate **][TLSv1.2][Client: avsvmcloud.com][JA3C: 2a26b1a62e40d25d4de3babc9d532f30][JA3S: 364ff14b04ef93c3b4cfa429d729c0d9][Issuer: CN=localhost][Subject: CN=localhost][Certificate SHA-1: D2:D1:B8:2B:15:FB:C9:51:B7:24:FF:56:B4:EF:9D:82:E2:E5:EA:B3][Validity: 2020-10-14 21:20:12 – 2022-12-17 11:32:25][Cipher: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384][Plen Bins: 33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0]


ご覧のとおり、自己署名TLS証明書であることが分かります。

他のルールもみてみましょう。


alert tcp any any -> any any (msg:"APT.Backdoor.MSIL.SUNBURST"; content:"T "; offset:2; depth:3; content:"Host:"; content:"freescanonline.com"; within:100; sid:77600852; rev:1;) 

alert tcp any any -> any any (msg:"APT.Backdoor.MSIL.SUNBURST"; content:"T "; offset:2; depth:3; content:"Host:"; content:"deftsecurity.com"; within:100; sid:77600853; rev:1;) 

alert tcp any any -> any any (msg:"APT.Backdoor.MSIL.SUNBURST"; content:"T "; offset:2; depth:3; content:"Host:"; content:"thedoccloud.com"; within:100; sid:77600854; rev:1;) 

alert tcp any any -> any any (msg:"APT.Backdoor.MSIL.SUNBURST"; content:"T "; offset:2; depth:3; content:"Host:"; content:"virtualdataserver.com"; within:100; sid:77600855; rev:1;)

 

上記のルールは、HTTP(標準ポート以外でも検知)を検索し、特定サイト(例: freescanonline.com)のコネクションを発見した場合にアラート発報します。

これらのルールの記述は、2000年に設計された古い手法であり、シンプルに記述できるnDPIのルールだと以下のようになります。


$ cat sunburst.protos

#  Format:

#  <tcp|udp>:,<tcp|udp>:,.....@

#  Subprotocols

#  Format:

#  host:"",host:"",.....@

#

#  IP based Subprotocols

#  Format:

#  ip:,ip:,.....@


host:"avsvmcloud.com"@APT.Backdoor.MSIL.SUNBURST

host:"digitalcollege.org"@APT.Backdoor.MSIL.SUNBURST

host:"freescanonline.com"@APT.Backdoor.MSIL.SUNBURST

host:"freescanonline.com"@APT.Backdoor.MSIL.SUNBURST

host:"deftsecurity.com"@APT.Backdoor.MSIL.SUNBURST

host:"thedoccloud.com"@APT.Backdoor.MSIL.SUNBURST

host:"virtualdataserver.com"@APT.Backdoor.MSIL.SUNBURST


ntopのnDPIのコマンド、ndpiReaderを実行してみましょう。


$ ndpiReader -p sunburst.protos -i ~/avsvmcloud.com.pcap -v 2


...


Detected protocols:

APT.Backdoor.MSIL.SUNBURST packets: 13 bytes: 2551 flows: 1


Protocol statistics:

Acceptable 2551 bytes


JA3 Host Stats:

IP Address # JA3C

1 192.168.1.102 1


1 TCP 192.168.1.102:51293 <-> 20.140.0.1:443 [proto: 91.255/TLS.APT.Backdoor.MSIL.SUNBURST][cat: Web/5][7 pkts/998 bytes <-> 6 pkts/1553 bytes][Goodput ratio: 52/74][1.74 sec][ALPN: h2;http/1.1][bytes ratio: -0.218 (Download)][IAT c2s/s2c min/avg/max/stddev: 0/109 253/420 1142/1033 447/434][Pkt Len c2s/s2c min/avg/max/stddev: 66/66 143/259 583/1215 180/428][Risk: ** Self-signed Certificate **][TLSv1.2][Client: avsvmcloud.com][JA3C: 2a26b1a62e40d25d4de3babc9d532f30][JA3S: 364ff14b04ef93c3b4cfa429d729c0d9][Issuer: CN=localhost][Subject: CN=localhost][Certificate SHA-1: D2:D1:B8:2B:15:FB:C9:51:B7:24:FF:56:B4:EF:9D:82:E2:E5:EA:B3][Validity: 2020-10-14 21:20:12 - 2022-12-17 11:32:25][Cipher: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384][Plen Bins: 33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0]


 ntopngでこのルールを読み込むには、次のようになります。


ntopng -p sunburst.protos -i ~/avsvmcloud.com.pcap

 

Sunburstをマルウェアだと設定するために、”設定”→"アプリケーションとカテゴリ"からカテゴリをマルウェアに設定してください。


これでntopngは、ルールで記述したAPT.Backdoor.MSIL.SUNBURSTアプリケーションをマルウェアとして検知します。


アラートが発報されていることを確認してください。


アラート検知したうえで、さらにブロックしたい場合はntopng Edge(※ntopngの拡張ソフトウェアで、割り込みブロックが可能です)をご利用ください。



本記事で扱っているntop社のnProbe, ntopng製品にご興味のある方は、以下のリンクから弊社までお問い合わせください!