マルウェアの分類を回避するための Delphi Packer の使用の増加

news

序章

悪意のあるプログラムを「パッキング」または「暗号化」するという概念は、静的および動的分析ツールによる分析を回避または無効化しようとする攻撃者の間で広く普及しています。分類と検出の回避は、新しい技術が取引され、実際に使用される軍拡競争です。たとえば、ウイルス対策技術、サンドボックス、およびその他のエンドポイント ソリューションによってマルウェアを「FUD」または「完全に検出不能」にすると主張するアクターによって、多くの暗号化サービスがアンダーグラウンド フォーラムで提供されていることがわかります。また、通常のユーザー アクティビティをモデル化し、それをマルウェア分析環境のフィンガープリントに対する効果的な対策としてベースライン化する取り組みが増加していることもわかります。

救助への Delphi コード

調査したサンプルには Delphi シグネチャが含まれており(図 1)、IDR(Interactive Delphi Reconstructor)による分析で Delphi コード構造と一致していました。

 

図 1: サンプルの Delphi 署名

Delphi プログラミング言語を使用すると、Windows API 関数を利用するアプリケーションやプログラムを簡単に作成できます。実際、一部のアクターは、静的分析を妨害し、動的分析中にアプリケーションを「正当に見える」ようにするための転用として、意図的にデフォルト ライブラリを含めています。図 2 は、この手法について議論している攻撃者のフォーラム投稿を示しています。

 

図 2: 手法について議論している攻撃者のアンダーグラウンド フォーラム投稿

配布キャンペーン

このパッカーを使用してパックされたペイロードをドロップする、さまざまなテーマのスパム キャンペーンが多数確認されています。

一例として、文書ファイルを添付ファイル (ハッシュ: 71cd5df89e3936bb39790010d6d52a2d) として運ぶ平均的な迅速な転送スパムがあり、悪意のあるマクロを利用してペイロードをドロップします。スパムメールを図 3 に示します。

 

図 3: スパムの例 1

もう 1 つの例は、エクスプロイト ドキュメント ファイル (ハッシュ: 0543e266012d9a3e33a9688a95fce358) を添付ファイルとして運ぶ、平均的な引用をテーマにしたスパムです。これは、方程式エディターの脆弱性を利用してペイロードをドロップします (図 4)。

 

スパムの例 2

図 4: スパムの例 2

例のドキュメントは、http://5.152.203.115/win32.exe からペイロードをフェッチしました。これは Lokibot マルウェアであることが判明しました。

ユーザー アクティビティ チェック

パッカーは、分析環境で実行されないように細心の注意を払っています。通常のユーザー アクティビティでは、多くのアプリケーション ウィンドウが一定期間回転または変更されます。パッカーの最初の亜種は、GetForegroundWindow API を使用して、さらに実行する前にウィンドウを変更するユーザー アクティビティを少なくとも 3 回チェックします。ウィンドウの変更が確認されない場合は、自身を無限スリープ状態にします。コードを図 5 に示します。興味深いことに、公開されているサンドボックスの一部は、この単純な手法で検出できます。

 

図 5: ウィンドウ変更チェック

ユーザー アクティビティを確認するために、パッカーの 2 番目の亜種は GetCursorPos および Sleep API を使用してマウス カーソルの動きをチェックし、3 番目の亜種は GetLastInputInfo および GetTickCount API を使用してシステムのアイドル状態をチェックします。

PE リソースから実際のペイロードを抽出する

元のペイロードは複数のバイナリ BLOB に分割され、リソース ディレクトリ内のさまざまな場所に格納されます (図 6 参照)。

 

図 6: コンテンツが暗号化されたビットマップ リソース

実際のペイロード バイトを見つけて組み立てるために、パッカー コードはまず、リソース セクション内のハードコードされたリソース ID からコンテンツを直接読み取ります。この形式の最初の 16 バイトは、ローリング XOR を使用して残りのバイトを復号化するために使用される XOR キーです。復号化されたバイトは、図 7 に示すように、実際には内部データ構造を表しており、さまざまなリソース ID で暗号化および難読化されたバッファーを参照するためにパッカーによって使用されます。

 

図 7: 暗号化されたファイル情報を示す構造

次にパッカーは、暗号化されたバッファから dwStartResourceId から dwStartResourceId+dwNumberOfResources までの値を読み取り、dwChunkSize のチャンクを読み取ることによってそれらを 1 つの場所に移動します。最終的なデータ バッファーが準備されると、前述のローリング XOR アルゴリズムと前述の構造からの新しいキーを使用して復号化を開始し、コア ペイロードの実行可能ファイルを生成します。このスクリプトを使用して、実際のペイロードを静的に抽出できます。

本当の家族の分類

サンプル セットから抽出できたアンパックされたバイナリの多くは、Lokibot マルウェア ファミリに属していると特定されました。また、Pony、IRStealer、Nanocore、Netwire、Remcos、nJRAT マルウェア ファミリ、コイン マイニング マルウェア ファミリなども特定できました。パッカーを使用するマルウェア ファミリの分布を図 8 に示します。このマルウェア ファミリの多様性は、多くの攻撃者がこの「暗号化」サービス/ツールを運用に使用しており、おそらく開発者自身から購入していることを示しています。

 

pack を使用したマルウェア ファミリの配布

図 8: packer を使用したマルウェア ファミリの配布

結論

パッカーとクリプター サービスは、攻撃者が実際のペイロードをできるだけ長く検出および分類されないようにする作業を外部委託するための簡単で便利なオプションを提供します。彼らは定期的に、反分析技術を使ってサンドボックス環境を迂回する巧妙な方法を見つけています。したがって、実際のユーザーの行動をモデル化しようとするサンドボックス環境でマルウェアのサンプルを爆発させることは、安全な方法です。

FireEye MVX エンジンは、このアクティビティを検出してブロックします。

侵害の痕跡 (IOC)

  • 853bed3ad5cc4b1471e959bfd0ea7c7c
  • e3c421d404c08809dd8ee3365552e305
  • 14e5326c5da90cd6619b7fe1bc4a97e1
  • dc999a1a2c5e796e450c0a6a61950e3f
  • 3ad781934e67a8b84739866b0b55544b
  • b4f5e691b264103b9c4fb04fa3429f1e

参照: https://www.mandiant.com/resources/blog/increased-use-of-delphi-packer-to-evade-malware-classification

Comments

Copied title and URL