メニュー 閉じる

Hack the Box実践!nmapの書き方で何が変わるの?

皆さんこんにちは。今日は個人的な疑問を検証してみました。

ポートスキャンに用いるコマンドであるnmapですが、
人や教科書によって書き方が少し異なることがあります。

今回はそれぞれどういう結果が表示されるか比較してみることにしました。

 

Hack The Boxで説明されたコマンド

┌──(kali㉿kali)-[~]
└─$ ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.27 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)

nmap -sC -sV -p$ports 10.10.10.27
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-18 09:27 EST
Nmap scan report for 10.10.10.27
Host is up (0.18s latency).

PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows Server 2019 Standard 17763 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000.00; RTM
| ms-sql-ntlm-info:
| Target_Name: ARCHETYPE
| NetBIOS_Domain_Name: ARCHETYPE
| NetBIOS_Computer_Name: ARCHETYPE
| DNS_Domain_Name: Archetype
| DNS_Computer_Name: Archetype
|_ Product_Version: 10.0.17763
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2020-12-11T01:56:37
|_Not valid after: 2050-12-11T01:56:37
|_ssl-date: 2020-12-18T15:48:09+00:00; +1h19m17s from scanner time.
3389/tcp open ms-wbt-server Microsoft Terminal Services
| rdp-ntlm-info:
| Target_Name: ARCHETYPE
| NetBIOS_Domain_Name: ARCHETYPE
| NetBIOS_Computer_Name: ARCHETYPE
| DNS_Domain_Name: Archetype
| DNS_Computer_Name: Archetype
| Product_Version: 10.0.17763
|_ System_Time: 2020-12-18T15:47:55+00:00
| ssl-cert: Subject: commonName=Archetype
| Not valid before: 2020-11-22T22:00:23
|_Not valid after: 2021-05-24T22:00:23
|_ssl-date: 2020-12-18T15:48:09+00:00; +1h19m17s from scanner time.
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
26008/tcp closed unknown
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49669/tcp open msrpc Microsoft Windows RPC
56144/tcp closed unknown
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 2h27m51s, deviation: 3h01m26s, median: 1h19m16s
| ms-sql-info:
| 10.10.10.27:1433:
| Version:
| name: Microsoft SQL Server 2017 RTM
| number: 14.00.1000.00
| Product: Microsoft SQL Server 2017
| Service pack level: RTM
| Post-SP patches applied: false
|_ TCP port: 1433
| smb-os-discovery:
| OS: Windows Server 2019 Standard 17763 (Windows Server 2019 Standard 6.3)
| Computer name: Archetype
| NetBIOS computer name: ARCHETYPE\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2020-12-18T07:47:57-08:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2020-12-18T15:47:59
|_ start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 73.30 seconds

最初の一行で–min-rateは1秒あたりに送信するプローブの最小値を指定しています。

ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.27 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)

二行目では-p$portsというオプションを追加していますね。

nmap -sC -sV -p$ports 10.10.10.27

 

自分が思いついたコマンドは-sV -sC -Pn

オプションは以下の通りです。

-sV : Probe open ports to determine service/version info
-sC : equivalent to –script=default
-Pn : Treat all hosts as online — skip host discovery

┌──(kali㉿kali)-[~]
└─$ nmap -sV -sC -Pn 10.10.10.27 130 ⨯
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-18 09:24 EST
Nmap scan report for 10.10.10.27
Host is up (0.17s latency).
Not shown: 995 closed ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows Server 2019 Standard 17763 microsoft-ds
1433/tcp open ms-sql-s Microsoft SQL Server 2017 14.00.1000.00; RTM
| ms-sql-ntlm-info:
| Target_Name: ARCHETYPE
| NetBIOS_Domain_Name: ARCHETYPE
| NetBIOS_Computer_Name: ARCHETYPE
| DNS_Domain_Name: Archetype
| DNS_Computer_Name: Archetype
|_ Product_Version: 10.0.17763
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2020-12-11T01:56:37
|_Not valid after: 2050-12-11T01:56:37
|_ssl-date: 2020-12-18T15:44:28+00:00; +1h19m17s from scanner time.
3389/tcp open ms-wbt-server Microsoft Terminal Services
| rdp-ntlm-info:
| Target_Name: ARCHETYPE
| NetBIOS_Domain_Name: ARCHETYPE
| NetBIOS_Computer_Name: ARCHETYPE
| DNS_Domain_Name: Archetype
| DNS_Computer_Name: Archetype
| Product_Version: 10.0.17763
|_ System_Time: 2020-12-18T15:44:16+00:00
| ssl-cert: Subject: commonName=Archetype
| Not valid before: 2020-11-22T22:00:23
|_Not valid after: 2021-05-24T22:00:23
|_ssl-date: 2020-12-18T15:44:28+00:00; +1h19m17s from scanner time.
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 2h27m51s, deviation: 3h01m25s, median: 1h19m16s
| ms-sql-info:
| 10.10.10.27:1433:
| Version:
| name: Microsoft SQL Server 2017 RTM
| number: 14.00.1000.00
| Product: Microsoft SQL Server 2017
| Service pack level: RTM
| Post-SP patches applied: false
|_ TCP port: 1433
| smb-os-discovery:
| OS: Windows Server 2019 Standard 17763 (Windows Server 2019 Standard 6.3)
| Computer name: Archetype
| NetBIOS computer name: ARCHETYPE\x00
| Workgroup: WORKGROUP\x00
|_ System time: 2020-12-18T07:44:16-08:00
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2020-12-18T15:44:19
|_ start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 39.94 seconds

公式と私式のnampコマンドを比較してみた結果

基本的には同じように見えるのですが、difffの文章比較機能を使って比較してみたところ、
私のコマンドでは以下の部分のデータが表示されていませんでした!

5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
26008/tcp closed unknown
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49668/tcp open msrpc Microsoft Windows RPC
49669/tcp open msrpc Microsoft Windows RPC
56144/tcp closed unknown

このデータが結果的に大事だったかというとあまり関係ありませんでしたが、
5985や47001はMicrosoft HTTPAPI httpd 2.0が使っていたり、
49664以降はMicrosoft Windows RPCが使っていたり、色々と詳しい情報ですね。
例えば、Windows RPCは何十年も前から脆弱性が指摘されています。

コマンドの違いとしてはHack the boxの公式では-p$portsとしており、私は-Pnとしていました。
この違いがここの結果につながった理由は正直今の所理解できていません。

通常ポートスキャンをすると言っても、各IPアドレスのポートを1つ1つスキャンするのは通常は無駄なことが多く、
すべてのポートに対してスキャンをかけることはしません。

今回はハッキングが目的ですからスキャンして「くまなく穴を見つける」ことが目的です。
するとホスト検出をスキップしてすべてのポートに対して実行するコマンドですから、
-Pnを用いることは適切なように思ったのです。

結果的に解決には直接関係のあるコマンドではありませんでしたが、
一番最初の一手となるポートスキャンでポート一つ見落とすのはもったいないです。

オリジナリティも入れていきたいですが、まずは基本的に公式のものを見に付けたほうが良いかもしれません。
まだまだ力量不足ですね。精進します。