Snake Keyloggerは、2020年11月に深刻な脅威として登場した情報窃盗型のトロイの木馬で、認証情報の窃盗とキーロギングの機能が統合されています。.NETを使用して開発されたこのマルウェアは、キーボード操作の記録、保存されている認証情報の収集、スクリーンショットのキャプチャを武器とし、クリップボードのデータやブラウザの認証情報を収集したり、システムやネットワークを偵察したりする活動を得意としています。これほど幅広い機能を備えているという事実は、このマルウェアの巧妙さを強調しており、このような悪意あるツールに効果的に対抗できる堅牢なサイバーセキュリティ対策が重要であることを示しています。
この情報窃盗型トロイの木馬は、データを盗み出すために多面的なアプローチを採用しており、FTP、SMTP、Telegramなどのさまざまなコマンドアンドコントロール(C2)サーバーを利用しています。さまざまなチャネルを利用することで、標的のホストから収集したデータを攻撃者のインフラに密かに送信する能力を高めています。具体的には、FTPを使うことでファイルを簡単かつ安全に転送する一方で、SMTPを使うことで機密情報を含むメールを送信できるようにしています。さらに、Telegramとの統合によってリアルタイムの通信プラットフォームを構築し、盗み出したデータを直ちに送信しています。
情報窃盗型トロイの木馬は、C2インフラの多様化によって、サイバーセキュリティの従来の防御策を回避しながら、運用効率を最大限に高めています。そのため、包括的で動的な脅威軽減戦略の必要性が高まっています。
Splunk脅威調査チームが提供するこのブログでは、セキュリティアナリストやブルーチームがこのような詐欺の手口を認識して阻止するための重要な情報を提供します。具体的には、以下の項目について説明します。
Snake Keyloggerは、フィッシングを利用して攻撃を拡散するだけでなく、さまざまなクリプターやローダーでコードを難読化してサンドボックスによる検出を回避するなど、極めて高度なマルウェアです。この柔軟な戦略は、内部構造の調査や分析を試みるアナリストを大いに悩ませています。
このブログでは、Snake Keyloggerが採用している特定のローダーを取り上げます。このローダーは、AESで暗号化されたマルウェアのペイロードを隠すために、.RSRCのデータエントリを巧妙に利用しています。
まず、このローダーは特定のリソースプロパティオブジェクトを解析します(このプロセスは.RSRCのデータエントリの名前によって異なります)。次に、所定のキー文字列のSHA256ハッシュを計算します。このハッシュはAES-ECB復号化キーとして機能します。このキーは、暗号化された.RSRCエントリを復号化するときに必要です。
図1:暗号化されたRSRCのデータエントリ
Splunkでは、CyberChefを使用して、暗号化された「Example」という名前の.RSRCデータエントリの復号化プロセスをシミュレートしました。
図2:CyberChefによる復号化
復号化したデータから、さらに別の複雑なレイヤーの存在が明らかになりました。新たに見つかったローダーの実行可能ファイルには、AES-ECBで暗号化された2つの.RSRCデータエントリが含まれており、それぞれに異なる復号化キー文字列が設定されていました。これらのエントリを復号化することで、RUNPEインジェクターモジュールと本物のSnake Keyloggerマルウェアの存在を突き止めました。
下の図3は、このローダーが実際のSnake Keyloggerマルウェアを復号化して実行し、侵害したホストから機密データや情報を盗み出すまでの流れを簡単に示したものです。
図3: Snake Keyloggerのローダーのフロー
(この図の拡大版はこちらから参照できます)
図4は「Snake Keylogger」の主な関数のスクリーンショットです。この図から、メソッド名やクラス名を不明瞭にする難読化技法が使われていることがわかります。この意図的な難読化が静的な分析を妨害し、マルウェアの機能や内部構造の識別を複雑にしています。
図4:CyberChefによる復号化
以下のサブセクションでは、この情報窃盗型トロイの木馬の戦術と技法について説明します。
システム情報 - T1082
Snake Keyloggerは、OSのバージョン、RAMのサイズ、ハードディスクドライブの情報など、侵害されたホストからシステム情報を収集します。このデータセットは、フォーマットされてから、盗んだデータの一部としてC2サーバーに送信されます。
システムの位置情報の探索 - T1614
Snake Keyloggerは、システム情報を体系的に収集するだけでなく、さらに活動範囲を広げて、重要なネットワークデータを収集します。たとえば、公共のWebサービス(https[://]checkip[dyndns[.]org)にクエリーを送信して、そのマシンのパブリックIPアドレスを解決することで、侵害したホストのIPアドレスを取得します。
さらに、https[://]reallygeoip[.]orgにクエリーを送信して、対象のホストマシンの地理的な場所を特定し、その偵察能力を拡大します。このクエリーにより、都市、国コード、国名、緯度経度の座標値、地域名、タイムゾーンなどの重要な詳細情報を抽出できます。この総合的な地理的位置データを活用することで、Snake Keyloggerは状況認識能力を拡大し、特定の地域を狙った悪質な攻撃を実行できるようになります。
図5:GeoIPによる位置情報
レジストリ実行キー - T1547.001
他の多くの形態のマルウェアと同様に、Snake Keyloggerもレジストリ実行キーを利用して、侵害したホストで永続性を確立し、システムの再起動後も存在し続けます。
図6:レジストリ実行キー
防御の妨害 - T1562
Splunkの分析により、Snake Keyloggerが「キルスイッチ」メカニズムを備えていることが判明しました。この機能は、コードのビルド日と現在の日付を相互参照することで動作します。ビルド日が現在の日付より前であれば、マルウェアは直ちにプロセスを終了します。この戦術は、セキュリティで保護された環境で検出を逃れるためのアンチサンドボックス技法として機能します。Snake Keyloggerはクリプターやローダーを頻繁に利用してコアコードを実行するため、この日付ベースのチェックを回避するには、実際のSnake Keyloggerをリバースエンジニアリングしたり展開したりする必要があり、セキュリティアナリストにはさらに複雑な作業が加わります。
図7:キルスイッチ
Snake Keyloggerはchoice.exeを利用します。これはWindowsにあらかじめ備わっている実行可能ファイルで、ユーザーに選択肢を表示します。このツールの「/T」パラメーターを利用することで、Snake Keyloggerはクリーンアップルーチンの実行前にタイムアウト遅延を設定します。このプロセスは、自身のプロセスに関連付けられているファイルパスを削除してプロセス自体を終了するため、整然としたクリーンアップ技法として機能します。
図8:時間の遅延
この情報窃盗型トロイの木馬は、さまざまなウイルス対策製品やセキュリティ製品による検出を回避するための戦術を採用しています。具体的には、セキュリティアプリケーションに関連するプロセスを強制的に終了して検出を回避します。図9はプロセス名のリストのスクリーンショットです。Snake Keyloggerはこのリストをチェックし、検出したプロセスを強制終了します。こうした事前の対策によって防御を無力化し、侵害したシステムでマルウェアが検出されることなく活動を継続できるようにしています。
図9:ウイルス対策製品のプロセスの強制終了
Splunkが発見したもう1つの回避技法は、サンドボックス環境やボット環境のものと思われるIPアドレスのリストを保持するというものです。Snake Keyloggerは、これらのアドレスからのアクティビティを検出すると、悪質なペイロードの実行を控えます。一方、環境に支障がないと判断した場合は、システム情報、ネットワークの詳細、ブラウザの認証情報などの収集データをC2サーバーに送信します。こうした戦略的アプローチから、このマルウェアが適応力に優れ、自身にとって無害な環境と脅威になりうる環境を区別して、検出を回避しようとしていることがわかります。
図10:ボットのチェック
Webブラウザの資格情報 - T1555.003
他の多くの情報窃盗型トロイの木馬と同様に、Snake Keyloggerは、クレジットカード情報などの認証情報や機密データを盗み出すために、標的となるブラウザの膨大なリストを保持しています。また、メールクライアントやファイルクライアントにも狙いを定めています。
下の図10.1は、機密情報を盗むために複数のブラウザやインスタントメッセージアプリケーションの解析を試みている関数のスクリーンショットです。
図10.1:ブラウザとインスタントメッセージのリスト
メールの収集 - T1114
Snake Keyloggerは、システムレジストリにクエリーを送信して、Outlookのプロファイル情報を収集できるほど範囲を拡大しています。その狙いは、Outlookアカウントに関連付けられているユーザー名やパスワードなど、役に立つ可能性があるデータを抽出することです。このような認証情報は、侵害したホストで攻撃をさらに拡大したり、永続性を確立したりするためのゲートウェイとして利用される可能性があります。
図11:Outlookプロファイルのレジストリ
クリップボードのデータ - T1115
Snake Keyloggerは、クリップボードに保存されているデータを取得します。このデータには、コピーされたパスワード、クレジットカード番号、テキストなどの機密情報が含まれている可能性があります。ユーザーがさまざまな目的でコピーしたデータを収集することで、役に立つ可能性がある情報にアクセスし、機密データをより効果的に盗み出そうとします。
図12:クリップボードのデータ
画面キャプチャ - T1113
Snake Keyloggerはユーザーの画面のスクリーンショットを定期的に撮影し、そのユーザーの「MyDocument」フォルダーに「Screenshot.jpg」として保存します。これにより、機密文書やログインの資格情報など、画面に表示された機密情報を画像として入手できます。
図13:スクリーンショットの取得
キーロギング - T1056.001
当然ながら、キーロギングはSnake Keyloggerにとって最も重要な機能です。この機能は、ユーザーが行ったすべてのキーボード操作を密かに記録し、パスワードやユーザー名などの機密データを収集します。
図14:キーロギング
Snake Keyloggerは、実行の最初の手順として、コマンドアンドコントロール(C2)サーバーの1つに対して通信の確立を試み、応答を待機してC2サーバーの稼働状況を確認します。具体的には、C2サーバーからの応答に「#$0#」という文字列が含まれているかどうかを調べます。
図15:コマンドアンドコントロールからのダウンロード
Agent Teslaマルウェアと同じく、この情報窃盗型トロイの木馬は、データを盗み出すためにFTP、SMTP、TelegramのC2サーバーを利用します。そして、設定したC2サーバーの稼働状況に基づいて、データの送信先を決定します。この設定では、稼働しているC2サーバーが以下の文字列で示されます。
図16:3種類のC2サーバー
この分析ストーリーに関連するハンティング以外の検出は、そのままSplunk Enterprise Securityのリスクインデックスのエントリとなり、Risk Notable Playbook PackおよびAutomated Enrichment Playbook Pack for Splunk SOARのリスクNotableイベントとプレイブックでシームレスに使用できます。
プレイブック | 説明 |
---|---|
Automated Enrichment (情報補強) | イベントステータスをオープンに移行し、レピュテーション分析、属性ルックアップ、および関連チケットのディスパッチプレイブックを起動します。 |
Identifier Reputation Analysis Dispatch(識別子レピュテーション分析のディスパッチ) | 利用可能なインジケーターを検出し、インジケーターレピュテーション分析のプレイブックに転送します。分析結果が出力されると、アーティファクト、タスク、インジケーターのタグが更新されます。 |
Attribute Lookup Dispatch(属性のルックアップのディスパッチ) | 利用可能なエンティティを検出し、属性のルックアッププレイブックに転送します。プレイブックの出力により、情報を返すテクノロジーに対応した新しいアーティファクトが作成されます。 |
Related Tickets Search Dispatch(関連チケット検索のディスパッチ) | 利用可能なインジケーターを検出し、関連チケット検索プレイブックに転送します。分析結果が出力されると、アーティファクト、タスク、インジケーターのタグが更新されます。 |
Splunk脅威調査チームは、この攻撃に関する検出方法をまとめ、Snake Keylogger分析ストーリーとしてタグ付けしました。Snake Keyloggerマルウェアを使用する攻撃の検出にお役立てください。
これらの分析ストーリーでは、データエンドポイントの以下の関連テレメトリソースを使用、想定しました。
Snake Keylogger分析ストーリーには、MITRE ATT&CK技法に対応する21の検出方法が含まれます。
たとえば、「Windows Unsecured Outlook Credentials Access In Registry (Windowsレジストリ内の保護されていないOutlook認証情報へのアクセス)」では、Windows OSのレジストリでOutlook認証情報に対する疑わしいクエリーを検出する分析について解説しています。
これは通常、Microsoft Outlookに関連付けられているユーザープロファイルを指します。Outlookは、メールアドレスなどのアカウント情報、サーバー情報、認証情報といった設定情報をこのキーに格納します。
`wineventlog_security` EventCode=4663 object_file_path IN
("*\\Profiles\\Outlook\\9375CFF0413111d3B88A00104B2A6676*", "*\\Windows Messaging
Subsystem\\Profiles\\9375CFF0413111d3B88A00104B2A6676*")
AND process_name != *\\outlook.exe
| stats count min(_time) as firstTime max(_time) as lastTime by object_file_name
object_file_path process_name process_path process_id EventCode dest
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
図17:Windows Unsecured Outlook Credentials Access In Registry (Windowsレジストリ内の保護されていないOutlook認証情報へのアクセス)
「Windows Time Based Evasion via Choice Exec (Windowsのchoice.exeを利用した時間ベースの回避)」分析は、choice.exeを遅延戦術として利用する疑わしいバッチファイルを検出するためのものです。Snake Keyloggerマルウェアで発見されたこの技法は、コードの実行中または侵害したホストのコピーを削除する前に、時間の遅延または「Sleep」コマンドで利用されています。
| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
as lastTime from datamodel=Endpoint.Processes
where Processes.process_name =choice.exe Processes.process = "*/T*" Processes.process = "*/N*"
by Processes.parent_process_name Processes.process_name Processes.process
Processes.process_id Processes.parent_process_id Processes.process_guid
Processes.dest Processes.user
| `drop_dm_object_name(Processes)`
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
図18:Windows Time Based Evasion via Choice Exec (Windowsのchoice.exeを利用した時間ベースの回避)
「Windows Gather Victim Network Info Through Ip Check Web Services (WindowsのIPチェックWebサービスによる標的ネットワークの情報収集)」分析では、既知のIPのWebサービスに接続しようとするプロセスを検出します。この技法は、感染したマシンを偵察してそのIPアドレスを探索するために、TrickBotやその他のマルウェアでよく使用されています。
`sysmon` EventCode=22 QueryName IN ("*wtfismyip.com", "*checkip.*", "*ipecho.net",
"*ipinfo.io",
"*api.ipify.org", "*icanhazip.com", "*ip.anysrc.com","*api.ip.sb", "ident.me",
"www.myexternalip.com",
"*zen.spamhaus.org", "*cbl.abuseat.org", "*b.barracudacentral.org",
"*dnsbl-1.uceprotect.net",
"*spam.dnsbl.sorbs.net", "*iplogger.org*", "*ip-api.com*", "*geoip.*")
| stats min(_time) as firstTime max(_time) as lastTime count by Image ProcessId
QueryName QueryStatus QueryResults EventCode Computer
| rename Computer as dest
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)
図19:Windows Gather Victim Network Info Through Ip Check Web Services (WindowsのIPチェックWebサービスによる標的ネットワークの情報収集)
ハッシュ | 説明 |
---|---|
0dd188237a562417f239ff9be662f9336ec77a0906af62c26516a8e6f767f9f5 | Snake Keylogger |
80e12c2425ec7b8aa8913df82bd47c0c1a62f6539df22b6bf1ddab8b1694e3e8 | Snake Keylogger |
Splunk脅威調査チームは、情報窃盗型トロイの木馬であるSnake Keyloggerの動作を理解することで、テレメトリとデータセットを生成し、この脅威に対抗、対応するためのSplunkの検出機能を開発、テストすることができました。セキュリティアナリストやブルーチーム、そしてSplunkのお客様がこのブログで紹介したインサイトや検出方法を活用すれば、攻撃者が環境内で利用している可能性があるSnake Keyloggerの戦術、技法、手順を明らかにできます。
Snake Keyloggerの活動を早期に検出することで、封じ込めと修復を素早く実行し、潜在的な被害を軽減し、拡散を阻止することができます。集団で防御戦略を強化するには、セキュリティコミュニティ全体で脅威インテリジェンスを共有することが極めて重要です。Snake Keyloggerの進化する戦術に対応し、その脅威に対して強力な保護対策を実施するには、最新の防御メカニズムと継続的な監視が不可欠なのです。
セキュリティ分析ストーリーの最新コンテンツは、GitHubとSplunkbaseからダウンロードできます。また、Splunk Security Essentialsでは、プッシュアップデートによってこれらの検出方法をすべて利用できます。
すべてのセキュリティコンテンツの一覧は、Splunkマニュアルのリリースノートに掲載されています。
ご意見やご要望がございましたら、GitHubから遠慮なくお寄せください。Slackチャネル「#security-research」にご参加いただくこともできます。SlackのSplunkユーザーグループへの招待が必要な場合は、こちらの手順に従ってください。
この記事の執筆にあたってご協力いただいたTeoderick Contrerasと、Splunk脅威調査チームのメンバー(Michael Haag、Mauricio Velazco、Lou Stella、Bhavin Patel、Rod Soto、Eric McGinnis、Jose Hernandez、Patrick Bareiss)に感謝を申し上げます。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。