tags: Enumerazione_Utenti_SMB SMB


Nmap con lo script smb-enum-users

Nmap è uno strumento molto potente per l’esplorazione di reti. Puoi usarlo per eseguire la scansione della tua sottorete e enumerare gli utenti SMB.

Comando Nmap con script SMB:

nmap -p 139,445 --script smb-enum-users 10.10.10.55/24
  • -p 139,445: Specifica le porte SMB (139 per NetBIOS e 445 per SMB direttamente).

  • --script smb-enum-users: Usa lo script per enumerare gli utenti SMB.

  • 10.10.10.55/24: La sottorete su cui eseguire la scansione.

Enum4linux

Enum4linux è un altro strumento utile per enumerare informazioni tramite SMB. Puoi usarlo per ottenere informazioni sugli utenti, le condivisioni e molto altro.

Comando Enum4linux per enumerare gli utenti:

enum4linux -U 10.10.10.55
  • -U: Opzione per enumerare gli utenti tramite SMB.

  • 10.10.10.55: L’indirizzo IP del target. Puoi anche usare una rete (ad esempio 10.10.10.55/24).

Enum4linux ti restituirà una lista degli utenti SMB.

Enum4linux-ng

./enum4linux-ng.py 10.129.14.128 -A

Crackmapexec

 
crackmapexec smb 10.10.x.x -u <wordlist> -p ""
 
crackmapexec smb 10.129.33.237 -u 'guest' -p '' --rid-brute
 
crackmapexec smb 10.129.33.237 -u '' -p '' --rid-brute
 

Questo strumento proverà ad enumerare tutti gli utenti disponibili. Se non si inserisce la flag -p "" proverà ogni parola della wordlist sia per username che per password, con questo inserimento invece proverà ogni utente con password vuota.

SMBclient

Puoi anche usare smbclient per tentare di connetterti a un condiviso SMB e vedere gli utenti.

Comando per elencare gli utenti tramite smbclient:

smbclient -L //10.10.10.55 -U "%"
  • -L: Lista delle condivisioni SMB.

  • //10.10.10.55: L’indirizzo IP del target.

  • -U "%" : Tentativo di accesso anonimo senza credenziali (a meno che l’autenticazione non sia richiesta).

Se il server SMB consente connessioni anonime, dovresti ottenere un elenco di condivisioni disponibili e potenzialmente un elenco di utenti se configurato correttamente.

RPCClient

 
rpcclient $> enumdomusers
 
user:[mrb3n] rid:[0x3e8]
user:[cry0l1t3] rid:[0x3e9]
 
 
rpcclient $> queryuser 0x3e9
 
        User Name   :   cry0l1t3
        Full Name   :   cry0l1t3
        Home Drive  :   \\devsmb\cry0l1t3
        Dir Drive   :
        Profile Path:   \\devsmb\cry0l1t3\profile
        Logon Script:
        Description :
        Workstations:
        Comment     :
        Remote Dial :
        Logon Time               :      Do, 01 Jan 1970 01:00:00 CET
        Logoff Time              :      Mi, 06 Feb 2036 16:06:39 CET
        Kickoff Time             :      Mi, 06 Feb 2036 16:06:39 CET
        Password last set Time   :      Mi, 22 Sep 2021 17:50:56 CEST
        Password can change Time :      Mi, 22 Sep 2021 17:50:56 CEST
        Password must change Time:      Do, 14 Sep 30828 04:48:05 CEST
        unknown_2[0..31]...
        user_rid :      0x3e9
        group_rid:      0x201
        acb_info :      0x00000014
        fields_present: 0x00ffffff
        logon_divs:     168
        bad_password_count:     0x00000000
        logon_count:    0x00000000
        padding1[0..7]...
        logon_hrs[0..21]...
 
 
rpcclient $> queryuser 0x3e8
 
        User Name   :   mrb3n
        Full Name   :
        Home Drive  :   \\devsmb\mrb3n
        Dir Drive   :
        Profile Path:   \\devsmb\mrb3n\profile
        Logon Script:
        Description :
        Workstations:
        Comment     :
        Remote Dial :
        Logon Time               :      Do, 01 Jan 1970 01:00:00 CET
        Logoff Time              :      Mi, 06 Feb 2036 16:06:39 CET
        Kickoff Time             :      Mi, 06 Feb 2036 16:06:39 CET
        Password last set Time   :      Mi, 22 Sep 2021 17:47:59 CEST
        Password can change Time :      Mi, 22 Sep 2021 17:47:59 CEST
        Password must change Time:      Do, 14 Sep 30828 04:48:05 CEST
        unknown_2[0..31]...
        user_rid :      0x3e8
        group_rid:      0x201
        acb_info :      0x00000010
        fields_present: 0x00ffffff
        logon_divs:     168
        bad_password_count:     0x00000000
        logon_count:    0x00000000
        padding1[0..7]...
        logon_hrs[0..21]...
        

Possiamo quindi utilizzare i risultati per identificare il RID del gruppo, che possiamo poi utilizzare per recuperare informazioni dall’intero gruppo:

rpcclient $> querygroup 0x201
 
        Group Name:     None
        Description:    Ordinary Users
        Group Attribute:7
        Num Members:2

Tuttavia, può anche accadere che non tutti i comandi siano disponibili e che ci siano alcune restrizioni basate sull’utente. Tuttavia, la query queryuser RID è per lo più consentita in base al RID. Possiamo quindi utilizzare rpcclient per forzare brute force i RID per ottenere informazioni. Poiché potremmo non sapere a chi è stato assegnato quale RID, sappiamo che otterremo informazioni al riguardo non appena interroghiamo un RID assegnato. Esistono diversi metodi e strumenti che possiamo utilizzare per questo scopo. Per rimanere fedeli allo strumento, possiamo creare un ciclo For utilizzando Bash, in cui inviamo un comando al servizio tramite rpcclient e filtriamo i risultati.

for i in $(seq 500 1100);do rpcclient -N -U "" 10.129.14.128 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
 
        User Name   :   sambauser
        user_rid :      0x1f5
        group_rid:      0x201
		
        User Name   :   mrb3n
        user_rid :      0x3e8
        group_rid:      0x201
		
        User Name   :   cry0l1t3
        user_rid :      0x3e9
        group_rid:      0x201

Impacket Samrdump.py

 
samrdump.py 10.129.14.128
 
Impacket v0.9.22 - Copyright 2020 SecureAuth Corporation
 
[*] Retrieving endpoint list from 10.129.14.128
Found domain(s):
 . DEVSMB
 . Builtin
[*] Looking up users in domain DEVSMB
Found user: mrb3n, uid = 1000
Found user: cry0l1t3, uid = 1001
mrb3n (1000)/FullName: 
mrb3n (1000)/UserComment: 
mrb3n (1000)/PrimaryGroupId: 513
mrb3n (1000)/BadPasswordCount: 0
mrb3n (1000)/LogonCount: 0
mrb3n (1000)/PasswordLastSet: 2021-09-22 17:47:59
mrb3n (1000)/PasswordDoesNotExpire: False
mrb3n (1000)/AccountIsDisabled: False
mrb3n (1000)/ScriptPath: 
cry0l1t3 (1001)/FullName: cry0l1t3
cry0l1t3 (1001)/UserComment: 
cry0l1t3 (1001)/PrimaryGroupId: 513
cry0l1t3 (1001)/BadPasswordCount: 0
cry0l1t3 (1001)/LogonCount: 0
cry0l1t3 (1001)/PasswordLastSet: 2021-09-22 17:50:56
cry0l1t3 (1001)/PasswordDoesNotExpire: False
cry0l1t3 (1001)/AccountIsDisabled: False
cry0l1t3 (1001)/ScriptPath: 
[*] Received 2 entries.