Mahalo FIN7: 犯罪者の新しいツールとテクニックへの対応

Current VirusTotal detection ratio for signed BOOSTWRITE news

最近のいくつかのインシデント対応業務において、FireEye Mandiant の調査担当者は、FIN7 のマルウェア アーセナルにある新しいツールを発見し、グローバルな犯罪者が新しい回避技術を試みているのに歩調を合わせました。このブログでは、BOOSTWRITE と RDFSNIFFER と呼ばれる 2 つの FIN7 の新しいツールを紹介します。

FIN7 の新しいツールの最初のものは BOOSTWRITE です。これは、実行時にリモート サーバーから取得した暗号化キーを使用して、埋め込まれたペイロードを復号化するメモリ内専用のドロッパーです。 FIN7 は、有効な認証局によって署名されたドロッパーの BOOSTWRITE サンプルを含む、複数の方法を使用してこのマルウェア ファミリに小さな変更を加えて、従来のアンチウイルス検出を回避することが確認されています。分析された BOOSTWRITE 亜種の 1 つには、CARBANAK と RDFSNIFFER の 2 つのペイロードが含まれていました。 CARBANAK は徹底的に分析され、FIN7 を含むいくつかの金融攻撃者によって悪意を持って使用されてきましたが、RDFSNIFFER は Mandiant の調査員によって回収された新たに特定されたツールです。

BOOSTWRITE のペイロードである RDFSNIFFER は、NCR Corporation の「Aloha Command Center」クライアントを改ざんするために開発されたようです。 NCR アロハ コマンド センターは、コマンド センター エージェントを実行するクレジット カード処理セクター内のシステムを管理およびトラブルシューティングするために設計されたリモート管理ツールセットです。マルウェアは、正規の Aloha ユーティリティの DLL ロード順序を悪用して、Command Center プロセスと同じプロセスにロードします。 Mandiant はこの情報を NCR に提供しました。

BOOSTWRITE ローダー: どこにいるの?

BOOSTWRITE は、Microsoft DirectX Typography Services が提供する正当な「Dwrite.dll」をロードするアプリケーションの DLL 検索順序を悪用して起動するように細工されたローダーです。アプリケーションは ‘gdi’ ライブラリをロードし、これが ‘gdiplus’ ライブラリをロードし、最終的に ‘Dwrite’ をロードします。 Mandiant は、BOOSTWRITE が RDFClient バイナリと共にファイル システムに配置され、アプリケーションが正規の DWrite.dll ではなく、そこから DWriteCreateFactory をインポートするよう強制するインスタンスを特定しました。

読み込まれると、「DWrite.dll」はハードコードされた IP とポートに接続し、そこから復号化キーと初期化ベクトル (IV) を取得して、2 つの埋め込まれたペイロード DLL を復号化します。このタスクを実行するために、マルウェアはまずランダムなファイル名を生成し、現在のユーザーの %TEMP% ディレクトリの下にテキスト ログとして使用します。このファイル名は ~rdf で始まり、一連の乱数が続きます。次に、マルウェアは自身の画像をスキャンして、本体内のデータをデコードするために使用される 32 バイト長のマルチ XOR キーの場所を見つけます。デコードされたデータの一部は、埋め込まれたペイロードを復号化するためのキーと IV を取得するために使用される IP アドレスとポートです。暗号化アルゴリズムは、256 ビット キーと 64 ビット IV を使用する ChaCha ストリーム暗号を使用します。

キーと IV がダウンロードされると、マルウェアは埋め込まれたペイロードを復号化し、結果に対してサニティ チェックを実行します。ペイロードは PE32.DLL であると予想され、テストに合格すると、ファイルシステムに触れることなくメモリにロードされます。

マルウェアは、以前に作成されたログファイル %TEMP%~rds<rnd_numbers> に、ローダーの実行の進行状況を示すさまざまなプレーンテキスト メッセージを記録します。ファイルの内容の例を図 1 に示します。

読み込んでいます…
起動…
初期化 OK
キー OK
データ: 4606941
HS: 20
K:[32] V:[8]
DCnt: 732642317(エラー)

図 1: BOOSTWRITE ログ ファイル

マルウェアは終了する前に、無害な DWrite.dll ライブラリの場所を解決し、実行制御を DWriteCreateFactory メソッドに渡します。

マルウェアは、2 つのペイロード DLL を復号化してロードします。 DLL の 1 つは、CARBANAK バックドアのインスタンスです。もう 1 つの DLL は FireEye が RDFSNIFFER として追跡しているツールで、攻撃者が NCR Aloha Command Center Client アプリケーションのインスタンスをハイジャックし、既存の正当な 2FA セッションを介して被害者のシステムとやり取りできるようにします。

RDFSNIFFER モジュール: RAT の匂いがする

RDFSNIFFER は BOOSTWRITE によって読み込まれるモジュールであり、リモートの IT 技術者に可視性とシステム管理機能を提供するように設計されたアプリケーションである NCR Corporation の「Aloha Command Center Client」(RDFClient) を介して行われる正当な接続を攻撃者が監視および改ざんできるようにします。 RDFSNIFFER は、ユーティリティの DLL ロード順序を悪用して、正規の RDFClient と同じプロセスにロードし、影響を受けるシステムで「Aloha Command Center Client」が実行されるたびに起動します。

RDFSNIFFER モジュールが BOOSTWRITE によってロードされると、NCR Aloha Command Center クライアント セッションを改ざんしたり、ユーザー インターフェイスの要素をハイジャックしたりできるようにすることを目的とした、いくつかの Win32 API 関数をフックします (表 1)。さらに、これにより、マルウェアはユーザーの最終入力時刻を変更して、アプリケーション セッションがタイムアウトにならないようにすることができます。

Win32 API 関数

フックの説明

CertVerifyCertificateChainPolicy

中間者 SSL セッションに使用

CertGet証明書チェーン

中間者 SSL セッションに使用

WSAコネクト

中間者ソケット接続に使用

接続

中間者ソケット接続に使用

コネクトエックス

中間者ソケット接続に使用

DispatchMessageW

ユーティリティの UI をハイジャックするために使用されます

DispatchMessageA

ユーティリティの UI をハイジャックするために使用されます

DefWindowProcW

ユーティリティの UI をハイジャックするために使用されます

DefWindowProcA

ユーティリティの UI をハイジャックするために使用されます

GetLastInputInfo

ユーザーの最終入力時刻を変更するために使用されます (時間制限のあるロックアウトを回避するため)。

表 1: RDFSNIFFER のフックされた Win32 API 関数

このモジュールには、アクティブな RDFClient セッションにコマンドを挿入できるようにするバックドア コンポーネントも含まれています。このバックドアにより、攻撃者は任意のファイルをアップロード、ダウンロード、実行、および/または削除できます (表 2)。

コマンド名

RDFClient の正当な機能

RDFClient コマンド ID

説明

アップロード

FileMgrSendFile

107

ファイルをリモート システムにアップロードします

ダウンロード

FileMgrGetFile

108

リモート システムからファイルを取得します

実行する

RunCommand

3001

リモートシステムでコマンドを実行します

リモートの削除

FileMgrDeleteFile

3019

リモート システム上のファイルを削除します

削除ローカル

ローカル ファイルを削除します

表 2: RDFSNIFFER のバックドア機能

署名: よろしくお願いします、FIN7

調査で回収された BOOSTWRITE の亜種の大部分は署名されていませんでしたが、Mandiant は最近の調査で FIN7 が使用した署名付きの BOOSTWRITE サンプルを特定しました。その発見に続いて、署名付きの BOOSTWRITE サンプルが 10 月 3 日に VirusTotal にアップロードされました。この実行可能ファイルは、MANGO ENTERPRISE LIMITED が発行したコード署名証明書を使用しています (表 3)。

MD5

組織

シリアル

a67d6e87283c34459b4660f19747a306

マンゴーエンタープライズリミテッド

GB

32 7F 8F 10 74 78 42 4A BE B8 2A 85 DC 36 57 03 CC 82 70 5B

表 3: BOOSTWRITE に使用されるコード署名証明書

これは、オペレーターがこのマルウェアを積極的に変更して、従来の検出メカニズムを回避している可能性があることを示しています。特に、署名された BOOSTWRITE サンプルが VirusTotal にアップロードされたときの検出率は 0/68 であり、この戦術の有効性を示しています (図 2)。

Current VirusTotal detection ratio for signed BOOSTWRITE
図 2: 署名された BOOSTWRITE の現在の VirusTotal 検出率

BOOSTWRITE にコード署名証明書を使用することは、FIN7 にとってまったく新しい手法ではありません。FIN7 は過去にデジタル証明書を使用してフィッシング ドキュメント、バックドア、および後の段階のツールに署名していたためです。 FIN7 は、コード証明書によって本質的に提供される信頼を悪用することで、さまざまなセキュリティ制御を回避し、被害者を侵害することに成功する可能性を高めます。 VirusTotal に展開された検出エンジンに対して達成された完全な回避 –無効なチェックサムを含む署名なしの BOOSTWRITE サンプルとの比較– FIN7 の手法が、従来の検出エンジンと ML バイナリ分類エンジンの両方を破壊するのに効果的だったことを示しています。これは既知の問題であり、少なくとも以来、深く研究されてきました。2016年の「不信の連鎖」調査2017 年の「認定マルウェア」論文.署名が悪い、または署名のない良いソフトウェアのサンプルがたくさんあり、署名が良いマルウェアのサンプルが増えているため、簡単な解決策はありません。利点は、ベンダーがエンジンを VirusTotal (FireEye を含む) に選択的に展開し、VT 検出のパフォーマンスが、詳細な検出を実装する完全なセキュリティ テクノロジ スタックに遭遇した場合の包括的な表現ではないことが多いことです。このブログの後半では、BOOSTWRITE の PE Authenticode 署名、その異常、およびコード署名を検出の課題から検出の機会に変える方法について詳しく説明します。

展望と影響

これらのインシデントには、CARBANAK や BABYMETAL などの FIN7 の典型的で長く使用されているツールセットも含まれていますが、新しいツールと技術の導入は、FIN7 がセキュリティの強化に対応して進化し続けていることをさらに証明しています。さらに、少なくとも 1 つのケースでのコード署名の使用は、グループのリソースの賢明な使用を浮き彫りにし、これらの証明書の使用を、特定のセキュリティ制御を回避しようとしているケースに限定する可能性があります。さらなる法執行措置が取られなければ、FIN7 犯罪組織を構成するアクターの少なくとも一部がキャンペーンを継続すると予想されます。その結果、組織は警戒を怠らず、FIN7 アクターが採用する手法の変化を監視し続ける必要があります。

シグズ・アップ・デューズ!指標、ツールマーク、検出機会

FireEye は、コード ファミリの本番検出ロジックを公開していませんが、このセクションには、階層化された検出戦略で採用している識別およびハンティングの概念が含まれています。表 4 には、このブログで参照されているマルウェア サンプルが含まれており、活発な調査中に FireEye が回収したより大きなセットから共有することができます。

タイプ

指標

BOOSTWRITE (署名済み)

MD5: a67d6e87283c34459b4660f19747a306
SHA-1: a873f3417d54220e978d0ca9ceb63cf13ec71f84
SHA-256: 18cc54e2fbdad5a317b6aeb2e7db3973cc5ffb01bbf810869d79e9cb3bf02bd5

C2: 109.230.199[.]227

BOOSTWRITE (無署名)

MD5: af2f4142463f42548b8650a3adf5ceb2
SHA1: 09f3c9ae382fbd29fb47ecdfeb3bb149d7e961a1
SHA256: 8773aeb53d9034dc8de339651e61d8d6ae0a895c4c89b670d501db8dc60cd2d0

C2: 109.230.199[.]227

表 4: 公開共有可能な BOOSTWRITE サンプル

署名された BOOSTWRITE サンプルには、yaraの PE 署名モジュールを使用して検出できる PE Authenticode 異常があります。具体的には、表 5 に示すように、PE リンカーのタイムスタンプは Authenticode の有効期間より前です。

タイムスタンプ

説明

2019-05-20 09:50:55 UTC

BOOSTWRITE の PE コンパイル時間に署名

2019-05-22 00:00 UTC
終えた
2020-05-21 23:59 UTC

BOOSTWRITE の「mango ENTERPRISE LIMITED」証明書の有効期間に署名

表 5: 関連する実行可能ファイルのタイムスタンプ

この特定の PE Authenticode タイムスタンプの異常をカバーする Yara ルールの公開例は、David Cannings のブログ投稿で入手できます。主要なロジックを図 3 に示します。

pe.number_of_signatures > 0 であり、(0..pe.number_of_signatures – 1) のすべての i ではありません:
pe.signatures[i].valid_on(pe.timestamp)

図3:NCCグループの研究やらルールの抜粋

同様に疑わしいファイルを明らかにする Yara ルールとして表すこともできる、他の PE Authenticode 異常があります。注目すべきは、この署名付き BOOSTWRITE サンプルにはカウンター署名がなく、認証されていない属性のタイムスタンプ構造が存在する間、それは空です。このブログの準備中、FireEye の Advanced Practices チームは、図 4 に示すように、署名付き実行可能タイムスタンプの VirusTotal による解析に問題がある可能性を特定しました。

署名付き BOOSTWRITE サンプルの VirusTotal ファイル署名タイムスタンプの不一致
図 4: 署名付き BOOSTWRITE サンプルの VirusTotal ファイル署名タイムスタンプの不一致

FireEye は、他のユーザーの混乱を避けるために、VirusTotal の不一致に対処するために Google にバグ レポートを提出しました。

コード署名などの手法によって導入された検出の弱点を説明するために、高度なプラクティス チームは、ML 検出システムから得られる悪意のある信頼スペクトルを、ファイルの奇妙さや異常 (弱い信号) と組み合わせて、非常に興味深い回避型のマルウェアを明らかにします。この手法は、私たち自身のDr. Steven Miller の Definitive Dossier of Devilish Debug Detailsで最近説明されました。実際、彼のブログとまったく同じプログラム データベース (PDB) パス ベースのアプローチを、このサンプルで見られるツールマークに適用して、クイック ハンティング ルールを作成できます。図 5 は、このブログの BOOSTWRITE サンプルの PDB パスを示しています。

F:projectsDWriteImplReleaseDWriteImpl.pdb

図 5: BOOSTWRITE PDB パス

Yara ルール テンプレートを適用して、図 6 のクイック ルールを作成できます。

ルール ConventionEngine_BOOSTWRITE
{
メタ:
author = “ニック・カー (@itsreallynick)”
参照 = “https://www.fireeye.com/blog/threat-research/2019/08/definitive-dossier-of-devilish-debug-details-part-one-pdb-paths-malware.html”
文字列:
$weetPDB = /RSDS[x00-xFF]{20}[a-zA-Z]?:?[\s|*s]?.{0,250}DWriteImpl[\s |*s]?.{0,250}.pdbx00/ nocase
調子:
(uint16(0) == 0x5A4D) および uint32(uint32(0x3C)) == 0x00004550 および $weetPDB およびファイルサイズ < 6MB
}

図 6: BOOSTWRITE の PDB パスを Yara ルールに適用する

これと同じ概念を、BOOSTWRITE のエクスポート DLL 名 (DWriteImpl.dll) などの他の実行可能特性に適用して、迅速な発見に役立つ迅速で簡単なルールを作成できます (図 7 参照)。

ルール Exports_BOOSTWRITE
{
メタ:
author = “Steve Miller (@stvemillertime) & Nick Carr (@itsreallynick)”
文字列:
$exyPants = “DWriteImpl.dll” nocase
調子:
uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and $exyPants at pe.rva_to_offset(uint32(pe.rva_to_offset(pe.data_directories[pe.IMAGE_DIRECTORY_ENTRY_EXPORT].virtual_address) + 12)) and filesize < 6MB
}

図 7: BOOSTWRITE のエクスポート DLL 名を Yara ルールに適用する (注: このルールは公開後に更新されました。以前は「module_ls.dll」と呼ばれていましたが、これは Turla 用であり、無関係です。)

もちろん、回復力のある防御機能が必要であり、そのために、FireEye はプラットフォーム全体でこのアクティビティを検出します。表 6 には、このアクティビティをネイティブにキャプチャした検出機能のより大きなリストから、いくつかの特定の検出名が含まれています。

プラットホーム

署名名

エンドポイント セキュリティ

MalwareGuard ML 検出 (署名されていない亜種)

ネットワーク セキュリティと電子メール セキュリティ

Malware.binary.dll (動的検出)
MalwareGuard ML 検出 (署名されていない亜種)
APTFIN.Dropper.Win.BOOSTWRITE (ネットワーク トラフィック)
APTFIN.Backdoor.Win.RDFSNIFFER (ネットワーク トラフィック)
FE_APTFIN_Dropper_Win_BOOSTWRITE (静的コード ファミリの検出)
FE_APTFIN_Backdoor_Win_RDFSNIFFER (静的コード ファミリの検出)

表 6: FireEye 検出マトリックス

テクニックに頭を悩ませるな – MITRE ATT&CK マッピング

ブーストライト

ID

戦術

ブーストライト コンテキスト

T1022

暗号化されたデータ

BOOSTWRITE は、256 ビット キーと 64 ビット IV を使用して ChaCha ストリーム暗号を使用してペイロードをエンコードし、検出を回避します。

T1027

難読化されたファイルまたは情報

BOOSTWRITE は、256 ビット キーと 64 ビット IV を使用して ChaCha ストリーム暗号を使用してペイロードをエンコードし、検出を回避します。

T1038

DLL 検索順序ハイジャック

BOOSTWRITE は、アプリケーションによる「gdi」ライブラリの読み込みを悪用し、「gdiplus」ライブラリを読み込み、最終的にローカルの「Dwrite」dll を読み込みます

T1116

コード署名

BOOSTWRITE の亜種が有効な CA によって署名されていることが確認されました

T1129

モジュールロードによる実行

BOOSTWRITE は、アプリケーションによる「gdi」ライブラリの読み込みを悪用し、「gdiplus」ライブラリを読み込み、最終的にローカルの「Dwrite」dll を読み込みます

T1140

ファイルまたは情報の難読化解除/デコード

BOOSTWRITE は、256 ビット キーと 64 ビット IV で ChaCha ストリーム暗号を使用して、実行時にペイロードをデコードします。

RDFSNIFFER

ID

戦術

RDFSNIFFER コンテキスト

T1106

API による実行

RDFSNIFFER は、いくつかの Win32 API 関数をフックして、NCR Aloha Command Center クライアント セッションを改ざんしたり、ユーザー インターフェイスの要素をハイジャックしたりできるようにすることを目的としています。

T1107

ファイルの削除

RDFSNIFFER には、ローカル ファイルを削除する機能があります。

T1179

フッキング

RDFSNIFFER は、いくつかの Win32 API 関数をフックして、NCR Aloha Command Center クライアント セッションを改ざんしたり、ユーザー インターフェイスの要素をハイジャックしたりできるようにすることを目的としています。

謝辞

著者は、 Steve Elovitz 氏、Jeremy Koppen 氏、および定期的に FIN7 と対峙し、被害者の環境から静かに立ち退かせている多くの Mandiant インシデント対応者に感謝したいと思います。 Ayako Matsuda からの徹底的な検出エンジニアリングと、FLARE のDimiter AndonovChristopher GardnerおよびTyler Deanからのリバース エンジニアリングに感謝します。 FLARE の Troy Ross に、彼の PE シグネチャ分析サービスの開発と、フォローアップの質問への回答に特に感謝します。スティーブ・ミラーの熱い火の研究と Yara 異常の仕事に感謝します。そして最後に、比類のない最前線の FIN7 テクニカル インテリジェンスの専門知識と MITRE ATT&CK 自動マッピング プロジェクトの両方の Advanced Practices チームの残りのメンバー – 特にRegina Elwell とBarry Vengerikに感謝します。

参照: https://www.mandiant.com/resources/blog/mahalo-fin7-responding-to-new-tools-and-techniques

Comments

Copied title and URL