**
三层扫描:
**
工作协议:ip/icmp icpm叫Internet控制管理协议,他的作用是做路径的发现,主机网络通断情况的诊断。用此协议来探测反映目标主机的状态。
优点:可以跨路由器。速度比较快但是比二层慢,可以发现所有活着的主机,前提是目标主机接受所发送的协议,会根据所发的协议会返回一个响应数据包。
缺点:防火墙会过滤掉icmp协议。
二层、三层扫描都会被目标主机的过滤机制所过滤,以至于给我们错误的信息。
ping命令:
使用的是icmp其中的两种类型的数据包,icmp协议根据type字段(有十五种类型)判断包的类型。我们发送的ping包是第八号,接受的机器返回响应的包是type0数据包。
路由追踪:
不但可以发现目标机器,而且可以发现从我的机器到目标机器中间过了多少路由。
root@kali:~# traceroute www.baidu.com //本机到百度服务器经过了多少兆的服务器。
每一个序号表示经过了多少路由器。
从第二眺为什么没有反应?说明他收到本机发的数据包的时候没有响应。
在ip包头中有一个ttl值,每次经过一跳路由就减1.
也可以用ping -R追踪路由。
root@kali:~# ping -R www.taobao.com
使用scape:
先定义IP包头,在定义icmp,把两者组合起来形成icmp的ping包。
>>> i=IP()
>>> p=ICMP()
>>> ping=(i/p)
>>> ping.display()
>###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= icmp
chksum= None
src= 127.0.0.1
dst= 127.0.0.1
\options\
###[ ICMP ]###
type= echo-request
code= 0
chksum= None
id= 0x0
seq= 0x0
>>> ping[IP].dst="192.168.19.131"
>>> ping.display()
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= icmp
chksum= None
src= 192.168.19.129
dst= 192.168.19.131
\options\
###[ ICMP ]###
type= echo-request
code= 0
chksum= None
id= 0x0
seq= 0x0
a=sr1(ping)
>>> a.display()
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len= 28
id= 17760
flags=
frag= 0L
ttl= 64 //真实的ttl值,因为两台机器在同一个网段里面,不需要过路由。
proto= icmp
chksum= 0x8d2c
src= 192.168.19.131
dst= 192.168.19.129
\options\
###[ ICMP ]###
type= echo-reply
code= 0
chksum= 0xffff
id= 0x0
seq= 0x0
###[ Padding ]###
load= '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> b=sr1(IP(dst="192.168.19.131")/ICMP())
Begin emission:
.Finished to send 1 packets.
*
Received 2 packets, got 1 answers, remaining 0 packets
>>> b.display()
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len= 28
id= 13407
flags=
frag= 0L
ttl= 64
proto= icmp
chksum= 0x9e2d
src= 192.168.19.131
dst= 192.168.19.129
\options\
###[ ICMP ]###
type= echo-reply
code= 0
chksum= 0xffff
id= 0x0
seq= 0x0
###[ Padding ]###
load= '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> sr1(IP(dst="192.168.19.130")/ICMP(),timeout=1) //timeout如果目标ip不存在,1毫秒之后无应答将停止发包。
Begin emission:
WARNING: Mac address to reach destination not found. Using broadcast.
Finished to send 1 packets.
..
Received 2 packets, got 0 answers, remaining 1 packets
>>>
nmap三层发现:
root@kali:~# nmap -sn 192.168.19.131 //发arp,进行对ping的IP地址dns反向查询,能解析出相应的域名。
root@kali:~# nmap -sn 211.144.154.1 //如果我们ping一个不在同一个网段的ip,同样的命令会发ip/icmp。
fping
ping 命令本身不支持对一段ip地址扫描。
fping通过-g参数执行ip起始段。
root@kali:~# fping -g 192.168.100 192.168.200 -c 1 //-c每一个ip地址发一个ping包
fping -f 1.txt //要扫描的IP放到1.txt中
Hping
Hping命令,几乎发送任意的tic/ip包头,但是只能扫描一个目标。
root@kali:~# hping3 192.168.19.131 --icmp -c 2
HPING 192.168.19.131 (eth0 192.168.19.131): icmp mode set, 28 headers + 0 data bytes
len=46 ip=192.168.19.131 ttl=64 id=45086 icmp_seq=0 rtt=0.5 ms
len=46 ip=192.168.19.131 ttl=64 id=45104 icmp_seq=1 rtt=0.3 ms
--- 192.168.19.131 hping statistic ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.3/0.4/0.5 ms