本文档介绍的方法仅供学习,测试使用,不要用来做违反当地法律法规的事情,否则后果自负
1.测试环境部署
被攻击方PC机两台,攻击方PC机一台,vpp模拟的路由器一台
1.1测试环境搭建
硬件环境:PC机一台
软件环境:虚拟机软件:VMware Workstation 16 Pro 16.1.1
被攻击方PC机:windows 10
攻击方PC机:Kail 5.10.28
1.2测试物理组网拓扑
1.3操作系统和软件版本
操作系统:受害者:windows10
攻击者:Kail 5.10.28
hping3:3.0.0-alpha-2
DDos-Attack:https://github.com/Elsa-zlt/DDos-Attack
2.hping3攻击方法
2.0操作系统
Kail 5.10.28
2.1攻击原理
生成和解析TCP/IP协议数据包
2.2使用语法
hping3 [选项] 目标主机
选项
参数 | 解释 | |
-h(--help) | 显示帮助信息 | |
-v(--version) | 查看版本信息 | |
-c(--count) | 发送数据包的数目 | |
-i | --interval | 发送数据包间隔的时间(uX 即X微妙,例如:-i u1000) |
--fast | 等同于 -i u10000(每秒10个包) | |
--faster | 等同于 -i u1000(每秒100个包) | |
--flood | 尽最快发送数据包,不显示回复 | |
-n(--numeric) | 数字化输出,象征性输出主机地址 | |
-q(--quiet) | 静默模式,只显示最后的统计数据 | |
-I(--interface) | 指定要使用的网络接口 | |
-V(--verbose) | 详细模式 | |
-D(--debug) | 调试模式 | |
-z(--bind) | 将“ctrl+z”组合键与发送包的TTL值绑定,按一次TTL值加1 | |
-Z | --unbind | 取消绑定ctrl+z键 |
--beep | 对于接收到的每个匹配数据包蜂鸣声提示 |
模式选择
默认模式是:TCP
模式选择 | 解释 |
-0(--rawip) | 原始IP模式,在此模式下Hping3会发送带数据的IP头。即裸IP方式 |
-1(--icmp) | ICMP模式,在此模式下Hping3会发送ICMP应答包 |
-2(--udp) | UDP模式,在此模式下Hping3会发送UDP报文到主机的0端口 |
-8(--scan) | 扫描模式,扫描指定的端口 |
-9(--listen) | 监听模式 |
IP模式参数:
参数 | 解释 | |
-a | --spoof | 源地址欺骗。伪造自身IP,对目的进行攻击,防火墙就不会记录你的真实IP了,但是回复数据包会被发送到错误的地方,所以接收不到回复 |
--rand-source | 随机源地址模式,使用随机的源IP地址发送数据包。模拟具有不同源IP地址的大量数据流,从而对网络设备和防火墙的性能进行压力测试 | |
--rand-dest | 随机目的地址模式,需要一个数值型的IP地址(如10.0.0.x)作为目标主机,在攻击中x会被0-255替换。x.x.x.x则代表所有IPv4地址 注意:这种模式下需要指定网络接口 | |
-t(--ttl) | 指定TTL值(默认是64) | |
-N(--id) | 设置数据包中的ID字段(用于接收时排序),默认是随机值 | |
-W(--winid) | 使用windosw相同的ID(不同系统的ID不一样) | |
-r(--rel) | 相对id字段(用于评估主机流量)当启用该选项时,hping3会显示数据包的ID递增情况,而不是直接显示ID值。特别是有丢包的情况下 | |
-f(frag) | 分片。这对于测试IP堆栈在处理大量数据包分片时的性能非常有用。也可能绕过弱访问控制列表(ACL) | |
-x(--morefrag) | 启用此选项时,数据包的IP头部将设置More Fragments标志,表示该数据包是一个分片,并且还有其他后续分片。目标主机在重新组装数据包时,如果片段丢失或过多,则会发送ICMP Time Exceeded消息,暴露其分片处理性能问题 | |
-y(--dontfrag) | 设置不分段标志,逐渐增加数据包大小,直到发现网络传输MTU限制(是否收到ICMP Destination Unreachable消息),可以确定网络的MTU | |
-g(--fragoff) | 设置分片偏移值。原始数据包分片时,每个分片都有自己的分片偏移值。通过设置分片偏移值,目标主机可以将所有分片正确地重新组装成原始数据包。测试网络设备对不同分片偏移的分片的处理能力 | |
-m(--mtu) | 设置虚拟最大传输单元,默认是16字节 | |
-H(--ipproto) | 设置IP协议字段,仅在RAW IP模式下使用 | |
-G(--rroute) | 记录路由。启用此选项后,hping3会在每个发送的数据包中包含RECORD_ROUTE选项,并在返回的数据包中显示路由缓冲区(route buffer)。RECORD_ROUTE选项允许数据包在传输过程中记录其经过的路由节点信息。IP头部只有足够的空间来存储九个路由节点信息 |
ICMP模式
参数 | 解释 | |
-C | --icmptype | 设置ICMP报文的类型,默认是ICMP Echo Request(回显请求) |
-K | --icmpcode | 设置ICMP报文的代码,默认是0 |
--force-icmp | 该选项用于发送所有的ICMP类型的ICMP报文 | |
--icmp-gw | 设置ICMP重定向(ICMP Redirect)的网关地址,默认是0.0.0.0 | |
--icmp-ts | --icmp和--icmptype13的合体 | |
--icmp-addr | --icmp和--icmptype17的合体 |
UDP/TCP模式
参数 | 解释 |
-s(--baseport) | 设置源端口,默认为随机源端口 |
-p(--destport) | 设置目的端口,默认端口为0 |
-k(--keep) | 保持源端口不变 |
-w(--win) | 设置TCP窗口大小,默认是64 |
-O(--tcpoff) | 设置伪造TCP数据偏移量 |
-Q(--seqnum) | 收集目标主机生成的TCP序列号,分析TCP序列号的可预测性 |
-b(--badcksum) | 发送错误的IP校验和和数据包,得到错误UDP/TCP校验和。但是许多系统会修复发送数据包的IP校验和 |
-M(--setseq) | 设置TCP序列号 |
-L(--setack) | set TCP ack,不是 TCP 的 ACK 标志位 |
-F(--fin) | set FIN flag |
-S(--syn) | set SYN flag |
-R(--rst) | set RST flag |
-P(--push) | set PUSH flag |
-A(--ack) | set ACK flag,设置 TCP 的 ACK 标志位 |
-U(--urg) | set URG flag,URG是紧急字段标识 |
-X(--xmas) | set X unused flag (0x40),标志位的第6位是未使用的标志位,被称为X标志位。X标志位没有特定的TCP功能,默认保持为0 |
-Y(--ymas) | set Y unused flag (0x80),意义同上 |
--tcpexitcode | 发送所有TCP数据包后,将最后一个TCP数据包的“th_flags”字段作为hping3程序的退出码。这样可以使hping3的退出码反映出最后一个TCP数据包的状态(注意:使用此选项时需保证目标主机能响应TCP) |
--tcp-mss | 用于启用TCP MSS(Maximum Segment Size)选项,并设置给定的值作为MSS值。TCP MSS选项允许主机在建立TCP连接时向对方通告本地能够接收的最大TCP片段大小,以便对方主机将TCP数据段切分成合适大小的片段,以确保TCP数据传输的有效性和可靠性 |
--tcp-timestamp | 启用TCP时间戳选项(TCP Timestamp Option),从而帮助猜测目标主机的HZ(时钟频率)和运行时间(uptime), 可以对目标主机进行性能分析和网络延迟估算等有用信息。 |
配置设置
参数 | 解释 | |
-d(--data) | 发送数据包的大小,默认为0 | |
-E(--file) | 发送指定文件内的数据 | |
-e(--sign) | 添加“签名” | |
-j(--dump) | 转储为16进制数据包,在接收到响应数据包时将其内容以十六进制形式显示在输出中 | |
-J(--print) | 转出为可打印字符,在接收到响应数据包时将其内容以可打印形式显示在输出中 | |
-B(--safe) | 启用该选项时,如果在文件传输过程中发现有数据包丢失,hping3会自动重新发送丢失的数据包,以确保文件的每个部分都能被正确传输到目标主机。特别适用于在不稳定或复杂情况下的网络中 | |
-u(--end) | 在使用“-E”文件传输时,使用此选项,hping3会在传输完整个文件后通知已经达到文件末尾(EOF),并阻止对方接受更多的数据包 | |
-T(--traceroute) | 启用跟踪路由(traceroute)模式。hping3将发送多个ICMP数据包,每个数据包的TTL值从0开始递增。每经过一个网络跃点,数据包的TTL值会递增,当数据包到达目标主机时,目标主机将根据TTL值发送一个ICMP Time Exceeded响应,以指示数据包经过的路由路径。 | |
--ttl n --tr-keep-ttl | 启用此选项,您可以在跟踪路由模式下保持TTL(Time-to-Live)值固定,从而只监视路由路径中的一个跃点。 | |
--tr-stop | 一旦接收到第一个不是 ICMP time exceeded(ICMP超时)的数据包,hping3 将立即退出 | |
--tr-no-rtt | 启用此选项,hping3将不会显示往返时间(RTT)信息。即使收到ICMP超时的响应,也不会计算RTT信息,适用于只对路由路径感兴趣的情况 |
实验功能
功能 | 解释 |
--apd-send | 向目标主机发送使用APD描述的数据包。 使用APD格式,可以灵活地构造各种自定义的数据包,用于网络测试、探测、模拟攻击、安全评估等目的。 通过APD描述的数据包可以包含以下信息: ①源IP地址和目标IP地址 ②源端口和目标端口 ③协议类型(如TCP、UDP、ICMP等) ④不同协议头部的字段(如TCP标志、UDP长度、ICMP类型等) ⑤数据包的负载(Payload) |
2.3测试
测试拓扑图
攻击者对受害者设备(192.168.2.120)发起攻击
受害者网速缓慢,接近断开
从攻击结果来看,大部分数据包都抵达了受害者主机
3.ddos_attack.py攻击方法
3.0操作系统
Kail 5.10.28
3.1参考文档
基于Kali的一次DDos攻击实践_kaliddos攻击_钟良堂的博客-CSDN博客
3.2下载
git clone https://github.com/Elsa-zlt/DDos-Attack
3.3修改配置
进入文件夹:
cd DDos-Attack
修改文件权限
chmod +x ddos-attack.py
根据python3和python2特性修改文件,例如print(“”)
3.4启动程序
Python3 ddos-attack.py
3.5测试
测试拓扑图
攻击者发起攻击
注:此处的Port不是端口号,是线程数,线程数越大攻击效果越好,但是负载越大
受害者网速缓慢,接近断开
4.GoldenEye使用方法
4.0操作系统
Kail 5.10.28
4.1下载方式
下载
wget https://github.com/jseidl/GoldenEye/archive/master.zip
解压
unzip mater.zip
进入安装文件夹
cd GoldenEye-master
4.2启动程序
python3 goldeneye.py <目标IP> [选项]
(PS:这个程序的特点是采用随机IP,不会暴露自己的真实IP)
4.3选项解释
选项 | 解释 | 默认值 |
-u(--useragents) | 包含要使用的用户代理的文件 | 随机生成 |
-w(--workers) | 并发工作的数量 | 10 |
-s(--sockets) | 并发套接字的数量 | 500 |
-m(--method) | HTTP方法,有get,post,random | get |
-n(--nosslcheck) | 不验证SSL整数 | True |
-d(--debug) | 启动调试模式 | false |
-h(--help) |