跳到主要内容

brute

brute 库是弱口令爆破框架,内置对多种协议/服务(如 SSH、FTP、数据库、Web 等)的爆破插件,支持自定义用户名/密码字典、并发控制与自定义校验回调,是认证安全评估的核心工具。

典型使用场景:

  • 选择爆破类型:brute.GetAvailableBruteTypes 列出支持的服务类型,brute.New(type, opts...) 创建爆破器并对目标执行。
  • 字典管理:brute.userList / brute.passList 指定字典,brute.autoDict 启用内置字典,brute.GetUsernameListFromBruteType / brute.GetPasswordListFromBruteType 取出某类型的内置字典。
  • 速率与策略:brute.concurrent / brute.concurrentTarget 控制并发,brute.minDelay / brute.maxDelay 控制节流,brute.okToStop / brute.finishingThreshold 控制命中后停止,brute.bruteHandler 自定义校验逻辑。

与相邻库的关系:brute 常接在资产发现之后——synscan/servicescan 找到开放服务,brute 对其做口令爆破,命中结果可经 risk 记录、report 汇总。

共 15 个函数

函数索引

函数参数返回值说明
brute.GetAvailableBruteTypes-[]string返回当前支持的所有内置爆破类型(协议/服务)名称列表
brute.GetPasswordListFromBruteTypet string[]string返回指定爆破类型对应的内置密码字典
brute.GetUsernameListFromBruteTypet string[]string返回指定爆破类型对应的内置用户名字典
brute.autoDict-BruteOpt根据爆破类型自动加载内置的用户名与密码字典
brute.bruteHandlercb func(item *bruteutils.BruteItem) *bruteutils.BruteItemResultBruteOpt自定义爆破的核心处理函数,覆盖默认的协议爆破逻辑
brute.concurrentc intBruteOpt设置单个目标内部的并发尝试数量
brute.concurrentTargetc intBruteOpt设置同时进行爆破的目标数量(默认 256)
brute.debugb boolBruteOpt设置爆破器是否开启调试模式,开启后会输出更详细的过程日志
brute.finishingThresholdi intBruteOpt设置单个目标的失败容忍阈值,连续失败达到该值后提前结束该目标的爆破
brute.maxDelaymax intBruteOpt设置每个目标两次尝试之间的最大间隔秒数
brute.minDelaymin intBruteOpt设置每个目标两次尝试之间的最小间隔秒数
brute.okToStopb boolBruteOpt设置当某个目标爆破出有效凭据后是否立即停止对该目标的后续尝试

可变参数函数索引

函数参数返回值说明
brute.NewtypeStr string, opts ...BruteOpt*yakBruter, error创建一个指定类型的弱口令爆破器,可通过选项配置字典、并发、延迟等,再调用 Start 对目标执行爆破
brute.passListpasses ...stringBruteOpt设置爆破使用的密码字典
brute.userListusers ...stringBruteOpt设置爆破使用的用户名字典

函数详情

GetAvailableBruteTypes

GetAvailableBruteTypes() []string

返回当前支持的所有内置爆破类型(协议/服务)名称列表

在 yak 中通过 brute.GetAvailableBruteTypes 调用

返回值

序号类型说明
r1[]string支持的爆破类型名称字符串切片,如 ssh、ftp、redis、mysql 等

示例

types = brute.GetAvailableBruteTypes()
assert len(types) > 0, "should expose builtin brute types"
// 常见服务 ssh 应在支持列表中
println("ssh" in types) // OUT: true
assert "ssh" in types, "ssh brute type should be available"

GetPasswordListFromBruteType

GetPasswordListFromBruteType(t string) []string

返回指定爆破类型对应的内置密码字典

在 yak 中通过 brute.GetPasswordListFromBruteType 调用

参数

参数名类型说明
tstring爆破类型名称,如 ssh、mysql

返回值

序号类型说明
r1[]string该类型的内置密码候选列表

示例

passwords = brute.GetPasswordListFromBruteType("ssh")
assert len(passwords) > 0, "ssh password dict should not be empty"

GetUsernameListFromBruteType

GetUsernameListFromBruteType(t string) []string

返回指定爆破类型对应的内置用户名字典

在 yak 中通过 brute.GetUsernameListFromBruteType 调用

参数

参数名类型说明
tstring爆破类型名称,如 ssh、mysql

返回值

序号类型说明
r1[]string该类型的内置用户名候选列表

示例

users = brute.GetUsernameListFromBruteType("ssh")
assert len(users) > 0, "ssh username dict should not be empty"

autoDict

autoDict() BruteOpt

根据爆破类型自动加载内置的用户名与密码字典

在 yak 中通过 brute.autoDict 调用

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:自动使用内置字典
bruter = brute.New("ssh", brute.autoDict())~

bruteHandler

bruteHandler(cb func(item *bruteutils.BruteItem) *bruteutils.BruteItemResult) BruteOpt

自定义爆破的核心处理函数,覆盖默认的协议爆破逻辑

在 yak 中通过 brute.bruteHandler 调用

参数

参数名类型说明
cbfunc(item *bruteutils.BruteItem) *bruteutils.BruteItemResult处理单个爆破项并返回结果的回调函数

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:自定义爆破处理逻辑

bruter = brute.New("ssh", brute.bruteHandler(func(item) {
return item.Result()
}))~

concurrent

concurrent(c int) BruteOpt

设置单个目标内部的并发尝试数量

在 yak 中通过 brute.concurrent 调用

参数

参数名类型说明
cint单目标并发数

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:单目标并发设为 1
bruter = brute.New("ssh", brute.concurrent(1))~

concurrentTarget

concurrentTarget(c int) BruteOpt

设置同时进行爆破的目标数量(默认 256)

在 yak 中通过 brute.concurrentTarget 调用

参数

参数名类型说明
cint并发目标数量

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:同时爆破 10 个目标
bruter = brute.New("ssh", brute.concurrentTarget(10))~

debug

debug(b bool) BruteOpt

设置爆破器是否开启调试模式,开启后会输出更详细的过程日志

在 yak 中通过 brute.debug 调用

参数

参数名类型说明
bbool是否开启调试

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:开启调试模式
bruter = brute.New("ssh", brute.debug(true))~

finishingThreshold

finishingThreshold(i int) BruteOpt

设置单个目标的失败容忍阈值,连续失败达到该值后提前结束该目标的爆破

在 yak 中通过 brute.finishingThreshold 调用

参数

参数名类型说明
iint失败阈值

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:设置失败阈值
bruter = brute.New("ssh", brute.finishingThreshold(50))~

maxDelay

maxDelay(max int) BruteOpt

设置每个目标两次尝试之间的最大间隔秒数

在 yak 中通过 brute.maxDelay 调用

参数

参数名类型说明
maxint最大间隔(秒)

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:设置最大间隔 5 秒
bruter = brute.New("ssh", brute.maxDelay(5))~

minDelay

minDelay(min int) BruteOpt

设置每个目标两次尝试之间的最小间隔秒数

在 yak 中通过 brute.minDelay 调用

参数

参数名类型说明
minint最小间隔(秒)

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:设置最小间隔 1 秒
bruter = brute.New("ssh", brute.minDelay(1))~

okToStop

okToStop(b bool) BruteOpt

设置当某个目标爆破出有效凭据后是否立即停止对该目标的后续尝试

在 yak 中通过 brute.okToStop 调用

参数

参数名类型说明
bbool命中后是否停止

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:命中即停止
bruter = brute.New("ssh", brute.okToStop(true))~

可变参数函数详情

New

New(typeStr string, opts ...BruteOpt) (*yakBruter, error)

创建一个指定类型的弱口令爆破器,可通过选项配置字典、并发、延迟等,再调用 Start 对目标执行爆破

在 yak 中通过 brute.New 调用

必填参数

参数名类型说明
typeStrstring爆破类型名称,如 ssh、mysql、redis

可选参数

参数名类型说明
opts...BruteOpt可选配置项,如 brute.userList、brute.passList、brute.concurrent 等

返回值

序号类型说明
r1*yakBruter爆破器对象,可调用 Start(targets...) 执行爆破
r2error错误信息,类型不支持时非 nil

示例

// 该示例为示意性用法:对目标执行 ssh 弱口令爆破
bruter = brute.New("ssh",

brute.userList("root", "admin"),
brute.passList("123456", "password"),
brute.concurrent(1),

)~
res = bruter.Start("127.0.0.1:22")~

for item = range res {
if item.Ok {
println("found:", item.Username, item.Password)
}
}

passList

passList(passes ...string) BruteOpt

设置爆破使用的密码字典

在 yak 中通过 brute.passList 调用

可选参数

参数名类型说明
passes...string一个或多个密码

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:指定密码字典
bruter = brute.New("ssh", brute.passList("123456", "password"))~

userList

userList(users ...string) BruteOpt

设置爆破使用的用户名字典

在 yak 中通过 brute.userList 调用

可选参数

参数名类型说明
users...string一个或多个用户名

返回值

序号类型说明
r1BruteOpt一个 brute.New 可接收的配置选项

示例

// 该示例为示意性用法:指定用户名字典
bruter = brute.New("ssh", brute.userList("root", "admin"))~