
Dridexの最新バージョン
に関するレポートをご紹介します。Dridexは、感染したコンピューター上でも見過ごされがちな複雑さと能力で有名になった有名な銀行のトロイの木馬です。
1.はじめにDridexは、感染するデバイス上で見過ごされる複雑さと機能で知られる銀行のトロイの木馬です。 感染しているこれらのデバイスは、モジュールまたはライブラリを通じて悪意のある特性(外部または独自の特性)を自由に追加できるモジュラーボットネットに組み込まれています。
最初のバージョンは2014年末に登場しました。 2015年の初めに、新しいメジャーアップデートがリリースされ、2番目のバージョンに命が吹き込まれました。 Dridexの以前のバージョンを表示したときに最も安定して安定したのは2015年4月に登場した3番目のバージョンで、2017年2月に登場した最後の既知のバージョンである4番目のバージョンまでよく知られたサイバー攻撃で使用されていました。
2015年に特別サービスによって実行されたボットネットの主要コンポーネントの削除以降、Dridexのその他の主要な更新は見つかりませんでした[1]。
銀行のトロイの木馬のこの新しいバージョンには、新しい機能が含まれています。 それらの1つはAtomBombingと呼ばれます-これは、疑わしいAPIを呼び出さずにコードを埋め込み、監視システムによる検出を回避するように設計された機能です。 DLLをハッキングしてその存続可能性を高めるための手法が含まれています。 最後に、構成の取得に使用されるさまざまな暗号化方法が最適化されています。 [2]
2.トロイの特性以下は、分析されたファイルのいくつかの静的プロパティです。 トロイの木馬ハッシュ:

分析されたサンプルの内部作成日は2017年5月16日です。 問題のファイルは、Microsoftの正当なdllをシミュレートするために、64ビット環境で実行するためにコンパイルされました。
図1.ファイルのプロパティこれに加えて、ファイルは独自のアルゴリズムを使用して暗号化されるため、ウイルス対策ソフトに気付かれることはありません。
実行可能ファイルにはかなり多くのセクション(合計で11)があることがわかりました(図2を参照)。
図2.分析されたバイナリファイルの静的情報DATAセクションでは、エントロピーが7,799であり、非常に大きいことがわかります。 そのセクションにあり、複雑に暗号化され、圧縮されたバイナリファイルを見つけることができます(復号化すると、実際の悪意のあるコードになります)。 図3に示すように、最初の復号化されたレイヤーでは、実行可能ファイルがプロセスにメモリを保存し、その後コードをコピーし、最終的にそれを呼び出して実行します。
図 3.シルクコードへの移行コードが最初に行うことは、使用する関数のアドレスを取得することです。 彼は、プログラムによってロードされたライブラリーを介した動的検索を使用してこれを行います。 このタスクを実行するには、PEB_LDR_DATA構造とLDR-MODULE構造を介して実行され、ロードされたdllのメインアドレスを見つけます。 dllによってエクスポートされたすべての機能を実行し、コンピューターのメモリで目的の機能のアドレスを見つけるために、エクスポートテーブルの開始アドレスを参照します。
図 4.ロードされたモジュールの列挙次に、シェルコードは、アドレスにアクセスし、最初のビットがE9(jmpアセンブラーと同等)と同じかどうかを確認することにより、ドキュメント化されていない関数LdrLoadDllに「フック」があるかどうかを確認します。
図 5.フック検証前の検証が成功した場合、彼はサンドボックス内のプロセスを監視するためのフックを作成するアバストおよびAVGライブラリである「snxhk.dll」という名前でdllメモリプロセスをアンパックします。
図 6.ライブラリ:snxhk.dll最後に、シェルコードはコンピューターのメモリのDATAセクションにある実行可能ファイルを復号化し、それをベースイメージのアドレスにコピーしてから、新しい結果の実行可能ファイルを起動します。
図 7.復号化された実行可能ファイルしたがって、サンプルを開梱する完全なプロセスを図8に示します。
図 8.開梱プロセスを完了します3.感染プロセス3.1。 感染ベクターデバイスの感染がどの方向で実行されるかは、まだ最後まで明確ではありません。 これは、悪用によるものか、スパムキャンペーンの一部である可能性があります。
3.2。 感染したシステムとの相互作用トロイの木馬は、起動されると、デバイス上で実行されているマルウェアの唯一のインスタンスであるかどうかを確認し、explorer.exeプロセスに既に導入されているかどうかも確認します。
これはすべて、ミューテックスを作成して開くことによって行われます。 これを実現するために、彼は最初にデバイス名とユーザー名を一緒に作成し、次にそれらのMD5ハッシュを計算します。
図 9.ハッシュ計算次に、彼は角かっこを最初と最後に追加し、COMオブジェクトのようにダッシュで区切ります。
図10.システムで作成されたミューテックス。このアルゴリズムを使用すると、トロイの木馬Dridexへの感染を防ぐために、システムでこれらのミューテックスを作成するワクチンを開発できます。 実行されていない悪意のあるプログラムは、%WINDOWS%\ system32 \ [0-9] {4]にフォルダーを作成します
図 11.作成されたフォルダー悪意のあるプログラムは、正当な.exeを対応する.dllまたは.cplとともにフォルダーにコピーします。 この.dllまたは.cplは正当ではありません-これはトロイの木馬です。 フォルダから.exeを実行すると、悪意のある.dllまたは.cplがハイジャックと呼ばれる手法を使用してロードされます。
また、ランダムな名前(この例では、図12は「Domitxtdoi」)でタスクをプログラムします。これは60分ごとに実行されます。
図 12.タスクを作成するこの例では、tcmsetup.exeが起動された後、悪意のあるdll(TAPI32.dll)が読み込まれ、感染プロセスが開始されます。
タスクのプログラミング後、一連のコマンドが起動され、explorer.exeのファイアウォールでルールが作成されます。
netsh advfirewallファイアウォールルール名の追加=「コアネットワーキング-マルチキャストリスナーの完了(ICMPv4-In)」プログラム=「C:\ Windows \ Explorer.EXE」dir =動作中=許可プロトコル= TCPローカルポート=任意
悪意のあるタスクを作成するschtasks.exe /作成/ F / TN "Utdcm" / SC分/ MO 60 / TR "C:\ Windows \ system32 \ 3007 \ tcmsetup.exe" / RL最高
このプロセス中に、AtomBombingの手法を使用して、悪質な.dllがexplorer.exeプロセスに組み込まれます。 その後、ユーザーがブラウザ(Internet Explorer、Firefox、Chromeなど)を開く瞬間を待ちます。
ユーザーがブラウザーを開くと、新しいAtomBombingテクニックを使用して、explorer.exeからブラウザーに新しいシェルコードが埋め込まれます。
4.システム内の存在システムに存在することを確認するには、次の手順を実行します。 C:\ Windows \ System32に4桁のランダムな数字のフォルダーを作成し、その中に正規のWindows実行可能ファイル(常に同じ実行可能ファイルではない)と、この実行可能ファイルによってロードする必要がある.dllをコピーします。 この.dllだけが悪意のあるコードによって変更されます。
図 13.システム内の存在この手法は、DLLハイジャックとして知られています。 彼女は、システムが彼女がダウンロード/使用しようとしているライブラリ/ファイルを検索できるようにするコマンドを使用します。 上の図の場合、実行可能ファイル「SystemPropertiesPerformance.exe」は他のライブラリの中から「SYSDM.CPL」をロードします。 デフォルトでは、「SYSDM.CPL」ファイルの検索は、アプリケーションが起動されたフォルダーで最初に実行されます。 この例では、これはC:\ Windows \ System32 \ 1365です。 このファイルがそこに見つからない場合、システムでの.dllファイルの検索順序の設定に応じて、他のフォルダーで検索が実行されます。
実行可能ファイルと変更された.dllが同じフォルダーにコピーされた後、Dridexは疑わしいためにできるだけ低くする必要があるため、正当なプログラムを介して悪意のあるアクションが実行されます。
前の章で示したように、ファイルを実行するために、1時間ごとにランダムな番号(C:\ Windows \ System32 \ 1365)のフォルダーで実行するスケジュールタスクを作成します。
図 14.プログラムされたタスクの作成既に述べたように、フォルダーの名前には4つのランダムな数字が含まれ、作成される実行可能ファイルの名前は常に.dllと同じではありませんが、マルウェアは常にライブラリがロードする実行可能ファイルを認識し、指定されたライブラリーを常に変更できます悪意のあるコードを使用します。
分析を続けると、次のように動作することがわかります。
- 「C:\ Windows \ System32 \」にすべての実行可能ファイルがリストされます
- 各実行可能ファイルの名前をハッシュし、以前に保存された値と比較します。 一致する場合、この実行可能ファイルで引き続き動作します。
- 選択した実行可能ファイルのIATを読み取り、そこから.dllを選択してさらに変更します。
- 手順3で選択したIAT .dllを読み取ります。
- 彼は悪意のあるコードのコピー(.dll自体)を作成し、最後にランダムな名前のセクションを追加して、ステップ4で取得したIATをコピーします。
- 選択した実行可能ファイル(p。3)と変更された悪意のある.dll(p。5)をランダムなフォルダーにコピーします。
この場合、システムに存在を取得し、実行可能ファイルを実行するたびに、悪意のある.dllをロードします。
また、悪意のあるプログラムは、「HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run」のルートを使用して、AppData \ Roaming \ [ランダムなフォルダ名]のレジストリキーとともに、実行可能形式で自分自身のコピーを作成します。
図 15.レジストリキー5.原子爆弾による序論DridexはAtomBombingテクニックを使用して、疑いを引き起こすことなくシェルコードを他のプロセスに書き込みます。 これは、APCおよびAtomと呼ばれる最も一般的に使用されるWindows Executiveオブジェクトの1つを呼び出すことで実現されます。 以下は、別のプロセスの実装に含まれるさまざまなステップです。
5.1。 対象プロセスを検索この場合、ターゲットプロセスはプロセスexplorer.exeであり、それに潜入するために、次の関数を使用して参加プロセスをリストするときに最初に利用可能でなければなりません。
図 16.プロセスの列挙explorer.exeプロセスを見つけると、OpenProcess関数を呼び出して、アラート可能なスレッドの列挙を開始します。
5.2。 アラート可能なスレッドを検索する
図 17.アラート可能なスレッドこの時点で、マルウェアはアラート可能な状態のスレッドを見つけようとします。 これにより、彼女はターゲットプロセスでコードを実行するためのAPC呼び出しを行うことができます。
アラート可能なスレッドを見つけるために、トロイの木馬は最初にexplorer.exeの各スレッドのハンドルを受け取ります。 次に、NtSetEventとしてNtQueueApcThreadの呼び出しを開始し、スレッドのいずれかが応答するのを待ちます。
すべてが正常に機能する場合、呼び出しに応答した最初のスレッドを受け取り、その後コードの実装を開始します。
5.3。 ターゲットプロセスでのシェルコードの導入まず、悪意のある.dllがGlobalAddAtomWを呼び出し、ターゲットプロセス(この場合はexplorer.exe)に埋め込むコンテンツを含む新しいAtomを作成します。
第二に、悪意のある.dllはNtQueueApcThreadを呼び出し、explorer.exeプロセスによって起動される関数をパラメーターとして送信します。
これが初めて行われると、トロイの木馬はmemsetを呼び出して、シルクコードが書き込まれる領域が0であることを確認します。
図 18.メモリーの消去R8でわかるように、Dridexがシェルコードのコピーを選択したゾーンがntdllにあることを示すことが重要です。 これは、ASLRに関係なく、すべてのプロセスでntdllが常に同じ開始番号でロードされるためです。
次の反復では、NtQueueApcThreadパラメーターとして渡された関数はGlobalAtomGetAtomNameWになります。その結果、ターゲットプロセスは、悪意のある.dllによって作成されたばかりのAtomを受け取り、その内容をexplorer.exeの内部に書き込まないように指定されたゾーンに書き込みます疑念を生じさせます。
まず、彼はシルクコードのIATを作成します。
図 19. explorer.exeでIATを作成するそして、何度か繰り返した後、シェルコードをexplorer.exeに完全にコピーします。
図 20. explorer.exeのシェルコード5.4。 ターゲットプロセスでシェルコードを実行するシェルコードをexplorer.exeにコピーしたら、実行する必要があります。 これを行うために、Dridexは、Atomを使用してシェルコードが実装されたのと同じ方法でGlobalAtomGetAtomNameA関数を変更します。 関数のソースコード:
図 21.オリジナル機能関数の変更方法は次のとおりです。
図 22.変更された機能ご覧のとおり、explorer.exeでGlobalAtomGetAtomNameAを呼び出すと、プログラムはシェルコードを実行します。 悪意のある.dllから変更した後、NtQueueApcThreadを使用してGlobalAtomGetAtomNameAを呼び出します。
図 23.シェルコードのリモート実行この時点で、シルクコードの実行が開始されます。 その後、GlobalAtomGetAtomNameAは疑いを引き起こさないように元の状態に戻ります。
6.ネットワーク接続explorer.exeプロセスにトロイの木馬が導入されると、ポート443(通常はHTTPSプロトコルに使用されます)が開かれ、特定の接続が期待されます。
図 24.ポート443を開きます7.インジケータこのバージョンのDridexによってコンピューターが侵害されているかどうかを確認するには、次の点を考慮する必要があります。
- explorer.exeプロセスはポート443でリッスンし、ファイアウォールにはこのプロセスのネットワークトラフィックを許可するルールがあります。
- 式%SYSTEM%\ [0-9] {4}に対応するフォルダーがあり、正当な実行可能ファイルと、拡張子が.dllまたは.cplのファイルが含まれています。
- 60分ごとに%SYSTEM%\ [0-9] {4}フォルダーからファイルを実行するスケジュールされたタスクがあります。
8.リンク[1]
Dridex Malware Takedownの内部[2]
Dridex v4-AtomBombingとその他の驚き[3]
Dridex Banking Malwareサンプルのテクニカル分析とソリューション