サービスとOSの検出
フィンガープリンティング
「サービスとOSの検出」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
開いているポートからターゲットへ
ポートが開いていると分かるだけでは不十分です。どのソフトウェアが待ち受けているのか、そしてそのバージョンを知る必要があります。エクスプロイトは特定のバージョンを標的にするためです。
Nmapのサービス検出とOSフィンガープリントによって、開いているポートの一覧を実行可能な情報へ変換できます。
サービスバージョン検出
-sVフラグは開いているポートをプローブし、応答をNmapのデータベースと照合して、サービスとバージョンを特定します。たとえば「OpenSSH 8.2p1」や「Apache httpd 2.4.41」のように表示されます。
nmap -sV 192.168.1.10
# 22/tcp open ssh OpenSSH 8.2p1 Ubuntuバージョン検出の仕組み
Nmapは一連のプローブを送信し、応答(バナー、動作、エラーメッセージ)をnmap-service-probesにある数千のシグネチャと比較します。
このバナー取得と動作照合により、HTTPサーバーがポート8000で動作している場合のように、標準ではないポート上のサービスも特定できます。
バージョン強度
--version-intensity(0~9)で、Nmapがどの程度入念に検出するかを調整できます。
- 低い値:プローブが少なく高速ですが、バージョンを見落とす可能性があります。
- 高い値:プローブが多く低速ですが、精度が高くなります。
ショートカットとして、--version-light(強度2)と--version-all(強度9)があります。
nmap -sV --version-intensity 9 192.168.1.10OS検出
-OフラグはOSフィンガープリントを有効にします。NmapはTCP/IPスタックの応答方法に見られる微妙な違いを調べ、OSシグネチャのデータベースと照合します。
推定結果とその確度(パーセント)に加えて、利用可能な場合はデバイスタイプと稼働時間の推定値も報告します。
sudo nmap -O 192.168.1.10
# Running: Linux 5.X | OS CPE: cpe:/o:linux:linux_kernel:5TCP/IPスタックのフィンガープリント
OSごとにTCP/IPの実装には少しずつ違いがあります。Nmapは次のような特徴をプローブします。
- 初期TTL値。
- TCPウィンドウサイズ。
- 通常とは異なるフラグの組み合わせをスタックが処理する方法。
- TCPオプションの順序。
こうしたわずかな違いが、OSの系統やバージョンを推測できるほど固有のフィンガープリントを形成します。
精度に関する注意点
OS検出は確実な判定ではなく、最有力の推測です。次の場合は精度が低下します。
- ファイアウォールが、Nmapの判定に必要なプローブをフィルタリングしている。
- ホストが通常とは異なるスタックや仮想化されたスタックを実行している。
- フィンガープリントの取得元となる開いたポートが少ない。
--osscan-guessオプションを使用すると、確信が持てない場合にNmapがより積極的に推測します。
フラグの組み合わせ
実際には、検出オプションを組み合わせて使用します。-Aフラグは、OS検出、バージョン検出、デフォルトスクリプト、tracerouteをまとめて有効にするショートカットです。
sudo nmap -A 192.168.1.10
# Equivalent to -O -sV -sC --tracerouteバージョンが重要な理由
正確なバージョンによって、次の手順が決まります。「vsftpd 2.3.4」なら有名なバックドアをすぐに思い出し、「Apache 2.4.49」ならパストラバーサルのCVEを連想できます。
正確なバージョン情報があれば、手当たり次第に攻撃を試すのではなく、適合するエクスプロイトを検索できます。また、脆弱性レポートのセクションにも直接利用できます。
結果の保存
分析やレポート作成のため、スキャンの出力は必ず保存してください。Nmapは複数の形式に対応しています。
-oN:通常のテキスト。-oX:XML(ツール用)。-oG:grep可能な形式。-oA:すべての形式を同時に保存。
nmap -A -oA scan_results 192.168.1.10Nmapを使わないバナー取得
サービスを手動で確認することもあります。raw clientで接続し、挨拶メッセージ(バナー)を読み取ると、ソフトウェアとバージョンを直接確認できます。
netcatなどのツールを使えば、平文サービスに対してこれを実行できます。Nmapの推測が不正確に思える場合の簡単な確認方法ですが、現在では多くのサービスが攻撃者を惑わせるためにバナーを隠したり偽装したりします。
nc 192.168.1.10 22
# SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5確認問題
一度に最も多くの処理を行うフラグを特定してください。
まとめ
フィンガープリントについて学びました。
-sVはプローブとバナーの照合によってサービスのバージョンを検出し、--version-intensityで調整できます。-OはTCP/IPスタックのフィンガープリントを使用してOS検出を行います。結果は最有力の推測です。-AはOS、バージョン、スクリプト、tracerouteをまとめて実行します。- 正確なバージョンがエクスプロイトの選択に役立ちます。出力は
-oAで保存してください。
次は、より高度な自動化を可能にするNmap Scripting Engineです。
よくある質問
「サービスとOSの検出」レッスンは無料ですか?
はい。「サービスとOSの検出」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「サービスとOSの検出」で何を学びますか?
フィンガープリンティング ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「サービスとOSの検出」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ホストの探索
- ポートスキャンの技法
- サービスとOSの検出
- Nmap Scripting Engine