四层发现
可路由且结果可靠
不太可能被防火墙过滤
甚至可以发现所有端口都被过滤的主机
缺点
特别严格的基于状态过滤的防火墙可能过滤扫描
全端口扫描速度慢
TCP
未经请求的ACK-RST
SYN-SYN/ACK、RST
UDP
ICMP端口不可达、一去不复返
Scapy 四层发现
i=IP()
t=TCP()
r=(i/t)
r[IP].dst="192.168.1.1"
r[TCP].flags="A"
a=sr1(r)
r.display()
我没经过三次握手就发了这个ACK的包如果你给我返回reset了就说明你的主机在线。如果没反应就是不在线
也可以使用一行的方式做上面这些动作,为什么要用一行呢?那是因为为了方便后续做脚本
a=sr1(IP(dst="192.168.1.1")/TCP(dport=80,flags="A"), timeout=1)
上面都是TCP主机的发现
UDP主机发现
如果ip存在,我们将无法收到回应
反而:如果ip不存在,我们就会收到ICMP的不可达信息
所以,要注意使用时最好发送到基本不会使用到的端口
u=UDP()
i=IP()
r=(i/u)
r[IP].dst="192.168.1.1"
u.dport= 33333
a=sr1(r)
这种方式其实通常无法满足我们的需求;
实际总是运用多种方式,arping,tcp等等结合在一起使用
**nmap 如果觉得scapy很麻烦的话可以用nmap
三四层扫描领域是无敌的状态使用nmap也可以实现通过scapy通过脚本编写的TCP/UDP的这种四层扫描
nmap就不需要编写这么多代码一个参数一个指令就可以完成**
nmap想实现四层主机发现可以使用
nmap IP地址-254 -PU后面跟上端口 -sn
想调用文本里的IP就用
nmap -iL 文本文件 -PA80(这里的PA80可以根据参数依葫芦画瓢) -sn
nmap IP地址 不仅会实现四层发现也会扫描端口
主机发现的参数
-PS 是SYN协议的发现方式
-PY 是SCT协议的发现方式 使用场景少
-PE ICMP的ping包
-PP 时间戳
-PM 请求IP的netmask
-PO IP协议的ping
如果我发flag0 他给我返回ACK、RST那么hping3就会认为这个IP是活着的
发现技术是发现活着的IP是可以通信的IP不是端口
hping在tcp的发现阶段准确性不是那么高