百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

一款可拓展指纹识别和供应链漏洞探测的红队信息收集+漏洞探测

bigegpt 2024-08-02 11:07 41 浏览

0x01 工具介绍

dddd(带带弟弟),是一款支持多种输入格式,主/被动指纹识别且使用简单的供应链漏洞探测工具。协助红队人员快速收集信息,测绘目标资产,寻找薄弱点。支持从Hunter、Fofa批量拉取目标。

下载地址在末尾

0x02 功能简介

特点

  • 自动识别输入类型,无需手动分类
  • 便于拓展的主动/被动指纹识别
  • 指纹支持复杂 与/或/非/括号 逻辑运算。人类友好。
  • Nuclei v3支持
  • 便于拓展的指纹漏洞映射数据库,尽量避免无效发包
  • 高效的子域名枚举/爆破,精准的泛解析过滤
  • Hunter、Fofa、Quake支持
  • Hunter 低感知模式
  • 低依赖,多系统开箱即用
  • 高效的HTML报表,包含漏洞请求响应
  • 审计日志,敏感环境必备



指纹/Poc拓展

若您想让dddd作为您的指纹/漏洞库,或者作为漏洞知识沉淀的工具,请务必详细观看此节。


指纹

指纹数据库存于 ./config/finger.yaml

支持的指纹基础规则如下

header="123" //返回头中包含123
header!="123" //返回头中不包含123
header~="xxx" //返回头满足xxx正则
body="123" //body中包含123
body!="123" //body中不包含123
body~="xxx" //body满足xxx正则
body=="123" //body为123
server="Sundray" //返回头server字段中包含Sundray
server!="Sundray" //返回头server字段中不包含Sundray
server=="Sundray" //server字段为Sundray
title="123" //标题包含123
title!="123" //标题不包含123
title=="123" //标题为123
title~="xxx" //标题满足xxx正则
cert="123" //证书中包含123
cert!="123" //证书中不包含123
cert~="xxx" //证书满足正则
port="80" //服务端口为80
port!="80" //服务端口不为80
port>="80" //服务端口大于等于80
port<="80" //服务端口小于等于80
protocol="mysql" //协议为mysql
protocol!="mysql" //协议不为mysql
path="123/123.html" //爬虫结果中包含 123/123.html
body_hash="619335048" //响应体mmh3 hash为619335048
icon_hash="619335048"  //icon mmh3 hash
status="200" //页面返回码为200
status!="200" //页面返回码不为200
content_type="text/html" //content_type包含text/html
content_type!="text/html" //content_type不包含text/html
banner="123" // TCP banner 包含123
banner!="123" // TCP banner中不含123

各类规则支持与(&&)或(||)非(!)任意组合。可使用括号。与fofa搜索语法类似。

这里拿Fortinet-sslvpn举例。

需要Web响应体中包含fgt_lang,编写规则body="fgt_lang"

需要Web响应体中包含/sslvpn/portal.html,编写规则body="/sslvpn/portal.html"

需要同时满足这两个条件才会被判定为Fortinet-sslvpn的资产,将两个规则使用与(&&)连接就得到了这条指纹。


API

若有被动枚举子域名、请求fofa、hunter等需求。请在./config/subfinder-config.yaml中配置API。


子域名字典

子域名字典位于./config/subdomains.txt


服务爆破字典

字典路径为./config/dict/

每行以"空格:空格"分割账号密码

root : 123456
root : admin
root : admin123

其中shirokeys.txt为shiro key字典


主动指纹

当一个应用不暴露在根路径时就需要主动去访问,这个时候需要配置主动指纹数据库。

路径在./config/dir.yaml

配置也很简单,照着上边写就行。

这里拿Alibaba-Nacos举例子。当访问到http://host:port/nacos/,且访问后识别到Alibaba-Nacos指纹后就被判断有效。


漏洞Poc编写

编写参考nuclei poc编写

https://nuclei.projectdiscovery.io/templating-guide/

Poc存放路径

./config/pocs

将poc写好后放入./config/pocs即可识别。


工作流

仅仅编写Poc并放入./config/pocs是不会正常运行Poc的。需要为此Poc配置指定的指纹,本工具只有在匹配到目标指纹后才会调用这个Poc。

工作流存放目录

./config/workflow.yaml

以solr为例。

当dddd识别到目标指纹为APACHE-Solr时,就会在./config/pocs中寻找路径以

cves/2017/CVE-2017-12629.yaml

....

apache-solr-log4j-rce.yaml

结尾的poc调用。

如果我写好一个名为solr-rce.yaml的nuclei poc,则应该在workflow.yaml的对应指纹的pocs下添加一行solr-rce.yaml或者solr-rce。这样才能在识别到solr时调用到此poc。

在新版dddd中,支持使用nuclei tags作为指定。

在workflow中填写 "Tags@" 开头的poc名称,则代表匹配所有带此tag的nuclei poc

nginx:
type:
- root
pocs:
- Tags@nginx

上述workflow的意思是匹配所有带nginx tags的poc。

type是拿来干什么的呢?

比如这里有一个nacos,他的路径是http://host:port/aaa/bbb/nacos/a.js

如果有root标签,他会在 http://host:port/处打一次poc

如果有dir标签,在

http://host:port/aaa/

http://host:port/aaa/bbb/ (命中)

http://host:port/aaa/bbb/nacos/

下各打一次poc

如果有base标签,在http://host:port/aaa/bbb/nacos/a.js下打一次poc

一般情况下,root就能用,若应用部署在二级目录下,但poc是一级目录的poc,就需要dir参数才能探测到二级目录下的洞。


支持的Golang Poc列表

FTP 暴力破解 MSSQL 暴力破解 MYSQL 暴力破解 ORACLE 暴力破解 POSTGRESQL 暴力破解 RDP 暴力破解 REDIS 暴力破解/未授权访问 SMB 暴力破解 SSH 暴力破解 TELNET 暴力破解 Shiro反序列化 Key枚举 MONGODB 暴力破解 MEMCACHED 未授权访问 MS17-010 Java调试接口远程命令执行。



漏洞报表展示

直观的漏洞报表,请求/响应包留存

数据库基础信息留存,方便漏洞验证/截图

SMB共享目录信息留存


0x03更新介绍

v1.8
添加-oip参数,选择后将以ip:port的形式从网络空间搜索引擎中拉取资产,但消耗的积分不会变少。(fofa,hunter,quake通用)
如果遇到几百个域名都解析到一个ip的情况那就可以使用,虽然可能会漏掉一些绑定域名的资产,但能少掉不少重复的测试,节省网络、时间资源。


添加-ac 参数,默认关闭,不进行带有CDN/WAF资产的探测(这么做的原因是实战中大部分存在漏洞的资产都是没有CDN/WAF的,不探测这些资产能有效节省时间)。使用ac参数后将不再过滤CDN/WAF资产。


添加 -nh 参数,默认关闭。开启后将禁用域名绑定资产的探测。


现在HTML报告支持多数据包顺序输出了,之前只有最后一个数据包确实很蛋疼。


0x04 使用介绍


常见用法

从IP开始扫描

# 当IP Ping通后扫描Top1000端口
./dddd -t 192.168.0.1
# 当IP Ping通后全端口扫描
./dddd -t 172.16.100.1 -p 1-65535
# 指定IP禁Ping全端口扫描指定端口
./dddd -t 172.16.100.1 -p 80,53,1433-5000 -Pn
# 调用Masscan进行全端口SYN扫描(需安装Masscan)
./dddd -t 192.168.0.0/16 -p 1-65535 -Pn -st syn


从IP段开始扫描

./dddd -t 172.16.100.0/24
./dddd -t 192.168.0.0-192.168.0.12


从端口开始扫描

./dddd -t 192.168.44.12:80


从Web开始扫描

./dddd -t http://test.com


从域名开始扫描

探测(子)域名是否使用了CDN,若解析出真实IP则进入IP扫描

# 不枚举test.com子域名,只识别test.com
./dddd -t test.com
# 枚举子域名,识别所有获取到的子域名是否为CDN资产
./dddd -t test.com -sd


从Hunter开始扫描

先配置./config/subfinder-config.yaml中的Hunter API。

hunter: ["ffxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]

配置完成后打开命令行

# 从Hunter中获取备案机构为 带带弟弟 的目标进入扫描 默认最大1000条
./dddd -t '"icp.name="带带弟弟"' -hunter
# 最大查询1页,一页100个。避免积分过度消耗
./dddd -t '"icp.name="带带弟弟"' -hunter -htpc 1

攻防演练中通过Hunter导入企业备案资产方便快速占坑。


从Fofa开始扫描

先配置./config/subfinder-config.yaml中的FOFA 邮箱和KEY
fofa: ["xxxx@qq.com:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]

配置完成后打开命令行

./dddd -t "domain=\"baidu.com\"" -fofa (从fofa取100个baidu.com域名的目标)
./dddd -t "domain=\"baidu.com\"" -fofa -ffmc 10000 (指定最大数量为10000 默认100)


从Quake开始扫描

先配置./config/subfinder-config.yaml中的Quake api

配置完成后打开命令行

./dddd -t 'ip:"127.0.0.1"' -quake


多目标扫描


在target.txt中写入你的目标,如

172.16.100.0/24
192.168.0.0-192.168.255.255
http://test.com
aaa.test.com
10.12.14.88:9999

然后在命令行中敲下如下命令。dddd会自动识别资产类型并送入对应流程。

./dddd -t target.txt

当然dddd也支持多Hunter、Fofa语句,如在target.txt写下

ip="111.111.111.222"
domain="bbbb.cc"
icp.name="带带弟弟"

然后在命令行中敲下如下命令。dddd会批量从Hunter查询资产并送入对应流程。

./dddd -t target.txt -hunter

Hunter低感知模式

配置好hunter api。

./dddd -t 'ip="xxx.xxx.xxx.xxx"' -lpm

禁用漏洞探测

./dddd -t 127.0.0.1 -npoc

禁用漏洞探测且禁用主动指纹识别

./dddd -t 127.0.0.1 -npoc -nd

禁用ICMP,禁用TCP探测存活

./dddd -t 127.0.0.1 -tcpp -nicmp

icmp探测后,不存活进行tcp探活

./dddd -t 127.0.0.1 -tcpp


详细参数

coco@Mac dddd % ./dddd -h


     _       _       _       _   
  __| |   __| |   __| |   __| |  
 / _` |  / _ `|  / _` |  / _` |  
 \__,_|  \__,_|  \__,_|  \__,_|  
_|"""""|_|"""""|_|"""""|_|"""""| 
"`-0-0-'"`-0-0-'"`-0-0-`"`-0-0-'
dddd.version: 1.9


Usage of ./dddd:
  -Pn
        禁用主机发现功能(icmp,tcp)
  -a    开启审计日志
  -ac
        允许扫描带CDN的资产,默认略过
  -alf string
        审计日志文件名称 (default "audit.log")
  -ffmc int
        Fofa 查询资产条数 Max:10000 (default 100)
  -fofa
        从Fofa中获取资产,开启此选项后-t参数变更为需要在fofa中搜索的关键词
  -gopt int
        GoPoc运行线程 (default 50)
  -htpc int
        Hunter 最大查询页数 (default 10)
  -htps int
        Hunter 每页资产条数 (default 100)
  -hunter
        从hunter中获取资产,开启此选项后-t参数变更为需要在hunter中搜索的关键词
  -ld
        允许域名解析到局域网
  -lpm
        低感知模式 (当前只支持Hunter,且默认选择Hunter)
  -mp string
        指定masscan路径 (default "masscan")
  -nd
        关闭主动指纹探测
  -ngp
        关闭Golang Poc探测
  -nh
        禁用域名绑定资产探测
  -ni
        禁用Interactsh服务器,排除反连模版
  -nicmp
        当启用主机发现功能时,禁用ICMP主机发现功能
  -npoc
        关闭漏洞探测
  -nsbf
        关闭子域名爆破
  -nsf
        关闭被动子域名枚举
  -o string
        html格式输出报告
  -oip
        从网络空间搜索引擎中以IP:Port的形式拉取资产,而不是Domain(IP):Port
  -p string
        目标IP扫描的端口。默认扫描Top1000
  -pc int
        一个IP的端口数量阈值,当一个端口的IP数量超过此数量,此IP将会被抛弃 (default 300)
  -poc string
        模糊匹配Poc名称
  -proxy string
        HTTP代理,在外网可利用云函数/代理池的多出口特性恶心防守。socks代理建议配合proxychains等工具 例: http://127.0.0.1:8080
  -psto int
        TCP扫描超时时间(秒) (default 6)
  -pt
        测试HTTP代理 (default true)
  -ptu string
        测试HTTP代理的url,需要url返回200 (default "https://www.baidu.com")
  -qkmc int
        Quake 查询资产条数 (default 100)
  -quake
        从Quake中获取资产,开启此选项后-t参数变更为需要在quake中搜索的关键词
  -rod string
        Set the default value of options used by rod.
  -sbft int
        爆破子域名协程数量 (default 150)
  -sd
        开启子域名枚举
  -st string
        端口扫描方式 tcp使用TCP扫描(慢),syn为调用masscan进行扫描(需要masscan依赖) (default "tcp")
  -synt int
        SYN扫描线程(masscan) (default 10000)
  -t string
        被扫描的目标。192.168.0.1 192.168.0.0/16 192.168.0.1:80 baidu.com:80 target.txt
  -tc int
        TCP全连接获取Banner的线程数量 (default 30)
  -tcpp
        当启用主机发现功能时,启用TCP主机发现功能
  -tcpt int
        TCP扫描线程 (default 600)
  -wt int
        Web探针线程,根据网络环境调整 (default 100)
  -wto int
        Web探针超时时间,根据网络环境调整 (default 12)

相关推荐

得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践

一、摘要在前端可观测分析场景中,需要实时观测并处理多地、多环境的运行情况,以保障Web应用和移动端的可用性与性能。传统方案往往依赖代理Agent→消息队列→流计算引擎→OLAP存储...

warm-flow新春版:网关直连和流程图重构

本期主要解决了网关直连和流程图重构,可以自此之后可支持各种复杂的网关混合、多网关直连使用。-新增Ruoyi-Vue-Plus优秀开源集成案例更新日志[feat]导入、导出和保存等新增json格式支持...

扣子空间体验报告

在数字化时代,智能工具的应用正不断拓展到我们工作和生活的各个角落。从任务规划到项目执行,再到任务管理,作者深入探讨了这款工具在不同场景下的表现和潜力。通过具体的应用实例,文章展示了扣子空间如何帮助用户...

spider-flow:开源的可视化方式定义爬虫方案

spider-flow简介spider-flow是一个爬虫平台,以可视化推拽方式定义爬取流程,无需代码即可实现一个爬虫服务。spider-flow特性支持css选择器、正则提取支持JSON/XML格式...

solon-flow 你好世界!

solon-flow是一个基础级的流处理引擎(可用于业务规则、决策处理、计算编排、流程审批等......)。提供有“开放式”驱动定制支持,像jdbc有mysql或pgsql等驱动,可...

新一代开源爬虫平台:SpiderFlow

SpiderFlow:新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。-精选真开源,释放新价值。概览Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台,它使用Ja...

通过 SQL 训练机器学习模型的引擎

关注薪资待遇的同学应该知道,机器学习相关的岗位工资普遍偏高啊。同时随着各种通用机器学习框架的出现,机器学习的门槛也在逐渐降低,训练一个简单的机器学习模型变得不那么难。但是不得不承认对于一些数据相关的工...

鼠须管输入法rime for Mac

鼠须管输入法forMac是一款十分新颖的跨平台输入法软件,全名是中州韵输入法引擎,鼠须管输入法mac版不仅仅是一个输入法,而是一个输入法算法框架。Rime的基础架构十分精良,一套算法支持了拼音、...

Go语言 1.20 版本正式发布:新版详细介绍

Go1.20简介最新的Go版本1.20在Go1.19发布六个月后发布。它的大部分更改都在工具链、运行时和库的实现中。一如既往,该版本保持了Go1的兼容性承诺。我们期望几乎所...

iOS 10平台SpriteKit新特性之Tile Maps(上)

简介苹果公司在WWDC2016大会上向人们展示了一大批新的好东西。其中之一就是SpriteKitTileEditor。这款工具易于上手,而且看起来速度特别快。在本教程中,你将了解关于TileE...

程序员简历例句—范例Java、Python、C++模板

个人简介通用简介:有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读过XXX,XXX等多个开源项目源码从而学习增强代码的健壮性与扩展性。具备良好的代码编程习惯及文档编写能力,参与多个高...

Telerik UI for iOS Q3 2015正式发布

近日,TelerikUIforiOS正式发布了Q32015。新版本新增对XCode7、Swift2.0和iOS9的支持,同时还新增了对数轴、不连续的日期时间轴等;改进TKDataPoin...

ios使用ijkplayer+nginx进行视频直播

上两节,我们讲到使用nginx和ngixn的rtmp模块搭建直播的服务器,接着我们讲解了在Android使用ijkplayer来作为我们的视频直播播放器,整个过程中,需要注意的就是ijlplayer编...

IOS技术分享|iOS快速生成开发文档(一)

前言对于开发人员而言,文档的作用不言而喻。文档不仅可以提高软件开发效率,还能便于以后的软件开发、使用和维护。本文主要讲述Objective-C快速生成开发文档工具appledoc。简介apple...

macOS下配置VS Code C++开发环境

本文介绍在苹果macOS操作系统下,配置VisualStudioCode的C/C++开发环境的过程,本环境使用Clang/LLVM编译器和调试器。一、前置条件本文默认前置条件是,您的开发设备已...