Links

139,445 - SMB

Obtener OS

Con Nmap

nmap -p 139,445 --script-args=unsafe=1 --script /usr/share/nmap/scripts/smb-os-discovery 192.168.1.1

Obtener Versión

Con Metasploit

msf> use auxiliary/scanner/smb/smb_version

Con Smbver.sh

#!/bin/sh
#Author: rewardone
#Description:
# Requires root or enough permissions to use tcpdump
# Will listen for the first 7 packets of a null login
# and grab the SMB Version
#Notes:
# Will sometimes not capture or will print multiple
# lines. May need to run a second time for success.
if [ -z $1 ]; then echo "Usage: ./smbver.sh RHOST {RPORT}" && exit; else rhost=$1; fi
if [ ! -z $2 ]; then rport=$2; else rport=139; fi
tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i "samba\|s.a.m" | tr -d '.' | grep -oP 'UnixSamba.*[0-9a-z]' | tr -d '\n' & echo -n "$rhost: " &
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
echo "" && sleep .1
## --------------------------- ##
smbver.sh $RHOST

Con Ngrep

ngrep -i -d $IFACE 's.?a.?m.?b.?a.*[[:digit:]]'

Con Smbclient

smbclient -L \\\\$RHOST
smbclient -L //$RHOST -U $USER
# Sin Password
smbclient -N -L \\\\$RHOST
# Conectarse como un user
smbclient -U $USER \\\\$RHOST\\$SHARE

Obtener Información

Con Enum4linux

# Como user anonym
enum4linux -a $RHOST
# Si sabes las credenciales
enum4linux -a -u "$USERNAME" -p "$PASSWORD" $RHOST

Con Enum4linux-ng

# https://github.com/cddmp/enum4linux-ng/
enum4linux-ng -A -u "$USERNAME" -p "$PASSWORD" $RHOST

Con Nmap

nmap --script "safe or smb-enum-*" -p 139,445 $RHOST

Con Rpcclient

rpcclient -U "$USERNAME" $RHOST
srvinfo
enumdomusers
getdompwinfo
querydominfo
netshareenum
netshareenumall
lookupnames $USER

Con Impacket-rpcdump

# Muy útil para sacar las pipes
impacket-rpcdump -p 445 $USERNAME@$RHOST

Listar Shares

Con smbclient

smbclient --no-pass -L //$RHOST # Usuario null
#Si sabes las credenciales
smbclient -U '$USERNAME' -L [--pw-nt-hash] //$RHOST
smbclient -L //$RHOST -N
# Si te salta un error de "protocol negotiation failed: NT_STATUS_CONNECTION_DISCONNECTED" Prueba:
smbclient -L //$RHOST/ --option=='client min protocol=NT1'
smbclient -L \\\\$RHOST\\

Con Smbmap

smbmap -H $RHOST -P $RPORT -R # Usuario null
smbmap -u "$USERNAME" -p "$PASSWORD" -H $RHOST -P $RPORT # Si sabes las credenciales
smbmap -u "$USERNAME" -p "$NT:$LM" -H $RHOST -P $RPORT # Ataque "Pass-The-Hash"

Con Crackmapexec

crackmapexec smb $RHOST -u '' -p '' --shares # Usuario null
crackmapexec smb $RHOST -u '$USERNAME' -p '$PASSWORD' --shares # Si sabes las credenciales
crackmapexec smb $RHOST -u '$USERNAME' -H '$HASH' --shares # Si sabes las credenciales

Con Nmap

nmap --script smb-enum-shares -p139,445 -T4 -Pn $RHOST -oA nmap_smbEnumShares

Conectarse al Share

Con Smbclient

# Si sabes el share exacto
smbclient //$RHOST/$SHARE

Enumerar Usuarios

Con Impacket-Lookupsid

impacket-lookupsid -no-pass $RHOST
impacket-lookupsid $USER:$PASSWORD@$RHOST

Con Metasploit

msf> use auxiliary/scanner/smb/smb_lookupsid

Explotando Vulnerabilidades

Con Nmap

nmap --script smb-vuln* -p139,445 -T4 -Pn -oA nmap_smbVuln

Con Metasploit

msf> use exploit/multi/samba/usermap_script

Fuerza Bruta

Con Medusa

medusa -h $RHOST -u $USERNAME -P $PASSWORDLIST -M smbnt

Con Nmap

# Wordlist customizadas
nmap -p445 --script smb-brute --script-args userdb=$USERWORDLIST,passdb=$PASSWORDLIST $RHOST -vvvv -oA nmap_smbBruteCustom
# Credeciales predeterminadas
nmap --script smb-brute $RHOST -vvvv -oA nmap_smbBruteDefault

Otros

Crear un Share

# CMD
net share $SHARENAME=$SHAREPATH

Montar un Share en Local

mount -t cifs //$RHOST/$SHARE $DIRMOUNT
mount -t cifs // -o "username=$USERNAME,password=$PASSWORD" //$RHOST/$SHARE $DIRMOUNT

Descargar Archivos

# Busca el archivo recursivamente y lo descarga
smbmap -R $DIRECTORY -H $RHOST -A $FILE -q
# Descarga todo el Share
smbclient //$RHOST/$SHARE
mask "" # Especifica la máscara que se va a usar para filtrar los archivos dentro del directorio. "" = Todos los archivos
recurse # Activa el modo recursivo. Por defecto está desactivado
prompt # Desactiva el prompt para los nombres de los archivos. Por defecto está activado
mget * # Copia todos los archivos que coinciden con los filtros anteriores desde el host hasta el cliente