狀态識别
在滲透測試的過程中,必須確定目标主機線上,否則我們無法通路到它。
ping
常用檢測主機是否線上的程式。ICMP協定,
echo request
->
echo reply
-c count
指定發送
echo request
資料包總量。
root@kali:~# ping -c 5 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=128 time=1.95 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=128 time=2.30 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=128 time=3.55 ms
64 bytes from 192.168.1.1: icmp_seq=4 ttl=128 time=2.02 ms
64 bytes from 192.168.1.1: icmp_seq=5 ttl=128 time=2.60 ms
--- 192.168.1.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4017ms
rtt min/avg/max/mdev = 1.959/2.488/3.552/0.581
-s packet size
每個資料包的大小。預設值56,加 ICMP 標頭8位元組共64位元組。
root@kali:~# ping -s 8 192.168.1.1 -c 1
PING 192.168.1.1 (192.168.1.1) 8(36) bytes of data.
16 bytes from 192.168.1.1: icmp_seq=1 ttl=128
--- 192.168.1.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
arping
區域網路中使用ARP請求判斷主機是否線上。
root@kali:~# arping 192.168.43.130 -c 2
ARPING 192.168.43.130
60 bytes from 00:0c:29:fa:dd:2a (192.168.43.130): index=0 time=193.037 usec
60 bytes from 00:0c:29:fa:dd:2a (192.168.43.130): index=1 time=389.499 usec
--- 192.168.43.130 statistics ---
2 packets transmitted, 2 packets received, 0% unanswered (0 extra)
rtt min/avg/max/std-dev = 0.193/0.291/0.389/0.098
因為是在區域網路中的判斷,是以我們也可以用它來檢測某一個IP是否已經被被人所占用,如果沒有被占用的話……[斜眼笑]
fping
可同時向多個主機發送
ping
請求。
root@kali:~# fping 192.168.1.1 192.168.1.2
192.168.1.1 is alive
192.168.1.2 is
或者對某一個網段進行檢測
root@kali:~# fping -g 192.168.1.0/24
192.168.1.1 is alive
192.168.1.103 is alive
ICMP Host Unreachable from 192.168.1.109 for ICMP Echo sent to 192.168.1.92
192.168.1.2 is unreachable
192.168.1.3 is unreachable
...
如果我們不添加任何條件的時候,在進行網段檢測時,
0-255
會被重試三次,然後便會輸出好長好長的一段資訊。
通過
-r count
參數可以指定
fping
探測的重試次數。
nping
允許使用者發送多種協定的資料包。(TCP、UDP、ICMP、ARP)
EXAMPLES:
nping scanme.nmap.org
nping --tcp -p 80 --flags rst --ttl 2 192.168.1.1
nping --icmp --icmp-type time --delay 500ms 192.168.254.254
nping --echo-server "public" -e wlan0 -vvv
nping --echo-client "public" echo.nmap.org --tcp -p1-1024 --flags ack
例如使用TCP協定對
192.168.1.1
的22端口進行測試
root@kali:~# nping --tcp -p 22 192.168.1.1
Starting Nping 0.7.25BETA1 ( https://nmap.org/nping ) at 2017-02-10 16:24 CST
SENT (0.0284s) TCP 192.168.43.128:23660 > 192.168.1.1:22 S ttl=64 id=20665 iplen=40 seq=1842129984 win=1480
SENT (1.0294s) TCP 192.168.43.128:23660 > 192.168.1.1:22 S ttl=64 id=20665 iplen=40 seq=1842129984 win=1480
^C
Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Raw packets sent: 2 (80B) | Rcvd: 0 (0B) | Lost: 2 (100.00%)
Nping done: 1 IP address pinged in 1.64
作業系統識别
确定目标主機線上以後,我們需要判斷它使用哪種作業系統。
識别作業系統的方式有兩種:主動式與被動式。
主動式:向目标主機發送資料包,并根據其響應判斷其作業系統。優點:速度快。缺點:容易被發現。
被動式:通過網絡嗅探的方式收集流經網絡的資料封包,然後從這些封包中分析并得出作業系統資訊。優點:不容易被發現。缺點:速度慢。
p0f
采用被動的方式探測目标主機的作業系統類型,可識别以下幾種主機:
- 連接配接到你的主機的機器(SYN)
- 你可以通路的機器(SYN+ACK)
- 不能通路的機器(RST)
- 其他網絡通信的機器
啟動
p0f
然後與目标主機建立TCP連接配接,若成功識别目标主機的作業系統,則會在螢幕輸出相應的資訊。
Nmap
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33