シアン化備忘録

技術系とか諸々

パケットからマルウェアを探る(Malware Traffic Analysis - ICEMAIDEN)

この記事は、 大阪工業大学 Advent Calendar 2020の22日目の記事です。

adventar.org

※悪用厳禁。何かしら問題が発生した場合は非公開にする可能性があります。

はじめに

20日目の記事でも挨拶をしましたが、初めましての方は初めまして。しあのすと申します。

今回は最近勉強したパケット解析についての備忘録を兼ねてまとめたいと思います。

マルウェア解析

マルウェア解析の流れとして「表層解析」、「動的解析」、「静的解析」の3段階が存在し、この順番に行われることが定石となっています。

セキュリティとパケット解析

ネットワーク障害の特定や設計段階の調査のために行われるイメージがありそうなパケット解析ですが、セキュリティ対応としてパケット解析が行われる場合も多いのが現状です。

俗に言うセキュリティアナリストやDFIR担当者が不正侵入防止の調査、またはマルウェアや攻撃者の不正侵入後の原因特定をするためにパケット解析が用いられます。

セキュリティのためのパケット解析はネットワーク設計などの調査とは異なり、攻撃者が制御している機器などのこちらから特定が困難な情報が関わってくるため、限られた情報から全貌を明らかにする必要があります。

Malware Traffic Analysis

実際にマルウェアとの通信をキャプチャした有害なpcapファイル検体の公開及びその解析演習を行うことが出来る Malware-Traffic-Analysis.netというサイトが存在します。

サイトには解析のための基本的なWiresharkチュートリアルやセキュリティのためのパケット解析のトピックなども載っており、Exercisesには各問模範解答が付属しているため、興味を持った方は一度自力で考えてみても面白いかもしれません。

今回はこのサイトのICEMAIDENを例にパケットから調査を行っていきます。

解析

※解析の際は仮想環境上で外部通信やホストとの共有ファイルを切ったことを確認した上で行うことをおすすめします。解析の途中で出てきた有害なIPやURLは意図的にエスケープしています。この記事を見た後に実際にアクセスして何か被害が生じた場合、一切責任を負いません。

シナリオ
LANセグメントデータ:

LANセグメント範囲:10.18.20.0/24(10.18.20.0〜10.18.20.255)
ドメイン:icemaiden.com
ドメインコントローラー:10.18.20.8-Icemaiden-DC
LANセグメントゲートウェイ:10.18.20.1
LANセグメントブロードキャストアドレス:10.18.20.255
あなたのタスク
pcapとアラートを確認してから、次の質問に答えてください。

問1 : 感染したWindowsホストのIPアドレス、MACアドレス、およびホスト名は何ですか?
問2 : この感染したWindowsホストの被害者のWindowsユーザーアカウント名は何ですか?
問3 : 被害者はどのような種類のマルウェアに感染しましたか?
問4 : pcapからのトラフィックに基づいて、マルウェアはどこから来た可能性がありますか?
問5 : 最初の感染後、被害者はどのタイプのWebページ/ Webサイトにアクセスしたように見えましたか?

問1

pcapと共に与えられるアラートの画像に注目すると、「TROJAN Ursnif」の文字が見つかるのでこれに着目します。

f:id:Cy4n0s:20201222212900p:plain
アラート

送信先ポートが80番であることからHTTPリクエストと10.18.20.97でフィルターをかけて検索してみます。

f:id:Cy4n0s:20201222214040p:plain

10. 18. 20. 97から8. 208. 24. 139へのパケットが大量に見つかるため、これがアラートにひっかかったと推測出来ます。よってIPは「10.18.20.97」。

MACアドレスはパケット詳細欄のEthernet IIの欄から特定できます。

f:id:Cy4n0s:20201222214511p:plain

Source: Acer_56:9b:cf(00:01:24:56:9b:cf)とあることから、MACアドレスは「00:01:24:56:9b:cf」。

ホスト名はkerberosの通信から特定します。kerberosのCNAMEレコードにはクライアントの主要な識別子の名前が含まれているので、kerberos.CNameString and ip.addr==10.18.20.97と入力してフィルターをかけてみます。

f:id:Cy4n0s:20201222215153p:plain

CNameStringの値から、ホスト名は「JUANITA-WORK-PC」。

問2

先程の結果のCNameStringの欄で右クリックし、「列として適用(Apply as Column)」を押すと、CNameStringの結果が列として表示されます。

f:id:Cy4n0s:20201222220012p:plain

ここで、ユーザーアカウント名はホスト名と違い「$」で終わらないという特性を用いると、ユーザーアカウント名は「momia.juanita」と特定できます。

問3

問1でUrsnifのアラートが出ていることから、マルウェアの種類は「Ursnif」だと考えられます。

さらに、 Wiresharkによるパケット解析講座 6: Ursnif感染の調査を参照すると、http.requestのフィルターをかけた際に上で言及されている特殊なGETやPOSTリクエストが散見されることも分かります。このような根拠からもUrsnifと推測して良いと考えられます。

f:id:Cy4n0s:20201222220823p:plain

問4

Ursnifで一度Web検索をかけてみます。

www.trendmicro.com

上の記事を参照すると、Ursnifは不正なプログラムによって他のサイトからダウンロードされるか、不正なメールから侵入する場合が殆どだと分かります。

http.requestでフィルターをかけてみると、一番最初にhttp:// mail[.]aol[.]com/というメールサイトにアクセスしているのが分かります。 また、このメールサイトにアクセスしているのが不審なGET/POSTリクエストが送られる前であることから、(上記URL)において、不正なメールから感染したと考えて良いと思われます。 f:id:Cy4n0s:20201222221354p:plain

問5

http・https通信に絞るため、(http.request or ssl.handshake) and !ssdpというフィルターをかけます。

15228~16215,16315,16436~16493において不審なGET/POSTリクエストが確認された後のパケットを見てみると、~[.]bac[.]combankofamericaの文字が散見されます。

f:id:Cy4n0s:20201222224928p:plain

bac[.]comwhoisをかけるとAdminの情報辺りでやはりbankofamericaの文字が見つかるため、bankofamerica[.]comにアクセスしたと推測出来ます。

Ursnifがバンキングマルウェアとして有名なことからの関連でしょうか。

f:id:Cy4n0s:20201222224106p:plain

おわりに

HTTP通信から不審なプログラムをエクスポートしてVirusTotalで検索をかけたり、送信されている暗号化データを復号出来たりするとさらに情報を抜き出すことが可能でしょうが、今の技術力や記事を書く時間的にこの辺りが限界でした。

解析の根拠にも間違いや誤魔化しが多い可能性があるので精進します。

この記事によって少しでもパケット解析やフォレンジックに興味を持って頂ければ幸いです。