サービスとOSのフィンガープリンティング
Nmapの-sVと-Oを使って、稼働中のサービスとオペレーティングシステムを特定します。
「サービスとOSのフィンガープリンティング」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。
フィンガープリンティングが重要な理由
正確なサービスのバージョンとオペレーティングシステムを把握すると、開いているポートの一覧を実行可能な対象リストに変えられます。バージョンデータは、CVE番号やエクスプロイトモジュールに直接対応します。
-sVによるサービスバージョン検出
nmap -sVは、開いている各ポートに対してサービス固有のペイロードでプローブを行い、応答をプローブデータベース(nmap-service-probes)と照合して、ソフトウェアとバージョンを特定します。
sudo nmap -sV -p 22,80,443,3306 192.168.1.100
# 22/tcp open ssh OpenSSH 7.4
# 80/tcp open http nginx 1.18.0
# 3306/tcp open mysql MySQL 5.7.38-sVの強度レベル
--version-intensityフラグ(0~9)は、Nmapがどの程度積極的にプローブするかを制御します。強度を上げると、より多くのサービスを検出できますが、時間がかかり、通信量も増えます。
sudo nmap -sV --version-intensity 9 192.168.1.100
# 9 = try all probes (slowest, most accurate)
# 0 = only most likely probes (fastest)-OによるOS検出
nmap -Oは、TTL値、TCPウィンドウサイズ、IPオプションなど、TCP/IPスタックのフィンガープリンティングを使用してOSを推測します。結果には信頼度がパーセンテージで含まれます。
sudo nmap -O 192.168.1.100
# OS details: Linux 4.15 - 5.6
# Network Distance: 1 hop
# Requires at least one open and one closed portアグレッシブスキャン -A
-Aを使うと、OS検出、バージョン検出、スクリプトスキャン、tracerouteが1つのフラグで有効になります。ラボ環境で包括的なスキャンをすばやく行う場合に便利です。
sudo nmap -A 192.168.1.100
# Combines: -O -sV -sC --tracerouteNetcatによるバナー取得
バナー取得では、接続時にサーバーが送信するサービスバナーを手動で取得します。完全なNmapフィンガープリンティングに代わる、シンプルで通信量の少ない方法です。
# HTTP banner
nc 192.168.1.100 80
GET / HTTP/1.0
# SSH banner
nc 192.168.1.100 22
# Returns: SSH-2.0-OpenSSH_8.9p1curlによるバナー取得
curlの-Iフラグはレスポンスヘッダーのみを取得し、コンテンツをダウンロードせずに、サーバーソフトウェア、バージョン、技術スタックを明らかにします。
curl -I http://192.168.1.100
# HTTP/1.1 200 OK
# Server: Apache/2.4.52 (Ubuntu)
# X-Powered-By: PHP/8.1.2WebフィンガープリンティングのためのWhatWeb
WhatWebは、CMS、JavaScriptライブラリ、分析ツール、サーバーソフトウェア、フレームワークなどのWeb技術を特定します。Webアプリケーションの偵察に特化したツールです。
whatweb http://target.com
# Output:
# WordPress [v6.2], Apache[2.4.52],
# PHP[8.1], jQuery[3.6.0]フィンガープリンティングのためのNmap Scripting Engine
NSEスクリプトによって、Nmapのフィンガープリンティング機能を拡張できます。http-server-header、ssh-hostkey、bannerスクリプトは、詳細な情報を抽出します。
nmap --script=banner 192.168.1.100
nmap --script=http-server-header 192.168.1.100
nmap --script=ssh-hostkey 192.168.1.100CVEとの照合
サービスのバージョンが判明したら、National Vulnerability Database(NVD)を検索するか、searchsploitなどのツールを使用して、正確なバージョンに対応する既知のエクスプロイトを探します。
searchsploit apache 2.4.49
searchsploit openssh 7.4
# Or search NVD:
# https://nvd.nist.gov/vuln/search防御側によるフィンガープリンティングの回避
防御側は、バナーを目立たなくできます。Serverヘッダーを削除し、SSHバナーをカスタマイズし、ポートノッキングを使用します。ただし、隠蔽によるセキュリティは攻撃のハードルを上げるだけで、根本的な解決策ではありません。
# Apache: suppress version
ServerTokens Prod
ServerSignature Off
# Nginx
server_tokens off;クイックチェック
OS検出、バージョン検出、スクリプトスキャンを組み合わせるNmapのフラグはどれですか。
まとめ:フィンガープリンティング
フィンガープリンティングによって、単なるポート一覧を実行可能なインテリジェンスに変えられます。自動検出には-sVと-Oを組み合わせ、通信量を抑えた確認には手動のバナー取得を使用し、WebスタックにはWhatWebを使用します。必ずバージョン文字列をCVEデータベースと照合してください。
よくある質問
「サービスとOSのフィンガープリンティング」レッスンは無料ですか?
はい。「サービスとOSのフィンガープリンティング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。
「サービスとOSのフィンガープリンティング」で何を学びますか?
Nmapの-sVと-Oを使って、稼働中のサービスとオペレーティングシステムを特定します。 ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cyber Security Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「サービスとOSのフィンガープリンティング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCyber Security Academyレッスンでコードを書いて実行できますか?
はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Nmapによるポートスキャン技法
- サービスとOSのフィンガープリンティング
- Netcat:ネットワークの万能ツール
- ネットワーク列挙のスクリプト作成