一、主动信息收集是什么意思?
二、发现阶段--识别网络里活着的主机
1、二层发现:数据链路层,对arp协议抓包,(路由器一般不转发arp协议包)
工具使用--arping
a、桥接网络+修改ip
vi /etc/network/interfaces
dhclient eth0
b、命令使用
arping IP -c 1 #指定测试一个arp包
arping IP -d #发现重复的响应,不同的mac地址具有相同的IP,arp欺骗
arping 192.168.0.1 -c 1 | grep "reply from" | cut -d " " -f 4
ps:-d接截取字段,-f接分段内容
c、脚本
工具使用--nmap
nmap -sn 192.168.0.0/24 主机存活状态扫描(arping1.sh)
nmap -iL addr.txt -sn 调用地址列表
工具使用--Netdiscover
主动:容易差法报警
netdiscover -i eth0 -r 192.168.0.0/24
netdiscover -l addr.txt
被动:混杂模式,默默侦听
ntdicover -p
工具使用--Scapy:作为python库进行调用,用于抓包、分析、修改
apt-get install python-gnuplot
ARP().display()
对应包头结构如下
变量定义、调用、赋值
发包、回包
2、三层发现--探测存活主机
a、ping
ping 192.168.0.1 -c 1 //指定发包数目为1
b、traceroute/ping -R
ps:***边界防护
ps:基于没经一跳TTL值减一,发现路由
ps:ping -R 返回外网口地址,traceroute 返回内网口地址
c、脚本
3、四层发现--通过识别IP是否在线
基于TCP:
a、直接发ack包
b、修改目标端口
ps:只要目标IP存在,就返回一个reset
c、目标IP不存在
ps:无响应包
d、过滤ack包的情况,路由器的功能
ps:重设路由器上不存在的端口
ps:无响应,无法判断主机是否在线,需要通过其他方式判断
ps:一般规律,发ACK,响应reset,判断为在线;不给响应,判断为不在线
ps:flags标签
ps:可写脚本:a=sr1(IP(dst="192.168.0.1")/TCP(dport="80",flags="A"),timeout=1)
e、脚本
基于UDP:
ps:发送udp包,目标IP存活,端口未开放,会返回端口不可达的包;其它情况下一去不复还;基于目标主机返回ICMP不可达判断在线与否
a、IP存在
b、IP不存在
c、脚本
ps:proto=1,为icmp包,收到响应粗略表示活着
基于Nmap
nmap 1.1.1.1-254 -PU53 -sn 基于UDP协议的53端口扫描
nmap 1.1.1.1-254 -PA80 -sn 基于ACK扫描
ps:端口自定义,-sn表示不做端口扫描,只做四层主机发现(ping)
nmap 1.1.1.1-254 基于nmap主机发现+端口扫描
ps:主机发现常用参数
-PS 基于syn包
-PY 基于SCTP协议
-PE 基于ICMP ping包
-PP 基于时间戳
-PM 基于请求目标IP的netmask
-PO 基于IP协议的ping
基于hping3
hping3 --udp 192.168.1.138 -c 1
ps:反回错误信息,判断为存活
脚本--UDP_hping.sh
脚本--TCP_hping.sh
ps:无flags状态,即flag=0,如果目标IP返回ACK+RESET,判断为存活