0.1 DarKnuclei 入门技巧

DarKnuclei是一款适合针对红蓝对抗的一款工具【可跨平台使用】,不仅仅可以在红队视角下的快速打点,还可以在蓝队视角下针对红队基础设施与服务进行探针扫描,DarKnuclei在针对红队基础设施进行扫描针对C2,采用强/弱特征,通过C2一些特征值去识别探针,在保证准确率的情况下去尽可能识别多C2,内置yaml语法,使用者可以自己编写yaml文件,识别特定的C2。

项目地址:https://github.com/RuoJi6/DarKnuclei

0.1.1 前置配置

在使用DarKnuclei之前要进行一些设置,需要满足以下条件:

  1. 如果需要进行漏洞扫描需要将nuclei加入环境变量【同时需要下载nuclei-templates,并在config.ini中配置】。
  2. 如需使用测绘功能请修改config.ini添加key。
  3. python版本:python3
  4. 如果是mac或linux请下载对于的执行程序在plugin目录,并配置config.ini
    1. observer_ward
    2. gogo
    3. tlsx

配置完以上信息,就可以完美的使用DarKnuclei。

0.1.2 在红队视角下

不管是蓝队模块还是会对模块扫描后的结果会保存在project文件中,其中txt为详细信息,html为简略信息。

在上文中,配置完成之后,我们运行python main.py -h可以查看帮助信息;

image-20250128005146000

此时NSM WEB GOGO属于红队模块,RTSCAN属于蓝队模块,接下来我们展开讲讲红队模块:

0.1.2.1 NSM [测绘资产]

解决问题:在攻防的时候,拿到手资产,是ip或者是域名又或者是公司怎么样进行快速打点?

此模块是通过测绘平台进行扫描,前提是需要配置好fofa,以及quake key。

image-20250128005554308

python3 main.py NSM -h查看帮助信息。

案例1

在案例1中,我们可以看到输入目标资产的一些信息,查询相关资产【注意如果没有加上-n-b视为只资产测绘进行查询,而不进行指纹识别以及漏洞扫描】

1
python3 main.py NSM -ip xxx.xxx.xxx.xxx -icp 京ICP证030173号 -domain baidu.com -body 百度公司 -title 百度公司管理

在下面两个参数重,根据需求选择,选择之后,将进行相应的模块。

1
2
-b, --observer        指纹扫描
-n, --nuclei 指纹+漏洞扫描

【DarKnuclei在设计只初参考了大量的扫描器,DarKnuclei在进行漏洞扫描的时候,均是先指纹识别,通过指纹查询对于的POC,才进行对应的漏洞扫描】

0.1.2.2 WEB [WEB扫描]

解决问题:在攻防的时候,拿到一堆资产的时候,怎么样快速打点?

此模块没有测绘功能,需要用户输入目标,或者是目标集合的文件【如:url.txt】,而且需要注意的是,输入的目标需要是http://或者是https://开头的资产才行,否则会跳过此资产。

image-20250128010655050

0.1.2.3 GOGO [GOGO扫描]

解决问题:在攻防的时候,拿到一堆资产的时候,而且资产杂乱,有的是IP,有的是域名,有的带有http,又或者是https,这个时候此工具可以快速的识别并整理资产。【自动识别web资产还有扫描IP信息,识别是http或者是https】

强烈推荐此模块,此模块在针对上一个模块中,针对资产杂乱的问题进行解决,并且,可以定制指定端口扫描。

image-20250128011303600

其中,此工具在使用的时候,必须调用下面两个参数,二选一。

1
2
-b, --observer        指纹扫描
-n, --nuclei 指纹+漏洞扫描

0.1.3 在蓝队视角下 【RTSCAN】

解决问题:在通过设备捕捉到红队IP的时候,蓝队成员在编写溯源报告的时候,针对红队服务器上开放了什么服务,或者说使用了什么C2进行的攻击,不清楚,此工具不仅仅针对红队平台【ARL…..】,可以针对服务【JNDI…】,还可以针对红队部署的C2【vshell…..】等。

在下图中,列出了目前版本覆盖类型以及指纹。

0.1.3.1 特征覆盖

✅ 强特征

☑️ 弱特征

平台/服务

名字 类型 特征 计划中 备注
ARL(灯塔) platform
Scope Sentry platform
NPS platform
AWVS platform
Nessus platform
XSS平台 platform
BeEF platform
H platform
LangSrcCurise platform
Medusa platform
NextScan platform
prismx platform
CyberEdge platform
SerializedPayloadGenerator platform
web-chains platform
RevSuit platform
MemShellParty platform
vulfocus platform
gophish platform
testnet platform
rengine platform
JNDI-Injection-Exploit-Plus Tools 只针对ldap强特征,rmi,jetty弱特征
JNDI-Injection-Exploit Tools 只针对ldap强特征,rmi,jetty弱特征
rogue-jndi Tools 只针对ldap强特征,rmi,jetty弱特征
JNDIMap Tools 只针对ldap强特征,rmi,jetty弱特征
ysoserial Tools ✔️

C2

名字 版本 登录/连接 监听端口 UDP流量 TCP流量 HTTP/S流量 计划中 备注
vshell 4.9.3~4.6.0
Cobalt Strike
Metasploit
Supershell 2.0.0
Viper ☑️ ✔️
Daybreak ✔️
chisel ✔️
sliver ✔️
Havoc ✔️
Iom ✔️
Villain ✔️
VenomRA ✔️
ShadowPad ✔️
Shad0w ✔️
Remcos RAT ✔️
QuasarRAT ✔️
Pupy-C2 ✔️
PoshC2 ✔️
PlugX RAT ✔️
Orcus-RAT ✔️
Ninja ✔️
Mythic ✔️
Havoc ✔️
Hak5 Cloud ✔️
Gh0st ✔️
Empire ✔️
DeimosC2 ✔️
DcRAT ✔️
Covenant ✔️
Brute Ratel C4 ✔️
BitRAT ✔️
AsyncRAT ✔️
manjusaka ✔️

0.1.3.2 使用

image-20250128012445975

python3 main.py RTSCAN -a 此命令可以查看支持的C2的类型,name,以及tags等。

在下面命令中,扫描xxx.xxx.xxxIP中的带有C2 tags的yaml文件。【如果没有指定端口,将会扫描默认常见红队开放端口】

1
python3 main.py RTSCAN - i xxx.xxx.xxx -t c2    

注意:有些扫描时有感的,所以请配置代理。

效果:

image-20250128013136237

image-20250128013104111

0.1.4 日志&报错

在程序运行的时候,不可避免因为代码或者说网络问题出现的错误,日志文件会在log_目录下,以周为单位记录日子,且保留最多3个备份文件,超过的旧文件会被删除。

日志的多个格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2025-01-25 16:11 || INFO  ||  run_def.py  || gogo+指纹+漏洞 || /Users/hacker/filename/代码/代码/RT/DarKnuclei_scan/run_def.py 263
# 时间 || 级别 || 文件 || 模块 || 文件绝对路径 || 行数
# 通常我们只需要关注ERRROR信息,通常在发生ERROR错误的时候,会出现报错原因,且在日志中呀详细的记录,下面是一个错误演示,其中我们可以通过日志进行排查错误。

2025-01-25 16:10 || ERROR || scan.py || An unexpected error occurred: [Errno 2] No such file or directory: 'plugin\\gogo_darwin_arm64' || /Users/hacker/filename/代码/代码/RT/DarKnuclei_scan/scan.py 1008
2025-01-25 16:10 || ERROR || scan.py || An unexpected error occurred: [Errno 2] No such file or directory: 'plugin\\gogo_darwin_arm64'
Traceback (most recent call last):
File "/Users/hacker/filename/代码/代码/RT/DarKnuclei_scan/scan.py", line 866, in scan_gogo_one
with subprocess.Popen(
File "/Users/jiruo/.pyenv/versions/3.9.21/lib/python3.9/subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/Users/jiruo/.pyenv/versions/3.9.21/lib/python3.9/subprocess.py", line 1837, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'plugin\\gogo_darwin_arm64'
|| /Users/hacker/filename/代码/代码/RT/DarKnuclei_scan/scan.py 1009

0.1.5 扩展红队YAML

DarKnuclei 在红队视角下,用户可自定义YAML文件,针对特定的服务或者C2进行扩展。【待定完成】