文章目录
协议攻击
IP源地址欺骗dos攻击
靶机1:Ubuntu 16.04 192.168.100.147
攻击机:kali 2019 192.168.100.100
网络拓扑环境:攻击机和靶机处于同一内网
使用工具:netwox
原理
IP协议在设计时只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证。攻击者则会修改IP协议包头,使其包含一个不同的虚假IP地址,而接收到欺骗数据包的计算机则会向假冒的源地址发回响应包
步骤
-
在ubuntu上开启tcpdump监听
tcpdump –i ens33 tcp port 80 -n –nn
-
在Seed节点上设置防火墙规则
iptables -A INPUT -i ens33 -s 192.168.100.188/32 -j ACCEPT iptables -A INPUT -i ens33 -s 192.168.100.2/32 -j ACCEPT iptables -A INPUT -i ens33 -p all -j DROP
-
查看一下当前防火墙状态
iptables –L
-
在kali上利用netwox进行IP地址欺骗,伪装成192.168.100.188,突破防火墙限制
netwox 52 -E "0:1:2:3:4:5" -I "192.168.100.188" -e "00:0c:29:83:36:d7" -i "192.168.100.147"
-
syn flood是建立在ip源地址欺骗上的攻击。在kali上通过netwox进行syn泛洪攻击
netwox 76 -i 192.168.100.147 -p 80
-
此时ubuntu的80端口收到大量不同地址和端口的syn包,使用netstat查看连接情况, 在防火墙作用下攻击并未成功
netstat -an|grep 80
-
关闭防火墙后,再查看netstat,攻击成功,此时存在大量syn半连接
防御
- IP地址欺骗的防御可在网关或防火墙中进行源IP地址过滤,即禁止源地址非本网段地址的数据包发出,从而从源头屏蔽伪造IP源地址的的数据包
- 也可以采用基于加密算法的技术来进行身份认证,代替基于IP的信任策略
ARP欺骗中间人攻击
靶机1:win7 192.168.100.141
靶机2:Ubuntu 16.04 192.168.100.147
攻击机:kali 2019 192.168.100.100
网络拓扑环境:攻击机和靶机处于同一内网
使用工具:ettercap
原理
ARP欺骗攻击的根源在于ARP协议在设计时认为局域网内部的所有用户都是可信的,当攻击者渗透进入内网后,通过向局域网内节点缓存中注入伪造的IP/MAC映射关系,从而进行欺骗,成为局域网内的中间人节点,即可以监听并进一步篡改数据包
步骤
Win7节点和ubuntu节点之间正常通行时数据包将不会经过Kali节点。攻击节点Kali将通过ARP欺骗成为中间人,从而截获ubuntu和Win7节点之间的数据包,并可对数据包内容进行篡改
-
在ubuntu节点上正常访问win7上的web站点:http://192.168.100.141,并且查看arp缓存表,确认win7 MAC地址的真实性
arp -a
-
在kali上使用ettercap进行中间人欺骗攻击
ettercap -i eth0 -Tq –M arp:remote /192.168.100.141// /192.168.100.147//
依次按键h->o->p
-
开启kali节点ip转发功能,将0改为1
echo 1 > /proc/sys/net/ipv4/ip_forward cat /proc/sys/net/ipv4/ip_forward
-
在ubuntu上查看arp –a,发现win7的mac已经改变,网络上的mac地址都被替换成kali的了
- 在kali上开启wireshark,在ubuntu上继续访问win7的web服务,可以看到ubuntu和win7的MAC地址都被kali替换了
- 在kali中在启用一个窗口监听本地eth0
ettercap -Tq -i eth0
-
在ubuntu里面访问win7,可以在kali里面看到请求和响应信息
-
然后去通过ubuntu登录win7的网站
-
登录成功后返回kali看抓包的信息中包含了登录用户名和密码
防御
- 使用IP-MAC静态绑定来防御arp欺骗,使用arp -s绑定静态mac
ICMP路由重定向攻击和防御
靶机1:Ubuntu 16.04 192.168.100.147
攻击机:kali 2019 192.168.100.100
网络拓扑环境:攻击机和靶机处于同一内网
使用工具:netwox
原理
ICMP路由重定向攻击(ICMPRedirectAttack)是指攻击者伪装成路由器发送虚假的ICMP路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术
步骤
-
确认ubuntu中的路由表
route –C -n(本身使用此命令路由缓存表为空,网络搜索查找原因,Linux内核3.6以后,路由cache被去除了,取而代之的是下一跳缓存)
路由IP均为正常网关地址192.168.100.2
在linux系统中,默认不接受ICMP重定向报文,默认配置值为0
将0设置为1即可再次进行ICMP重定向攻击
-
在Kali节点下,利用Netwox发起ICMP路由重定向攻击
netwox 86 -g 192.168.100.100 -i 192.168.100.2
-
在ubuntu中查看效果
route –C -n(同1,内核3.6之下的或许可以使用此命令查看)
由于无法显示结果,使用ping命令ping百度,查看到提示下一跳地址发生变化
tcpdump -i eth0 icmp -n
ubuntu向外的访问均重定向到了kali节点
-
在Linux系统中,可以禁止接收ICMP路由重定向数据包,重启网络并更改设置
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/ens33/accept_redirects echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects 重启网络:/etc/init.d/networking restart 刷新路由表:ip route flush cache
-
此时再次重复前述攻击步骤,可发现攻击失败
总结
-
在linux系统中,默认不接受ICMP重定向报文的配置就是上面第4步中的值0。重新将0设置为1即可再次进行ICMP重定向攻击。
echo 1 > /proc/sys/net/ipv4/conf/all/accept_redirects echo 1 > /proc/sys/net/ipv4/conf/eth0/accept_redirects echo 1 > /proc/sys/net/ipv4/conf/default/accept_redirects
TCP协议RST攻击
靶机1:win7 192.168.100.141
靶机2:Ubuntu 16.04 192.168.100.147
攻击机:kali 2019 192.168.100.144
网络拓扑环境:攻击机和靶机处于同一内网
使用工具:netwox、nc、wireshark
原理
TCPRST攻击中,攻击主机kali可以通过嗅探方式监视通信双方win7和Ubuntu之间的TCP连接,在获得源、目标IP地址及端口,以及序列号之后,就可以结合IP源地址欺骗技术伪装成通信一方,发送TCP重置报文给通信另一方,在确保端口号一致及序列号落入TCP窗口之内的情况下,即可直接关闭这个TCP连接,造成通信双方正常网络通信的中断,达到拒绝服务的效果
步骤
Seed节点和WIN2003节点利用nc建立正常tcp会话,因为将Seed节点和攻击节点Kali放入同一网络,从而Netwox软件可以截取到tcp连接序列号,并发送正确的TCPRST数据包,重置Seed和WIN2003之间的TCP连接
-
在win7中使用nc工具开启4444端口
nc -l -p 4444
-
在ubuntu上对4444进行端口监视
watch "netstat –an|grep :4444"
-
ubuntu新开终端执行nc通信测试
nc 192.168.100.141 4444
-
win7收到测试字符,证明tcp连接建立成功
-
在kali上利用netwox进行tcp RST攻击,同时开启wireshark(或使用tcpdump+wireshark)对win7进行抓包分析:
netwox 78 -i 192.168.100.147
tcpdump host 192.168.100.141 -w test.cap
-
在ubuntu上再次发送测试字符,这时连接断开
- 使用wireshark分析查看数据包
防御
RST是TCP报头的标志位,因此只要防火墙过滤带RST位的数据包即可防御
SYN Flood攻击
靶机1:win7 192.168.100.141
靶机2:ubuntu 16.04 192.168.100.147
攻击机:kali2019 192.168.100.144
网络拓扑环境:攻击机和靶机处于同一内网
使用工具:netwox
原理
TCPSYNFlood,又称SYN洪泛攻击,是目前最为有效和流行的一种拒绝服务攻击形式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务
步骤
Kali向Ubuntu的23端口发起syn flood攻击
-
在Ubuntu中查看当前23端口连接信息,处于干净空白状态
netstat -tuan|grep :23
netstat -an -p TCP|find “:80”
-
使用win7对ubuntu发起telnet请求,可正常访问
telnet 192.168.100.147
-
在kali上对ubuntu的23端口发起syn flood攻击
netwox 76 -i 192.168.100.147 -p 23
-
在ubuntu再次查看,发现23端口充斥大量的syn请求
-
使用win7再次请求ubuntu的23端口,发现响应极为缓慢随后即失去连接,说明拒绝服务攻击已经成功
-
在ubuntu上查看syncookie的设置状态
cat /proc/sys/net/ipv4/tcp_syncookies
防御
-
sys flood属于dos攻击的一种,基于ip欺骗原理实现的,所以可以通过设置防火墙从网络层防御
-
linux中使用syn cookie来防御synflood,首先查看参数值
cat /proc/sys/net/ipv4/tcp_syncookies
结果为1即为开启,结果为0即未打开,通过此命令进行参数修改:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
-
设置syn_recv超时时限,也能防御syn flood
UDP Flood攻击
靶机: Ubuntu 16.04 192.168.100.147
攻击机:kali 2019 192.168.100.144
网络拓扑环境:攻击机和靶机处于同一内网
使用工具:hping3
原理
由于UDP协议的无状态不可靠的天然特性,UDPFlood拒绝服务攻击的原理非常简单,即通过向目标主机和网络发送大量的UDP数据包,造成目标主机显著的计算负载提升,或者目标网络的网络拥塞,从而使得目标主机和网络陷入不可用的状态,造成拒绝服务攻击
步骤
Kali向ubuntu发起udp flood攻击,并使用tcpdump进行分析
-
在ubuntu上开启tcpdump监听
tcpdump –i eth0 udp -n
-
在kali中向ubuntu发起udp flood攻击
hping3 --udp -p 53 192.168.100.147
-
在ubuntu中可以清除看到来自kali的udp攻击请求
-
攻击进一步升级,使用工具自带的随机源地址参数进行源地址欺骗udp flood攻击
hping3 --udp -p 53 --flood --rand-source 192.168.100.147
-
在ubuntu中可以看到大量不同源地址发的包
防御
-
UDP是无状态连接协议,常用于僵尸网络的DDOS攻击,比起TCP来说更难防御。
-
通过设置防火墙,对UDP包的IP,端口,速率可针对性的防御udp flood。
-
udp flood除了消耗受害者资源,也会消耗大量攻击者资源。
http慢速攻击
概念
HTTP慢速攻击也叫slow http attack,是一种DoS攻击的方式。由于HTTP请求底层使用TCP网络连接进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用慢速发HTTP请求,就会导致占用一个HTTP连接会话。如果发送大量慢速的HTTP包就会导致拒绝服务攻击DoS。
攻击种类
-
Slow headers(也称slowloris):Web应用在处理HTTP请求之前都要先接收完所有的HTTP头部,Web服务器再没接收到2个连续的\r\n时,会认为客户端没有发送完头部,而持续的等等客户端发送数据,消耗服务器的连接和内存资源。
-
Slow body(也称Slow HTTP POST):攻击者发送一个HTTP POST请求,该请求的Content-Length头部值很大,使得Web服务器或代理认为客户端要发送很大的数据。服务器会保持连接准备接收数据,但攻击客户端每次只发送很少量的数据,使该连接一直保持存活,消耗服务器的连接和内存资源。
-
Slow read(也称Slow Read attack):客户端与服务器建立连接并发送了一个HTTP请求,客户端发送完整的请求给服务器端,然后一直保持这个连接,以很低的速度读取Response,比如很长一段时间客户端不读取任何数据,通过发送Zero Window到服务器,让服务器误以为客户端很忙,直到连接快超时前才读取一个字节,以消耗服务器的连接和内存资源。
参数介绍
测试模式:
-H slow headers 攻击,缓慢发送\r\n,让服务器一直等待
-B slow Body 攻击
-R 范围攻击Apache killer
-X slow read 攻击,读的慢,让服务器发送缓存堵塞
报告生成选项:
-g 生成socket状态变化统计
-o file_prefix将输出保存到file.html和file.csv中
-v level日志等级,0-4:Fatal,Info,Error,Warning,Debug
普通选项:
-c connections目标连接数(50)
-i seconds数据发送间隔(10)
-l seconds测试一个目标的时间长度(240)
-r rate每秒多少个连接(50)
-s bytesContent-Length的值(4096)
-t verb请求中使用的动词,如果是slow header攻击,默认是GET;如果是slow body攻击,默认是POST
-u URL目标URL(http://localhost/)
-x bytes每一个tick随机生成的键值对最大长度,例如,-x 2 生成x-xx:xx是头字段,或是类似&xx=xx的消息体,x是随机字符(32)
探针/代理选项:
-d host:port所有数据走指定代理host:port
-e host:port 探针流量走指定代理host:port
-p seconds探针超时时长,服务器被认为是网络不可达(5)
slow read攻击具体选项:
-k num同一请求重复次数,当服务器支持持久化连接时用于放大响应长度(1)
-n seconds每次从接收缓冲区中读取消息的时间间隔(1)
-w bytes从通知窗中获取数据的起始位置(1)
-y bytes 从通知窗中获取数据的结束位置(512)
-z bytes每次从接收缓冲区中读取的长度(5)
命令
-
slowloris模式:
-
使用curl命令请求目标网站页面
Curl http://192.168.100.141/pkq/
-
使用slowhttptest攻击
slowhttptest -c 1000 -H -i 10 -r 200 -t GET -u http://192.168.100.141/pkq -x 24 -p 3
-
再次请求目标网站页面,页面无回显,网站无法正常显示
-
-
Slow Body攻击:
slowhttptest -c 1000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://www.mywebsite.com -x 10 -p 3
-
Slow Read模式:
slowhttptest -c 1000 -X -r 1000 -w 10 -y 20 -n 5 -z 32 -u http://yourtarget.com -p 5 -l 350 -e x.x.x.x:8080
DNS欺骗
靶机:Ubuntu 16.04 192.168.100.147
攻击机:kali 192.168.100.144
网络拓扑环境:攻击机和靶机处于同一内网
使用工具:ettercap
原理
DNS(DomainNameSystem,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用记住IP地址。DNS协议运行在UDP协议之上,使用端口号53,DNS并不包含任何认证机制,因此第三方可以对DNS数据包进行伪造
步骤
此处操作时使用的是kali2019,但所列举的是kali2020的操作方法,所以部分页面可能地址有问题
-
在kali中编辑ettercap的配置文件,将所有.com的域名都解析到kali的ip:
vim /etc/ettercap/etter.dns
*.com A 192.168.100.144
-
在kali上配置apache网站web主页,同时启动apache服务:
vim /var/www/html/index.html
-
启动apache服务
systemctl restart apache2
-
Ubuntu上访问weibo.com,显示正常
-
在kali上启动ettercap工具利用arp中间人攻击实现dns欺骗:
ettercap -G进入图形界面 ,如果启动失败则reboot一下重启电脑
-
target 1设置攻击目标,target 2设置网关
-
选择arp欺骗中间人攻击
-
启用dns_spoof插件
- 此时再在seed上访问www.weibo.com,发现访问到了我们刚才设置的kali页面上
-
使用nslookup查看,可以看到DNS将地址解析到了kali上:
nslookup www.weibo.com
防御
-
静态绑定DNS/IP映射可以有效防止DNS欺骗。
-
目前互联网中主流方法是采用DNSSec,其基于公钥体制的签名验证机制可实现DNS消息身份认证和完整性保护。
TCP会话劫持攻击
靶机1:win7 192.168.100.141
靶机2:ubantu 16.04 192.168.100.147
攻击机:kali2019 192.168.100.144
网络拓扑环境:攻击机和靶机处于同一内网
原理
TCP会话劫持目标是劫持通信双方已建立的TCP会话连接,假冒其中一方(通常是客户端)的身份,与另一方进行进一步通信
步骤
Kali通过ARP欺骗成为中间人,从而通过截获TCP数据包,对ubuntu和win7之间的TCP会话进行劫持
-
在kali中设置ip路由转发
cat /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward
-
在kali中打开ettercap的图形界面,ettercap -G
-
将ubuntu和win7分别设置为target1和target2
-
选择菜单“MITM”中的“ARPpoisoning”进行ARP欺骗,并选择“Sniff remote connections”
-
在win7和ubuntu上使用arp -a,arp欺骗已经运行
-
在win7上使用telnet访问seed并登陆
win7启动telnet 在运行中输入services.msc 然后找到telnet服务并启动(没有客户端则安装)
-
Ubnutu中启动telnet服务
/etc/init.d/openbsd-inetd restart 启动 telnet
ubuntu16.04需要安装客户端
首先需要root用户权限(su)
1.安装openbsd-inetd
apt-get install openbsd-inetd
2.安装telnetd
apt-get install telnetd3.重启openbsd-inetd
/etc/init.d/openbsd-inetd restart4.查看telnet运行状态
netstat -a | grep telnet5.登录
telnet IP address
-
win7中测试登录
- 从kali中看到了登陆的账户和密码
- 继续测试效果,在win7中的telnet连接里操作ip a,kali中同样可以监听到