概要
- Gobuster:HTTPディレクトリ/ファイル列挙、DNSサブドメイン列挙、vhost列挙などを行うツール。辞書に基づく高速な列挙が特徴。
- Hydra:ネットワークサービス(SSH/FTP/HTTP-Form/SMB 等)に対する認証試行(パスワード推測)ツール。並列化に優れ、各種プロトコルをサポート。
どちらも 攻撃用にも防御用にも使える道具。用途は「脆弱性確認」「ペネトレーションテスト」「CTF」などに限定する。
共通事前準備
- 実験用ターゲット(自分が所有するVM/CTF/テスト環境)を用意する。
- 適切なワードリストを用意する(短時間で試す小さめのリスト → 学習用。実運用でのパスワード検査はポリシーに従い実施)。
- root/管理者での実行は不要。必要最低限の権限で行う。
- ログ出力・結果保存は都度行う(再現性のため)。
Gobuster(概要と主な使い方)
インストール(例)
# Debian/Ubuntu 系(snap or apt で入る環境もある)
sudo apt update
sudo apt install gobuster
# Go 経由の最新版
go install github.com/OJ/gobuster/v3@latest
主なモード
-
dir:HTTP のパス(/admin, /wp-login.php 等)列挙 -
vhost:仮想ホスト名列挙(Host ヘッダ指定で vhost を試す) -
dns:サブドメイン列挙(DNS ブラウトフォース)
典型的なコマンド(必ず自分の環境で)
- ディレクトリ列挙(HTTP)
gobuster dir -u http://127.0.0.1:8080 -w /path/to/wordlist.txt -t 40 -o gobuster_dir.txt
- vhost 列挙(Host ヘッダで仮想ホストを試す)
gobuster vhost -u http://127.0.0.1 -w /path/to/vhosts.txt -t 30 -o gobuster_vhost.txt
- DNS サブドメイン列挙
gobuster dns -d example.local -w /path/to/subs.txt -o gobuster_dns.txt
主要オプション(覚えておく)
-
-u, --url:ターゲット URL またはホスト -
-w, --wordlist:ワードリスト -
-t, --threads:並列スレッド数(高すぎるとターゲットに負荷をかける) -
-s, --statuscodes:表示する HTTP ステータスコードを指定(例-s 200,301,302,403) -
-x:拡張子リスト(例:.php,.html,.bakを同時試行) -
-o:出力ファイル
実務的な注意点(ゴブスタ)
- 静的コンテンツの 200 応答以外でも意味がある(403, 301 の扱いを確認)。
- ターゲットの WAF/IPS により誤検出や遮断されるため、遅延やスレッド数を調整する。
- 大規模ワードリストは時間と帯域を消費する。段階的に試す。
- 結果はログと突合し、運用側のアクセスログ(404/403)と重ねて確認する。
Hydra(概要と主な使い方)
インストール(例)
sudo apt update
sudo apt install hydra
# or for GUI/最新機能はソースやパッケージを確認
使い方の考え方
- Hydra は「認証プロセス」に大量の試行を投げるツール。
- 目的は「認証バイパスの可能性確認」「脆弱なパスワードの検出」。
- 実運用で実行する場合は必ず運用ポリシーに従い、事前合意を得る。
- ロックアウトや監視アラートを誘発しやすいため、テスト手順は事前に周知すること。
典型的なコマンド構成(変数化して記載)
hydra -L <userlist> -P <passlist> -t <threads> -s <port> <target> <service_module> -o hydra_results.txt
例:実験環境の SSH(自分のローカルVM限定)
hydra -l testuser -P /path/to/small_password_list.txt -t 4 ssh://127.0.0.1 -o hydra_ssh.txt
例:HTTP-Form(フォーム認証の検証、フォームのパラメータは環境依存)
hydra -L users.txt -P passwords.txt 127.0.0.1 http-form-post "/login:username=^USER^&password=^PASS^:F=incorrect" -o hydra_httpform.txt
(フォーム文字列は環境に合わせて正しく指定する必要がある)
主要オプション(覚えておく)
-
-L:ユーザリスト(1行1ユーザ) -
-l:単一ユーザ指定 -
-P:パスワードリスト -
-t:並列スレッド数 -
-s:ポート -
-o:出力ファイル -
-V:成功試行を標準出力に逐次表示(verbose) -
<service_module>:ssh,ftp,http-get,http-form-post,ms-sql,smbなど
実務的注意点(ハイドラ)
- 認証試行はターゲットにより アカウントロック/IPブロック/監査アラート を発生させる。
- テストはステージング環境や合意済みの時間帯に限定する。
- 大きなワードリストや高スレッドは即時遮断/ログ増加を招く。
- ログ(/var/log/auth.log など)と連携して検証する。
- 可能なら「アカウントロックの閾値」を一時的に緩めるなど運用側で協力を得る。
出力の扱いとレポーティング
- Gobuster:
-oで保存したリストを整形(存在したパス・ステータス・リダイレクト先など)。 - Hydra:成功した認証の記録は機密扱い。発見した場合は速やかに運用担当へ報告し、再現手順、影響範囲、推奨対応を添える。
- レポートに含める項目例:実行日時、実行コマンド(変数化)、対象、使用ワードリスト、成功結果のスクリーンショット/ログ範囲、推奨対処。
防御観点(検出・軽減)
- 監査ログの時刻相関で大量の 401/403/404 を検出するルールを作る。
- レートリミットとアカウントロック(ただし DoS のリスクとトレードオフ)。
- WAF/IPS での不審なヘッダ/パターンによる検出。
- 強力なパスワードポリシーと多要素認証(MFA)の導入。
- 公開ディレクトリの最小化(不要ファイルは除去、インデックス無効化)。
倫理・運用ルール(必須)
- 実行前に書面/メール等の許可を得ること(スコープ、時間帯、影響範囲を明示)。
- テストは監視担当と連携し、即時停止手順を共有すること。
- 発見事項は秘匿扱いとし、脆弱性対応フローに従うこと。
- 公開サービスや第三者所有のシステムに対する無断実行は犯罪になる。
参考(学習用)
- 自分のローカルに DVWA / Juice Shop / intentionally vulnerable VMs を立てて練習する。
- Kali Linux に Gobuster / Hydra が同梱されている場合がある(ただし利用は許可環境で)。
- Wordlists は
SecLists等を参考にする(学習用に短縮して使うこと)。
最後に(短く)
- Gobuster:発見(列挙)ツール。HTTP パス・サブドメインなどの把握に使う。
- Hydra:認証試行ツール。弱い認証の検出に使うが使用には高い倫理的配慮が必要。
- 常に「許可」「ログ」「運用連携」を前提に実行すること。