网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
功能介绍
1、支持多线程以实现高性能运行;
2、实时状态更新和进度条,适用于大规模扫描;
3、针对各种场景和限制设置了灵活的用户参数选项;
4、减少数据集以缩短扫描时间;
5、易于使用;
6、支持CSV格式输出;
工具安装
由于该工具基于纯Python 3开发,因此我们首先需要在本地设备上安装并配置好Python 3环境。接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地:
git clone https://github.com/r57-labs/chaos.git
然后切换到项目目录中,使用pip3命令安装该工具所需的其他依赖组件,并激活虚拟环境:
pip3 install -U pip setuptools virtualenv`` ``virtualenv env`` ``source env/bin/activate`` ``(env) pip3 install -U -r ./requirements.txt
最后,运行下列命令即可开始使用chaos:
(env) ./chaos.py -h
工具参数选项
-h, --help 显示工具帮助信息和退出`` ``-f FQDN, --fqdn FQDN FQDN文件路径,每一个FQDN单独一行`` ``-i IP, --ip IP HTTP请求的IP地址,逗号分隔`` ``-a AGENT, --agent AGENT 请求的User-Agent Header值`` ``-C, --csv 将CSV输出追加到OUTPUT_FILE.csv`` ``-D, --dns 在请求之前对FQDN/IP值执行fwd/rev DNS查询`` ``-j JITTER, --jitter JITTER 设置随机延迟间隔,单位为秒`` ``-o OUTPUT, --output OUTPUT 将控制台输出追加到文件中`` ``-p PORTS, --ports PORTS 要使用的TCP端口列表,逗号分隔,默认为"80,443"`` ```-P, --no-prep 不使用`GET /`对每一个IP/端口执行预扫描,使用`Host: {IP:Port}` Header执行预扫描以去除无响应的主机`````-r, --randomize 随机化要测试的IP/端口列表`` ``-s SLEEP, --sleep SLEEP 在线程执行完后要休眠的时间,单位为秒`` ``-t TIMEOUT, --timeout TIMEOUT 等待未响应主机的时间,单位为秒`` ``-T, --test 测试模式,不发送任何请求`` ``-v, --verbose 启用Verbose模式输出`` ``-x, --singlethread 单线程执行,针对1-2个核心的系统,默认线程数=核心数-1``
(向右滑动,查看更多)
工具使用样例
本地主机测试
启用Python HTTP服务器:
% python3 -u -m http.server 8001`` ``Serving HTTP on :: port 8001 (http://[::]:8001/) ...
启动ncat(HTTP检测为SSL),使用循环执行检测:
% while true; do ncat -lvp 8443 -c 'printf "HTTP/1.0 204 Plaintext OK\n\n<html></html>\n"'; done`` ``Ncat: Version 7.94 ( https://nmap.org/ncat )`` ``Ncat: Listening on [::]:8443`` ``Ncat: Listening on 0.0.0.0:8443
(向右滑动,查看更多)
以SSL启动ncat:
% while true; do ncat --ssl -lvp 8444 -c 'printf "HTTP/1.0 202 OK\n\n<html></html>\n"'; done` ` ``Ncat: Version 7.94 ( https://nmap.org/ncat )`` ``Ncat: Generating a temporary 2048-bit RSA key. Use --ssl-key and --ssl-cert to use a permanent one.`` ``Ncat: SHA-1 fingerprint: 0208 1991 FA0D 65F0 608A 9DAB A793 78CB A6EC 27B8`` ``Ncat: Listening on [::]:8444`` ``Ncat: Listening on 0.0.0.0:8444
(向右滑动,查看更多)
准备一个FQDN文件:
% cat ../test_localhost_fqdn.txt`` ``www.example.com`` ``localhost.example.com`` ``localhost.local`` ``localhost`` ``notreally.arealdomain``
准备一个IP文件/列表:
% cat ../test_localhost_ips.txt`` ``127.0.0.1`` ``127.0.0.0/29`` ``not_an_ip_addr`` ``-6.a`` ``=4.2`` ``::1
执行扫描:
% ./chaos.py -f ../test_localhost_fqdn.txt -i ../test_localhost_ips.txt,::1/126 -p 8001,8443,8444 -x -s0.2 -t1` ` ``2023-06-21 12:48:33 [WARN] Ignoring invalid FQDN value: localhost.local`` ``2023-06-21 12:48:33 [WARN] Ignoring invalid FQDN value: localhost`` ``2023-06-21 12:48:33 [WARN] Ignoring invalid FQDN value: notreally.arealdomain`` ``2023-06-21 12:48:33 [WARN] Error: invalid IP address or CIDR block =4.2`` ``2023-06-21 12:48:33 [WARN] Error: invalid IP address or CIDR block -6.a`` ``2023-06-21 12:48:33 [WARN] Error: invalid IP address or CIDR block not_an_ip_addr`` ``2023-06-21 12:48:33 [INFO] * ---- <META> ---- *`` ``2023-06-21 12:48:33 [INFO] * Version: 0.9.4`` ``2023-06-21 12:48:33 [INFO] * FQDN file: ../test_localhost_fqdn.txt`` ``2023-06-21 12:48:33 [INFO] * FQDNs loaded: ['www.example.com', 'localhost.example.com']`` ``2023-06-21 12:48:33 [INFO] * IP input value(s): ../test_localhost_ips.txt,::1/126`` ``2023-06-21 12:48:33 [INFO] * Addresses parsed from IP inputs: 12`` ``2023-06-21 12:48:33 [INFO] * Port(s): 8001,8443,8444`` ``2023-06-21 12:48:33 [INFO] * Thread(s): 1`` ``2023-06-21 12:48:33 [INFO] * Sleep value: 0.2`` ``2023-06-21 12:48:33 [INFO] * Timeout: 1.0`` ``2023-06-21 12:48:33 [INFO] * User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36 ch4*0s/0.9.4`` ``2023-06-21 12:48:33 [INFO] * ---- </META> ---- *`` ``2023-06-21 12:48:33 [INFO] 36 unique address/port addresses for testing`` ``Prep Tests: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 36/36 [00:29<00:00, 1.20it/s]`` ``2023-06-21 12:49:03 [INFO] 9 IP/ports verified, reducing test dataset from 72 entries`` ``2023-06-21 12:49:03 [INFO] 18 pending tests remain after pre-testing`` ``2023-06-21 12:49:03 [INFO] Queuing 18 threads`` ` `++RCVD++ (200 OK) www.example.com @ :::8001` ` ` `++RCVD++ (204 Plaintext OK) www.example.com @ :::8443` ` ` `++RCVD++ (202 OK) www.example.com @ :::8444` ` ` `++RCVD++ (200 OK) www.example.com @ ::1:8001` ` ` `++RCVD++ (204 Plaintext OK) www.example.com @ ::1:8443` ` ` `++RCVD++ (202 OK) www.example.com @ ::1:8444` ` ` `++RCVD++ (200 OK) www.example.com @ 127.0.0.1:8001` ` ` `++RCVD++ (204 Plaintext OK) www.example.com @ 127.0.0.1:8443` ` ` `++RCVD++ (202 OK) www.example.com @ 127.0.0.1:8444` ` ` `++RCVD++ (200 OK) localhost.example.com @ :::8001` ` ` `++RCVD++ (204 Plaintext OK) localhost.example.com @ :::8443` ` ` `++RCVD++ (202 OK) localhost.example.com @ :::8444` ` ` `++RCVD++ (200 OK) localhost.example.com @ ::1:8001` ` ` `++RCVD++ (204 Plaintext OK) localhost.example.com @ ::1:8443` ` ` `++RCVD++ (202 OK) localhost.example.com @ ::1:8444` ` ` `++RCVD++ (200 OK) localhost.example.com @ 127.0.0.1:8001` ` ` `++RCVD++ (204 Plaintext OK) localhost.example.com @ 127.0.0.1:8443` ` ` `++RCVD++ (202 OK) localhost.example.com @ 127.0.0.1:8444` ` ``Origin Scan: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 18/18 [00:06<00:00, 2.76it/s]`` ``2023-06-21 12:49:09 [RSLT] Results from 5 FQDNs:`` ` `::1`` ` `::1:8444 => (202 / OK)`` ` `::1:8443 => (204 / Plaintext OK)`` ` `::1:8001 => (200 / OK)`` ` ` ` `127.0.0.1`` ` `127.0.0.1:8001 => (200 / OK)`` ` `127.0.0.1:8443 => (204 / Plaintext OK)`` ` `127.0.0.1:8444 => (202 / OK)`` ` ` ` `::`` ` `:::8001 => (200 / OK)`` ` `:::8443 => (204 / Plaintext OK)`` ` `:::8444 => (202 / OK)`` ` ` ` `www.example.com`` ` `:::8001 => (200 / OK)`` ` `:::8443 => (204 / Plaintext OK)`` ` `:::8444 => (202 / OK)`` ` `::1:8001 => (200 / OK)`` ` `::1:8443 => (204 / Plaintext OK)`` ` `::1:8444 => (202 / OK)`` ` `127.0.0.1:8001 => (200 / OK)`` ` `127.0.0.1:8443 => (204 / Plaintext OK)`` ` `127.0.0.1:8444 => (202 / OK)`` ` ` ` `localhost.example.com`` ` `:::8001 => (200 / OK)`` ` `:::8443 => (204 / Plaintext OK)`` ` `:::8444 => (202 / OK)`` ` `::1:8001 => (200 / OK)`` ` `::1:8443 => (204 / Plaintext OK)`` ` `::1:8444 => (202 / OK)`` ` `127.0.0.1:8001 => (200 / OK)`` ` `127.0.0.1:8443 => (204 / Plaintext OK)`` ` `127.0.0.1:8444 => (202 / OK)`` ` ` ` ` ``rst@r57 chaos %
(向右滑动,查看更多)
工具运行截图
许可证协议
本项目的开发与发布遵循GPL-3.0开源许可证协议。
项目地址
chaos:
https://github.com/r57-labs/chaos
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!