以下のサイトで INetSim と BurpSuite を使って HTTPS に対応した形の 解析環境構築方法が紹介されていたので、これを参考にして HTTPS通信も解析できるマルウェア解析環境を作ってみる。
- 使用VirtualBox,INetSim和Burp建立自己的恶意软件分析实验环境 - FreeBuf互联网安全新媒体平台
https://www.freebuf.com/articles/system/177601.html
なお上記のオリジナル記事は以下。
- Set up your own malware analysis lab with VirtualBox, INetSim and Burp - Christophe Tafani-Dereeper
https://blog.christophetd.fr/malware-analysis-lab-with-virtualbox-inetsim-and-burp/
目次
解析環境の概要
REMnux の準備
REMnux をダウンロード。
REMnux: A Linux Toolkit for Malware Analysts
直リンク:download the REMnux virtual appliance file (削除されていました)
VMware や VirtualBox でインポートする。 ここではVMware を使う前提で進める。 インポート後、初期状態はネットワークが NAT となっているので、 LANセグメントに変更する。
起動する。
画面が小さいと作業がしずらいので適宜調整する。 解像度は左下のスタート的なところから[Preferences]->[Monitor Settings]で変更できる。
キーボードマップを日本語にする(オプション)
vi ~/.bashrc 以下を末尾に追記 setxkbmap jp 読み込み直す source .bashrc
時刻について
今回構築した際、 タイムゾーンがJSTではないまま時刻のみがホストと同期されてしまった。 対向のWindows端末はJSTとしてホストと同期されており、 後で作成するSSL用証明書の有効期間にずれが生じてうまくいかなくなるため 時刻を修正した。
VMwareの環境設定によっては修正が不要なところだと思う。
タイムゾーンの変更
分かりやすさのために、 まずタイムゾーンをJSTに変更する。
sudo dpkg-reconfigure tzdata -> Asia -> Tokyo
時刻の設定
次に時刻を修正する。
sudo date MMDDhhmmYYYY
ホストの時刻と合わせる。例えば 2018/08/05 12:00 に設定する場合は以下のようになる。
sudo date 080512002018
時刻修正はSSL用証明書の発行前( = BurpSuite を実行する前)に実施する必要がある。
IPアドレスの設定
現在の設定内容を確認する。
sudo vi /etc/network/interfaces
初期は以下のようになっているはず。
# The primary network interface auto eth0 iface eth0 inet dhcp
これを次のとおり変更する。
# The primary network interface auto eth0 #iface eth0 inet dhcp iface eth0 inet static address 192.168.100.1 netmask 255.255.255.0 network 192.168.100.0 broadcast 192.168.100.255 gateway 192.168.100.1
上記設定を反映させる。
sudo ifdown eth0 sudo ifup eth0
INetSim の設定
INetSim の環境設定を変更する。
sudo vi /etc/inetsim/inetsim.conf
service_bind_address
#service_bind_address 10.0.0.1 以下の通り変更 service_bind_address 0.0.0.0
dns_default_ip
#dns_default_ip 10.0.0.1 以下の通り変更 dns_default_ip 192.168.100.1
https_bind_port
#https_bind_port 443 以下の通り変更 https_bind_port 8443
INetSim を起動
INetSim を起動する。
管理者権限でないと最終的にhttpsの通信がうまくいかないので注意。
sudo inetsim
fakedns を起動
別タブを開いて(Ctrl+Shift+T)から以下を入力。
fakedns 192.168.100.1
BrupSuite を起動
さらに別タブを開いて(Ctrl+Shift+T)から以下を入力。
管理者権限で実行しないと 443 を利用できないので注意。
sudo burpsuite
確認画面が表示されるので、 適宜、確認してから "I Accept" で進める。
起動直後の状態。
Proxy タブから Intercept を選ぶ。
今回はパケットを止める必要はないのでインターセプトをオフにしておく。
ボタンはトグルになっており、以下はオフの状態。
次にポートを設定する。Option タブを開く。
Edit から 443で受け付けて8443にリダイレクトする形に変更する。
確認が出るので Yes とする。
変更後の状態。
HTTPS の接続確認
さらに別タブを開いて(Ctrl+Shift+T)から以下を入力。
curl --insecure https://localhost
以下のように表示されればOK
<html> <head> <title>INetSim default HTML page</title> </head> <body> <p></p> <p align="center">This is the default HTML page for INetSim HTTP server fake mode.</p> <p align="center">This file is an HTML document.</p> </body> </html>
以上で REMnux 側の設定はひとまず完了。
次にこれに接続する Windows 端末の設定をしていく。
Windows端末の準備
VMware の設定からネットワークを REMnux と同じLANセグメントに変更する。
起動する。
IPアドレスの設定
以下の通りIPアドレスを設定する。
IPアドレス : 192.168.100.2 サブネットマクス : 255.255.255.0 デフォルトゲートウェイ : 192.168.100.1 優先DNSサーバー : 192.168.100.1
ひとまず設定は以上で完了。次に INetSim との接続を確認する。
接続の確認
http の接続確認として、 Windows端末のIEから以下にアクセスする。
http://example.com/
うまくいくと以下のような画面が表示される。
次にhttps の接続確認をする。
https://example.com/
うまくいくと以下のような画面が表示される。 いま時点では証明書のインストールをしていないので、 エラーになっているのが正しい状態。
証明書のインポート
証明書のエラーを解消するために、 証明書を信頼されたものとしてインポートする。
まず REMnux 側の BurpSuite で以下のようにポートを追加する。
この設定は解析に不要なので設定後に忘れずに削除しておく。
設定後、Windows 端末から以下にアクセスする。
http://192.168.100.1:8080/
右上にある「CA Certificate」をクリックして証明書をダウンロードする。
証明書をインストールする。
[証明書のインストール]->[次へ]->[すべての証明書を次のストアに配置する]を選択し[信頼されたルート証明機関]を選ぶ。
警告が表示されるので「はい」を選ぶ。
再度、アクセスすると証明書のエラーもなく接続できる。
以上で、HTTPS通信も解析できるマルウェア解析環境の構築が完了。
最後に
最後に、証明書をダウンロードするために設定した 8080 ポートの設定を BurpSuite から忘れずに削除しておく。
うまくいかないとき
Firefox について
Firefox では設定から証明書をインポートする必要がある。
Chrome について
今回の方法では Chrome はうまくいかない。
Fiddler で HTTPS を復号するような設定をするとうまく接続される。
ただし、今度はFirefoxがうまく接続できなくなる。 なお IE はいずれの場合もうまく接続できる。
service_bind_address の設定を確認
service_bind_address が 192.168.100.1 などになっていると http は成功するが https は BurpSuite のエラー画面が表示されてしまう。 以下のように 0.0.0.0 に設定されていることを確認する。
service_bind_address 0.0.0.0
証明書の有効期限の確認
REMnux の時刻が正しくないと、証明書の有効期限が未来になっている場合がある。 Windows端末から証明書を開き、有効期限が未来でないことを確認する。 もし未来になっている場合は、BurpSuite の設定をクリアしてから再設定する。
BurpSuite の設定クリア
BurpSuite を起動後、上部のHelpから実行できる。 [Help]->[Clean burp from computer]から上2つのチェックだけを入れて実行する。
証明書なども再発行されるので、時刻設定を間違えたときにはこれを実施する。
参考にしたサイト
- 使用VirtualBox,INetSim和Burp建立自己的恶意软件分析实验环境 - FreeBuf互联网安全新媒体平台 | 关注黑客与极客
- REMnuxの設定 - でーたべーす (とても参考になった。)
- UbuntuでTimezoneを変更する方法 - ソフトウェアエンジニア現役続行
- 3分理解!時間のずれを直せるLinuxのシステムクロックの使い方
- Dynamic Malware Analysis with REMnux v5 – Part 1 | Count Upon Security
https://doruby.jp/users/r357_on_rails/entries/Burp-Suite-HTTPS-SSL-ios-android(2023/01/10:削除済み。下記サイトに同じ記載。)- スマホアプリのHTTPS通信をBurp Suiteで確認 | ⬢ Appirits spirits
更新履歴
- 2018/08/11 全体的に記載を簡潔に修正。
- 2020/04/10 オリジナルの記事についての記載を冒頭に追記。
- 2020/08/31 一部の削除されていたページについて記載に反映。
- 2023/01/10 一部リンク切れの旨を追記