マルウェア解析メモ #1 マルウェア解析とは - 環境構築
概要
最近勉強しているマルウェア解析についての備忘録。
マルウェア解析とは
マルウェア解析とは、マルウェアのファイルを解析し、挙動を明らかにすること。解析の結果明らかとなった動作や通信のパターンは、組織ネットワークの保護に活用する。
マルウェア解析の手法
マルウェア解析には大まかに表層解析、動的解析、静的解析の3つがあり、解析の労力と得られる情報の詳細さは以下の関係になっている。
静的解析 > 動的解析 > 表層解析
表層解析
解析対象を実行せずに解析を行う。解析のコストが少ない分、明らかになる情報は多くないが、その後の解析の方針を決めるのに役立つ。
得られる情報:
- ファイル形式
- ハッシュ値
- ファイルに含まれる文字列
- パッカー
- PEヘッダ情報 etc.
代表的なツール:
- バイナリエディタ各種
- fileコマンド
- stringsコマンド
- TrID (http://mark0.net/soft-trid-e.html)
- VirusTotal (https://www.virustotal.com/gui/) etc.
動的解析
解析対象を隔離された環境で実行し、その動作を監視することで解析を行う。表層解析よりも多くの動作を明らかにできるが、すべての機能が明らかになるわけではない。
得られる情報:
代表的なツール:
- Process Hacker (https://processhacker.sourceforge.io/)
- Process Monitor (https://docs.microsoft.com/en-us/sysinternals/downloads/procmon)
- Wireshark (https://www.wireshark.org/)
- INetSim etc.
静的解析
表層解析、動的解析では判断できない情報を明らかにするためにコード解析を行い、プログラムの内部動作を解析する。コード解析では分析対象を逆アセンブルしてコードを調査したり、デバッグを行ってファイルの機能を調査したりする。
得られる情報:
- 表層解析、動的解析では判断できないプログラムの機能
代表的なツール:
- IDA (https://www.hex-rays.com/products/ida/)
- デバッガ各種
- dnSpy (https://github.com/0xd4d/dnSpy)
環境構築
環境概要
解析環境は下図のとおり。Windows VMはマルウェアを実行する環境として利用し、Linux VMではマルウェアのリクエストに対するレスポンスを行うようINetSimを導入、構成する。
Linux側構築
- INetSim導入
NATモードでVMの立ち上げ後、以下のコマンドでINetSimを導入する。
$ sudo su # echo "deb http://www.inetsim.org/debian/ binary/" > /etc/apt/sources.list.d/inetsim.list # wget -O - http://www.inetsim.org/inetsim-archive-signing-key.asc | apt-key add - # apt update # apt install inetsim
Host-Onlyモードへの変更
ネットワーク構成をHost-Onlyモードへ変更し、VM側で192.168.1.100のスタティックIPを設定する。INetSim設定
/etc/inetsim/inetsim.conf のservice_bind_addressセクションに、以下のエントリを追記する。
# 192.168.1.100でリクエストを受ける。 # service_bind_address # # IP address to bind services to # # Syntax: service_bind_address <IP address> # # Default: 127.0.0.1 # #service_bind_address 10.10.10.1 service_bind_address 192.168.1.100
dns_default_ipセクションに、以下のエントリを追記する。
# すべてのDNSリクエストに、192.168.1.100を返す # dns_default_ip # # Default IP address to return with DNS replies # # Syntax: dns_default_ip <IP address> # # Default: 127.0.0.1 # #dns_default_ip 10.10.10.1 dns_default_ip 192.168.1.100
INetSimを起動して、192.168.1.100でリッスンしていることを確認する。
$ sudo inetsim ... Listening on: 192.168.1.100 ...
Windows側構築
Host-Onlyモードへの変更
ネットワーク構成をHost-Onlyモードへ変更し、VM側で192.168.1.128のスタティックIPを設定する。Windows Defender無効化
手順割愛。INetSim動作確認
Windowsホストでhttp://example.com
へアクセスし、以下のページが表示されればOK。
参考文献
Monnappa K A (2018). Learning Malware Analysis: Explore the concepts, tools, and techniques to analyze and investigate Windows malware