2019-11-03、2019-11-04 の2日間に渡って開催されたMAIR忍者チャレンジに参加しました. MAIR忍者チャレンジは、マルウェアアナリストの立場からお客様のインシデントレスポンスを支援するスキルを磨くことを目的としたコンテストです. アーティファクトを解析しつつ、与えられたシナリオに対応した提案に結びつけなければならず、さらにチームとして連携する必要がある難しい課題でしたが大変やりがいがありました.
MAIR (Malware Analysis Incident Response) は講師のザックさんの造語とのこと. 何となく意味が想像できるうえに語感がカッコいい略語ですね.
シナリオ
里内の殆どのPCが急にブルースクリーンで⽌まってしまったという連絡が沢⼭の里⼈から来た
また、殆どの端末からのアンチウィルスアラートが来ている
アンチウィルスで駆除してみても、再起動したらまたすぐ感染してしまう
インシデント対応忍者達が来るまで、里⼈の端末を全部シャットダウンした
DCも感染しているが、業務が⽌まるのでシャットダウン・切断できない
端末:Windows XP ∼ Windows10まで感染確認 ※たけのこの里からリースで借りており、初期化できない
サーバ:2003∼2012
DCも含めて数年間アップデートしていないサーバ/端末が多い
クラウド上に複数のWindowsサーバを構築しており、VPNで里のネットワークと接続している
幾つかのサーバはグローバルIPアドレスが設定されている
ホストFW:全端末はグループポリシー設定でOFFになっている
セキュリティ対策:アンチウィルスソフトとPalo Alto(検知モードで誰もログを見ておらず導⼊しているだけの状態)
資産管理:SKYSEA
パスワード:グループポリシーで制限しておらず、パスワードが未設定の端末も存在する状態
ネットワーク制限:セグメント間の通信は全て許可
海外拠点(パンダの国、キムチの国、フォーの国、ウォッカの国等々)や関連企業と VPNで接続しており、拠点間の通信も全て許可
アーティファクト
- 感染した端末のAutoruns結果:Infected-Computer.arn
- 不審なタスクファイル:DnsScan.xml
- 不審なファイル:mkatz.ini.malware、svchost.mlz.malware
- 不審なパワーシェルファイル:m.ps1
- Windows¥Tempにあった不審なファイル: windows_temp_svchost.exe.malware、TEMP-_MEI117922.zip.malware
- 不審な実⾏ファイル:dl.exe.malware、installed.exe.malware、svchost.exe.malware、taskmgr.exe.malware、wmiex.exe.malware、YqejbPXw.exe.malware
これらのファイルは不特定多数の端末から収集している
Autorunsの解析
マルウェア感染が疑われる端末の情報保全に使えるツールの一つです. Windowsで自動実行されるプロセスを保存して一覧表示してくれます. 見た目が分かりやすいから初心者でも使いやすそうです.
既知のマルウェアなら Options > Hide VirusTotal Clean Entries にチェックを入れて Everything タブを確認するだけで目星がつきます. タスクスケジューラから呼び出されている DnsScan (c:\windows\temp\svchost.exe) は明らかに怪しいので調査の起点にしてみます.
タスクファイルの解析
そういえば DnsScan というタスクファイルがあったなと思い出しxmlを確認しました. 重要なのは以下の3点で、指定されたプログラムを60分間隔で永遠に実行し続けるタスクであることが分かります. マルウェアの永続化機構っぽいので svchost.exe への疑いが深まりました.
<Interval>PT60M</Interval> : 60分間隔でこのタスクを繰り返す
<StopAtDurationEnd>false</StopAtDurationEnd> : 繰り返し期間に制限を設けない
<Exec><Command>c:\windows\temp\svchost.exe</Command> : 指定されたプログラムを実行する
InfoStealerの解析
いよいよ実行ファイルに目を向けます. まずはpestudioにかけてハッシュを入手しておきます. VirusTotalの検索結果はこんな感じで InfoStealerと呼ばれる既知のマルウェアでした. dl.exe と installed.exe もハッシュが同じなので別名の同一マルウェアです. このマルウェアは様々な経路で拡散されているのかもしれません.
VirusTotal にはサンドボックスで実行された結果が表示されていますが、詳細を確認するにはやはり手元で確認したいです. Process Monitor を起動した状態で InfoStealer を実行してログを取得します. マルウェア以外の無関係なログが含まれますが次のようなフィルタを追加すれば
Operation is WriteFile
Path ends with exe
exeファイルが出力されたログだけを表示させることが出来ます. ttt.exe, svhost.exe, taskmgr.exe の3種類の実行ファイルがInfoStealerによって出力されています. ttt.exeは生成されてすぐに削除されていますが svhost.exe, taskmgr.exe は残されています. 引き続きこの二つの実行ファイルを調査していきます.
svhost.exe のハッシュは InfoStealer と同一でした. InfoStealer は 自分自身のコピーを C:\Windows\SysWOW64\svhost.exe にコピーする事が分かります.
ところで C:\Windows\SysWOW64\ にはもう一つ別の不審な実行ファイルがあります. 更新日時からInfoStealerによって作られたものだと推察できます. VirusTotalによるとこのハッシュも InfoStealer と判定されます.
ここで Process Monitor のログに戻って見ます. Operation is Write では wmiex.exe は見つからなかったのでフィルタの制限を緩めます. ここではフィルタに Path contains wmiex.exe を指定することにより ttt.exe が wmiex.exe を生成した事を確認できました.
次は taskmgr.exe を調べます. VirusTotalによるとこのハッシュは Farfli と呼ばれるトロイの木馬だと判定されます.
ところで C:\Windows\SysWOW64\drivers\ にも InfoStealer が存在します. Process Monitor のログによると最初に実行された InfoStealer によって作成されています. InfoStealerは様々なパスに自己のコピーを保存することが分かりました.
実行ファイルの挙動をまとめると以下のような流れが明らかになりました.
Mimikatzの解析
VirusTotalによるとこのファイルは Mimikatzです. アイコンからpythonで書かれたコードをPyInstallerでexe化したものだと推察できます. 現時点でこのファイルの侵入経路は定かではありません.
このファイルを実行すると %Temp%\_MEI24642\ に各種 pyd ファイルが生成されます. また C:\Windows\Temp\ に m.ps1 ファイルが生成されます.
pydファイル群は収集されたアーティファクトの一つである TEMP-_MEI117922.zip.malware の中身と同一です. したがって Mimikatz は %Temp%\に_MEI{5桁のランダムな数字}\ディレクトリを作成し、その中にpythonバイトコードを生成する事が分かります.
m.ps1 は収集されたアーティファクトの一つと同一です. 巨大な難読化コードのため処理を追いかけるのは容易ではありませんが、ざっと眺めると末尾にBase64と推察できる文字列が見つかりました. 変数名からx64とx32に対応したデータだと推察できます. Base64エンコードはCyberChefを使ってデコードします.
デコードされたデータはVirusTotalによると 32bit版 と 64bit版 のMimikatzです.
Radminの解析
VirusTotalによるとこのファイルは リモートアクセスツールのRADMINです. 実行中のProcess Monitorログを確認しましたが目ぼしい動きは確認できませんでした. 現時点でこのファイルの侵入経路は定かではありません.
永続化の解析
InfoStealer と Mimikatz は関連プログラムをタスクスケジューラに登録します. アンチウイルスによってマルウェアが削除されても、タスクが残っている限り再び感染する仕組みになっています.
-
InfoStealer
タスク名: WebServers 実行されるプログラム: C:\Windows\SysWOW64\wmiex.exe
タスク名: Ddrivers 実行されるプログラム: C:\Windows\SysWOW64\drivers\svchost.exe
-
Mimikatz
タスク名: DnsScan 実行されるプログラム: C:\Windows\temp\svchost.exe
タスク名: Bluetooths 実行されるプログラム: 下記powershellスクリプト
まとめ
以上の結果をまとめると、実行ファイルの関係から次の概要図が浮かび上がります.
本番中はとにかく情報量が多く自分が何を分析しているのか分からなくなる事がありました. 練習を重ねて自分なりの解析フローを作り上げる必要がありそうでした.
そんな状況でも最後に提出資料をまとめられたのはチームメンバーのおかげです ありがとうございました