解析メモ

マルウェア解析してみたり解析に役に立ちそうと思ったことをメモする場所。このサイトはGoogle Analyticsを利用しています。

COVID-19 をテーマとしたフィッシングキャンペーンのファイル分析(Anomali)

はじめに

世界中で感染を拡大している COVID-19 をテーマとし、情報窃盗用のマルウェアである HawkEye をインストールさせるためのフィッシングキャンペーンが観測されたことを Anomali が報告しています。本レポートではこのキャンペーンの感染チェーンを明らかにすることを目的とした解析の内容を Anomali の報告より詳細な部分の説明を交えながらまとめています。なお、Anomali ThreatStream を使った分析及び HawkEye の解析は本レポートのスコープ外とさせていただきます。

www.anomali.com

全体の俯瞰

Anomali の報告で Figure 1 で示されているように、このフィッシングキャンペーンは以下の感染チェーンをたどります。

  1. ターゲットがCOVID-19 の治癒について書かれた doc ファイルが添付された電子メールを受信
  2. 添付の doc ファイル (RTF 文書ファイル) を実行、MS Word 起動
  3. RTF 文書ファイル内に埋め込まれた OLE オブジェクト (xls ファイル) が実行される
  4. OLE オブジェクトにより MS Excel 起動、マクロ有効化
  5. VBA マクロがスプレッドシート上のデータを読み取り PowerShell コードを生成、実行
  6. PowerShell によりペイロードC# コードに変換、実行
  7. C# コードが HawkEye をダウンロード、実行し感染

本レポートではこの感染チェーンの内、2~6 を解説します。

添付 RTF 文書ファイルの分析

Anomali の報告に書かれている IoC を元に doc ファイルを VirusTotal から取得しました。この検体を開く前に、oletools (rtfobj) を使って OLE の埋め込みを確認します。

f:id:k1z3:20200416003048p:plain

同じ MD5 ハッシュ値Excel Spread Sheet が 5 つ埋め込まれていることが確認できます。これらスプレッドシートは -s all オプションで抽出しましたが、そのまま実行することはできません。なお、Anomali の報告にある IoC (Embedded macro enabled worksheet) と SHA256 ハッシュが一致します。MS Word にて doc ファイルを開いたところ、自動的に別プロセスとして MS Excel が起動し、マクロの有効化を促します。

f:id:k1z3:20200416004019p:plain

この MS Excel は「マクロを無効にする」をクリックしても埋め込まれている OLE オブジェクトの数である5回起動し直されます。また、文書ファイルは白紙の1ページの構成ですが、フッター部分に OLE オブジェクトが埋め込まれていることが確認できます。

f:id:k1z3:20200416004332p:plain

埋め込みスプレッドシートの分析

マクロを有効化したところ検証環境(Windows 10, 日本語)では以下のエラーが出ました。

f:id:k1z3:20200416005303p:plain

エラーは変数 Mohair の実行で発生しています。この変数を確認したところ、PowerShell のコードに変換しようとして失敗していることが読み取れます。引き続き、埋め込まれている VBA コードを解析したところ、StrConv 関数が使用されていました。この関数は「システムの既定のコードページ」を使って変換を行うため、攻撃者が意図した言語のシステムじゃない場合に意図した動作ができない可能性があります。Anomali の報告より、フィッシングキャンペーンの電子メールは英語で記述されている事が分かるため、システムの言語を英語に切り替えて再度実行します。

f:id:k1z3:20200416005647p:plain

f:id:k1z3:20200416005556p:plain

システムの表示言語を英語に切り替えると、PowerShell のコードへの変換に成功します。表示言語の切り替えは、設定→時刻と言語→言語→Windowsの表示言語で変更します。英語がインストールされていない場合は同一画面から言語パックのダウンロードを行う必要があります。

f:id:k1z3:20200416012052p:plain

PowerShell コードの分析

抽出された PowerShell コードは関数の定義とその関数を使った処理、最後に処理結果の変数を使って関数の実行を行う構成となっています。

f:id:k1z3:20200416012836p:plain

最後の関数実行は通信が発生する可能性があるので、その直前の変数 $efd382 への関数処理結果の格納まで進め、変数に格納される値を確認します。これにより、変数 $efd382 は C# のコードであり、最後の関数実行で C# コード内の関数を呼んでいる事が分かります。

f:id:k1z3:20200416013409p:plain

C# コードを整形し、ます。コード内にはいくつか関数 xec4a() による文字列の変換が行われています。これは C# コード内に関数が定義されていますが、作りは PowerShell コードで定義していた関数と同じです。その為、PowerShell 内での変換も可能です。関数 xec4a() による変換を進めていき、Anomali の報告内で HawkEye のダウンロード URL とされている IoC を抽出することができます。また、この HawkEye が AppData 内にファイル名 v5cfb6.exe として保存されることがコードから確認できます。

f:id:k1z3:20200416013811p:plain

なお、Anomali 報告の IoC の内、IP アドレスは HawkEye ダウンロード URL ホストの IP アドレスです。

f:id:k1z3:20200416014545p:plain

まとめ

今回のキャンペーンに使われた添付ファイルの分析では Anomali の報告にもある通り、スプレッドシート内のセルに書き込まれた値を読み取り、変換を行い PowerShell コードを生成する、という特徴がありました。また、OLE オブジェクトとしてスプレッドシートが埋め込まれているものでした。従来からフィッシングメールへの対策としてマクロの実行対策が有用ですが、今回のキャンペーンも同じ対策が有効と言えそうです。また、添付の文書ファイルは空白のページのみが含まれているものでしたが、攻撃が巧妙化してきた場合、より説得力のあるマクロを有効にしてしまう内容に変化していく可能性があります。十分に注意していくことが必要です。

最後に、本解析で抽出したコードを GitHub に公開しています。解析の参考にしてください。

リファレンス

oletools
https://github.com/decalage2/oletools

StrSonv 関数
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/strconv-function