setodaNote

忘れる用のメモ書き for Cybersecurity

解析環境:HTTPS通信も解析できるマルウェア解析環境の構築

以下のサイトで INetSim と BurpSuite を使って HTTPS に対応した形の 解析環境構築方法が紹介されていたので、これを参考にして HTTPS通信も解析できるマルウェア解析環境を作ってみる。

なお上記のオリジナル記事は以下。

目次

解析環境の概要

解析環境の概要

REMnux の準備

REMnux をダウンロード。

REMnux: A Linux Toolkit for Malware Analysts

直リンク:download the REMnux virtual appliance file (削除されていました)

VMware や VirtualBox でインポートする。 ここではVMware を使う前提で進める。 インポート後、初期状態はネットワークが NAT となっているので、 LANセグメントに変更する。

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

IPアドレスの設定

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

INetSim を起動

fakedns を起動

別タブを開いて(Ctrl+Shift+T)から以下を入力。

fakedns 192.168.100.1

fakedns を起動

BrupSuite を起動

さらに別タブを開いて(Ctrl+Shift+T)から以下を入力。
管理者権限で実行しないと 443 を利用できないので注意。

sudo burpsuite

確認画面が表示されるので、 適宜、確認してから "I Accept" で進める。

BrupSuite を起動

起動直後の状態。

起動直後のBrupSuite

Proxy タブから Intercept を選ぶ。
今回はパケットを止める必要はないのでインターセプトをオフにしておく。
ボタンはトグルになっており、以下はオフの状態。

インターセプトをオフに

次にポートを設定する。Option タブを開く。

Option タブ

Edit から 443で受け付けて8443にリダイレクトする形に変更する。

443を8443にリダイレクト(1/2)

443を8443にリダイレクト(2/2)

確認が出るので 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>

HTTPS の接続確認

以上で REMnux 側の設定はひとまず完了。
次にこれに接続する Windows 端末の設定をしていく。

Windows端末の準備

VMware の設定からネットワークを REMnux と同じLANセグメントに変更する。

LANセグメントに変更

起動する。

IPアドレスの設定

以下の通りIPアドレスを設定する。

IPアドレス : 192.168.100.2
サブネットマクス : 255.255.255.0
デフォルトゲートウェイ : 192.168.100.1

優先DNSサーバー : 192.168.100.1

IPアドレスの設定

ひとまず設定は以上で完了。次に INetSim との接続を確認する。

接続の確認

http の接続確認として、 Windows端末のIEから以下にアクセスする。

http://example.com/

うまくいくと以下のような画面が表示される。

接続の確認

次にhttps の接続確認をする。

https://example.com/

うまくいくと以下のような画面が表示される。 いま時点では証明書のインストールをしていないので、 エラーになっているのが正しい状態。

接続確認(HTTPS)

証明書のインポート

証明書のエラーを解消するために、 証明書を信頼されたものとしてインポートする。

まず REMnux 側の BurpSuite で以下のようにポートを追加する。
この設定は解析に不要なので設定後に忘れずに削除しておく。

ポートを追加(1/2)

ポートを追加(2/2)

設定後、Windows 端末から以下にアクセスする。

http://192.168.100.1:8080/

右上にある「CA Certificate」をクリックして証明書をダウンロードする。

証明書のダウンロード

証明書のインポート

証明書をインストールする。

証明書のインストール(1/3)

[証明書のインストール]->[次へ]->[すべての証明書を次のストアに配置する]を選択し[信頼されたルート証明機関]を選ぶ。

証明書のインストール(2/3)

警告が表示されるので「はい」を選ぶ。

証明書のインストール(3/3)

再度、アクセスすると証明書のエラーもなく接続できる。

HTTPS接続の確認

以上で、HTTPS通信も解析できるマルウェア解析環境の構築が完了。

最後に

最後に、証明書をダウンロードするために設定した 8080 ポートの設定を BurpSuite から忘れずに削除しておく。

うまくいかないとき

Firefox について

Firefox では設定から証明書をインポートする必要がある。

Firefox での設定(1/2)

Firefox での設定(2/2)

Chrome について

今回の方法では Chrome はうまくいかない。

Chrome について(1/2)

Fiddler で HTTPS を復号するような設定をするとうまく接続される。

Chrome について(2/2)

ただし、今度は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つのチェックだけを入れて実行する。

BurpSuite の設定クリア

証明書なども再発行されるので、時刻設定を間違えたときにはこれを実施する。

参考にしたサイト

更新履歴

  • 2018/08/11 全体的に記載を簡潔に修正。
  • 2020/04/10 オリジナルの記事についての記載を冒頭に追記。
  • 2020/08/31 一部の削除されていたページについて記載に反映。
  • 2023/01/10 一部リンク切れの旨を追記