**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))
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))
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.
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:
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:**
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:
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.
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:
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:
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:
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.
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.
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.
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.
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**.
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`:
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/
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)
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"`
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).
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
* 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)**.