挙げる
このTipsでは、リモートコンピュータがどのオペレーティングシステムを実行しているかを調べるためにnmapコマンドを使用する方法を紹介します。LANホストのインベントリリストを作成する場合や、特定のローカルまたはリモートのIPアドレスの後ろで動作しているシステムがわからない場合、ヒントが必要です。このタスクにnmapコマンドを使っても、リモートのオペレーティングシステムを100%の精度で特定できるわけではありませんが、nmapがかなり有用な推論を提供してくれることは確かです。
ローカルネットワークの簡易スキャン
リモートホストのオペレーティングシステムをnmapで特定しようとするとき、NMAPは、オペレーティングシステムのデフォルトインストールに基づくポートのオープンおよびクローズ状態、他のユーザーによってnmapデータベースにすでに提出されたオペレーティングシステムのフィンガープリント、MACアドレスなど、さまざまな側面に基づいて推論を行います。
ネットワーク上でどのIPアドレスが有効かわからない場合は、まずサブネット全体をスキャンしてみてください。例えば、ここではローカルサブネット10.1.1.*をスキャンします:
# nmap -sP .*
Starting Nmap 6.00 ( http://.org ) at 2013-01-08 08:14 EST
Nmap scan report for .1
Host is up (0.0026s latency).
MAC Address: C4:7D:4F:6F:3E:D2 (Cisco Systems)
Nmap scan report for .11
Host is up.
Nmap scan report for .13
Host is up (0.0020s latency).
MAC Address: 00:13:02:30:FF:EC (Intel Corporate)
Nmap scan report for .14
Host is up (0.0022s latency).
MAC Address: A8:26:D9:ED:29:8E (HTC)
Nmap scan report for .250
Host is up (0.0041s latency).
MAC Address: 00:23:EB:71:E0:F6 (Cisco Systems)
Nmap done: 256 IP addresses (5 hosts up) scanned in 35.37 seconds
上の出力から、現在アクティブなすべてのIPアドレスと、ホスト固有の関連ヒントを見ることができます。
リモートホストのオペレーティングシステムの特定
nmapが判断を下すためには、リモートホスト上で少なくとも1つのオープンポートと1つのクローズドポートを見つける必要があります。先ほどのスキャン結果に基づき、ホスト10.1.1.13に関する詳細情報を見てみましょう:
# nmap -O -sV .13
出力:
Nmap scan report for .13
Host is up (0.0073s latency).
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.5p1 Debian 6+squeeze2 (protocol 2.0)
53/tcp open domain ISC BIND 9.7.3
80/tcp open http Apache httpd 2.2.16 ((Debian))
111/tcp open rpcbind (rpcbind V2) 2 (rpc #100000)
3389/tcp open ms-wbt-server xrdp
MAC Address: 00:13:02:30:FF:EC (Intel Corporate)
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:kernel:2.6
OS details: Linux 2.6.32 - 2.6.35
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:kernel
OS and Service detection performed. Please report any incorrect results at http://.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.57 seconds
上記の出力から判断できるように、この特定のホストは Linux オペレーティングシステムの何らかのバージョンを実行しています。SSHのバージョンから、カーネルバージョン2.6のDebian 6である可能性が高く、正確なカーネルバージョンは2.6.32から2.6.35の間である可能性が高いです。
はんけつをくだす
WAN上の全てのリモートホストに同じ技術を使うことができます。システム管理者にとって、オペレーティングシステムのバージョンについてリモートホストをスキャンすることは非常に便利です。しかし一方で、このテクニックはハッカーに悪用される可能性があります。ハッカーはOSの種類とパッチレベルに関する正確な情報を使って、あらゆるホストを攻撃のターゲットにすることができます。このことからも、システムを常にパッチでアップデートしておくことをお勧めします。