网络扫描知识
网络扫描
二层arp
只能在同一局域网内扫描
arping 1.1.1.1 -c 次数 -d 设置指定mac
nmap 192.168.0.1 -sn 同一网络里使用arp协议解析
netdiscover -i eth0 -r 192.168.1.0/24 主动扫描网段
netdiscover -p 被动监听
三层发现
traceroute 显示路径
hping 可用于自定义ip icmp包
四层发现
优点
- 可路由且结果可靠
- 不太可能被防火墙过滤
- 甚至能发现所有端口都被过滤的主机
缺点
- 基于状态过滤的防火墙能过滤扫描
- 全端口扫描速度慢
tcp扫描时的几种情况:
- 收到未经请求的ACK时返回RST
- 未建立连接直接发syn包,返回syn/ack或rst
udp端口未开放时收到udp包返回“端口不可达”icmp包;若端口打开、包的内容错误,不返回包
nmap -sU udp扫描
tcp扫描
syn扫描
只完成三次握手的前两步,不进行第三步。这样目标不会留下tcp连接建立记录。
nmap -PS 1.1.1.1
hping3 192.168.1.1 --scan 0-65535 -S -S表示syn扫描
这种扫描可能被防火墙过滤,可以使用全连接方式
全连接扫描
# scapy
a=sr1( IP(dst="192.168.1.123") / TCP(flag="S"), timeout=1, verbose=0 )
a=sr1( IP(dst="192.168.1.123") / TCP(flag="S", dport=22), timeout=1 )
在工具发出一个syn后目标返回一个syn/ack,操作系统看来是自己没发出syn收到了了syn/ack,系统会发出rst包,有些情况需要将其屏蔽
可用防火墙拦截rst, iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.1.tatget -j DROP
resp = sr1( IP(dst="192.168.1.116" / TCP(dport=80, flag="S" )
reply = sr1( IP(dst="192.168.1.116") / TCP(dprot=80, flag="A", ack=(resp[TCP],seq + 1)) )
僵尸扫描
极其隐蔽,但条件苛刻:
- 要能伪造ip地址(现在的边界防火墙都加入了防伪造ip功能);
- 必须有僵尸机:僵尸机的ipid递增(现在机器多为随机生成),闲置不会收到其他包。
流程:
- scanner --syn/ack--> zombie : 得到zombie的ipid为x
- scanner(ip.src=zombie) --syn--> target
- target --rst--> zombie 或 target --syn/ack--> zombie
- zombie无反应ipid不变 或 zombie --rst--> target : zombie的ipid加1
- scanner --syn/ack--> zombie
- zombie --rst--> scanner ipid=x+1 或ipid=x+2
- 期间zombie不能有其他网络活动,且ipid递增
import scapy
rz = ( IP(dst=ipz) / TCP(dport=445, flag="SA") ) # 发给zombie的
rt = ( IP(src=ipz, dst=ipt) / TCP(dport=22, flag="S") ) # 发给target的
az = sr1(rz) # 发给zombie得到ipid
at = st1(rt) # 发给target,使target给zombie发rst或syn/ack包
az2 = sr1(rz) # 再发给zombie得到ipid
比较az与az2之间ipid的差值为1还是2
nmap -p445 1.1.1.1 --script=ipidseq.nse 用自带的脚本检测僵尸是否ipid序列增长
nmap 192.168.1.50 -sI 192.168.1.60 -Pn -p 1-100 sI 指定僵尸
banner识别
nc -nv 192.168.1.1 # 直接连接获得ip
dmitry -pb ip # 用于服务识别
amap -B 192.168.1.1
nmap -sT ip地址 -p 22 --script=banner # 使用用于banner识别的lua脚本
nmap -sV ip地址 -p 22 # 服务识别
操作系统识别
windows域linux ttl初始值不同,默认开放端口不同
ttl初始值:
windows 128(65 - 128)
linux 64(1 - 64)
namp ip地址 -O # 操作系统识别
xprobe2 ip地址
p0f 在网络内arp欺骗抓包,再被动识别系统
snmp 扫描
smb服务
windows默认开放,用于共享
-
nmap 192.168.56.1-20 -v -p 139,445 # 根据开放端口确定服务与系统,不可靠
-
nmap 192.168.56.3 -p 139,445 --script=smb-os-discovery.nse
-
nmap 192.168.56.101 -v -p 139,445 --script=smb-check-vulns --script-args=unsaft=1
-
nbtscan -r 192.168.56.23/24
-
enum4linux -a 192.168.56.10
nmap smtp.163.com -p25 --script=smtp-enum-user.nse
[ --script-args=smtp-enum-user.methods={VRFY}]
防火墙
根据返回包判断防火墙状态
其他
ldb 用于检测负载均衡的工具
wafwoof 检测waf