【ITニュース解説】Network Enumeration with Nmap Walkthrough (Hack The Box)

2025年09月05日に「Dev.to」が公開したITニュース「Network Enumeration with Nmap Walkthrough (Hack The Box)」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

Nmapを使い、ターゲットのOS判別、全ポートスキャン、ホスト名、サービス特定の手順を解説。TTL値やスクリプト活用、UDPスキャンによるファイアウォール回避で、隠れた情報や脆弱性を発見する具体的な方法を紹介する。

ITニュース解説

ネットワークを調査する「Nmap」という強力なツールを使いこなすことは、システムエンジニアを目指す上で非常に重要なスキルだ。このツールを使うことで、ネットワーク上にあるコンピュータが「生きているか」から始まり、「どんなOSが動いているか」「どんなサービスを提供しているか」まで、まるで「ネットワークの地図」を作るように詳細な情報を手に入れることができる。ここでは、Nmapを使ったネットワーク調査の具体的な手順と、その中で得られる情報の意味について、初心者にもわかるように解説する。

まず「ホストディスカバリ」、つまりネットワーク上に目的のコンピュータが稼働しているかを確認する方法から見ていこう。IPアドレスがわかっていても、それが本当にネットワーク上で応答しているかを知る必要がある。Nmapでは、nmap -sn のようなコマンドを使って、ターゲットが稼働しているかどうかを「ping」のような仕組みで探る。ただし、検出されにくいように特定のオプション(例えば --disable-arp-ping)を使うこともある。ここで重要な手がかりとなるのが、ネットワーク通信で使われる「TTL(Time To Live)」という値だ。これはデータパケットがネットワーク上をどれくらい転送されるかを示すもので、OSの種類によって初期値が異なることが知られている。例えば、WindowsシステムではTTLが128、Linux/Unixシステムでは64、一部のネットワーク機器では255という値がよく使われる。この値を見ることで、相手のOSの種類を推測できるのだ。最初は難しく感じるかもしれないが、このTTLの値は非常に強力なヒントとなる。

次に、稼働しているコンピュータが見つかったら、「ホストとポートのスキャン」を行う。これは、そのコンピュータがどのような「窓口」(ポート)を開いていて、そこでどんな「サービス」が動いているかを探る作業だ。nmap -p- のように -p- オプションを使うと、TCPの全ポート(1から65535まで)を徹底的にスキャンし、開いているポートをすべて見つけ出すことができる。開いているポートの数がそのまま答えとなることもある。さらに、ターゲットのコンピュータの「ホスト名」、つまりネットワーク上の名前を知ることも重要だ。これは nmap -sC というコマンドで実行できる。-sC オプションは、Nmap開発者が「便利で安全で高速」と考える一連のデフォルトスクリプトを実行してくれる。これらのスクリプトの中には、smb-os-discovery のように、システムに関する詳細な情報を発見し、ホスト名を特定するのに役立つものがあるのだ。

スキャンで得られた結果は膨大になるため、適切に「保存」し、後で分析できるようにしておく必要がある。nmap -oX target.xml のように -oX オプションを使うと、スキャン結果をXML形式でファイルに保存できる。XML形式は機械が読みやすい形式だが、人間が見やすくするために、xsltproc style.xsl target.xml > output.html のように xsltproc というツールを使ってHTMLレポートに変換することができる。これにより、ウェブブラウザで開ける、整理された美しいレポートが手に入る。最高に開いていたポートの番号など、レポートから重要な情報を読み取る練習も重要だ。

続いて、「サービス列挙」では、見つけたポートで具体的にどんな「サービス」が動いているのか、その「バージョン」は何なのかを詳しく調べる。これは nmap -sV -p22,80,110,... のように -sV オプションを使い、特定のポート番号を指定して実行する。例えば、ウェブサーバー(ポート80)やSSHサーバー(ポート22)など、それぞれのサービスがどのようなソフトウェアで、どのバージョンで動いているかを知ることで、そのサービスの既知の脆弱性や設定ミスがないかを探る手がかりになる。場合によっては、このサービス情報の中に「フラグ」と呼ばれる、次のステップに進むための秘密の情報が隠されていることもあるのだ。

Nmapには「Nmapスクリプティングエンジン(NSE)」という強力な機能があり、これを使うと、より高度な調査を行うことができる。これはNmapに搭載された小さなプログラム(スクリプト)で、脆弱性スキャンや情報収集など、さまざまなタスクを自動化できる。例えば、nmap -A オプションはOS検出、バージョン検出、スクリプト実行などを包括的に行う。また、nmap -sV --script vuln のように、既知の脆弱性(vuln)を探すスクリプトを実行することもできる。このようなスキャン中に、ターゲットのウェブサーバーに robots.txt というファイルがあることに気づくことがある。このファイルは、通常は検索エンジンのクローラーに対して、どのページをインデックスして良いか悪いかを示すものだが、意図せず重要な情報が置かれていることもある。curl http://<redacted-ip>/robots.txt のように curl コマンドで直接そのファイルの内容を確認すると、そこに隠されたフラグが見つかる、といった実践的なシナリオも多い。

ネットワーク上には、不正なアクセスを防ぐための「ファイアウォール」や「IDS/IPS(侵入検知・防御システム)」が設置されていることがほとんどだ。これらを回避しながら情報を収集する技術もシステムエンジニアには求められる。例えば、静かにOSを特定したい場合、-O --disable-arp-ping -Pn のように、pingを使わず、またホストが稼働していると仮定して(-Pn)、OS検出(-O)を試みる。もし何の応答も得られなければ、ファイアウォールが強力にブロックしている可能性が高い。しかし、これも重要な情報だ。さらに、以前使ったTTL値によるOS特定 (nmap -sn -PE --packet-trace --disable-arp-ping) を再度試すと、静かにOSがLinuxであると判明することがある。OSの種類だけでなく、具体的なLinuxのディストリビューションまで知りたい場合は、再び -sV オプションでサービスバージョンをスキャンすると良い。このように、複数の手法を組み合わせることで、より正確な情報を得られる。

さらに高度な回避が必要な場合として、DNSサーバーのバージョン特定が挙げられる。DNSは通常、ポート53で動作するが、TCPだけでなくUDPプロトコルも使うことが多い。もしTCPでスキャンしてポートが閉じていると表示されても、諦めてはいけない。sudo nmap -sUV -p53 のように -sUV オプションを使ってUDPプロトコルでのスキャンとサービスバージョン検出を試みることで、これまで見えなかった情報が見つかることがある。これは、通信の「経路」を変えて再試行するイメージだ。

最も難しいシナリオでは、通常とは異なるポートで動いている「特別なサービス」のバージョンを特定する必要がある。まずは、nmap -sV -Pn で再度サービススキャンを行い、開いているポートを隅々まで確認する。このとき、例えばポート50000のような、あまり一般的ではない高ポートが開いているのを見つけたら、そこに何か重要なサービスが動いている可能性が高い。このような場合、Nmapだけでなく、「netcat(ncat)」のような別のツールも活用する。ncat -nv --source-port 53 <redacted-ip> 50000 のように、netcat を使ってそのポートに直接接続を試みる。--source-port 53 のように特定の送信元ポートを使って接続することで、ファイアウォールのルールを迂回できる可能性もある。この種の操作にはシステム権限が必要な場合もあり、sudo を付けて実行することで成功することもある。

これらのネットワーク調査技術は、システムエンジニアとして、自分が担当するシステムのセキュリティ状態を把握し、潜在的な問題点を見つけ出すために不可欠な能力だ。Nmapを使いこなすことで、システムの「弱点」を事前に特定し、それらを改善するための具体的な手がかりを得ることができる。システムをより安全に、より効率的に運用するために、これらの調査スキルはあなたの強力な武器となるだろう。

関連コンテンツ

【ITニュース解説】Network Enumeration with Nmap Walkthrough (Hack The Box) | いっしー@Webエンジニア