前言,這本書比我想象中的簡單,但是一天就看了三百多頁,因爲真的沒有什麼很精彩的內容,所以前面四章就總結成這一篇的內容了,再者,真的一個nmap幾乎秒了其他所有工具,所以直接介紹nmap,netcat就是附帶了。
1.主機存活掃描
2.端口掃描
3.指紋識別
主要工具:Nmap
首先介紹萬能的nmap基本參數。
用法:nmap的[掃描類型(S)] [選項] {目標說明}
主機發現:
-SL:列表掃描 - 簡單列表的目標進行掃描
-sn:ping掃描 - 禁用端口掃描
-pn:把所有主機在線 - 跳過主機發現
-PS / PA / PU / PY [portlist]:TCP SYN / ACK,UDP或SCTP發現給定的端口
-PE / PP / PM:ICMP回聲,時間戳和網絡掩碼請求,發現探頭
-PO [協議列表]:IP協議Ping
-n / -R:決不做DNS解析/始終解析[默認:有時]
--dns-服務器<SERV1 [,serv2上],...>:指定自定義DNS服務器
--system-DNS:使用操作系統的DNS解析器
--traceroute:跟蹤跳路徑每個主機
SCAN方法:
-sS / ST / SA / SW / SM:TCP SYN /TCP全連接()/ ACK /窗/邁蒙掃描
-sU:UDP掃描
-sN / SF / SX:TCP空,FIN,以及Xmas掃描
--scanflags <標誌>:自定義TCP掃描標誌
-si <殭屍主機[:probeport]>:空閒掃描
-sy / SZ:SCTP INIT / COOKIE-ECHO掃描
-so:IP協議掃描
-b <FTP中繼主機>:FTP反彈掃描
端口規範和掃描順序:
-p <端口範圍>:僅掃描指定的端口
例如:-p22; -p1-65535; -p U:53111137,電話:21-25,80,139,8080,S:9
-F:快速模式 - 掃描比默認的掃描較少的端口
-r:連續掃描端口 - 不隨機
--top-端口<編號>:掃描<編號>最常見的端口
--port比率<比率>:端口掃描比更常見的<比率>
服務/版本檢測:
-sV:探索開放的端口,確定服務/版本信息
--version強度<級別>:設定從0(亮)到9(嘗試所有探頭)
--version光:限制爲最有可能的探頭(強度2)
--version全:嘗試每一個探頭(強度9)
--version追蹤:顯示詳細的版本掃描活動(調試)
SCRIPT SCAN:
-sC:相當於--script =默認
--script = <Lua腳本>:<Lua腳本>是一個逗號分隔列表
目錄,腳本文件或腳本類別
--script-的參數 = <N1 = V1,[N2 = V2,...]>:提供參數的腳本
--script-ARGS文件=文件名:在文件中提供NSE腳本的args
--script追蹤:顯示發送和接收的所有數據
--script-數據庫更新:更新腳本數據庫。
--script-HELP = <Lua腳本>:關於腳本顯示幫助。
<Lua腳本>是一個逗號分隔的腳本文件或列表
腳本類別。
OS檢測:
-O:啓用操作系統檢測
--osscan限制:限制OS檢測到有希望的目標
--osscan猜測:猜猜OS更積極
時序和性能:
選擇內搭<時間>是在幾秒鐘內,或追加'MS'(毫秒)
的“(秒),”M“(分),或'H'(小時)的值(例如,30分鐘)。
-T <0-5>:設置時序模板(更高更快)
--min-主機組/ MAX-主機組<大小>:並行主機掃描組大小
--min,並行/ MAX-並行<numprobes>:並行的探討
--min-RTT超時/ MAX-RTT超時/初始RTT超時<時間>:指定
探索往返時間。
--max-重試<嘗試>:大寫的端口掃描探測重發數。
--host超時<時間>:在此之後漫長放棄目標
--scan延遲/ - 最大掃描延遲<時間>:調整探頭之間的延遲
--min率<編號>:發送數據包沒有<編號>每秒慢
--max率<編號>:每秒速度不發送數據包比<編號>
防火牆/ IDS躲避和欺騙:
-f; --mtu <值>:分片報文(可選擇的w /給出MTU)
-D <decoy1,decoy2 [,ME],...>:披風帶有誘餌掃描
-S <IP地址>:欺騙源地址
-e <IFACE>:使用指定接口
-g / - 源端口<端口編號>:使用特定端口號
--proxies <URL1,[URL2] ...>:通過HTTP連接繼電器/ SOCKS4代理
--data長度<編號>:追加隨機數據發送的數據包
--IP-選項<選項>:指定IP選項的包發送
--ttl <值>:設置IP時間到現場直播
--spoof-MAC <MAC地址/前綴/供應商名稱>:欺騙你的MAC地址
--badsum:用一個假的TCP / UDP / SCTP校驗和發送的數據包
輸出:
-on / -oX / -Os / -oG <文件>:正常,XML輸出掃描,S | <RIPT kIddi3,
和的grepable格式,分別以給定文件名。
-oA <基本名>:輸出三大格式一次
-v:增加冗餘級別(使用-vv或更多更好的效果)
-d:提高調試級別(使用-dd或更多更好的效果)
--reason:顯示端口處於特定狀態的原因
--open:只顯示打開(或可能打開)端口
--packet追蹤:顯示發送和接收的所有數據包
--iflist:打印主機接口和路線(調試)
--log-錯誤:記錄錯誤/警告正常格式輸出文件
--append輸出:追加到而不是撞指定輸出文件
--resume <文件名>:恢復中止掃描
--stylesheet <路徑/ URL>:XSL樣式表來轉換XML輸出至HTML
--webxml:從Nmap.Org參考樣式表更便攜XML
--no-樣式表:防止關聯的XSL樣式表W / XML輸出
MISC:
-6:啓用IPv6的掃描
-A:啓用操作系統檢測,檢測版本,腳本掃描,和traceroute
--datadir <目錄>:指定自定義的Nmap數據文件位置
--send-ETH / - 發送-IP:發送使用原始的以太網幀或IP數據包
--privileged:假設該用戶是完全特權
--unprivileged:假設用戶缺乏原始套接字權限
-V:打印版本號
-h:打印此幫助摘要頁面。
示例:
NMAP -v -A scanme.nmap.org
NMAP -v -sn 192.168.0.0/16 10.0.0.0/8
NMAP -v -ir 10000 -Pn -p 80
一:主機存活
首先確定主機存活,最簡單的當然就是ping了,但是由於防火牆或者其他過濾機制就不能簡單的通過ping來確定主機的存活了,也就有了各種方法,各種工具。
而怎樣確定主機是否存活也就基於上面這個OSI七層模型了,書中主要也就是針對234層掃描,一到七層協議依次是,物理層,數據鏈路層,網絡層,傳輸層,回話層,表示層,應用層,像對應的意思是,硬件(電子器件),物理地址(如MAC地址,存在ARP等協議),邏輯IP地址(IPv4,IPv6等),服務端的傳輸協議(TCP,UDP),在上面就不是很重要了,反正書中也沒怎麼提。
再就是每層的優缺點了。
第2層發現用ARP的缺點如下:
優點:
非常快
高度可靠
缺點:
無法找到遠程系統(非路由協議)
第3層的發現與ICMP的缺點如下:
優點:
可以發現遠程系統(路由協議)
還是比較快
缺點:
比ARP發現慢
通常是由防火牆過濾
第4層的發現與TCP的缺點如下:
優點:
可以發現遠程系統(路由協議)
更可靠的比ICMP(過濾器是不太常見的或有選擇地實施)
缺點:
狀態防火牆的過濾器可產生不可靠的結果
徹底的發現可能耗時
Arp發現最簡單的命令當然就是arp了。
root@End:~# arp
Address HWtype HWaddress Flags Mask Iface
192.168.148.254 ether 00:50:56:fb:89:70 C eth0
192.168.148.1 ether 00:50:56:c0:00:08 C eth0
192.168.148.2 ether 00:50:56:ef:21:57 C eth0
然後就是nmap 。
root@KaliLinux:~# nmap 172.16.36.136 –sn
root@KaliLinux:~# nmap 172.16.36.0-255 –sn
root@KaliLinux:~# nmap -iL iplist.txt –sn
-sn:ping掃描 - 禁用端口掃描,如果在局域網,你會發現被掃的主機還會返回目標主機的mac地址。
-iL<輸入的文件>:從輸入的主機/網絡的列表,你可以等個***在arp一下就有複製很多IP地址讓你掃着玩了。
而UDP,TCP四層協議掃描,其中TCP三次握手得說明一下,TCP三次握手的意思就是主機A通過TCP協議連接主機B,先發個SYN包給B,B收到後返回個ACK包,A響應後再回個ACK包建立連接,也就可以完全的相互通信了,所以nmap有個很有意思的參數就是sS,意思是在主機B響應發的SYN包後不發起第三次握手,那麼TCP三次握手就不會完成就不是完整的TCP連接,那麼就不會被主機B記錄,也就是比較安全的掃描方式。
root@KaliLinux:~# nmap 172.16.36.135 -PU53 –sn
root@KaliLinux:~# nmap -iL iplist.txt -sn -PU53
-PU表示使用UDP協議,-PU53當然就是掃描UDP53端口了。
nmap 172.16.36.135 -PA80 –sn
-PA ACK模式,如最前面的nmap參數,nmap有很多的掃描方式
-sN / SF / SX
-sS / ST / SA / SW / SM
筆者常用-sS –sF –sA 如果你發現某種掃描技術不能很好的出結果就換着來吧,總能把要被掃的主機掃出來
二:端口掃描
root@KaliLinux:~# nmap 172.16.36.0-255 -sU -p 53
-sU UDP掃描,其實應用於UDP的服務不多,多數都是TCP。
root@KaliLinux:~# nmap -iL iplist.txt -sU -p 123
root@KaliLinux:~# nmap -sS 172.16.36.135 -p 80
root@KaliLinux:~# nmap -sS 172.16.36.135 -p 21,80,443
Starting Nmap 6.25 ( http://nmap.org ) at 2013-12-17 21:46 EST
Nmap scan report for 172.16.36.135
Host is up (0.00038s latency).
Not shown: 977 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
root@KaliLinux:~# nmap -sS 172.16.36.135 -p 0-65535
系統一共有65535個可用端口,如果你想更仔細的發現一些端口的話可以把端口範圍設置爲0到65535,這樣可能會發現有意思的服務。
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
6697/tcp open unknown
8009/tcp open ajp13
root@KaliLinux:~# nmap -sS -iL iplist.txt -p 80
-sS 半開放式掃描,在前面有提過,因爲不會響應第三次TCP握手,所以不會被目標主機記錄,比較安全,因爲有些目標主機可能會根據***者的一些掃描方式而觸動一些防火牆規則而IP被列入黑名單,所以sS的掃描方式就要安全的多了。
三:指紋識別
指紋識別當然就是爲了識別特點端口運行的服務及其版本,大多數服務會自己的標識,在你連接後就會在響應包裏包含,其中的一些細節當然不用我們操心,交給nmap就夠了。
這裏有個小工具短小精悍netcat。
-c shell命令爲`-e';使用/ bin / sh的,以執行[危險!!]
-e文件名程序Exec之後連接[危險!]
-b允許廣播
-g網關源路由跳點[S],多達8個
-G NUM源路由指針:4,8,12,...
-h這個克魯夫特
找來線-i秒延遲間隔,端口掃描
-k套接字設置keepalive選項
-l監聽模式,用於入站所連接
-n純數字IP地址,DNS不
交通-o文件的十六進制轉儲
-p port本地端口號
-r隨機本地和遠程端口
EOF後退出的標準輸入和秒的延遲-q秒
-s地址本地源地址
-T TOS設置服務類型
-t回答TELNET協商
-u UDP模式
-v詳細[使用兩次,更詳細]
-w秒超時連接和最終淨讀取
-z零I / O模式[用於掃描
用於識別某個服務可以使用如下命令
root@End:~# netcat -vn 172.16.36.135 22
SSH-2.0-OpenSSH_4.3
root@End:~# netcat –vn 172.16.36.135 3306
4
5.0.77C
)X]MH_(Fi]tQy,md,Ks'
root@End:~# netcat –vn 172.16.36.135 21
220 ProFTPD 1.3.2e Server (ProFTPD)
返回結果極其的快,你甚至可以用一個腳本去執行一些你想要的結果如:
root@End:~# for x in $(seq 1 100);do nc -nvz 64.6.255.13 $x ;done
而nmap當然就更簡單了
root@KaliLinux:~# nmap -sT 172.16.36.135 -p 22 --script=banner
root@KaliLinux:~# nmap -sV 172.16.36.135
root@KaliLinux:~# nmap -sT 172.16.36.135 –O
-O 用於識別目標機器系統。
-sV 用於識別已開放端口的服務及其版本。
總結而言,本書前面一大部分就是在扯淡,會用nmap基本就夠了,所以其他工具就不寫了,寫了也是濫竽充數。
而掃描的重點在於先確定主機是否存活或者找出其ip地址甚至mac地址,在這個基礎上在確定所開的服務,比如ftp,ssh,vnc,MySQL之類大家比較關心的服務,在此基礎上就得想到底是什麼版本有沒有漏洞,如果有的話最好沒有的話可能就只能暴力破解或者通過社工去解決了。