※ 本ブログは、2019年4月30日にBromium BlogにポストされたEmotet: Catch Me If You Can (Part 2 of 3)の日本語訳です。
「身代金」を要求するため感染が明示的なWannaCryとは異なる問題を生み出すEmotet。今回は、Emotetに関するJames Wrightの投稿の続きで、Emotetが企業にもたらすリスクのレベルについて説明しました。 Jamesは、他のセキュリティツールでは見逃されてきた、Emotetを配信する攻撃をBromiumがどのように検出できるかを詳しく説明しています。
この投稿シリーズのパート1: Emotet (Part 1/3):PCにどのように感染するか
バンキングシステムを狙ったトロイの木馬として2014年に端を発して以来、Emotetは複数コンポーネント型のマルウェアファミリーとして進化し続けています。 長年にわたりって下記の機構を含んだ非常に柔軟なコードベースを採用しています。
Emotetの分析を3つの段階に分けて行いました。パート1は前述のとおりここにあります。今回のパート2では、Emotetを配信するフィッシング配信活動の振舞い分析について詳しく解説します。この記事ではMicrosoft Word文書から、難読化されたVBAマクロを実行してペイロードをドロップする機能について詳しく説明します。パート3では、近日公開予定のEmotet検体のバイナリ分析について解説して、マルウェアの機能を探ります。
今回の分析のために、 Bromium Secure Platformによって隔離された、最近の実際の攻撃で使用された検体を入手しました。
MD5 | 097acffec441bdcd69ff3c56fdf0f615 |
SHA1 | 7049bbf580e598cc6bf111a0670f0d25a8ccd6c0 |
SHA256 | 6a1a7e4618a1803fce47331915610ffacc49abf261ee5783ef409e20b78c8e6d |
今回のEmotet展開では、Microsoft Word文書をダウンロードするハイパーリンクとして拡散していました。 文書が開かれると「コンテンツを有効にする」をクリックするようにユーザーを促します。文書にマクロまたはActiveXコントロールが含まれている場合、既定では、Microsoft Wordはセキュリティの警告を表示してユーザーに通知します。 通常、マルウェアの作成者はソーシャルエンジニアリングの手法でユーザーをだまして[コンテンツを有効にする]ボタンをクリックさせて、攻撃の次の段階を実行させます。
この場合、コンテンツを有効にすると、ドキュメントはVBA AutoOpenマクロを実行します。 Emotet VBAスクリプトからの予想通り、文字列は非常に複雑に難読化されており、断片化された文字列が多数含まれています。 これは、静的な分析エンジンによる悪意のあるコンテンツの検出を難しくするための、よく知られた手法です。
スクリプトを精査して、興味深いパターンを見つけながらコードを難読化解除していきます。
VBAスクリプトがWMIクラスwinmgmts:Win32_ProcessStartupおよびwinmgmts:Win32_Processを参照していることがわかります。 実行時に、autoopen()SubはこれらのWMIクラスを使用して、バックグラウンドでBase64エンコードコマンドを実行するPowerShellのインスタンスを起動するのです。
マクロはWMIを使用してPowerShellを実行しているので、プロセスはWmiPrvSe.exe(WMIプロバイダーホスト)を使用してバックグラウンドで起動されます。 このようにPowerShellを実行することで、マルウェアの作成者はプロセスチェーンベースの検出を回避できます。
Ursnifで使用されている回避技術についての記事で説明したように、これは正規のWindowsプロセスを使用してマクロからPowerShellを起動するための知られた手法です。 Bromiumはこのタイプの間接実行を検出し、関連するプロセス作成をすべて、悪質なVBAコードの実行を担当する、元の実行可能ファイル(この場合はWINWORD.exe)に帰属させます。
Base64でエンコードされた文字列をデコードした後、下図の出力が生成されます。 アナリストやスキャンエンジンによる認識を困難にするために、同じ文字列結合と大文字と小文字の不一致の手法を使用してコマンドを難読化しています。
難読化を解除した状態でコマンドを表示するには、単にすべての「+」文字を削除します。
上記のPowerShellコマンドは、Base64でエンコードされた文字列を縮小してデコードし、文字列の最後に達するまでそれをストリームとして読み取ります。 次に、Invoke-Expressionコマンドレットの別名 ‘iex’を使用してメモリ内で結果の出力を実行します。これは、マルウェア作成者の間でコマンドを実行するためのもう1つの一般的な手法です。 これを実現するために、文字列 ‘SilentlyContinue’を含む変数$ Verbosepreferenceを使用しました。 最初の文字と3番目の文字( ‘i’と ‘e’)が文字列から選択され、それらが ‘X’と結合されて文字列 ‘ieX’を形成します。
難読化解除されたPowerShellスクリプトは、最初に ‘@’文字を区切り文字として使用して変数$ XXQCZAxAに割り当てられた文字列を分割し、次にForEachループに入り、Net.WebClientクラスを使用して実行可能ファイルを被害者のファイルシステムにダウンロードします。スクリプトは環境変数 $env:userProfile を使用して、現在ログインしているユーザーのユーザープロファイルディレクトリを取得します。 ダウンロードされたファイルは、犠牲者のユーザプロファイルディレクトリ(例えばC:\Users\[ユーザ名])に ’15.exe’というファイル名で保存されます。 ダウンロードされたファイルのサイズが40KBを超える場合、スクリプトはForEachループを終了し、Invoke-Itemコマンドレットを使用して ’15.exe’を実行します。
以下のスクリーンショットからわかるように、PowerShellコマンドはHTTP GETリクエストを送信して、hxxp://dautudatnenhoalac[.]com/wp-admin/DYAsI から最初のステージのEmotet実行可能ファイルを取得します。 Webサーバーからの応答は、提供されたファイルが ‘s17zjCTuWfNF.exe’であり、ペイロードはファイルの先頭にあるマジックバイト0x4D5A(‘MZ’)のASCII表現で示されるPE形式のファイルであることを示しています。
ペイロードをダウンロードした後、PowerShellは ’15.exe’を実行します(PID:2600)。 その後、プロセスは同じ場所から’15.exe’の別のインスタンス(PID:2412)を起動します。
2番目の ’15.exe'(PID:2412)は、自分自身をC:\Windows\SysWOW64ディレクトリに ‘ipropmini.exe’という名前でコピーします。 次に、BinaryPathがC:\Windows\SysWOW64 \ipropmini.exeを指し、DesiredAccessが18であるサービスを作成します。DesiredAccess ’18’は、サービスに対するSERVICE_CHANGE_CONFIGおよびSERVICE_STARTアクセス許可を付与します。
Windowsサービスを介してバイナリを起動することは、いくつかの理由から一般的な手法です。1点目はプロセスチェーンに基づく検出を中断すること、2点目はサービスの開始時に、バイナリが有効なサービス実行可能ファイルではない場合であっても常に実行されることです。
実行可能ファイル ‘ipropmini.exe'(services.exeによって起動されます)は、インターネットから次のステージのペイロードをダウンロードする自分自身の別のインスタンスを起動します。 その後、実行可能ファイルは最初のEmotetプロセス(’15.exe’)に対してプロセスの空洞化を実行し、そこで修正されたコードが書き込まれます。
実行したままにしていると、Emotetはリモートサーバーからより多くのペイロードをダウンロードし、いくつかのプロセスを生成してシステム情報を収集し、それを暗号化されたチャネルを介してCommand & Control(C2)サーバーに送信します。
EmotetはHTTP POSTを使用してシステム関連情報をC2サーバーに送信し、サーバーからの応答としてさらにコマンドとペイロードを受信します
SHA256 (15.exe) | af2f82adf716209cd5ba1c98d0dcd2d9a171bb0963648bd8bd962edb52761241 |
SHA256 (ipropmini.exe) | af2f82adf716209cd5ba1c98d0dcd2d9a171bb0963648bd8bd962edb52761241 |
SHA256 (ipropmini.exe) | 00af24bb1be8c17106c19ba0c55acd011088c6c5b1cb01d44cc4b829b3449bcb |
SHA256 (5W8Jo1G2cQJW9lWLu.exe) | 00af24bb1be8c17106c19ba0c55acd011088c6c5b1cb01d44cc4b829b3449bcb |
SHA256 (7hZs97N.exe ) | f58322a00b576deb9c1a26b28ca8fa84c793fc8baf3c4f780a9a77966dda89e3 |
SHA256 (ipropmini.exe) | 0eefd2619d77d7bafed95197e0c0ef30147acaddcd81eb2761ee9893fd55f91b |
配信 URL | http[:]//dautudatnenhoalac[.]com/wp-admin/DYAsI/ |
配信 URL | http[:]//www.bewebpreneur[.]com/wp-admin/daHN/ |
配信URL | http[:]//www.allgreennmb[.]com/wp-content/themes/pridezz/t9iV |
配信URL | http[:]//www.baiduwanba[.]com/css/Ubh/ |
配信URL | http[:]//rileyaanestad[.]com/wp-includes/DXn1R/ |
Author : Ratnesh Pandey
監訳:ブロード