【全体像】 今日の流れは、ざっくり以下です。 Webや共有サービスを調べる → ユーザー名やファイルを見つける → SSH認証に使える情報を調べる → 秘密鍵やPassphraseを扱う → ログイン後に権限昇格の材料を探す つまり、バラバラのツールではなく、前の結果を次の調査につなげているのがポイントです。
【フェーズ1:Web探索】 1. gobuster 何をするツール? Webサーバー上の、リンクからは見えないディレクトリ、ファイル、エンドポイントなどを辞書ベースで探すツールです。
例 gobuster dir -u http://TARGET_IP/ -w /usr/share/wordlists/dirb/common.txt
オプション dir → Directory Enumeration。Web上のパス探索モード -u → URL指定 -w → Wordlist指定
平たく言うと Webサイトの表側だけ見るのではなく、/admin、/development、/backupみたいな「直接URLを知っていれば開ける場所」がないか探します。
ペンテスター目線 「画面に表示されていない = 存在しない」ではありません。
【フェーズ2:SMB・Sambaの情報収集】 2. enum4linux 何をするツール? Windows / Samba系サービスから、取得可能な情報をまとめて列挙するツールです。 主に、Workgroup、Hostname、SMB共有、User情報、Password Policy、NetBIOS情報などを調べます。
例 enum4linux -a TARGET_IP
オプション -a → All。主要な列挙処理をまとめて実行
平たく言うと 「このサーバー、SMB周辺で何を公開してる?」を広く確認するツールです。
今日の重要ポイント 出力に出るユーザー名候補が、本当に存在するユーザーとは限りません。 自動ツールの出力は、候補と確認済み事実を分けて考える必要があります。
3. smbclient 何をする? SMB共有へ接続するClientです。
例 smbclient //TARGET_IP/Anonymous -N
意味 //TARGET_IP/Anonymous → 接続先SMB Share -N → No Password。Password入力なしで接続を試す
接続後 Promptが smb: \> になります。 ここでは通常のLinux Shellではありません。 だから、ls は使えても、ls -lah のようなBash的Optionは使えないことがあります。 同様に、cat ではなく、get staff.txt のようにファイルをDownloadします。
今日の学び 今どのShell / Clientの中にいるかを見る。 これはかなり重要です。
【フェーズ3:認証情報の確認】 4. hydra 何をする? Login認証に対して、UsernameやPasswordの候補を試すツールです。
重要なOption -l → Single Login Name -L → Login Name List -p → Single Password -P → Password List
この大文字小文字は重要です。 たとえば、-l と -L は別物です。
今日のミスから学んだこと 最初、-p /usr/share/wordlists/rockyou.txt としていました。 これは、「rockyou.txtという文字列自体を1個のPasswordとして使う」意味になります。 Wordlistを使いたいなら、-P です。
ペンテスター目線 Optionの意味を理解せずコピペすると、「動いているように見えて、実は全然違うことをしている」が起こります。
【フェーズ4:SSH秘密鍵とPassphrase解析】 5. ssh2john 何をする? SSH Private Keyを、John the Ripperが解析できるHash形式に変換します。
例 ssh2john kay_rsa > hash
意味 ssh2john → SSH秘密鍵をJohn用形式へ変換 kay_rsa → 元のPrivate Key > → 標準出力をFileへ保存 hash → 保存先File
重要 ssh2john 自体がPassphraseを解析するわけではありません。 役割は、変換だけです。
6. john 何をする? John the RipperはPassword / Passphrase Hash解析ツールです。
例 john hash --wordlist=/usr/share/wordlists/rockyou.txt
意味 hash → 解析対象 --wordlist=... → 候補Password一覧を指定
今日出た表示 No password hashes left to crack
これは、「今解析する対象が残っていない」という意味です。 場合によっては、以前すでに結果を保存済みでもこの表示になります。
確認用 john --show hash
【フェーズ5:SSH接続と秘密鍵の確認】 7. ssh -i 何を意味する? SSH接続時に、使用するIdentity Fileを指定します。
例 ssh -i kay_rsa kay@TARGET_IP
-i Identity file つまり、このPrivate Keyを使って認証するという意味です。
Public / Privateどっち? ssh -i で指定するのは、Private Keyです。 Public KeyはServer側の ~/.ssh/authorized_keys などに登録されます。
今日のエラー Load key "kay_rsa": invalid format
これは、「Passwordが違う」ではなく、Private Key File自体をOpenSSHが正常に読めていないという意味でした。 ここは切り分けとして非常に大事です。
8. ssh-keygen 秘密鍵の検証にも使いました。
例 ssh-keygen -y -f kay_rsa
オプション -y → Private KeyからPublic Keyを出力 -f → File指定
これで、Private KeyがOpenSSHから正常に読めるかを確認できます。 今回も invalid format だったので、SSH接続側ではなく、鍵Fileそのもの側の問題と切り分けられました。
9. file 例 file kay_rsa
結果 PEM RSA private key
何がわかる? Linuxが、「このFileは何っぽいか」を判定してくれます。 今日の面白い点は、file → PEM RSA Private Keyと認識、なのに、ssh-keygen → invalid formatだったことです。 つまり、大まかな形式判定は通るけど、厳密な解析では失敗するということです。
10. head 例 head -n 5 kay_rsa
意味 head → 先頭を表示 -n 5 → 5行表示
Private Keyの先頭が、 -----BEGIN RSA PRIVATE KEY----- であることを確認しました。
11. tail 例 tail -n 5 kay_rsa
意味 tail → File末尾 -n 5 → 最後の5行
Private Keyの場合、 -----END RSA PRIVATE KEY----- があるか確認します。
12. cat -A 例 cat -A kay_rsa
何を見る? 見えない文字を可視化します。 特に、^M があれば、CRLF改行の可能性があります。
今回、行末の $ は異常ではなく、改行位置を表しているだけでした。
13. xxd 例 xxd -g 1 -l 40 kay_rsa
オプション -g 1 → 1 Byte単位で表示 -l 40 → 先頭40 Byteだけ表示
今日の学び Markdown表示上の \ が、本当にFile内にあるのかを確認するために使いました。 結果、2d 2d 2d 2d 2d だったので、----- で正常に始まっていることがわかりました。
ペンテスター目線 「見た目」ではなく、実際のByteを見ることで誤判定を避けられます。
【フェーズ6:権限昇格の調査】 14. linPEAS 何をする? Linux Privilege Escalation Enumeration Toolです。 つまり、権限昇格につながりそうな設定や情報を自動で調べるツールです。
調べる代表例 sudo設定 SUID File Cron Writable File Linux Capabilities Service Process Kernel情報 CredentialやConfig Environment Variable
重要 linPEASは、勝手にrootになるツールではありません。 基本は、怪しいポイントを探して一覧化するツールです。
【今日の概念整理】 Enumeration → 情報を列挙する Authentication → 本人確認 Credential → 認証に使う情報 Private Key → SSH認証に使える秘密情報 Passphrase → Private Key自体を保護するPassword Wordlist → Password候補の一覧 Hash → 元データから作った一方向的な値 Privilege Escalation → 現在より強い権限を得られる条件を探すこと
【今日いちばん重要な学び】 ペンテストでは、ツールを使うこと自体より、「なぜ次にそのツールを使うのか」を理解する方が重要です。
今回の流れ gobuster → Webに何がある? enum4linux → SMBから何が取れる? smbclient → 実際に共有へ入れる? hydra → 発見したUsernameを認証に使える? ssh2john → Private KeyをJohnで扱える形へ変換 john → Passphrase候補を調べる ssh -i → Private KeyでSSH認証 linPEAS → Login後、権限昇格の材料を探す
前の発見が次の判断材料になっています。
Tips これからはCommandを覚えるとき、 「入力は何? → 何を処理する? → 出力から次に何を判断する?」 の3点セットで覚えると、かなり実戦的になります。