本記事の内容は、セキュリティの仕組みを理解するための学習・研究を目的としています。 許可のない第三者のシステムへの攻撃や侵入行為は、法律で固く禁止されています。 検証を行う際は、必ずご自身が管理する環境、または許可を得た環境内でのみ実施してください。 本記事の情報を利用して生じた一切のトラブル・損害に対し、筆者は責任を負いかねます。
はじめに:「映画のハッキング」と現実のギャップ
「黒い画面にカタカタ打って、数秒後に『Access Granted』!」
サイバー攻撃と聞くと、どうしてもあのシーンを思い浮かべますよね。
でも、現場でやっていることの大半はもっと地味でコツコツした作業です。
その中心にあるのが Enumeration(情報収集・列挙) です。
ざっくり言うと、プロはこう考えています。
「ハッキングは、列挙でほとんど結果が決まる。」
ハッカーの時間配分:攻撃は“ラスボス戦”だけ
現場のペンテストをざっくり時間配分すると、イメージはこんな感じです。
- Enumeration(情報収集・列挙):約7割
- 調査・分析・レポート:約2割
- 攻撃コード実行(Exploit):約1割
「え、攻撃そんなに少ないの?」と思うかもしれませんが、実際そうです。
攻撃はあくまで 準備の集大成で、最後の一撃 にすぎません。
理由はシンプルで、
「見えていないものは、そもそも攻撃できない」
からです。
スクリプトキディとプロの違いは“見方”に出る
同じツールを触っていても、Enumerationの考え方が違うだけで結果がガラッと変わります。
スクリプトキディあるある
- とりあえず Metasploit を起動して、CVEモジュールを撃ちまくる
- 「当たるExploitないかな?」が思考の中心
- 検知・遮断されると「この環境、固すぎ」と言いがち←私
プロのハッカーの動き方
- まず「この環境、どういう構成なんだろう?」から入る
- ネットワーク構成、サービス、バージョン、運用のクセをじわじわ洗い出す
- いきなり攻撃せず、**「ここにはどんなヒューマンエラーが潜んでいそうか」**を考えながら眺める
使っているのは同じ nmap や Burp でも、“環境の見え方”の解像度がまったく違います。
「解像度の高い Enumeration」ってどんな状態?
「ポートスキャンして開いてるポートをメモしました」だけだと、まだ“入口で立ち止まっている”レベルです。
例:Webサーバーを見たとき
-
レベル1(確認)
- 「80番と443番が開いている。Webサーバーがある。」
-
レベル2(調査)
- 「Apache 2.4系で、Ubuntuっぽいな。」
-
レベル3(プロのEnumeration)
-
/dev/や/backup/のような怪しいディレクトリが生きている - エラー画面からフレームワーク名やバージョンが漏れている
- レスポンスサイズや時間の微妙な違いから、裏で別処理が動いていそう
-
ここまで見えてくると、「CVEを当てる」というよりも、その組織特有の“クセ”や“抜け”を突く攻め方ができるようになります。
ADHD気質 × Enumerationはむしろ相性がいい
ここで少し脱線します
思うに「気になるところをどんどん深掘りしちゃう」「寄り道しがち」『ゲームやってたら気づいたら朝』というタイプの人は、Enumerationとかなり相性が良いです。
ただ、そのままだと 沼にハマって時間だけ溶けることもあります。
そこで、ADHDっぽい集中の仕方でも動きやすい、シンプルなルールを3つに絞ります。
1. いきなり深掘りしない(広く → 深く)
- 1つのポートや画面にいきなりハマらない
- まずは全体を軽くスキャンして「地図」を作る
- そのあとで「面白そうなポイント」を選んで深掘り
2. 気になったものは全部メモに逃がす
- 頭で覚えようとしない
- 「あとで見る候補リスト」を作って、気になったURL・パラメータ・レスポンスを全部放り込む
- Notionでもメモ帳でも、MarkdownでもOK
3. “違和感センサー”を育てる
- 標準的な挙動より、「微妙におかしいもの」を優先して見る
- 例:
- 他と違うステータスコード
- 一つだけサイズがやたら大きいレスポンス
- 中途半端に隠れている
/dev//old//tmp/みたいなディレクトリ
「どこから手をつければいいか分からない」と感じたら、“違和感リスト”を作ってそこだけ潰していくやり方がおすすめです。
ミニケース:架空企業「ラーメン大好き株式会社」を攻めるなら
イメージしやすいよう、架空企業「ラーメン大好き株式会社」へのペンテストを想像してみます。
スキャン結果(ざっくり)
22/tcp: OpenSSH 7.2p2
80/tcp: Apache 2.4.18 (Ubuntu)
445/tcp: Samba 4.3.11
3306/tcp: MySQL 5.7.33
さらにディレクトリ列挙で /dev/ に notes.txt と backup.zip が見つかったとします。
ここからプロっぽい目線で考えると、こんな感じです。
-
SMB(445番)
- 匿名アクセスや古い共有設定が残ってないかチェック
-
/dev/ディレクトリ- 開発途中のファイルやバックアップが置かれがちな場所
-
backup.zip- 中にアプリのソースや
config.phpがあれば、DBのパスワードがそのまま埋まっているかもしれない
- 中にアプリのソースや
-
手に入れた認証情報を使って
- SSHに正規ユーザーの顔をしてログイン
- Webアプリと組み合わせて、SQLインジェクションや横展開
ここまで全部、「まだほとんど攻撃らしい攻撃をしていない」のがポイントです。
“落ちている情報を拾って組み立てているだけ” で、かなり深いところまで行けるケースは多いです。
防御側にとってのEnumerationの意味
「攻撃者の話でしょ?」と思うかもしれませんが、防御側にも直結します。
- 攻撃者から“どう見えているか”を知る
- どの情報・設定ミスが足掛かりになりやすいか理解する
- 「全部怖いから全部閉じる」ではなく、優先度をつけて対策する
こういった視点があると、“ハッカーにとっておいしい情報”を先に潰すことができます。
おわりに:地味だけど、強い人はみんなやってる
Enumerationは、華やかさゼロです。
ログ見て、レスポンス比べて、バージョン検索して、ディレクトリを地道に叩く——正直、派手な「侵入シーン」と比べると、地味の極みです。
でも、攻撃側も防御側も、ここをサボるかどうかが実力の差になります。
- 攻め: どこまで深く「見えるか」で成功率が変わる
- 守り: 攻撃者の目線を知っているほど、現実的な対策が打てる
もし社内でCTFや検証環境に触る機会があれば、「攻撃コマンドを打つ前に、どれだけEnumerationに時間を使ったか」を意識してみてください。
きっと、少しずつ「ハッカーの目」が育っていくはずです。