Nmap チュートリアル
kali コマンド ラインでnmapコマンドを直接使用し、 「ターミナル」を開き、nmapと入力して Enter キーを押すと、 nmapが使用可能であることを証明するnmapのバージョンが表示されます。
Nmapには、「ポートスキャン」、「ホスト検出」、「サービス識別」、「システム識別」の4つの基本機能があります。
1.ポートスキャン
ホストの「開いているポート」をスキャンし、nmap の背後にあるホスト IP を直接たどります (デフォルトで 1000 ポートがスキャンされます)。
nmap 192.168.31.180
上の図からわかるように、1.58 秒で 1000 個のポートをスキャンし、そのうち 991 個が閉じられており、結果にリストされている 9 個のポートは開いているポートです。
1. ポートを指定する
「指定されたポート」をスキャンし、-p
パラメーターを。単一のポート、複数のポート、またはポートの範囲をスキャンできます
nmap 192.168.31.180 -p 80
nmap 192.168.31.180 -p 1-80
nmap 192.168.31.180 -p 80,3389,22,21
nmap 192.168.31.180 -p 1-65535
nmap 192.168.31.180 -p- # -p- 等价于 -p 1-65535
2. スキャン方法を指定する
Kali の「wireshark」を使用して、さまざまなスキャン方法のリクエスト情報を分析し、これらの方法の違いを判断します。
kali の左上隅をクリックし、wiresharkと入力して [開く] をクリックし、パケット キャプチャ用のネットワーク カードを選択します (I am eth0 here )。
フィルタ基準を入力したらip.addr == 192.168.31.180 and tcp.port == 80
、矢印をクリックして適用します。
このフィルター条件は、フィルター IP アドレスが 192.168.31.180 で、ポートが TCP ポート 80 であることを意味します。
フィルタ条件を設定した後、コマンド ラインで scan コマンドを実行し、「wireshark」で要求パケットを表示します。
2.1 TCP フル接続スキャン
-sT
パラメータを使用して、TCP フル接続スキャンを実行します。
「フル接続スキャン」は、完全なスリーウェイ ハンドシェイクを使用してリンクを確立し、リンクが確立された場合はポートが開いていると判断し、リンクが確立されていない場合はポートが閉じていると判断します。
nmap 192.168.31.180 -p 80 -sT
1) ポートが開いている場合、完全なスリーウェイ ハンドシェイクが実行され、接続が正常に確立されます. スキャン結果の STATE フィールドは open と表示されます.
2) ポートが閉じている場合、ハンドシェイクが 1 回しか実行できず、接続を確立できないため、スキャン結果の STATE フィールドはclosedと表示されます。
2.2 SYNセミリンクスキャニング
-sS
SYN セミリンク スキャンのパラメータを使用します。
「セミリンクスキャニング」はハンドシェイクを2回行うだけで、相手は確認応答フレーム(ACK=1)を返すことでポートが開いていると判断し、それ以外はポートが閉じていると判断します。
nmap 192.168.31.180 -p 80 -sS
1) ポートが開いている場合、2 つのハンドシェイクが実行され、スキャン結果の STATE フィールドはopenです。
2) ポートが閉じている場合、ハンドシェイクは 1 回だけで、スキャン結果の STATE フィールドはclosedです。
2.3 ステルススキャン
ステルス スキャン。Linux システムにのみ適用されます。
「Secret Scan」は、TCP FINパケットまたはXmas treeパケットまたはNullパケットを対象ホストのポートに送信し、RST応答パケットを受信した場合はポートが閉じていると判断し、それ以外の場合はポートが開いていると判断します。ブロック (オープン/フィルタリング)
nmap 127.0.0.1 -p 80 -sF # Fin扫描
nmap 127.0.0.1 -p 80 -sN # Null扫描(所有flags都为0的TCP包)
nmap 127.0.0.1 -p 80 -sX # Xmas扫描(flags的FIN、URG、PUSH都为1的包)
2. ホスト検出
ネットワーク セグメントでオンラインになっているホストをスキャンします。-sP
パラメーター。ポートはスキャンせず、 「サバイバル ホスト」のみをスキャンします。
要するにPingのスキャンで、Pingが成功して応答パケットがあれば、ホストがオンラインであると判断します。
nmap -sP 192.168.31.0/24
上の図からわかるように、このネットワーク セグメント内の 256 個の IP を 2 秒間でスキャンし、3 つのホストが生き残っており、効率は非常に良好です。
3. サービス識別
ポートをスキャンすると、デフォルトでポートに対応するサービスが表示されますが、サービスのバージョンは表示されません。
特定の「サービス バージョン」を識別するには、-sV
パラメータ。
nmap 192.168.31.180 -p 80 -sV
スキャン結果の VERSION フィールドには、サービスの詳細なバージョンが表示されます。
4. システム識別
「オペレーティング システムのバージョン」を識別するには、-O
パラメータ。
nmap 192.168.31.180 -p 80 -O
ヒント:
- Nmap によってスキャンされたシステム バージョンは、完全に正確ではなく、参考用です。
- 特定のバージョンを識別できない場合、Nmap は、上の図に示すように、可能性のあるオペレーティング システムを確率の形式で一覧表示します。
5.スキャン結果のエクスポート
Nmap のスキャン結果は、テキスト形式や XML 形式などのファイルに保存できます。
1) スキャン結果を「テキスト形式」でエクスポートし、結果をそのまま保存します。
nmap 192.168.31.180 -p 80 -oN result.txt
2) スキャン結果を「xml 形式」にエクスポートすると、結果の保存形式が変わります。
nmap 192.168.31.180 -p 80 -oX result.xml