前回の振り返り
前回はアンチアナリシスを回避するところまで解析しました。 今回はその続きを解析します。 参考までに以下に前回の解析概要を記載します。
単に検体の exe を起動するだけでは自身を削除してしまうだけなので、x32dbg でデバッグします。 1. [Ctrl+G]+「CreateFileW」で関数の番地に移動し、 先頭とリターンの箇所にブレークポイントを設定しておきます。 2. [F9]でブレークポイントを設定した「CreateFileW」まで処理を進めます。 3. さらに[F9]で処理を進めると、以下のファイルについて存在チェックをしていると分かります。 C:\popupkiller.exe C:\stimulator.ex C:\TOOLS\execute.exe `\\.\NPF_NdisWanIp` この「`\\.\NPF_NdisWanIp`」の存在チェックが失敗していると検体が終了してしまうので、 デバッガで書き換えて処理を継続させます。 4. 画面の右側にある LastError をダブルクリックして値を 0x3 とします。 5. [Ctrl+G]+「CreateToolhelp32Snapshot」で関数の番地に移動し、 先頭とリターンの箇所にブレークポイントを設定しておきます。 6. [F9]でブレークポイントを設定した「CreateToolhelp32Snapshot」まで処理を進めます。 7. さらに[F9]で処理を進めると、以下のプロセス名を監視していると分かります。 Wireshark immunity processhacker procexp procmon idaq regshot aut2exe perl python プロセス名は実行ファイル名を変更すれば変わるので、 適宜、変更するなどして監視を逃れるようにします。 8. さらに[F9]で処理を進めると「CreateFileW」の処理で再びファイルの存在チェックが始まります。 確認されるのは以下のファイルです。 `\\.\REGVXG `→ 0x2 (ERROR_FILE_NOT_FOUND) `\\.\FILEVXG` → 0x2 (ERROR_FILE_NOT_FOUND) `\\.\REGSYS` → 0x2 (ERROR_FILE_NOT_FOUND) `\\.\FILEM` → 0x2 (ERROR_FILE_NOT_FOUND) `\\.\TRW` → 0x2 (ERROR_FILE_NOT_FOUND) ここは特に何もしなくても通過しました。 9. 次に C:\Users\%USER%\AppData\Roaming のフォルダの走査が始まります。 10. [Ctrl+G]+「WriteFile」で関数の番地に移動し、 先頭とリターンの箇所にブレークポイントを設定しておきます。 11. さらに[F9]で処理を進めると「WriteFile」の処理でRoming 配下のどこかに自身をコピーを作成します。 このときのパスやファイル名はすでにあるフォルダやいくつかのファイル名が使われ、実行毎に変化します。
動作概要
- ダウンローダ
- 永続化(レジストリ Run を利用)
- svchost.exe にペイロードをインジェクションして外部通信を行う
ファイル概要
ファイル名: 2018-07-02-Zeus-Panda-Banker-caused-by-Emotet.exe MD5 : 5adbfc0f8654bb458438b3f614ca9e37 SHA1 : 1a99cb666cccb67e4537856e083773576ec29e1d SHA256 : 2527c9eb597bd85c4ca2e7a6550cc7480dbb3129dd3d6033e66e82b0988ee061 SSDEEP : 3072:aQ5wUD2hwA85rjT7LwuiEl8bBNpkLbNb9fkr+UnT2V3FPjDR08OUWd:aQX6hw9rf7Lwuhswdb9fkqUT63v08cd
挙動
レジストリの設定
CurrentVersion\Run に自身のコピーを登録し、永続化していました。
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\calWcapUtils.exe HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASAPI32\EnableFileTracing HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASAPI32\EnableConsoleTracing HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASAPI32\FileTracingMask HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASAPI32\ConsoleTracingMask HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASAPI32\MaxFileSize HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASAPI32\FileDirectory HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASMANCS\EnableFileTracing HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASMANCS\EnableConsoleTracing HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASMANCS\FileTracingMask HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASMANCS\ConsoleTracingMask HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASMANCS\MaxFileSize HKLM\SOFTWARE\Wow6432Node\Microsoft\Tracing\svchost_RASMANCS\FileDirectory HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\SavedLegacySettings HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\UNCAsIntranet HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\AutoDetect HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\UNCAsIntranet HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\AutoDetect
ファイルの作成
calWcapUtils.exe は検体のコピーです。生成されるフォルダやファイル名は実行する毎に変化するようです。 バッチファイルは検体自身を削除するためのものです。
C:\Users\username\AppData\Roaming\Thunderbird\Profiles\xxxxxx.default\extensions\{e2fda1a4-762b-4020-b5ad-a41df1933103}\defaults\preferences\calWcapUtils.exe C:\Users\infected\AppData\Local\Temp\upd4177f06c.bat
バッチファイルの内容は以下の通り。「C:\0\90_kentai\exe1」は今回の検体を置いているフォルダ名です。
@echo off :d del /F /Q "C:\0\90_kentai\exe1\2018-07-02-Zeus-Panda-Banker-caused-by-Emotet.exe" if exist "C:\0\90_kentai\exe1\2018-07-02-Zeus-Panda-Banker-caused-by-Emotet.exe" goto d del /F "C:\Users\username\AppData\Local\Temp\upd4177f06c.bat"
通信先
ドメイン名は実行毎に変化していたので下記以外にも複数あるようです。
hxxps://canariasmotor[.]top/1upmituazuciqfaiwutbo.dat hxxps://canariasmotor[.]top/fpQ/63hoTk/PR/XdOFKc/3YSbS/5/Eg/ hxxps://canariasmotor[.]top/JTr88t/x/1xLEA/v/0cfe/md/4X9ZZCa/TA hxxps://canariasmotor[.]top/W62/2j4/LfwWybJXmGIu7/e/PLaIw
通信はすべて HTTPS 通信による POST で、 POSTデータ自体は通信毎に変化していましたが、すべて 729 字からなる base64 という共通点がありました。 また単純にデコードするだけでは意味のあるデータにはなりませんでした。
なお、VirusTotal によると当該ドメインはシンクホールになっているようです。
content-length: 0 content-type: text/html date: Mon, 13 Aug 2018 06:12:04 GMT server: nginx/0.7.65 x-sinkhole: Malware sinkhole
解析画像
自身のコピーを作成した後、さらに処理を進めるとコピーを起動し自身を削除します。 その後、1分30秒ほど待機した後に svchost.exe が2つほど実行されます。 この2つのプロセスが calWcapUtils.exe(検体のコピー)が自動起動されるようにレジストリに登録をしたり、 外部通信をしたりしていました。
通信先はのドメインは VirusTotal で 9 / 68 として Malicious 判定がされていました。 ドメイン以降はほかにもいくつかあるようでした。都度生成されるものなのかもしれません。
感想
ほんの思いつきで選んだ検体だったものの予想以上にちゃんとしたマルウェアでした。 楽しかったものの解析手順なぞることすら苦戦するという。。。
参考
今回の検体は、ほぼこちらのサイトの解析方法に即して解析をしています。
- Panda Banker hits Italy - Analysis Part 2 | InTheCyber BLOG
https://blog.inthecyber.com/2018/panda-banker-hits-italy-analysis-part-2/(2023/01/10:削除されていました)
また、さらに詳しい解析が以下でされています。 svchost.exe へのインジェクション手法やURLの生成について解析がされています。
- Panda Banker hits Italy – Analysis Part 3 | InTheCyber BLOG
https://blog.inthecyber.com/2018/panda-banker-hits-italy-analysis-part-3/(2023/01/10:削除されていました)
更新履歴
- 2019/03/21 一部記載の削除。
- 2023/01/10 一部リンク切れの旨を追記