クラウドから悪意を持ったローダー

先日、偽のPDFファイルをダウンロードするシンプルな悪意を持ったダウンローダーを発見しました。PE Loaderのコードをバイナリに組み込んでいる標準的な不正なローダーと違い、このローダーはその部分を排除しており、代わりにそれをオンライン上でフェッチするのです。

FortiGuard Labsの脅威インテリジェンスシステムはこのダウンローダーのトラフィックを検知し、それをW32/Upatre.FT!trとして検出してこのマルウェアの効率的な解析に役立てています。

オンライン登録

実行されると、このローダーは被害者のローカルのシステムの情報を取得し、それらを使ってURIを生成し、サーバーに接続します(図1)。サーバーからのフィードバックがないため、シンプルな一方向の登録です。


図1. 登録時のトラフィック

上の実際の例では、AVA{Removed}5 という文字列が被害者のコンピュータ名で、51-SP:がシステムのバージョンです。

偽のPDFをダウンロード

このローダーは.pdfの拡張子を持つ最終ペイロードをダウンロードします(図2)。しかし、このファイルの中身はPDF形式になっていません。


図2. 偽のPDFファイルをダウンロード

ローダーは0x74E7E1C8という埋め込まれた鍵を使用し、偽のPDFを復号します。復号の後、オフセット0x12のダブルワード値をチェックし、それが偽PDFの全長と同じであるかどうかを確認します。次に、オフセット4の別のダブルワード値をチェックし、それがハードコードされたシグネチャ0x2E0F1567と同じであるかどうかを確認します(図3)。


図3. 復号された偽PDFファイル

両方が一致すると、ローダーはクラウドローダーのコードの呼び出しを指示します(図4)。このコードのオフセットはシグネチャのすぐ後、オフセット8に表示されています(図3)。


図4. クラウドローダーのコードを呼び出す

上のコードでは、 esiに図3の復号されたPDFファイルの開始オフセットが含まれています。call eaxというコードは実際のクラウドローダーに実行を指示します。


図5. クラウドローダーのコード

このクラウドローダーは元のボットファイルと同じインポート構造を参照するので、その構造のオフセット0x1134にある値が RtlDecompressBufferのAPIアドレスであることが容易にわかります。このAPI呼び出しの後、最終ペイロード、つまり不正なPEファイルが現れます。その後、クラウドローダーはちょっとしたトリックを使って「MZ」ヘッダーのシグネチャをチェックします(図5)。

最後のペイロードは一定ではありません。今回の解析で、このマルウェアはW32/Battdil.I!trやW32/Kryptik.CWIM!trなど、さまざまなマルウェアをダウンロードしていることがわかりました。

結論

このマルウェアはなぜバイナリからローダーコードを排除し、それをオンライン上でフェッチしているのでしょうか? この仕組みは、元のボットのサイズを小さくするため、そしてマルウェア作成者が将来的にクラウドローダーにより迅速に、より多くの機能を追加できるようにするためではないかと思われます。

FortiGuard Labsの脅威インテリジェンスシステムは、複数の検出メカニズムに基づき今後もこのクラウドローダーのアクティビティの監視を継続し、改訂版がリリースされた時には対処を行っていきます。