DockerでKali Linuxコンテナ立ち上げ(ホㇲトOSはWindows10 Pro)
Windows10 pro のホストでHyper-VマネージャーとDockerを活用してKaliLinuxを使ってペネトレーションテストをしたい!と言う方にお勧めです!
Kali Linux Dockerイメージをpull
PowerShellを使っています。
次のコマンドでKali LinuxのDockerイメージを取得します。Core i5で12GBメモリでHDD500GBのホストマシンで5分くらいで終わりました。
docker pull kalilinux/kali-linux-docker
Kali Linuxのコンテナを起動する
docker run -t -i kalilinux/kali-linux-docker /bin/bash
-iで、標準入力(standard input)を有効化。
-tで、疑似ターミナル、pseudo-terminal。
終わると、ゲストOSのKaliLinuxにbashでrootログインした状態となる。
Kali Linuxのアップデート
1日単位レベルで非常に長い時間を消費します。ご注意ください!
パッケージリスト取得
apt-get update
システムパッケージのアップデート(パッケージ構成を変えない範囲でアップグレードする)
apt-get upgrade
システムパッケージのアップデート(パッケージ構成の変更に追随してアップグレード)
apt-get dist-upgrade
Light版から通常版にする。メチャクチャ時間がかかる!2083 newly installed !
apt-get install kali-linux-full
※インストールなどを行うと、Read-Onlyのdockerイメージ層が出来て、その上にコンテナ新設となる。ホストOSのAUFS/LXCのプロセス上で動くRead-Onlyイメージのさらに上でRead-WriteのコンテナIDやコンテナ名が変化しているのかも、コンテナIDやコンテナ名をもう少し注意してみ観察した方がいいかも。
※1コマンドごとに再起動したほうが良さそう。
Kali Linuxのバージョン確認
バージョン確認
cat /etc/os-release
uname -a
コンテナからデタッチする
コンテナを停止せずにbashシェルを脱出する。
[Ctrl+p+q]
※exitをするとコンテナ停止してしまう。
コンテナにアタッチする
PowerShell上でbashシェルによってコンテナに入る。
コンテナでシェルが起動している状態に対して次のコマンドを行う。
docker attach コンテナID
もしくは
docker attach コンテナNAME
※コンテナでシェルが起動していない場合は、execを使うなどがあるらしい。が、アタッチできなずhangしてしまう事が多く、現在、トラブルの元になっている。開発実践にDockerを使おう!というのは、このへんの理解をしないうちは危険だと思う。
コンテナ停止
docker stop コンテナID
コンテナ起動
どちらかというとプロヴィジョニング(たぶん)
docker run コンテナID
どちらかというと2回目以降の起動(たぶん)
docker start コンテナID
コンテナ再起動
docker restart コンテナID
Metasploit Frameworkをインストール
bashシェルでアタッチした状態で次のインストールコマンドを実行。上記でkali linux fullインストールをしないで単体インストールの場合です。
長時間(1晩寝て待った、笑)待たされ、尚かつ失敗・・・。何がダメなの?インフラに近づくほど検証に時間がかかるからツライ!コマンド実行前にミラーリング先の変更などで時短努力できるかも。
apt install metasploit-framework ruby
Metasploit Frameworkとは
攻撃コードの作成、実行を行うためのフレームワークソフトウェア。ペネトレーションテストでメジャーなフレームワーク。攻撃対象のWEBサイトに対するExploitを選び、さらにペイロードも選び、攻撃対象のIPアドレスを決めてペネトレーションテストを実行する。msfconsoleを用いる。
ペネトレーションテスト、絶対に悪用してはいけない
絶対に他人の本番サイトなどに悪用しないこと!ぺネトレ―ションテストを行う場合、WEBサイトのオーナー、クラウド会社、サーバー会社などに事前許可を絶対にもらってください。
スキルアップの場合、ローカル開発環境で仮想化して攻撃サーバーと被攻撃サーバーの2つを準備して閉ざされたネットワーク内で個人で行うなど、閉域網内で自己責任の範囲で他人に迷惑をかけない様に行う事!
サーバー会社やアプリケーションのオーナーもしっかり巻き込んで脆弱性テストを公言しなければ、犯罪です!