Tutorials

Guida Approfondita: Uso di smbclient per l'enumerazione e l'accesso SMB

smbclient è uno strumento della suite Samba che consente di interfacciarsi con condivisioni di rete SMB/CIFS, simile a un client FTP. Può essere utilizzato per elencare le condivisioni, accedere a dir

#exploitation#linux

Guida Approfondita: Uso di smbclient per l'enumerazione e l'accesso SMB

Introduzione

smbclient è uno strumento della suite Samba che consente di interfacciarsi con condivisioni di rete SMB/CIFS, simile a un client FTP. Può essere utilizzato per elencare le condivisioni, accedere a directory remote, caricare o scaricare file, e può rivelarsi molto utile in fase di post-exploitation o recon su una macchina Windows.


Sintassi Generale

bash
smbclient //<host>/<share> -U <username>

1. Enumerare le Share Disponibili

Per elencare le share disponibili su un host SMB:

bash
smbclient -L <host> -U <username>

Esempio:

bash
smbclient -L demo.ine.local -U user

Ti verrà chiesta la password: puoi premere invio se l'utente non ne ha una, oppure fornire quella corretta.

Opzioni utili:

  • -N: non richiede password (utile con account guest)
bash
smbclient -L <host> -N
  • --option='client min protocol=NT1': forza SMBv1 (se richiesto da server legacy)

2. Accesso ad una Condivisione SMB

Per accedere direttamente a una condivisione:

bash
smbclient //<host>/<share> -U <username>

Esempio:

bash
smbclient //demo.ine.local/backup -U admin

Una volta all'interno si apre una shell simile a un client FTP:

Comandi interattivi principali:

  • ls → Elenca i file presenti nella share
  • cd → Entra in una directory
  • get → Scarica un file dalla share
  • put → Carica un file nella share
  • mget → Scarica tutti i file nella directory corrente
  • lcd → Cambia directory locale
  • exit o quit → Uscita dal client

Esempio di sessione interattiva:

bash
smb: > ls
smb: > get secret.txt
smb: > put backdoor.exe

3. Autenticazione con Credenziali da File

Puoi usare file esterni per automatizzare l'accesso:

bash
smbclient //<host>/<share> -A auth.txt

Dove auth.txt ha il seguente formato:

bash
username = admin
password = Password123!
domain   = WORKGROUP

4. Montare Share SMB su Linux

Al di fuori di smbclient, è possibile montare una share direttamente nel filesystem Linux:

bash
sudo mount -t cifs //<host>/<share> /mnt/smb -o username=<user>,password=<pass>

Questo approccio è utile per lavorare con strumenti locali su file remoti.


5. Enumerazione in Post-Exploitation

Una volta ottenuto accesso a una macchina compromessa, puoi:

  • Esplorare share di backup in cerca di file di configurazione, password in chiaro o script di automazione.
  • Cercare directory con permessi di scrittura per caricare un payload o persistere.

Comando per verificare permessi (da smbclient):

bash
allinfo <nome_file>

6. Tecniche Offensive Aggiuntive

  • Ricerca file sensibili:
- Nomi tipici: passwords.txt, config.php, secrets.json, backup.sql - Usare recurse ON + prompt OFF + mget
per scaricare tutto:
bash
smb: > recurse ON
smb: > prompt OFF
smb: > mget *
  • Accesso con utente "Guest" o senza password:
bash
smbclient //<host>/<share> -N
  • Accesso in dominio Active Directory:
bash
smbclient //<host>/<share> -U domain\\utente

7. Difese e Mitigazioni (Blue Team)

  • Limitare accesso alle share a utenti e gruppi specifici
  • Audit su accessi SMB
  • Disabilitare SMBv1
  • Usare ACL avanzate e NTFS permissions

Conclusione

smbclient è uno strumento fondamentale in ambito offensive per l'esplorazione e l'interazione con share SMB. Integrato correttamente in un flusso di penetration testing, permette di ottenere informazioni riservate, scaricare payload o accedere a dati critici in scenari di post-exploitation.