最新のDridex個人情報盗難マルウェアの分析



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」は他のライブラリの中から「SY​​SDM.CPL」をロードします。 デフォルトでは、「SYSDM.CPL」ファイルの検索は、アプリケーションが起動されたフォルダーで最初に実行されます。 この例では、これはC:\ Windows \ System32 \ 1365です。 このファイルがそこに見つからない場合、システムでの.dllファイルの検索順序の設定に応じて、他のフォルダーで検索が実行されます。

実行可能ファイルと変更された.dllが同じフォルダーにコピーされた後、Dridexは疑わしいためにできるだけ低くする必要があるため、正当なプログラムを介して悪意のあるアクションが実行されます。

前の章で示したように、ファイルを実行するために、1時間ごとにランダムな番号(C:\ Windows \ System32 \ 1365)のフォルダーで実行するスケジュールタスクを作成します。


14.プログラムされたタスクの作成

既に述べたように、フォルダーの名前には4つのランダムな数字が含まれ、作成される実行可能ファイルの名前は常に.dllと同じではありませんが、マルウェアは常にライブラリがロードする実行可能ファイルを認識し、指定されたライブラリーを常に変更できます悪意のあるコードを使用します。

分析を続けると、次のように動作することがわかります。

  1. 「C:\ Windows \ System32 \」にすべての実行可能ファイルがリストされます
  2. 各実行可能ファイルの名前をハッシュし、以前に保存された値と比較します。 一致する場合、この実行可能ファイルで引き続き動作します。
  3. 選択した実行可能ファイルのIATを読み取り、そこから.dllを選択してさらに変更します。
  4. 手順3で選択したIAT .dllを読み取ります。
  5. 彼は悪意のあるコードのコピー(.dll自体)を作成し、最後にランダムな名前のセクションを追加して、ステップ4で取得したIATをコピーします。
  6. 選択した実行可能ファイル(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によってコンピューターが侵害されているかどうかを確認するには、次の点を考慮する必要があります。


8.リンク

[1] Dridex Malware Takedownの内部

[2] Dridex v4-AtomBombingとその他の驚き

[3] Dridex Banking Malwareサンプルのテクニカル分析とソリューション

Source: https://habr.com/ru/post/J340172/


All Articles