20
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2023

Day 13

SOCから始めるマルウェア解析

Last updated at Posted at 2023-12-12

これは ZOZO Advent Calendar 2023 カレンダーVol.1の13日目の記事です。昨日の投稿は@YasuhiroKimesawaさんでした。

はじめに

SOCでは日々監視対応、インシデント対応を行なっています。その中ではファストフォレンジックを行う事も想定しなければなりません。
今回はその一環として行っているマルウェア解析の一例を紹介します。
※とても簡単な解析方法です。入門編です!

ファストフォレンジックでのマルウェア解析とは

インシデントの影響範囲を早急に調査し、迅速に復旧するために、何が起こったのかを具体的に把握する必要があります。
例えば、マルウェア感染疑惑のある事象が発生した際には、以下の観点が気になる所です。

  • 情報漏洩
  • マルウェアの永続化
  • 復旧方法

これらの情報はセキュリティベンダーにて解析済でIOCが提供されているマルウェアであれば、ある程度は公開情報から調査は可能ですが、攻撃者によってカスタマイズされているマルウェアである場合、解析しなければどういった挙動を行うのかわかりません。
そこでファストフォレンジックの中でマルウェア解析し、簡易的に挙動を把握することで、インシデントの影響を判断することが出来ます。

詳細についてはCODE BLUE 2023でOpenTalkされたNECさんの以下の記事が参考になります。

マルウェア解析で確認するポイント

マルウェア解析を行う際には以下のポイントを重点的に確認します。

  • マルウェアの通信先
  • 永続化設定(レジストリ操作など)
  • ファイル生成(第2のPayloadからファミリーの特定など)

それ以外の従来マルウェアとの違いを洗い出すといった動作は、ファストフォレンジックでは行いません。復旧が最優先です。

SOCでの取り組み

マルウェア解析者はSOCの中では少なく、育成が難しいというのが世間の認識としてあると思います。
私たちのSOCでは日常的にマルウェア解析会を行うことで、解析者を育成しています。
また、日常的にマルウェアの動作を理解しておくことで、SOCの監視対応のレベルを上げることが出来ます。

今回は解析会でよく用いている マルウェアの通信先 の特定方法を一部紹介しようと思います。

実際に解析する際はネットワーク的に閉じられた仮想環境で解析してください。
危ないです。

※正解するまで終れま10!

今回のマルウェア検体

今回の解析のゴールはマルウェアの通信先を特定することです。

MalwareBazaar

練習用の検体は以下のMalwareBazaarから取得することが多いです。

今回は SocGholish というマルウェアを用いて解析します。
以下の2検体を参考にします。

  1. https://bazaar.abuse.ch/sample/f95e5c5b7ac5b58f3d96a30209ad5db82079c6624e206e6a1d6e5fb4b819afa5/
  2. https://bazaar.abuse.ch/sample/5b184676394c27bd35f074f462948fe565c3213edbf8472957c1572f95a1635f/

SocGholishとは

ソフトウェア更新を模したサイトやファイルに偽装し、JavaScriptが実行されることで攻撃がスタートします。
詳しくは以下のブログが参考になると思います。

解析

f95e5c5b7ac5b58f3d96a30209ad5db82079c6624e206e6a1d6e5fb4b819afa5

まずは検体の中身を確認します。
スクリーンショット 2023-11-29 153908.png
わかりやすくsendRequestしている部分が分かります。XMLHttpRequestを用いており、POSTする部分まで見えます。
何かResponseを受け取った後は諸々の判定や整形をした後、eval(pidug)で実行しています。恐らくスクリプトやシェルコードを落としてきていそうです。通信先を調べる為に単純に以下のようにWScript.EchoをURLの変数に対して実行します。
スクリーンショット 2023-11-29 154741.png
実行すると難読化されたURLが確認できます。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f323033363834382f61313661626534612d306361662d303538332d666639632d6465643331313.png
※念のためマスキングを施しています。
VirusTotalで一応正解か確認します。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f323033363834382f39383036616262342d356636332d353762372d616334382d6131383237613964386662372e706e67.png
正解ぽいですね。
実際のインシデントの際にはこの情報を用いて、通信先との接続が成功しているのかを調査します。

ここまでわかりやすいスクリプトのマルウェアであればすぐに解析ができると思います。
ちなみにこの検体については、通信先から落とされる第2のスクリプトによって更に攻撃チェインが繋がっていきます。以下のサイトが参考になります。

5b184676394c27bd35f074f462948fe565c3213edbf8472957c1572f95a1635f

まずは検体の中身を確認します。
スクリーンショット 2023-11-29 180229.png
何もわかりません。こういった場合は閉じた環境で実行してみて動的解析を行ったほうが早いです。
内部Proxy建てるだけで通信先を拾えます。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f323033363834382f61343562383838392d633138382d623035612d383161632d3063653135333732383162312e706e67.png
VirusTotalで一応正解か確認します。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f323033363834382f31633336383635622d636461652d303531392d353638322d3139363338303465646332312e706e67.png
Pathまでは見えませんでしたが、通信先が分かればそのログをまず確認するので、この段階では問題ないです。
この検体については以下のサイトが参考になります。

まとめ

SOCで行っているマルウェア解析の一例を紹介しました。
インシデント対応においてマルウェアの挙動を追うことは影響範囲特定、早期復旧の一助となることがあります。
また、SOCのマルウェア理解度の向上にも繋がります。
(リバーシング楽しいですしね!)
是非ともSOCでマルウェア解析を行ってみて頂ければと思います。

明日は@EigoOdqさんです。

20
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?