{"id":13844478,"url":"https://github.com/TeraSecTeam/ary","last_synced_at":"2025-07-11T22:32:23.097Z","repository":{"id":44381711,"uuid":"323266066","full_name":"TeraSecTeam/ary","owner":"TeraSecTeam","description":"Ary 是一个集成类工具，主要用于调用各种安全工具，从而形成便捷的一键式渗透。","archived":false,"fork":false,"pushed_at":"2021-02-15T12:58:19.000Z","size":14441,"stargazers_count":341,"open_issues_count":4,"forks_count":56,"subscribers_count":17,"default_branch":"main","last_synced_at":"2024-08-05T17:42:17.070Z","etag":null,"topics":["automation","penetration-testing","pentest","poc","sqlinjection","vulnerability","vulnerability-scanners","xss"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TeraSecTeam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-21T07:46:31.000Z","updated_at":"2024-05-24T18:30:52.000Z","dependencies_parsed_at":"2022-07-14T12:50:01.716Z","dependency_job_id":null,"html_url":"https://github.com/TeraSecTeam/ary","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeraSecTeam%2Fary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeraSecTeam%2Fary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeraSecTeam%2Fary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeraSecTeam%2Fary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TeraSecTeam","download_url":"https://codeload.github.com/TeraSecTeam/ary/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225763435,"owners_count":17520459,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","penetration-testing","pentest","poc","sqlinjection","vulnerability","vulnerability-scanners","xss"],"created_at":"2024-08-04T17:02:43.339Z","updated_at":"2024-11-21T16:31:36.005Z","avatar_url":"https://github.com/TeraSecTeam.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# Ary\n\n![x](./doc/ARY.png)\n\nAry 是一个集成类工具，主要用于调用各种安全工具，从而形成便捷的一键式渗透。\n\n![](https://img.shields.io/github/stars/TeraSecTeam/ary?style=flat-square) ![](https://img.shields.io/github/downloads/TeraSecTeam/ary/total?style=flat-square)\n \n\u003e 版本：2.1.1  公开版\n\u003e\n\u003e 作者： Ali0th\n\u003e\n\u003e 联系： martin2877@foxmail.com\n\u003e\n\u003e 主页： github.com/Martin2877\n\u003e\n\u003e 声明：本工具仅供学习、测试使用，严禁用于非法用途，开发者对使用者的违法行为不负责任。\n\u003e\n\u003e 交流：欢迎提issue，或私信我加入工具使用交流群。\n\n## 下载\n\n[前往releases下载](https://github.com/TeraSecTeam/ary/releases/)\n\n## 相关文档\n\n[我的一键 getshell 代码开发之路v1.8.pdf](./doc/我的一键getshell代码开发之路v1.8.pdf)\n\n\n## 功能\n\n\u003e 注意，部分功能还在开发中\n\n0. 信息收集工具(开发中)\n1. 通过多个网络空间的搜索引擎批量爬取相应网站, 如 Fofa, shodan, censys\n2. 通过资产识别工具探测，如 ARL, Rad, crawlgo, gospider\n3. 非指向性漏扫工具， 如 xray,AWVS, (MSF 开发中)\n4. 通过 PoC 工具验证漏洞,目前已支持 pocsuite3 python, xray yaml 两种形式的 poc\n5. webshell 管理工具批量 getshell, 如 CobaltStrike, antsword (此模块开发中)\n6. 录包工具\n7. 执行流\n8. 流量检测规则编写与测试，如 suricata 规则编写\n\n## 自动挖洞思路\n\n```bash\n1. 漏扫法1-直接扫：\n1) 采集域名，越多越好\n2) 针对域名集合进行扫描，直接调用 xray 或 awvs 等工具进行漏扫。\n\n2. 漏扫法2-先信息收集后扫：\n1) 针对域名集合进行扫描\n2) 针对域名全部调用 ARL 进行子域名爬取\n3) 调用 ARL 中的全部子域名，进行漏洞扫描\n4) 调用 xray 或 awvs 等工具进行漏扫\n\n3. PoC扫全网法：\n1) 已有 PoC 和查询指纹，通过查询收集域名或IP，然后 PoC 验证漏洞。\n2) 定时器，定时进行执行任务\n```\n\n## 开发理念\n\n1. 尽量使用 golang 写的工具，方便直接调用可执行文件，就不需要重构第三方工具\n2. 尽量使用 pip 安装的模块，并使用 python api 进行调用，方便简单\n3. 有些需要独立环境的工具，尽量使用 docker 来启动，并使用 API 来交互\n\n## 环境\n\n主要运行环境：centos 7，其它环境未测试 \n\n## 安装\n\n1.安装所有的工具引擎：\n\n```bash\n# 更新所有引擎，如果存在则不更新\n./ary --manager --update -v\n\n# 强制更新所有引擎\n./ary --manager --update --force -v  \n\n# 根据各个模块去更新引擎\n./ary --assertscan --engine all --update -v\n./ary --vulnscan --engine all --update -v\n\n# 更新 PoC \n./ary --pocscan --update --keyword poc -v\n```\n\n2.chrome 的安装(爬虫需要)\n\n配置yum：vi /etc/yum.repos.d/google.repo\n\n```bash\n[google]\nname=Google-x86_64\nbaseurl=http://dl.google.com/linux/rpm/stable/x86_64\nenabled=1\ngpgcheck=0                                                                                                                                     \ngpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub\n```\n\n```bash\nyum update\nyum install google-chrome-stable\ngoogle-chrome --version\n```\n\n3.docker 的安装(容器需要)\n\n```bash\nyum install docker -y\nservice docker start\n```\n\n\n## 使用\n\n使用 `-h` 能够自动生成所有相关的目录和文件。\n\n```bash\n./ary -h\n```\n\n1. `REAME.md` 文件能够自动生成。\n\n2. 在任何情况下，使用 `-v` 能够查看debug详情。\n\n3. `/onfigs/settings.ini` 为主要的配置文件，使用网络空间搜索需要在其中配置凭证。\n\n4. `streams.yaml` 为执行流文件，相关执行流在这其中配置。\n\n### docker 控制\n\n```bash\n# 需要使用 awvs 时启用\n./ary --docker --action start --engine awvs -v\n./ary --docker --action stop --engine awvs -v\n./ary --docker --action remove --engine awvs -v\n\n# 需要测试 suricata 时启用\n./ary --docker --action start --engine suricata -v\n./ary --docker --action stop --engine suricata -v\n./ary --docker --action remove --engine suricata -v\n```\n\n### 网络空间搜索\n\n```bash\n./ary --netsearch --engine shodan --keyword dedecms -v --limit 10\n./ary --netsearch --engine shodan --keyword \"tomcat country:\\\"US\\\"\" -v --limit 10\n\n./ary --netsearch --engine fofa --keyword redis -v --limit 10\n./ary --netsearch --engine fofa --keyword \"protocol=socks4 \u0026\u0026 banner=\\\"0x5a\\\"\" -v --limit 10\n\n./ary --netsearch --engine censys --keyword redis -v --limit 1000\n```\n\n### 资产扫描\n\nARL:\n\n```bash\n# 启动一个任务\n# 查找子域名\n./ary --assertscan --engine arl --url www.aaa.com -v --condition subdomain\n./ary --assertscan --engine arl --url www.aaa.com,www.bbb.com -v --condition subdomain\n# 查找子域名 指定文件\n./ary --assertscan --engine arl --input targets.txt -v --condition subdomain\n# 查找子域名 指定输出文件名\n./ary --assertscan --engine arl --url www.aaa.com -v --condition subdomain --output arl.csv\n\n# 查找端口\n./ary --assertscan --engine arl --input targets.txt -v --condition portscan\n\n# 获取任务结果\n./ary --assertscan --engine arl -v --fetch-result --keyword 5fd321f0a4a557000fb2a574\n# 获取任务结果 - 加载文件\n./ary --assertscan --engine arl -v --fetch-result --input arl.csv\n```\n\n爬虫类：\n\n```bash\n# 爬虫类\n./ary --assertscan --engine rad --url http://testphp.vulnweb.com/ -v\n\n./ary --assertscan --engine gospider --url http://testphp.vulnweb.com/ -v\n\n./ary --assertscan --engine crawlergo --url http://testphp.vulnweb.com/ -v\n```\n\nAWVS:\n\n```bash\n# 使用 awvs 进行爬虫，并保存到 txt 文件，不等待\n./ary --vulnscan --engine awvs --url testphp.vulnweb.com -v --crawl\n\n# 使用 awvs 进行漏洞扫描\n./ary --vulnscan --engine awvs --url testphp.vulnweb.com -v\n\n# 获取 awvs 结果(状态)\n./ary --vulnscan --engine awvs --fetch-result --keyword 4704d46c-908a-4c2d-85bf-a615cc396d49 -v\n```\n\n### 漏洞扫描：\n\n```bash\n# 对目标进行扫描\n./ary --vulnscan --url xx.xx.xx.xx --engine xray -v\n\n# 对目标进行被动扫描（rad+xray）\n./ary --vulnscan --engine xray --url http://testphp.vulnweb.com/ -v --passive\n\n# 对文件中的目标进行被动扫描\n./ary --vulnscan --engine xray --input target.txt -v --passive\n\n# 读取数据库中的数据进扫描\n./ary --vulnscan --engine xray --keyword tomcat -v\n./ary --vulnscan --engine xray --keyword tomcat -v --crawl\n```\n\n分开xray与爬虫进行漏洞扫描：\n\n```bash\n# 启动一个 xray 后台\n./ary --vulnscan --engine xray --port 7778 --background -v\n\n# 启动爬虫,将其流量代码到 xray 上\n./ary --assertscan --engine crawlergo --url http://testphp.vulnweb.com/ -v --passive --port 7778\n./ary --assertscan --engine rad --url http://testphp.vulnweb.com/ -v --passive --port 7778\n./ary --assertscan --engine gospider --url http://testphp.vulnweb.com/ -v --passive --port 7778\n```\n\n### PoC 漏洞验证\n\n```bash\n./ary --pocscan --input redis.txt --poc redis -v\n\n./ary --pocscan --url xx.xx.xx.xx --poc ./pocs/redis -v\n\n./ary --pocscan --poc tomcat --keyword tomcat -v\n\n./ary --pocscan --keyword redis --poc redis -v\n\n./ary --pocscan --keyword redis --poc redis -v --limit 1 --dumppcap redis\n./ary --pocscan --keyword thinkphp --poc thinkphp_rce2 -v --limit 20 --dumppcap thinkphp\n\n# 写到数据库\n./ary --pocscan --url xx.xx.xx.xx --poc redis -v --limit 2 --upload\n```\n\n\n### 执行流\n\n1. 获取 redis 所有网站并对其进行poc漏洞扫描\n\n```bash\n# 收集网站\n./ary --netsearch --engine shodan --keyword reids -v --limit 100\n# 打 poc\n./ary --pocscan --keyword redis --poc redis -v\n```\n\n```bash\n# 收集网站\n./ary --netsearch --engine shodan --keyword harbor -v --limit 100\n./ary --netsearch --engine censys --keyword harbor -v --limit 1000\n# 打 poc\n./ary --pocscan --keyword harbor --poc harbor -v\n# 发现有检出的，使用 url 进行检测\n./ary --pocscan --url \"xxx.com\" --poc harbor -v --dumppcap cve-2019-16097\n```\n\n2. 对一个网站进行渗透\n\n```bash\n./ary --vulnscan --engine xray --url http://testphp.vulnweb.com/ -v --passive\n```\n\n3. 获取到 redis 网站并对所有 redis ip 进行渗透\n\n```bash\n./ary --netsearch --engine shodan --keyword reids -v --limit 100\n./ary --vulnscan --engine xray --keyword redis -v --limit 100\n```\n\n使用 stream 模块来实现执行流\n\n这样子就可以把上面所有的多步骤内容变成一条命令，从而一键执行。\n\n```bash\n./ary -v --stream --keyword \"redis 未授权访问漏洞\"\n# 默认使用 streams.yaml 文件，也可以指定别的执行流文件\n./ary -v --stream --input streams.yaml --keyword \"redis 未授权访问漏洞\"\n```\n\n### 录包\n\n只要在最后加入 --dumppcap 即可。\n\n```bash\n./ary --pocscan --keyword thinkphp --poc thinkphp_rce2 -v --limit 20 --dumppcap thinkphp\n```\n\n### suricata 测试\n\n可以对 suricata 规则进行测试, 需先拉取和启用 suricata 容器 (注意：本功能需要社区版权限)\n\n```bash\n./ary --docker --action run --engine suricata --pcap thinkphp --rule thinkphp -v\n```\n\n### 导入认证证书\n\n只要将 *.crt 放在 config 目录下，就可以使用了。\n\n```bash\n# 验证此社区版本证书可用，返回有效性和有效时间，需要放在目录下才可用\n./ary --auth --input community.crt -v\n```\n\n### 杀死进程\n\n如启动部分后台进程功能时，有僵尸进程时使用\n\n```bash\n# 主进程\n./ary --kill -v\n# 引擎进程\n./ary --kill --engine xray -v\n# 引擎进程，带端口\n./ary.py --kill --engine xray --port 7778 -v \n```\n\n## 场景示例\n\n### 场景1：攻击到防御的规则编写指南\n\n使用这个工具，可以解决我们目前安全能力的需求，一方面是红队的规则，主要是漏洞的 PoC，现在同时支持了 pocsutie3 和 xray yaml 的规则格式，另一方面是蓝队的规则，主要是 suricata 的检测规则，可以支持编写与测试。目前已经能够使用  Ary 进行攻击规则、流量检测规则的流程走通。\n\n1、下载 ary ，需环境： centos\n\nhttps://github.com/TeraSecTeam/ary/releases/\n\n需要使用证书才能进行 suricata 规则编写与测试功能，私聊我获取。\n\n2、装 suricata 的 docker环境\n\n```bash\n# 装环境\nyum install docker -y\nservice docker start\n# 启动 suricata docker\n./ary --docker --action start --engine suricata -v\n```\n\n3、编写攻击规则 - 漏洞 PoC\n\n可以使用 pocsuite3 和 xray yaml 两种格式进行编写\n\npocsuite3格式：\n\n参考：http://pocsuite.org/\n\nxray yaml 格式：\n\n参考：https://docs.xray.cool/#/guide/poc\n\n4、编写防守规则 - 编写 suricata 测试规则\n\nsuricata 格式：\n\n参考: https://suricata.readthedocs.io\n\nsuricata yaml 规则文件遵循 `group - vulnerability - point` 的逻辑，意即每一个组为一个组件或框架，一个组下面有多个漏洞项，每个漏洞项下有多种检测点。\n\npoint 的最少字段为 rule 和 state，其它字段默认使用 group 的字段；若 point 定义了字段，则优先使用 point 的字段。\n\n```yaml\ngid: 200863  # 组编号\ncomponent: thinkphp  # 组件名\nphase: 2  # 阶段\nseverity: 1  # 风险等级\nconfidence: 2  # 规则可信度\ncategory: 攻击利用  # 风险类型\nsec_class: 漏洞利用  # 安全分类\ndescription: ThinkPHP是一套开源的、基于PHP的轻量级Web应用开发框架。  #  描述\nsolution: 建议升级至最新版本  #  解决方案\nkeywords: thinkphp\nvulnerability_01:  # 漏洞\n    point_01:  # 探测点\n      rule_name: Thinkphp 5.0.x 远程命令执行尝试\n      rule: 'alert http $HOME_NET any -\u003e $EXTERNAL_NET any (msg:\"riskIVY-PRS INFO Thinkphp 5.0.x RCE Exploitation Attempt\"; flow:established,to_server; content:\"GET\"; http_method; content:\"/index.php?s=\"; http_uri; content:\"\\\\app/invokefunction\u0026function=call_user_func_array\"; http_uri; distance:0; pcre:\"/(phpinfo|assert|system|eval)/i\";classtype:web-application-attack; sid:94640317; rev:1; metadata:created_at 2020_05_14, updated_at 2020_05_14;)'\n      state: 1  # 规则开关，1表示启用\n      remote: 1  # 是否为远程利用\n      local: 1  # 是否为本地利用\n      phase: 2  # 攻击阶段\n      severity: 1  # 风险等级\n      confidence: 2  # 置信度\n      category: 攻击利用  # 风险类型\n      sec_class: 漏洞利用  # 安全分类\n      description: ThinkPHP是一套开源的、基于PHP的轻量级Web应用开发框架。  #  风险描述\n      solution: 建议升级至最新版本  #  解决方案\n    point_02:\n      state: 1\n      rule: 'alert http $HOME_NET any -\u003e $EXTERNAL_NET any (msg : \"riskIVY-PRS INFO Thinkphp 2.x RCE Exploitation Attempt\";content:\"$%7B@\";pcre:\"/(phpinfo|assert|system|eval)/i\";classtype:web-application-attack; sid:94640315; rev:1; metadata:created_at 2020_05_14, updated_at 2020_05_14;)'\n    point_03:\n      state: 1\n      rule: 'alert http $HOME_NET any -\u003e $EXTERNAL_NET any (msg : \"riskIVY-PRS INFO Thinkphp5.0.23 RCE Exploitation Attempt\";content:\"POST /\";content:\"?s=captcha\";pcre:\"/_method=__construct\u0026filter\\[\\]=system\u0026method=get\u0026server\\[REQUEST_METHOD\\]=/i\";classtype:web-application-attack; sid:94640316; rev:1; metadata:created_at 2020_05_14, updated_at 2020_05_14;)'\n```\n\n5、整个流程的攻击到规则的测试流程\n\n通过执行流实现自动打流量到检出规则的测试，红队与蓝队的结合。\n\n```yaml\ncheckrule:\n  name: checkrule\n  steps:\n  - pocscan: True  # 第一步，拉取 pocsuite poc\n    update: True\n    keyword: poc\n    v: True\n  - netsearch: True  # 第二步，收集 thinkphp 域名\n    engine: fofa\n    keyword: thinkphp\n    limit: 10\n    v: True\n  - pocscan: True  # 第三步，使用 thinkphp 相关 poc 打流量并录成流量包\n    keyword: thinkphp\n    poc: Think_RCE_invokefunction_1\n    limit: 10\n    dumppcap: thinkphp\n    v: True\n  - command: mv output/thinkphp*.pcap mounts/pcaps/  # 第四步，将流量包移动到挂载目录下\n  - docker: True  # 第五步，进行测试\n    action: run\n    engine: suricata\n    pcap: thinkphp\n    rule: thinkphp\n    v: True\n```\n\n执行上面的执行流示例：\n\n```bash\n./ary --stream --keyword checkrule -v\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTeraSecTeam%2Fary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTeraSecTeam%2Fary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTeraSecTeam%2Fary/lists"}