一開始試了命令
$ nmap -A 192.168.1.88
等了大半天,終於出來結果(手工局部加碼):
Starting Nmap 5.21 ( http://nmap.org ) at 2011-12-03 14:49 CST
Nmap scan report for 192.168.1.88
Host is up (0.019s latency).
Not shown: 991 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS webserver 5.1
|_html-title:
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
443/tcp open https?
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
873/tcp open rsync?
1025/tcp open msrpc Microsoft Windows RPC
2869/tcp open http Microsoft HTTPAPI httpd 1.0 (SSDP/UPnP)
|_html-title: Site doesn't have a title (text/html).
3389/tcp open microsoft-rdp Microsoft Terminal Service
Service Info: OS: Windows
Host script results:
|_nbstat: NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
|_smbv2-enabled: Server doesn't support SMBv2 protocol
| smb-os-discovery:
| OS: Windows XP (Windows 2000 LAN Manager)
| Name: USER\L
|_ System time: 2011-12-03 14:54:05 UTC+8
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 133.46 seconds
可以看到,前面列出了這臺電腦的可用端口,後面有一行
|_nbstat: NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
NetBIOS name: L說明這臺電腦的主機名是L,我的要求實現了,但是存在一個缺點,速度太慢,可以看到,時間花了133秒才掃描出來,找一個主機名根本不需要這麼久,大部分的時間都浪費在前面掃描端口上了
爲了提高速度,我開始RTFM,發現man實在太長,沒心情看完,又開始Google,找到了不少資料,我覺得有用的有: 這裏 & 這篇man的中文翻譯
看了這些資料,我對nmap的功能倒是瞭解的不少,但是可惜的是,我需要的功能(解析IP對應的主機)還是找不到答案,還是隻有-A參數能滿足要求。
回頭看看前面的提示,我注意到了這麼一段
Host script results:
|_nbstat: NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
|_smbv2-enabled: Server doesn't support SMBv2 protocol
| smb-os-discovery:
| OS: Windows XP (Windows 2000 LAN Manager)
| Name: USER\L
|_ System time: 2011-12-03 14:54:05 UTC+8
第一句:Host script results,這說明了下面的內容,不是nmap本身輸出的,而是一個script輸出的,所以理所當然的,nmap肯定沒有對應的參數
但是,nmap有一個--script的參數,可以指定執行某個script,這下看到了曙光,執行:
$ nmap --script nbstat 192.168.1.88
結果如下(手工局部加碼):
Starting Nmap 5.21 ( http://nmap.org ) at 2011-12-03 15:08 CST
NSE: Script Scanning completed.
Nmap scan report for 192.168.1.88
Host is up (0.0074s latency).
Not shown: 991 closed ports
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
873/tcp open rsync
1025/tcp open NFS-or-IIS
2869/tcp open unknown
3389/tcp open ms-term-serv
Host script results:
| nbstat:
| NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
| Names
| L<00> Flags: <unique><active>
| USER<00> Flags: <group><active>
| L<20> Flags: <unique><active>
| USER<1e> Flags: <group><active>
| USER<1d> Flags: <unique><active>
|_ \x01\x02__MSBROWSE__\x02<01> Flags: <group><active>
Nmap done: 1 IP address (1 host up) scanned in 2.63 seconds
看時間,2.63秒,這速度很可以了,一般都可以接受,但是,前面在測試nmap命令的時候,已經發現了幾個可以提高速度的辦法,於是再試(爲了節省篇幅,突出重點,下面只列出執行的命令,是否滿足要求已經執行時間):
(這個命令指定掃描80端口,是可以掃,但是無法列出主機名,失敗)
$ nmap -p80 --script nbstat 192.168.1.88
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 1.17 seconds
(然後注意到了上面139端口的服務是netbios-ssn,所以掃一下139端口試試,這下可以滿足要求了,時間也非常快)
$ nmap -p139 --script nbstat 192.168.1.88
139/tcp open netbios-ssn
| NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.11 seconds
(又試掃了一下135,也同樣成功)
$ nmap -p135 --script nbstat 192.168.1.88
135/tcp open msrpc
| NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds
(netBIOS也支持UDP的,所以使用-sU參數進行UDP掃描,同樣可以掃到,但是因爲沒有指定端口,所以耗時較長,另外,-sU參數需要root權限才能執行,可以注意到,137端口的服務是netbios-ns,那麼下面就只掃137)
$ sudo nmap -sU --script nbstat 192.168.1.88
137/udp open netbios-ns
| NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 4.07 seconds
(只掃137的UDP,同樣可以,速度也快)
$ sudo nmap -sU -p137 --script nbstat 192.168.1.88
137/udp open netbios-ns
| NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.32 seconds
(比較下來,還是用TCP掃139合適,速度快,還不需要root,現在再加上其他參數提速,-P0使得nmap不測試指定IP是否存在,直接開始掃,-sT指定只用TCP協議,從結果來看,反而比剛纔慢,但是實際上是不慢的,因爲不連續執行,差個幾十毫秒也是正常,而且nmap可能有一定的緩存時間,第一次用nmap確認一個ip存在後,一段時間內不會再去確認,就和加上-P0參數的效果是一樣的,這裏手動加上-P0,可以確保在任何時候都一樣快)
$ nmap -P0 -sT -p139 --script nbstat 192.168.1.88
139/tcp open netbios-ssn
| NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds
(再加一個參數-T4,我也沒太搞明白這個參數是幹嘛用的,但是在所有nmap命令上加上這個參數後,速度都有一定的提高,所以就加上吧)
$ nmap -P0 -sT -p139 -T4 --script nbstat 192.168.1.88
139/tcp open netbios-ssn
| NetBIOS name: L, NetBIOS user: <unknown>, NetBIOS MAC: **:**:**:**:**:**
Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds
好了,到目前爲止,已經完全滿足要求了,下面再補充一些在解決問題的過程中,學習到的知識
139,135端口
這兩個端口都是netbios協議佔用的,只要windows主機,安裝了NetBIOS協議,或者說只要可以訪問共享文件,那這兩個端口一般是打開的,
139是TCP,135的UDP,具體的作用我懶的去複製,反正就是和共享文件有關,通過這兩個端口,可以查詢共享文件,登錄用戶名,操作系統等信息,
網上也有好多貌似專業的135,139漏洞攻擊方法,實際上大部分都是在危言聳聽,這兩個端口如果設置的不好,確實會有安全漏洞,但是,XP的默認配置應該安全性還是可以的,不可能說只要開放這個端口,計算機就有危險,
那些所謂教程,都是需要很高的權限才能實現,但是如果有這麼高的權限,那隨便怎麼弄,都是可以輕鬆入侵的。就跟你把家裏的鑰匙貼在大門上(還貼個字條說這是我的鑰匙),然後忘記關窗戶一樣,正常的小偷肯定是開門進來而不會去翻窗戶的
nmap的其他參數
-sS 使用半開TCP進行測試,關於半開連接,可以參考有關資料(我大概瞭解,但是寫起來太浪費時間),半開連接的好處是可以避免大部分系統把這個連接記錄到系統日至,這對入侵者當然很重要了,總不能去別人家裏偷東西,還留個手機號碼吧。如果使用這個參數,需要root權限,我估計應該是用raw socket實現的,所以需要root權限 -v 這個參數可以出現多次,表示需要nmap現實更詳細的報告,還是更更詳細的報告,還是更更更詳細的報告 另外,IP的表示方法有很多種,比如 192.168.1.88這種是單個IP, 192.168.1,2.88表示192.168.1.88和192.168.2.88 192.168.1-254.88表示254個IP 192.168.1-2,4-100.2,3,12-15表示很多個IP(-.-!) 192.168.1.0/24是另一種表示方法,和192.168.1.0-255等效,後面的24表示這個IP的前24bit保持不變,後面的8bit遍歷所有可能 192.168.1.0/0 這個將掃描整個網絡,相信沒誰有時間等到掃描完
nmap部分示例
掃描192.168.1和192.168.18這兩個網段哪些IP開着
$ nmap -sP -T4 192.168.1,18.1-254
這裏-sP表示僅進行ping測試,即使主機存在,也不進行端口掃描,這樣可以節省時間