0x0 目的
由于二层扫描的局限性-无法路由,因此通过三层扫描进行其他网段设备发现
局限性 --> 容易被边界设备过滤
0x1 协议
IP ICMP
ICMP协议的数据存放在IP包的数据部分,通过IP报头中protocol字段指明数据交给ICMP协议来处理,由于ICMP协议用于辅助IP协议因此也被定义为三层协议,下图为ICMP包
0x2 工具
ping、hping3、scapy、namp、fping
0x3 shell
编写shell,通过ping进行探索
#! /bin/bash
subnet=`echo $1 | cut -d "." -f 4 --complement`
for host in `seq 1 254`
do
#echo $subnet.$host
ping $subnet.$host -c 1 -w 1 | grep "bytes from" | awk '{print $4}' | awk -F ':' '{print $1}'
done
0x4 python
通过scapy模块进行探索
#! /usr/bin/python
import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
if len(sys.argv) != 2:
print "usage 192.168.1.1 24subnet"
sys.exit()
ip=sys.argv[1].split(".")
ip[3]=""
subnet=".".join(ip)
#ip.split(".")[]
for host in range(1,255):
answer=sr1(IP(dst=subnet+str(host))/ICMP(),timeout=1,verbose=0)
if answer != None:
print subnet+str(host)
0x5 关于本网段扫描
使用python脚本扫描了本网段,下面为抓包
scapy模块内网探测过程
发送ARP请求获取目标IP的MAC地址 -->有回应通过指定MAC发送ICMP,没有回应通过广播地址发送ICMP
如果ARP请求获取到了目标的MAC地址,但是目标禁止了ICMP,这样会认为目标不存活,因此同一网段建议通过ARP进行探测。
不同的工具实现过程可能会有差异,可以通过抓包进行分析