网络攻击溯源与流量分析

实训目的

了解拒绝服务攻击Dos和分布式拒绝服务攻击DDos原理。

了解Web入侵的一般步骤。

能进行拒绝服务攻击的流量分析。

能进行Web入侵的溯源分析。

实训准备及注意事项

1.硬件:装有Windows操作系统的计算机1台。

2.软件:wirshark、网络攻击数据包(安恒平台)。

3.严格按照实验步骤进行实验,实验结果以截图的形式进行保留。

实训背景知识

拒绝服务攻击即是攻击者想办法让目标机器停止提供服务,是黑客常用的攻击手段之一。其实对网络带宽进行的消耗性攻击只是拒绝服务攻击的一小部分,只要能够对目标造成麻烦,使某些服务被暂停甚至主机死机,都属于拒绝服务攻击。拒绝服务攻击问题也一直得不到合理的解决,究其原因是因为网络协议本身的安全缺陷,从而拒绝服务攻击也成为了攻击者的终极手法。攻击者进行拒绝服务攻击,实际上让服务器实现两种效果:一是迫使服务器的缓冲区满,不接收新的请求;二是使用IP欺骗,迫使服务器把非法用户的连接复位,影响合法用户的连接。

SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(Distributed Denial Of Service分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,使被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。具体原理是:TCP连接的三次握手中,假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接。这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况(伪造IP地址),那么服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源。即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上,如果服务器的TC P/IP栈不够强大,那么最后的结果往往是堆栈溢出崩溃——即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时,从正常客户的角度看来,服务器失去响应,这种情况就称做:服务器端受到了SYN Flood攻击(SYN洪水攻击)。  

1 SYN半链接攻击流量分析

使用wireshark打开数据包之后,发现大量来自 192.168.177.155 的 TCP 连接请求,且均为 TCP 三次握手中的第一次 SYN 请求,而且目的端口一直在改变。

观察数据包,当服务端进行进行第二次握手之后,客户端并没有响应。

由此可以判断出,此时 192.168.177.155 这台主机正在对 192.168.177.145 这台主机进行端口扫描。而且扫描模式为 SYN 半连接扫描。 注:SYN 半连接扫描使用含有 SYN 标志位的数据包进行端口探测。如果目标主机回复了SYN/ACK包,则说明该端口处于开放状态。如果回复的是 RST/ACK 包,则说明这个端口处于关闭状态;基于 SYN 半连接扫描的特点,我们可以通过显示过滤器过滤出 192.168.177.145 回复了SYN/ACK 的数据包。以确定 192.168.177.145 开放了哪些端口。

经分析可知,192.168.177.145 这台机器一共回复了 15 个 SYN/ACK 数据包。所以可以判断出,这台机器一共开放了 15 个端口。且分别为红框中的 15 个端口。

2 SQL注入攻击流量分析

因为要分析针对 web 的攻击。所以在显示过滤器中输入 http 过滤出 http 协议相关的数据包。

查看 http 数据包的 get 请求参数处,发现大量的 sql 语句。我们可以判断,黑客正在对目标进行 sql 注入攻击。

通过 get 请求的来源 IP,可以判断出黑客的 IP 为 192.168.177.1。

观察 get 请求包的 user-agent 头为 python-reqursts,可以判断黑客使用了 python 脚本对目标实施的攻击。同时攻击的 payload 中 ascii,和比较符等关键字。说明黑客使用的注入技术为布尔盲注。

观察数据包 get 请求的参数,根据黑客提交的 payload,if(length(database()=0,1,0)),其中 length 是获取 database()的数据库名的长度。然后通过 0,1,2 等进行比较,当相等时,返回 1。这使得 ‘1’and 1 为真,有查询结果返回。所以通过这个 payload,我们可以得出,黑客此时是在判断数据库名的长度。

分别观察前 9 条请求的响应数据包。通过响应包内容可以发现,前 8 条请求的响应包内容相同,而第 9 条的响应包内容不同。根据 payload 的内容我们可以判断出黑客已经获得了数据库名的长度为 8。

再看第9条请求包之后的数据包,分析黑客提交的 payload,1'and%20if(ascii(substr(database(),1,1))=79,1,0)%20--+通过 substr 函数,将 database()函数的值,从第一位开始,截取一位,然后在转化为 ascii码跟 79 进行比较。如果数据库名称的第一位值的 ascii 码值等于 79,则会返回 1,否则返回0,这样当返回 1 时,’1’and 1 为 true,即可正常查询到数据。通过依次截取第一位,第二位,第三位等,这么就能获得数据名每一位的值,依次拼接之后,即可获得完整的数据库名。根据黑客提交的 payload 的含义,我们可以得出,黑客此时是在逐位获取数据库名称。

根据黑客测试的 payload 的回显示信息来判断,可得到当响应包中出现 You are in……的时候为查询正常。所以我们可以判断出数据库第一位的 ascii 码值为 115。对应的值为 s。

根据第 9 步的判断方法。依次判断后面的数据包,可得知,黑客获取数据库 8 位的全部字符。得到了数据库名称。最终数据库的名称为security。

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值