如何解决 Samba 的弱 MD4 哈希问题

如何解决 Samba 的弱 MD4 哈希问题

我们在 RedHat(RHEL7.9)系统上使用 samba 配置,其中 SMB 身份验证基于 NTLM 密码哈希,它基本上是质询-响应身份验证的明文凭证,存储在 LDAP(Oracle 统一目录)目录数据库中的单独属性 sambaNTPassword 中。

因此,我们的安全团队进行了一些渗透测试,发现我们的 Samba 使用的 MD4 可以被拦截,因为它携带较弱的哈希值。

除了身份验证之外,确保数据完整性和传输过程中加密也是 SMB 安全的重要组成部分,而这又依赖于 MD4 哈希。

下面是我的 Samba 配置示例:

 cat /etc/samba/smb.conf

[global]
  log file                       = /var/log/samba/%m.log
  log level                      = 2
  max log size                   = 50
  netbios name                   = FDI0816
  server string                  = FDI0816.myorg.com
  workgroup                      = FDI

; ldap configuration
  invalid users                  = root +wheel
  encrypt passwords              = Yes
  guest account                  = nobody
  ldap admin dn                  = cn=sambaAdmin,ou=users,o=services
  ldap group suffix              = ou=Group
  ldap passwd sync               = only
  ldap ssl                       = no
  ldap suffix                    = ou=FDI,o=myorg
  ldap timeout                   = 4
  ldap user suffix               = ou=People
  map to guest                   = Bad User
  security                       = user
  passdb backend = ldapsam:"ldaps://ldap.FDI.myorg.com ldaps://ldap.rnd.myorg.com"

; client connection settings
  deadtime                       = 15
  dns proxy                      = No
  lm announce                    = No
  server min protocol            = SMB2

; shares default settings
  create mask                    = 0750
  directory mask                 = 2750
  posix locking                  = No
  strict allocate                = Yes
  unix extensions                = No
  wide links                     = Yes

; printers are disabled
  disable spoolss                = Yes
  load printers                  = No
  printcap name                  = /dev/null
  printing                       = bsd
  show add printer wizard        = No

[homes]
  browseable                     = No
  comment                        = Your Home
  create mode                    = 0640
  csc policy                     = disable
  directory mask                 = 0750
  public                         = No
  writeable                      = Yes

[proj]
  browseable                     = Yes
  comment                        = Project directories
  csc policy                     = disable
  path                           = /proj
  public                         = No
  writeable                      = Yes

[home]
  browseable                     = Yes
  comment                        = Project directories
  csc policy                     = disable
  path                           = /home
  public                         = No
  writeable                      = Yes

LDAP 端用户详细信息及其属性:

例子:

Attribute Description       value
sambaNTPassword             0735509A0ED9A577BD7D8GG7BC1T
uidNumber                   32222
userPassword                {RBKBD4-HMAC-SHA512)...

其他详情:

Samba Version: 4.10
Client side smb version: 2
Samba Server : RHEL7.9

如果有人遇到过这个问题并且有解决方案,那么我想寻求指导或建议来缓解这个问题。

更新后收到的安全评估文件:

在阅读并查看了渗透测试结果后,我发现渗透测试人员获得了基于 LDAP 的用户内部用户账户,并发现了 LDAP(Oracle Unified Directory)的弱点,他们发现了“LDAP Anonymous Null Bind”,因此他们可以通过 LDAP 服务检索关键信息而无需提供任何身份验证凭据,因为它还支持使用 NULL 和空基础对象的搜索请求,因此未经身份验证的攻击者可以利用并获取信息,甚至任何 LDAP 的先验知识。

因此,获得了对 LDAP 服务器的访问权限,因为它允许与 LDAP 服务器建立 NUll/empty 基础连接,并转储了所有 LDAP 数据,从而轻松获得了userPassword& 的所有密码信息sambaNTPassword

为了执行“传递哈希”攻击,使用了工具“Mimikatz”和浏览器“Internet Explorer”。

然而,这里值得强调的是,为了访问该组织,他们需要从外部进行 VPN 访问,因此他们使用meterpreter工具通过 paylod 绕过 VPN reverse https connection

答案1

NT 密码哈希使用 MD4,您对此无能为力。

但是您已经通过使用 ldaps(使用 TLS 保护的 LDAP)缓解了网络拦截问题。除非您的 TLS 配置存在严重问题,否则无法从网络拦截这些哈希。我最感兴趣的是了解您的安全团队如何破解 TLS 的细节。

获取这些密码哈希的唯一其他方法是直接本地访问 LDAP 服务器,或者如果出现访问控制故障,允许某人查询它们。但是您没有提到这些。

相关内容