はじめに
オペレーティングシステム(OS)のフィンガープリント実験へようこそ。
OS フィンガープリントは、セキュリティ専門家や攻撃者がリモートターゲットで実行されているオペレーティングシステムを特定するために使用する重要な偵察技術です。特定の(時には不正な)TCP および UDP パケットをターゲットに送信し、ターゲットの TCP/IP スタックが応答する際の微妙な違い(Time-To-Live 値、ウィンドウサイズ、フラグの組み合わせなど)を分析することで、Nmap のようなツールは背後にあるオペレーティングシステムを正確に推測できます。
これは推論技術であり、直接的な真実ではありません。Nmap は観測されたネットワーク動作をフィンガープリントデータベースと照合しています。その結果は非常に有用ですが、ファイアウォールやプロキシ、あるいは特殊なスタック構成によって影響を受ける可能性があるため、あくまで「根拠に基づいた推定」として扱うべきです。
この実験では、Nmap の強力な OS フィンガープリント機能を活用してリモートシステムを特定する方法と、これらの技術をバージョン検出と組み合わせて包括的なネットワークプロファイリングを行う方法を学びます。
OS フィンガープリントの有効化
このステップでは、Nmap を使用した OS フィンガープリントの基本を学びます。OS フィンガープリントは、リモートターゲットで実行されているオペレーティングシステムを特定するための技術です。Nmap は、慎重に作成された一連の TCP および UDP パケットをターゲットに送信し、その応答を分析することでこれを実現します。オペレーティングシステムごとに TCP/IP スタックの実装が微妙に異なるため、Nmap はこれらの応答を広範なデータベースと照合して一致するものを見つけ出します。
これが機能するのは、ネットワークスタックが人間によって書かれた実装であり、実装ごとに多くの微妙なデフォルト設定が異なるためです。フィンガープリントは、それらの違いを手がかりに変えるものです。
Nmap で OS フィンガープリントを有効にするには、-Oフラグを使用します。生のパケットを作成するには管理者権限が必要であるため、このコマンドは sudo を使用して実行する必要があることに注意してください。
ローカルマシン(localhost)に対して OS フィンガープリントスキャンを実行し、その出力をプロジェクトディレクトリ内の os_scan.txt という名前のファイルに保存しましょう。
sudo nmap -O -p 22,80 localhost > /home/labex/project/os_scan.txt
スキャンが完了したら、cat コマンドを使用して結果を確認できます。
cat /home/labex/project/os_scan.txt
以下のような出力が表示されます。「Device type」、「Running」、「OS details」で始まる行を探してください。
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:53 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000020s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
Network Distance: 0 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.56 seconds
出力から、ターゲットが Linux カーネルを実行していることがわかります。これは私たちの LabEx 環境と一致しています。
OS 推測の分析
このステップでは、OS フィンガープリント中に Nmap が不確実性をどのように処理するかを探ります。ターゲットが特定のパケットをドロップするファイアウォールを備えていたり、一般的ではない、あるいは高度にカスタマイズされたオペレーティングシステムを実行していたりする場合、Nmap がデータベース内で完全に一致するものを見つけられないことがあります。
Nmap が正確なオペレーティングシステムを特定できない場合、信頼度パーセンテージとともに推測のリストを提供できます。--osscan-guess フラグ(--fuzzy と同等)を使用することで、Nmap により積極的に推測させることができます。これは、完璧に近い一致でなくても OS の候補を表示するように Nmap に指示するものです。
これは、偵察の結果にはしばしば不確実性が含まれることを思い出させてくれます。優れたアナリストは、すべての検出が正確であると仮定するのではなく、その不確実性を記録します。
localhost に対して再度スキャンを実行し、今回は積極的な OS 推測を有効にして、結果を guess_scan.txt というファイルに保存しましょう。
sudo nmap -O --osscan-guess -p 22,80 localhost > /home/labex/project/guess_scan.txt
次に、新しいファイルの内容を表示します。
cat /home/labex/project/guess_scan.txt
出力は前のステップと同様に見えますが、ターゲットがより不明瞭なシステムであれば、Aggressive OS guesses: Linux 5.0 (96%), Linux 4.15 (95%) のように、パーセンテージ付きの OS 推測リストがカンマ区切りで表示されます。
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:54 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000020s latency).
...
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
...
標準的なシステムであっても、TCP/IP スタックの動作を隠蔽しようとする堅牢なターゲットを扱う場合、--osscan-guess を使用することは貴重な技術です。
OS 検出とバージョン検出の組み合わせ (-A)
このステップでは、-A フラグを使用して、OS 検出と他の強力な Nmap 機能を組み合わせます。-A フラグは「Aggressive scan options(積極的なスキャンオプション)」の略です。
-A フラグを使用すると、Nmap は一度に複数の高度な機能を自動的に有効にします。
- OS 検出 (
-O) - バージョン検出 (
-sV):オープンポートを調査してサービスやアプリケーションのバージョンを特定します - スクリプトスキャン (
-sC):Nmap Scripting Engine (NSE) スクリプトのデフォルトセットを実行します - Traceroute (
--traceroute):ターゲットへのネットワークパスを特定します
この組み合わせたアプローチにより、ターゲットシステムの包括的なプロファイルが得られるため、初期偵察においてセキュリティ専門家の間で好まれています。
localhost に対して積極的なスキャンを実行し、出力を aggressive_scan.txt に保存しましょう。このスキャンはより多くのチェックを実行するため、少し時間がかかる場合があります。
sudo nmap -A -p 22,80 localhost > /home/labex/project/aggressive_scan.txt
スキャンが完了したら、結果を確認します。
cat /home/labex/project/aggressive_scan.txt
より詳細な出力が表示されるはずです。OS の詳細に加えて、オープンポートで実行されているサービス(OpenSSH や nginx など)の正確なバージョンや、デフォルトスクリプトによって収集された追加情報が表示されます。
Starting Nmap 7.80 ( https://nmap.org ) at 2026-03-09 14:54 CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000019s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.32
OS details: Linux 2.6.32
...
これらの技術を組み合わせることで、単一のコマンドでターゲットシステムに関する豊富な情報を収集できます。
まとめ
おめでとうございます!オペレーティングシステムのフィンガープリント実験を無事に完了しました。
この実験では、以下の方法を学びました。
- Nmap の
-Oフラグを使用して、TCP/IP スタックの応答を分析し、リモート OS フィンガープリントを実行する方法。 --osscan-guessフラグを適用し、ターゲット OS が完全に一致しない場合に Nmap に確率的な推測を行わせる方法。-Aフラグを活用し、OS 検出とサービスバージョン検出、スクリプトスキャン、Traceroute を組み合わせて、ターゲットの包括的なプロファイリングを行う方法。
これらのスキルは、ネットワーク偵察や脆弱性評価の基本であり、セキュリティ専門家が分析対象の環境を理解し、それに応じてセキュリティ対策を調整するために不可欠です。



