삼바를 사용하여 약한 MD4 해시 문제를 극복하는 방법

삼바를 사용하여 약한 MD4 해시 문제를 극복하는 방법

우리는 RedHat(RHEL7.9) 시스템에서 Samba 구성을 사용하고 있습니다. 여기서 SMB 인증은 기본적으로 LDAP의 별도 속성인 sambaNTPassword에 저장되는 시도-응답 인증을 위한 일반 텍스트 자격 증명인 NTLM 비밀번호 해시를 기반으로 합니다. (Oracle 통합 디렉토리) 디렉토리 데이터베이스.

그래서 우리 보안팀은 몇 가지 침투 테스트를 수행한 결과 삼바에서 사용하는 MD4가 더 약한 해시를 전달하므로 가로챌 수 있다는 것을 발견했습니다.

인증 외에도 전송 중 데이터 무결성 및 암호화를 보장하는 것은 다시 MD4 해시에 의존하는 SMB 보안의 중요한 부분입니다.

다음은 내 삼바 구성 샘플입니다.

 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 서버에 대한 NULL/비어 있는 기본 연결을 허용하고 userPassword& 에 대한 모든 비밀번호 정보를 쉽게 얻을 수 있는 모든 LDAP 데이터를 덤프하여 LDAP 서버에 대한 액세스 권한을 얻었습니다 sambaNTPassword.

"pass-the-hash" 공격을 수행하기 위해 "Mimikatz" 도구와 "Internet Explorer" 브라우저가 사용되었습니다.

그러나 여기서 강조할 점은 조직에 액세스하려면 외부에서 VPN 액세스가 필요했기 때문에 meterpreter도구를 사용하여 페이로드와 동일한 것을 우회했다는 것입니다 reverse https connection.

답변1

NT 비밀번호 해시는 MD4를 사용하므로 이에 대해 할 수 있는 일은 없습니다.

그러나 TLS로 보안되는 LDAP인 ldaps를 사용하여 네트워크 가로채기 문제를 이미 완화했습니다. TLS 구성에 큰 문제가 없는 한 이러한 해시는 네트워크에서 가로챌 수 없습니다. 귀하의 보안 팀이 어떻게 TLS를 위반했는지 자세히 듣고 싶습니다.

이러한 비밀번호 해시를 얻을 수 있는 유일한 다른 방법은 LDAP 서버에 대한 직접 로컬 액세스를 사용하거나 누군가가 이를 쿼리할 수 있는 액세스 제어 오류가 있는 경우입니다. 하지만 당신은 이것에 대해 아무 것도 언급하지 않았습니다.

관련 정보