跳到主要内容

smb

smb 库提供 SMB(Windows 文件共享)协议连接能力,用于会话建立、凭据验证与共享访问测试,常用于内网横向与认证安全评估。

典型使用场景:

  • 建立连接:smb.Connect(addr, opts...) 连接 SMB 服务并建立会话,配 smb.username / smb.password / smb.hash(哈希传递)/ smb.domain / smb.workstation 提供认证信息。

与相邻库的关系:smb 属于协议交互工具,与 brute(口令/哈希爆破)、ldapservicescan(服务识别)配合,常用于内网 SMB 的安全评估。

共 7 个函数

函数索引

函数参数返回值说明
smb.debugw bool_smbConfigHandler是一个 SMB 连接配置选项,用于开启调试日志输出
smb.domainw string_smbConfigHandler是一个 SMB 连接配置选项,用于设置认证所属的域
smb.hashw string_smbConfigHandler是一个 SMB 连接配置选项,用于设置 NTLM 哈希以进行哈希传递(Pass-the-Hash)认证
smb.passwordpass string_smbConfigHandler是一个 SMB 连接配置选项,用于设置认证密码
smb.usernameuser string_smbConfigHandler是一个 SMB 连接配置选项,用于设置认证用户名
smb.workstationw string_smbConfigHandler是一个 SMB 连接配置选项,用于设置工作站名称

可变参数函数索引

函数参数返回值说明
smb.Connectaddr string, opts ..._smbConfigHandler*smb.Session, error建立一个 SMB 会话,返回一个可进行文件共享操作的会话对象

函数详情

debug

debug(w bool) _smbConfigHandler

是一个 SMB 连接配置选项,用于开启调试日志输出

参数

参数名类型说明
wbool是否开启调试模式

返回值

序号类型说明
r1_smbConfigHandler一个 SMB 连接配置选项,作为可变参数传入 smb.Connect

示例

// 开启调试模式连接 SMB,此处仅作示意
session = smb.Connect("192.168.1.1:445", smb.username("administrator"), smb.password("123456"), smb.debug(true))~
defer session.Close()

domain

domain(w string) _smbConfigHandler

是一个 SMB 连接配置选项,用于设置认证所属的域

参数

参数名类型说明
wstring域名称

返回值

序号类型说明
r1_smbConfigHandler一个 SMB 连接配置选项,作为可变参数传入 smb.Connect

示例

// 指定域进行 SMB 域认证,此处仅作示意
session = smb.Connect("192.168.1.1:445", smb.username("administrator"), smb.password("123456"), smb.domain("CORP"))~
defer session.Close()

hash

hash(w string) _smbConfigHandler

是一个 SMB 连接配置选项,用于设置 NTLM 哈希以进行哈希传递(Pass-the-Hash)认证

参数

参数名类型说明
wstringNTLM 哈希字符串

返回值

序号类型说明
r1_smbConfigHandler一个 SMB 连接配置选项,作为可变参数传入 smb.Connect

示例

// 使用 NTLM 哈希进行哈希传递认证连接 SMB,此处仅作示意
session = smb.Connect("192.168.1.1:445", smb.username("administrator"), smb.hash("aad3b435b51404eeaad3b435b51404ee:..."))~
defer session.Close()

password

password(pass string) _smbConfigHandler

是一个 SMB 连接配置选项,用于设置认证密码

参数

参数名类型说明
passstring认证密码

返回值

序号类型说明
r1_smbConfigHandler一个 SMB 连接配置选项,作为可变参数传入 smb.Connect

示例

// 指定用户名密码连接 SMB,此处仅作示意
session = smb.Connect("192.168.1.1:445", smb.username("administrator"), smb.password("123456"))~
defer session.Close()

username

username(user string) _smbConfigHandler

是一个 SMB 连接配置选项,用于设置认证用户名

参数

参数名类型说明
userstring认证用户名

返回值

序号类型说明
r1_smbConfigHandler一个 SMB 连接配置选项,作为可变参数传入 smb.Connect

示例

// 指定用户名密码连接 SMB,此处仅作示意
session = smb.Connect("192.168.1.1:445", smb.username("administrator"), smb.password("123456"))~
defer session.Close()

workstation

workstation(w string) _smbConfigHandler

是一个 SMB 连接配置选项,用于设置工作站名称

参数

参数名类型说明
wstring工作站名称

返回值

序号类型说明
r1_smbConfigHandler一个 SMB 连接配置选项,作为可变参数传入 smb.Connect

示例

// 指定工作站名称连接 SMB,此处仅作示意
session = smb.Connect("192.168.1.1:445", smb.username("administrator"), smb.password("123456"), smb.workstation("WIN-PC"))~
defer session.Close()

可变参数函数详情

Connect

Connect(addr string, opts ..._smbConfigHandler) (*smb.Session, error)

建立一个 SMB 会话,返回一个可进行文件共享操作的会话对象

必填参数

参数名类型说明
addrstring目标地址,格式为 host 或 host:port,未指定端口时默认 445

可选参数

参数名类型说明
opts..._smbConfigHandler可选配置,例如 smb.username、smb.password、smb.domain、smb.hash

返回值

序号类型说明
r1*smb.SessionSMB 会话对象,可进行共享枚举、文件读写等操作
r2error错误信息,连接或认证失败时返回非空

示例

// 建立 SMB 会话,依赖目标服务,此处仅作示意
session = smb.Connect("192.168.1.1:445", smb.username("administrator"), smb.password("123456"))~
defer session.Close()