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 esempio10.10.10.55/24).
Enum4linux ti restituirà una lista degli utenti SMB.
Enum4linux-ng
./enum4linux-ng.py 10.129.14.128 -ACrackmapexec
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:2Tuttavia, 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: 0x201Impacket 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.