主な調査結果
- Proofpoint社は、リサーチャーが「DTPacker」と名付けたマルウェアパッカーを確認しました。
- ペイロードのデコードには、ドナルド・トランプ元米大統領の名前を含む固定パスワードが使用されています。
- 数週間にわたり、このダウンローダーの亜種は、Liverpool Football Clubをテーマにしたダウンロード先を使用していました。
- このマルウェアは、通常、情報を盗んだり、ランサムウェアなどの後続のペイロードをロードするためのリモートアクセス型トロイの木馬をパックするために使用されます。
概要
ブログ「Commodity .NET Packers use Embedded Images to Hide Payloads」では、.NETパッカーの「CyaX」および「Hectobmp」ファミリーについて説明しました。
このブログでは、2段階のコモディティ.NETパッカーまたはダウンローダーについて説明します。このパッカーまたはダウンローダーは、第1段階ではかなり多様性があるものの、第2段階ではデコードの一部として固定パスワードを使用します。パッカーとダウンローダーの主な違いは、前者では埋め込まれ、後者ではダウンロードされるペイロードデータの場所です。DTPackerは両方の形態を使用しています。1つのマルウェアがパッカーとダウンローダーの両方を兼ねることは珍しいことです。
Proofpointでは、DTPackerがAgent Tesla、Ave Maria、AsyncRAT、FormBookなどの複数のリモートアクセス型トロイの木馬(RAT)や情報窃取マルウェアを配布しているのを確認しています。このマルウェアは、複数の難読化技術を用いて、アンチウイルス、サンドボックス、および分析を回避します。このマルウェアは、おそらくアンダーグラウンドのフォーラムで配布されています。プルーフポイントは、2020年以降、TA2536やTA2715を含む数十のキャンペーンや複数の脅威アクターとDTPackerが関連していることを確認しています。プルーフポイントは、DTPackerが高度標的型攻撃グループ(APT)とサイバー犯罪の両方の攻撃グループによって使用されていることを確認しています。確認されたキャンペーンには数千のメッセージが含まれ、複数の業界の数百の顧客に影響を与えました。
攻撃経路の例
観測された多くのキャンペーンでは、初期の感染経路として電子メールが使用されています。添付ファイルは通常、悪意のある文書や圧縮された実行ファイルで、ユーザーがこれを操作すると、パッカーの実行ファイルがダウンロードされます。このマルウェアは、埋め込まれた、またはダウンロードされたリソースを、マルウェアのペイロードを含むDLLにデコードし、マルウェアを実行します。
図1:DTPackerの攻撃経路の例
カスタムXORデコーディング
Proofpointは、複数の復号方法と、ドナルド・トランプをテーマにした2つの固定鍵を観測したことから、「DT "Packer"」と名付けました。多くのパッカーやローダーは、2段階の機能で作られています。DTPackerの初期のバージョンでは、カスタムのXORルーチンを使用して、両方のステージで悪意のあるコンテンツをデコードしていました。DTPackerの第1ステージでは、埋め込みまたはダウンロードされたリソースを中間ステージ(通常はDLL)にデコードし、第2ステージではそのDLLからペイロードを抽出して実行します。
カスタムXORルーチンは、キーとのXORに加えて、次のデータ値を減算するもので、このPythonスクリプト(Github上)decoder-xor-sub.pyで実装されています。
Windows Portable Executableの場合、かなりの数のヌルバイトが存在するため、暗号文を1バイトシフトしたものとXORすると、ヌルバイトに対応する位置に鍵があることがわかります。
例えば、このサンプル (SHA256: 512b2f1f4b659930900abcc8f51d175e88c81b0641b7450a6618b77848fa3b40)では、中間ステージは、カスタムXORルーチンとキー "P"(今回はUnicode UTF-16ではなくASCII)でエンコードされた.NETリソースに格納されています。
.NETリソースを1バイトシフトした自分自身とXORすると、パスワード "P "が表示されます:
キー "P "でデコードすると、第2段の実行ファイルが得られます:
2段目には、.NETリソース(名前は「00112266」)が入っています:
自分自身を1バイトシフトしたものとXORすると以下となり、Unicode UTF-16の "trump2020 "という鍵が得られます:
脅威の主体は、この鍵を1年間一貫して使用しており、これがパッカーの名前の理由です。
「trump2020」の鍵でデコードすると、最終的なペイロードが得られます:
このケースでは、ペイロードは、一般的な情報窃取マルウェアであるAgent Teslaでした。
多彩なファーストステージ・エンコーディング
このダウンローダーのサンプル (SHA256: 9d713d2254e529286ed3ac471e134169d2c7279b0eaf82eb9923cd46954d5d27)では、ダウンロードURLはジャンクなUnicode文字で難読化された文字列として保存されています。
この場合、分解されたコードは次のようになります。
Unicode文字を削除すると以下になります:
ダウンロードは一緒にされており、Base64エンコードされた文字列が含まれています:
これらは以下のようにデコードされ
バイト0x02とXORした後、次のようになります:
これは、先ほどと同様に「trump2020」キーでエンコードされた「00112266」リソースを含む第2段の実行ファイルで、これをデコードするとAgent Teslaになります。
10進文字コード
この種のパッカーに共通して見られるテーマは、数字を他の文字で置き換えた10進法の文字コードを使用していることです。
例えば、このサンプル (SHA256: 285f4e79ae946ef179e45319caf11bf0c1cdaa376924b83bfbf82ed39361911b)は、第2段階を.NET Stringsテーブルに埋め込んだパッカーです:
これは、コンマで区切られた10進数のASCII文字コードで、数字の0〜9は "!@#$%[X]&*()" に置き換えられています:
これは、鍵が「trump2020」の「00112266」リソースを含む中間PEにデコードされ、Ave Maria(Warzone RATとしても知られている)にデコードされます。
このサンプル (SHA256: 1312912d725d45bcd1b63922ec9a84abca7a8c9c669c13efbd03472c764be056 )は上記と似ていますが、2段目がUser Stringsテーブルに格納されています:
これは数字の0~9を "zxcasdwqru"(QWERTYキーボードの列の最初の3文字と部分的に一致)に置き換えられ、AsyncRATにデコードされます。
他のサンプル (SHA256: ba0f9be7cf006404bcfab6b6adbad0cef7281c3792490903632a4010d8a74f42) は、ダウンロード文字列がSample 1と同様の方法で難読化されたローダーで、難読化を解除すると(defanged)になります。
hxxps://ahgwqrq[.]xyz/getrandombase64.php?get=E2E813E9694BE43CAD964C0453632F91@@@hxxps://ahgwqrq[.]xyz/getrandombase64.php?get=63DC49E5D8F5F50F8838551347009928@@@hxxps://ahgwqrq[.]xyz/getrandombase64.php?get=D13B96F0619AC39B44A32D3E0A260C89@@@hxxps://ahgwqrq[.]xyz/getrandombase64.php?get=85530E49BB23CD9DBD8461A2FC5D18A2
ダウンロードは、サンプル3および4と同様の方法で難読化されており、0~9の数字がA~Jの文字に置き換えられています:
ダウンロードは通常のセカンドステージにデコードされ、さらにAgent Tesla.にデコードされます。
大文字コードオフセットによる文字列難読化
このサンプル(SHA256 5d555eddfc23183dd821432fd2a4a04a543c8c1907b636440eb6e7d21829576c) は難読化されたUnicode文字列に、の文字コードから差し引く整数を付加したローダです。
これは以下にデコードされます:
ダウンロードは再びASCIIの文字コードで、0~9の数字が"PxfnVCKsAi"の文字に置き換えられています。
しかし今回は、カスタムXORルーチンと "trump2020 "キーによる中間ステップがなく、ペイロードはAgent Teslaでした。
サッカークラブをテーマにしたペイロード格納場所
2021年3月以降、プルーフポイントは、サッカークラブやそのファンのためのウェブサイトをダウンロード先として使用するサンプルを観測しました。これらのWebサイトはおとりで、実際のペイロードの場所はリストに埋め込まれていたようです。
例えば、このサンプル (SHA256 b53558a85b8bb10ce70cb0592a81e540683d459b9d8666b7927c105f1141a189)では、分解されたコードは次のようになります:
これは難読化されると以下になります:
このペイロードは、この場合、Snake Keyloggerでした。
その後のサンプルでは、リバプール・フットボール・クラブをテーマにしたダウンロード先が使用されています。
このサンプルでは (SHA256: 9cc817f0205da4bde1d938e1817aa98fe4f4a5dcbcaffbe8b45041e24c105aa0)、ダウンロード先はジャンクなUnicode配列や文字列の組み立てで難読化されています。
これは、非ASCII文字を取り除いた後は以下のようになります:
これは以下のダウンロード場所 (無力化済)に導かれます。:
hxxp://liverpoolofcfanclub[.]com/liverpool-fc-news/features/steven-gerrard-liverpool-future-dalglish--goal-1FE8F2E05D5035C0446552639B8336B8.html
hxxp://liverpoolofcfanclub[.]com/liverpool-fc-news/features/steven-gerrard-liverpool-future-dalglish--goal-EC7D4835EC6F56BD999A943FEDF8D489.html
hxxp://liverpoolofcfanclub[.]com/liverpool-fc-news/features/steven-gerrard-liverpool-future-dalglish--goal-DE7C2CE9F7D38544A851414C40C46A3F.html
その中には、liverpool.comから引用したと思われるページの中に、次のステージを0〜9の数字を"GIucvPNTOs"に置き換えたASCII文字コードで掲載しています:
最後に、通常の「00112266」リソースが「trump2020」キーでエンコードされ、最終的なペイロードである「Agent Tesla」を保持していることがわかります。
その後のサンプルでは、ドメイン名を変えていますが、パスは非常に似通っており、同じように一見無害そうなページが表示されています。
図: DTPackerは、最終的なペイロードにリバプールFCをテーマにしたダウンロードサイトを使用
これらのサイトは、正規のリバプールFCおよびファン関連のウェブサイトを装っていました。
難読化された文字コード配列を用いた文字列難読化
このサンプル (SHA256: 281cdbf590c22cd684700dcde609d6be48ddf3e4d988d48e65d9c688ce76f7af) は、難読化された.NETコードを使用して、重要な文字列をASCII文字コードの配列として格納しています:
[0] : qHWXhtvYuc
[1] : Append
[2] : hxxp://mmwrlridbhmibnr[.]ml/liverpool-fc-news/features/steven-gerrard-liverpool-future-dalglish--goal-40505C0917C3E190B486745F4941F177.html
[3] : <meta name="keywords" content="([\w\d ]*)">
[4] : UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41
[5] : GetType
[6] : Assembly
[7] : ToArray
[8] : Load
[9] : EntryPoint
[10] : Invoke
[11] : LoginForm
URLの文字列については、(ILSPYで分解すると)次のようになります:
4つの割り当ての各ブロックでは、最初の3つがジャンクになり、次のもので上書きされます。
これは、基礎となるMSIL(中間言語)コードで行われているようです:
難読化のための命令は、実際には通常のコンパイラから期待されるような最短の形式ではありません。例えば、以下のように最終課題を行う設問のような形式です。
(05) 2000000000 : ldc.i4 0x0
これは以下を用いて達成できたはずです。
(01) 16 : ldc.i4.0
この場合の最終的なペイロードはAgent Teslaでした。
このPythonスクリプト(Github上)decoder-dup-array-strings.pyは、この技術を使って.NETバイナリから難読化された文字列を出力します。
ストレートXORによる "Trump2026 "の変種
2021年8月以降、プルーフポイント社は、セカンドステージがカスタムXORルーチンと固定キー「trump2020」を使用しなくなり、代わりに固定ASCIIキー「Trump2026」とストレートXORを使用しているサンプルを観測しました。
今回のサンプル (SHA256: a564eb282800ed662b1c55ae65fbba86b6feca00a2e15ebb36a61fc53ac47c3a) では、中間段階をASCII文字コードとして「Strings」テーブルに格納しています:
ペイロードは、中間ステージのオフセット 0x250 から格納されます:
これをキー "Trump2026 "とのXOR処理を行うと以下になります:
このペイロードはAgent Teslaでした。
このサンプル (SHA256 affea9c276ded88eea1e39ac39fb19373c4b62d4251fb1d06f37a05e35dfa463)は、ダウンロードURLをUser Strings(defanged)でクリアに保存したダウンローダーです(無力化されています):
hxxps://cdn.discordapp[.]com/attachments/893177342426509335/897124528768032848/9722D04C.jpg
hxxps://cdn.discordapp[.]com/attachments/893177342426509335/897124531213336656/F526E587.jpg
ダウンロードはASCIIの文字コードです:
これをつなぎ合わせてデコードすると、次のような中間ステージが得られます:
XORキー「Trump2026」で復号すると、最終的なペイロードはFormBookでした。
同じ修正されたXORルーチンを使用するCyaX Packer
2021年11月以降、プルーフポイント社は、CyaX-packerが「trump2020」キーを使用したDTPackerと非常によく似たセカンドステージを使用しているのを確認しました。
しかし今回は、UTF-16でエンコードされた「trump2020」ではなく、ランダムに生成された、ASCII、アルファベット混合、8~14文字の鍵を使用しています。
このサンプル (SHA256: 4053206d66d627d145d9da8d8e208d08c85755036a5393ccc6e8afd6117df864)では、中間ステージには、.NETリソースファイル「18Ocjj4dc4」が起動しています:
jCcPzKq+9JLar8eO2ILnqfrkj8Wj64Lqo7XsiMaV85jStPyV/bTiu9+RwqTPheOrwqrjteyIxpXzmNK0/BV9NGItKqrrjTJvPFOC ...
これをベース64にデコードすると以下の通りとなります:
これを1バイトシフトした自分自身とXORすると以下の通りとなります:
鍵「dNSfkJfHihIVY」でフィックスしたXORルーチンを使うと以下の通りとなります:
1バイト目をフィックスした後、Agent Teslaとなります。
これは、「trump2020」バージョンのDTPackerと最新のCyaXの第2段階のソースが共通していることを示唆しています。DTPackerとCyaXの間でリソースが重複している可能性があります。例えば、両方の作者が同じDLLエンコーダを購入している可能性がありますが、Proofpointはこれを確認できません。
結論
DTPackerは、パッカーとダウンローダーの両方に使用され、配信と難読化のバリエーションを持ちながら、解読の一部としてこのような2つのユニークなキーを保持しているのは非常に珍しいことです。
マルウェアの作者が、マルウェアの固定パスワードにドナルド・トランプ氏を明記した理由は不明です。これは、政治家や政治団体を特別に狙うために使用されるものではなく、意図した被害者が目にすることはないからです。プルーフポイントでは、このマルウェアは今後も複数の攻撃グループによって使用されると評価しています。
ネットワーク IDS ルール:
Proofpoint Emerging Threatsには、このマルウェアに対する複数の検知ルールがあります。
2031127 - ET MALWARE DTLoader Binary Request
2031128 - ET MALWARE DTLoader Encoded Binary - Server Response
2031129 - ET MALWARE DTLoader Domain (ahgwqrq .xyz in TLS SNI)
2033356 - ET MALWARE DTLoader Binary Request M2
2844913 - ETPRO MALWARE Haskell Downloader/DTLoader CnC Activity
2846706 - ETPRO MALWARE DTLoader Variant Activity
2847389 - ETPRO MALWARE DTLoader CnC Activity
2847503 - ETPRO MALWARE DTLoader Variant Activity
2847916 - ETPRO MALWARE DTLoader Obfuscated HTML Payload Inbound
2847940 - ETPRO MALWARE DTLoader Activity
2850461 - ETPRO MALWARE DTLoader Retrieving Encoded Payload
IoC(侵害の痕跡)のサンプル
Indicator |
Description |
Associated Malware |
9d713d2254e529286ed3ac471e134169d2c7279b0eaf82eb9923cd46954d5d27 |
DTPacker SHA256 |
Agent Tesla |
hxxps://hastebin[.]com/raw/azipitojuj hxxps://hastebin[.]com/raw/urafehisiv |
Payload Download Location |
Agent Tesla |
285f4e79ae946ef179e45319caf11bf0c1cdaa376924b83bfbf82ed39361911b |
DTPacker SHA256 |
Ave Maria RAT |
512b2f1f4b659930900abcc8f51d175e88c81b0641b7450a6618b77848fa3b40 |
DTPacker SHA256 |
Agent Tesla |
1312912d725d45bcd1b63922ec9a84abca7a8c9c669c13efbd03472c764be056 |
DTPacker SHA256 |
AsyncRAT |
ba0f9be7cf006404bcfab6b6adbad0cef7281c3792490903632a4010d8a74f42 |
DTPacker SHA256 |
Agent Tesla |
hxxps://ahgwqrq[.]xyz/getrandombase64.php?get=E2E813E9694BE43CAD964C0453632F91
|
Payload Download Location |
Agent Tesla |
5d555eddfc23183dd821432fd2a4a04a543c8c1907b636440eb6e7d21829576c |
DTPacker SHA256 |
Agent Tesla |
hxxp://193.239.147[.]103/base/264712C97B662289D6644F926525A252.html |
Payload Download Location |
Agent Tesla |
b53558a85b8bb10ce70cb0592a81e540683d459b9d8666b7927c105f1141a189 |
DTPacker SHA256 |
Snake Keylogger |
hxxp://osndjdjjjdjshgaggdkf[.]com/base/377A23697621555ED2123D80005200D7.html hxxp://osndjdjjjdjshgaggdkf[.]com/base/650D6251494D3B160CBC93685F2FA1E4.html hxxp://osndjdjjjdjshgaggdkf[.]com/base/2A812C716BD7EB40F36227E584D97524.html |
Payload Download Location |
Snake Keylogger |
9cc817f0205da4bde1d938e1817aa98fe4f4a5dcbcaffbe8b45041e24c105aa0 |
DTPacker SHA256 |
Agent Tesla |
hxxp://liverpoolofcfanclub[.]com/liverpool-fc-news/features/steven-gerrard-liverpool-future-dalglish--goal-1FE8F2E05D5035C0446552639B8336B8.htm hxxp://liverpoolofcfanclub[.]com/liverpool-fc-news/features/steven-gerrard-liverpool-future-dalglish--goal-EC7D4835EC6F56BD999A943FEDF8D489.html hxxp://liverpoolofcfanclub[.]com/liverpool-fc-news/features/steven-gerrard-liverpool-future-dalglish--goal-DE7C2CE9F7D38544A851414C40C46A3F.html |
Payload Download Location |
Agent Tesla |
281cdbf590c22cd684700dcde609d6be48ddf3e4d988d48e65d9c688ce76f7af |
DTPacker SHA256 |
Agent Tesla |
hxxp://mmwrlridbhmibnr[.]ml/liverpool-fc-news/features/steven-gerrard-liverpool-future-dalglish--goal-40505C0917C3E190B486745F4941F177.html
|
DTPacker Download URL |
Agent Tesla |
a564eb282800ed662b1c55ae65fbba86b6feca00a2e15ebb36a61fc53ac47c3a |
DTPacker SHA256 |
Agent Tesla |
affea9c276ded88eea1e39ac39fb19373c4b62d4251fb1d06f37a05e35dfa463 |
DTPacker SHA256 |
FormBook |
hxxps://cdn.discordapp[.]com/attachments/ hxxps://cdn.discordapp[.]com/attachments/ 893177342426509335/897124531213336656/F526E587.jpg
|
DTPacker Download URL |
FormBook |
4053206d66d627d145d9da8d8e208d08c85755036a5393ccc6e8afd6117df864 |
DTPacker SHA256 |
Agent Tesla |
※本ブログの情報は、英語による原文「DTPacker – a .NET Packer with a Curious Password」の翻訳です。英語原文との間で内容の齟齬がある場合には、英語原文が優先します。