Hacking Labo の標的マシンは、あなたの PC の VirtualBox に立ち上げて攻撃します。このガイドでは、攻撃側の Kali Linux と標的マシンを host-only ネットワーク (192.168.56.0/24) でつなぎ、サイトの解説ページを読みながら手を動かせる環境を、手順どおりに構築します。対象読者は初〜中級のセキュリティ学習者。VirtualBox も Vagrant も初めてで構いません。上から順に進めれば、最初の標的 (Levi = 192.168.56.50) に nmap を撃てる状態になります。
標的マシンは意図的に脆弱です。必ず host-only ネットワークだけで使ってください。ブリッジ接続やポートフォワードでインターネットに晒すと、あなたの標的が第三者の攻撃対象になります。詳細は最後の「安全上の注意」を必ず読んでください。
全体像 — 作るのは 2 台の VM #
構築するのは、たった 2 台の仮想マシンです。
あなたの PC (Windows / macOS / Linux)
┌──────────────────────────────────────────────────────────────────┐
│ │
│ ┌───────────────────┐ host-only ┌─────────────┐ │
│ │ Kali Linux VM │ 192.168.56.0/24 │ 標的 VM │ │
│ │ (攻撃者) │◀─────────────────────────▶│ (脆弱) │ │
│ │ 192.168.56.10 │ VirtualBox の隔離網 │ 192.168.56.5X│ │
│ └───────────────────┘ (外部に出ない) └─────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────┘
あなたが操作 ─ nmap / metasploit / etc ─▶ 攻撃対象
- Kali VM (攻撃者): あなたが実際に操作する端末。
nmap・metasploit・gobusterなどが入っています。 - 標的 VM (脆弱):
vagrant upで立ち上がる、意図的に穴のあるサーバ。ここを攻略してフラグを取ります。 - host-only ネットワーク (192.168.56.0/24): この 2 台だけが会話できる、外部から隔離された仮想 LAN。実機の家庭内 LAN やインターネットとは切り離されています。
標的の IP は固定で割り当てられており、vagrant up すると必ずこの IP で出現します。
| slug | 名前 | 難易度 | IP | 攻略の要点 (foothold → privesc) |
|---|---|---|---|---|
levi | Levi | easy | 192.168.56.50 | SNMP + PostgreSQL RCE → sudo systemctl (GTFOBins) |
box-01-lazyadmin | LazyAdmin | easy | 192.168.56.51 | Web コマンドインジェクション → SUID PATH ハイジャック |
box-02-keyholder | KeyHolder | easy | 192.168.56.52 | SSH ブルートフォース → sudo tar (GTFOBins) |
box-03-dropzone | DropZone | easy | 192.168.56.53 | 無制限アップロード webshell → capabilities (cap_setuid) |
以降のコマンド例では標的 IP を 192.168.56.5X と書きます。攻略したいマシンの IP に読み替えてください。
必要なもの #
| もの | 用途 | 入手先 |
|---|---|---|
| VirtualBox 7.x | 仮想マシンを動かす基盤 | virtualbox.org |
| Vagrant | 標的をコマンド一発で構築 | developer.hashicorp.com/vagrant |
| Kali Linux (VirtualBox 版) | 攻撃側の端末 | kali.org/get-kali |
| 標的マシンのフォルダ | 工場から配布される machines/<slug>/ | マシン工場リポジトリ |
Extension Pack は不要です。 このラボは host-only ネットワークだけを使うので、USB 3.0・RDP・PXE などを提供する VirtualBox Extension Pack (別ライセンス) は入れなくて構いません。
ホスト (あなたの PC) の前提:
- メモリ: 標的 1 台は 1GB、Kali は 2〜4GB。両方を同時に立てるので 空きメモリ 4GB 以上を推奨 (8GB あると快適)。
- CPU 仮想化支援 (VT-x / AMD-V) を BIOS/UEFI で有効化しておくこと。無効だと VM が起動しないか、極端に遅くなります。Intel なら VT-x、AMD なら AMD-V (SVM Mode) を ON。Windows では タスクマネージャ → パフォーマンス → CPU → 「仮想化: 有効」で確認できます。Hyper-V / WSL2 / メモリ整合性 (コア分離) が競合することがあります (後述)。
- ディスク: Kali + 標的数台で 40GB 程度の空きがあると安心。
インストールしたら、まずバージョンを確認します。
VBoxManage --version
vagrant --versionWindows で VBoxManage が「見つからない」場合は、まだ PATH に入っていないだけです (トラブルシュート参照)。
Kali VM の用意 #
攻撃側の Kali を用意します。公式の VirtualBox 版をインポートするのが最速です。
- 方法 A (推奨): Kali の VirtualBox イメージ (
.7zまたは.ova) をダウンロードして展開 →.vboxをダブルクリック (または VirtualBox の ファイル → 仮想アプライアンスのインポート)。初期ログインはkali/kali(初回ログイン後にパスワード変更)。 - 方法 B: Kali の ISO から新規 VM を作ってインストール。時間はかかりますが中身を理解できます。
どちらの場合も肝心なのは、次の host-only アダプタの追加です。Kali を標的と同じ host-only 網に入れないと、そもそも通信できません。
VBoxManage list hostonlyifs で確認。無ければ VBoxManage hostonlyif create。実際には標的を初めて vagrant up すると Vagrant が自動生成するので、先に標的を起動すればこの手順は Vagrant に任せられます。VirtualBox Host-Only Ethernet Adapter。アダプター 1 は NAT のまま残すと、Kali からツール更新のためインターネットへ出られて便利です。ip a | grep 192.168.56。DHCP で 192.168.56.x が付くはず。固定したいなら sudo ip addr add 192.168.56.10/24 dev eth1 (標的の .50〜.53 と重複させないこと)。VirtualBox 7.x の host-only 許可レンジの罠 #
VirtualBox は 6.1.28 以降 / 7.x で、セキュリティ強化のため host-only ネットワークに割り当てられる IP を既定で 192.168.56.0/21 に制限しました。この範囲外の IP を付けようとすると、vagrant up が次のエラーで止まります。
The IP address configured for the host-only network is not within the allowed ranges.このラボの標的は 192.168.56.50〜 なので、既定の 192.168.56.0/21 (= 192.168.56.0〜192.168.63.255) に収まっており、通常は何も設定しなくてもそのまま動きます。範囲外の IP (例: 10.0.0.x) を使う自作マシンのときだけ、下記の許可レンジ設定が必要です。
範囲外を使いたい場合だけ、許可レンジ設定ファイル (Windows: %PROGRAMDATA%\VirtualBox\networks.conf / Linux・macOS: /etc/vbox/networks.conf) に次の 1 行を足します (無ければ新規作成)。編集後は VirtualBox を再起動してから vagrant up し直します。
* 192.168.56.0/21標的マシンの起動 #
工場から配布された machines/<slug>/ フォルダの中に Vagrantfile があります。そのフォルダで vagrant up するだけで、標的が host-only 網に立ち上がります。
cd machines/levi # 攻略したいマシンのフォルダへ
vagrant up # 初回は base box (bento/ubuntu-22.04) DL で数分Windows (PowerShell) でフォルダに cd せず起動したい場合は、$env:VAGRANT_CWD で場所を指定できます。初回は bento/ubuntu-22.04 の base box をダウンロードするため時間がかかります (2 回目以降はキャッシュ利用で速い)。起動が終われば、標的は Vagrantfile 記載の固定 IP (Levi なら 192.168.56.50) で待ち受けています。
状態確認と、停止・リセット・破棄:
| やりたいこと | コマンド | 説明 |
|---|---|---|
| 状態を見る | vagrant status | up / poweroff / not created を確認 |
| 停止 (後で再開) | vagrant halt | 次回 vagrant up で続きから |
| 新品にリセット | vagrant destroy -f && vagrant up | フラグや汚れた状態を捨てて完全に作り直す |
| 完全に破棄 | vagrant destroy -f | VM を削除 (base box は残る) |
攻略の途中で壊しても、vagrant destroy -f && vagrant up で毎回新品に戻せます。フラグは (トークンを渡さなければ) 起動ごとにランダム生成されるので、作り直すと値が変わります。
攻撃の始め方 #
Kali から標的をスキャンし、サイトの解説ページを読み進めるのが基本の流れです。
export TARGET=192.168.56.50 # IP を変数に入れると誤射を減らせる
nmap -sV "$TARGET" # バージョン付きサービススキャン (TCP)
sudo nmap -sU -p 161 "$TARGET" # 一部の標的は UDP (例: Levi の SNMP) が主役
偵察結果が出たら、当サイトの該当マシンの解説ページ (machines/<slug>) を開き、foothold (初期侵入) → privesc (権限昇格) の順に手を動かします。たとえば Levi なら「SNMP でサービスを特定 → PostgreSQL のデフォルト認証 → COPY FROM PROGRAM で RCE → sudo systemctl を GTFOBins の手法で悪用して root」という流れです。user.txt (一般ユーザ) と root.txt (root) の 2 つのフラグ取得がゴールです。
各マシンには「解ける証明」として solve.sh (攻略の自動再現) が同梱されています。どうしても詰まったときの答え合わせに使えますが、まずは解説を読みながら自力で攻略するのがおすすめです。
トラブルシュート #
| 症状 | 原因と対処 |
|---|---|
| 標的に ping が通らない / スキャンが返らない | 最頻出は Kali の host-only アダプタ未設定。ip a | grep 192.168.56 が空なら 2 枚目 NIC が host-only になっていないか DHCP 未取得。Kali と標的が同じ host-only アダプタを使っているか確認。標的 OS のファイアウォールで ICMP を落とす設定でも、nmap でポートが開いていれば攻撃は可能。 |
| VM が起動しない / VT-x 無効エラー | BIOS/UEFI で仮想化支援を有効化。Windows で Hyper-V / WSL2 / メモリ整合性が有効だと VirtualBox が VT-x を掴めず失敗。管理者 PowerShell で bcdedit /set hypervisorlaunchtype off → 再起動 (戻すときは auto)。 |
vagrant up が VBoxManage を見つけられない | VirtualBox が PATH に無いだけ。そのセッション限りで $env:PATH += ";C:\Program Files\Oracle\VirtualBox" を足す。恒久化は Windows 環境変数 Path に追加。 |
| IP レンジのエラーで止まる | 04 章の networks.conf に * 192.168.56.0/21 を追記して VirtualBox 再起動。既定 IP (.50〜.53) なら本来は不要。 |
| base box の DL が遅い / 失敗する | 初回のみ bento/ubuntu-22.04 を取得。回線が不安定だと途中で止まる。vagrant destroy -f で片付けてから回線の良い環境で再実行。 |
安全上の注意 (最重要) #
- host-only 網だけで使うこと。 標的 VM をブリッジ接続・NAT ポートフォワード・DMZ 等でインターネットや家庭内 LAN に晒さない。脆弱なサーバを外に開くと、あなたのラボが第三者に乗っ取られ踏み台にされる恐れがあります。標的の NIC は Vagrantfile で host-only に固定されています。設定を書き換えて外部に出さないこと。
- 攻撃は自分のラボ内に限定すること。 ここで学んだ手法 (スキャン・exploit・ブルートフォース等) を、許可のない第三者のシステム・ネットワーク・サービスに対して使わない。不正アクセスは多くの国で犯罪であり、日本では不正アクセス禁止法などの対象になります。
- Kali からの攻撃対象は 192.168.56.5X の標的だけ。 誤って家庭内 LAN やルータ、クラウド上のホストへツールを撃たないよう、宛先 IP を毎回確認。IP を環境変数に入れておくと誤射を減らせます。
- 終わったら片付ける。 使わない標的は
vagrant haltで停止、不要になったらvagrant destroy -fで破棄。放置した脆弱 VM を起動しっぱなしにしないことも安全のうちです。
このラボは「安全な砂場の中で、攻撃者の視点を身につける」ためのものです。砂場の外に手を出さない限り、思う存分試して学べます。楽しんで、そして責任を持って。