前言
三层发现理论上可以发现世界上所有活着的主机
优点:可路由、速度较快
缺点:速度比二层慢、经常被防火墙过滤
主要用IP协议、icmp协议
工具有:ping、fping、hping、scapy、nmap
1、三层发现——ping
指令
ping 1.1.1.1 -c 2
ping -R 1.1.1.1 #-R实现路由追踪,不一定能正常使用
traceroute 1.1.1.1 #traceroute实现路由追踪
ping 1.1.1.1 -c 1 | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1
脚本
ping.sh
#!/bin/bash
if["$#" -ne 1] then #脚本执行时后面参数不为1
echo "Example ./ping.sh 1.1.1.1"
exit
fi
prefix=$(echo $1 | cut -d "." -f 1-3) #取指定IP的前三部分
for addr in $(seq 1 254):do
ping -c 1 $prefix.$addr | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1
done
执行
chmod u+x ping
./ping.sh 211.144.145.0
2、三层发现——scapy
OSI多层堆叠手工声称ICMP包——IP/ICMP
指令
i=IP()
p=ICMP()
ping=(i/p) #定义一个ping包
ping.display() #查看内容
ping[IP].dst = "192.168.1.132" #赋值
a=sr1(ping) #发送ping包
a.display() #查看返回包
脚本
pinger1.py
#!/usr/bin/python
import logging #导入日志
import subprocess #系统指令
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
form scapy.all import *
if len(sys.argv) != 2: #命令后面如果没跟参数
print("Example : ./pinger1.py 1.1.1.1")
sys.exit
address = str(sys.argv[1])
prefix = address.split('.')[0] +"." + address.split('.')[1]+"." + address.split('.')[2] + "."
for addr in range(0,254):
answer = sr1(IP(dst=prefix+str(addr))/ICMP(),timeout=0.1,verbose=0) #verbose=0指错误不显示
if answer == None:
pass
else:
print(prefix + str(addr))
pinger2.py
#!/usr/bin/python
import logging #导入日志
import subprocess #系统指令
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
form scapy.all import *
if len(sys.argv) != 2: #命令后面如果没跟参数
print("Example : ./pinger2.py 1.1.1.1")
sys.exit
filename = str(sys.argv[1])
file = open(filename,'r')
for addr in file:
answer = sr1(IP(dst=addr.strip())/ICMP(),timeout=0.1,verbose=0)
if answer == None:
pass
else:
print(addr.strip())
3、三层发现——nmap
与二层发现相同
nmap 1.1.1.1-254 -sn #-sn就只做ping扫描不做端口扫描,nmap可以指定IP段
nmap -iL iplist.txt -sn #-iL调用iplist,扫描里面记录的IP
4、三层发现——fping
比ping多响应时间、丢包率等
且可以对IP地址段使用
fping 1.1.1.1 -c 1
fping -g 192.168.1.100 192.168.1.200 -c 1 #对IP段扫描
fping -g 192.168.1.100 192.168.1.200 -c 1 | grep min/avg/max
5、三层发现——hping
能够发送几乎所有TCP/IP包
每次只扫描一个目标
hping3 1.1.1.1 -icmp -c 2
脚本
for addr in $(seq 1 254):do hping3 1.1.1.$addr -icmp -c 1 >> handle.txt & done
结语
三层发现主要在于可路由
但容易被防火墙过滤
下一节是四层发现