SMB
Habilitando SMB2
Caso queira habilitar o SMB2 no Linux, adicione a linha abaixo no final do arquivo /etc/samba/smb.conf
:
Após isso, reinicie o serviço de SMB:
Utilizando Windows como Host Atacante
Net View
Listando todos os diretórios compartilhados
Listando arquivos de um determinado diretório
Net Use
Enumeração SMB com ataque a Sessão Nula / Anônima
Técnica também conhecida como red button
.
EXPLICAÇÃO:
IPC$
= Processo oculto/u:""
= Usuário interno anônimo e as aspas duplas é senha nula
Caso recebe uma mensagem de sucesso, execute o comando abaixo para verificar se foi criado uma conexão com o host e caso esteja ok, volte a utilizar o net view
para conectar com o host.
Criando unidade de rede
Agora já podemos criar uma unidade de rede. Escolha a letra de preferência, lembrando que o c
já é reservado pelo Windows em si.
Desmontando uma unidade de rede
Excluindo uma máquina que estabeleceu uma sessão
Adivinhação de Senha Remota
Para que funcione, as portas 139, 445 (SMB) estejam abertas:
OBS: O asterísco (*) no lugar da senha faz o sistema remoto solicitar uma. Se o nome do login falhar, tente usar DOMINIO\conta
.
Brute Force
Arquivo com senha separados por linha. Nesse exemplo, estamos utilizando o usuário administrator.
Arquivo com usuário e senha separados por espaço, sendo cada combinação em uma linha
Utilizando Linux como Host Atacante
Alterando Senha SMB Remotamente
smbpasswd
Enumeração com NMAP
Vulnerabilidades
Versões
Informações gerais sobre o host alvo
Compartilhamento (sem autenticação)
Compartilhamento (com autenticação)
Usuários (com autenticação)
Enumerando todas as pastas e drivers compartilhados, em seguida executando o comando ls
em cada compartilhamento
Analisando se o alvo está com o SMB vulnerável.
CUIDADO: Podemos ver o argumento --script-args=unsafe=1
sendo declarado junto com o comando acima, porém isso provavelmente irá travar o SO vulnerável. Cuidado ao executar um comando com esse argumento.
Usuários logados atualmente
Domínios
Grupos de Usuários
Serviços
Estatísticas do Servidor
Metasploit
Meterpreter (necessário ter RCE)
Pegando a versão do SMB
OBS.: Os comandos abaixos talvez precise de usuário, senha e domínio, então utilize os parâmetros SMBUser
, SMBPass
e DOMAIN
para ter um resultado mais preciso.
Detalhes como SO, Hostname e Domain
Brute Force / Verificação de Login
OBS.: Caso a senha esteja certa, será mostrado uma linha verde com sinal [+]
no início, seguido da mensagem Domain is ignored for user <user>
Agora que já sabemos a senha, podemos enumerar as pastas compartilhadas. Para isso vamos usar o seguinte Auxiliary: use auxiliary/scanner/smb/smb_enumshares
. Agora podemos enumerar os usuários, utilizando o seguinte Auxiliary: use auxiliary/scanner/smb/smb_lookupsid
.
Diretórios que estão sendo compartilhados
Usuários do SMB
Retorna os usuários através de pesquisas de SID com força bruta. Este módulo pode enumerar contas locais e de domínio, definindo ACTION
como LOCAL
e DOMAIN
SMBVer
Retorna a versão do SMB
SMBMap
Verificando sessão nula
Listando diretórios e arquivos uma unidade. No exemplo abaixo utilizei o C$
Executando comando no SO alvo.
Listando arquivos, porém excluindo alguns diretórios. No exemplo abaixo os diretório IPC$ e SYSVOL não serão listados.
Acessando os diretórios compartilhados que podem ser acessados e verificando suas devidas permissões.
Realizando download de arquivo. Note que aqui estamos utilizando o C$ como diretório de destino.
Realizando upload de arquivo. Note que aqui estamos utilizando o C$ como diretório de destino.
Podemos encontrar arquivos XML
em SYSVOL
, que contém hashes de usuários. Então baixe todos os arquivo com determinada extensão.
Listando os drivers
SMBClient
Corrigindo Acessos do SMBCLIENT
Adicione a linha abaixo em /etc/samba/smb.conf
para que o programas como smblcient e enum4linux trabalhem corretamente.
Após isso, reinicie o serviço com o seguinte comando:
Comandos Básicos
Caso esteja permitido acesso sem credenciais (Sessões Nulas
), irá mostrar as informações, caso contrário, irá pedir autenticação.
Caso precise de usuário e senha, utilize os parâmentros -U
e -P
. Para não emitir senha, pode-se utilizar a opção -N
(No Pass).
Porém, também podemos informar a senha já no comando dessa form, apesar de não ser o recomendado.
Caso esteja realizar o smbclient contra um host em um domínio, deverá informá-lo, como no exemplo abaixo:
Atente-se que, no exemplo acima estamos utilizando a opção -L
para apenas listar os diretórios. Caso queira deixar o smbclient no modo interativo, retire o -L
e utilize o /
ao invés de \
.
Quando temos o aceso no modo interativo, podemos realizar o download dos arquivos, executando os comando abaixo:
Caso queira baixar somente 1 arquivo, utilize o comando:
Ou se preferir, podemos fazer isso é um única linha de comando:
Acessando SMB v1
As vezes não é possível acessar o host devido a versão do SMB, entao devemos alterar a versão de conexão do smbclient.
Podemos também executar comandos no SO, caso o usuário possua permissões.
SMBGet
Realizando download dos arquivos via SMB
Nullinux
Ferramenta para enumeração do SO, Domínio, diretórios compartilhados e usuários do SMB.
Upload de Arquivo
Reverse Shell com SMB
PsExec.py
Metasploit
OBS.: Caso não dê certo, altere o target
.
SMBExec (Impacket)
Extraindo Políticas de Senhas
crackmapexec
Sempre bom utilizar o comando abaixo e verificar o valor de Minimum password length
para sabermos a quantidade mínima de caracteres que ase senhas pocssuem e Account Lockout Threshold
para sabermos se o usuário corre o risco de ser bloqueado após algumas tentativas de senhas incorretas
polenum
crackmapexec
Nos exemplos, estamos utilizando o protocolo smb
, porém o crackmapexec trabalha com os protocolos: http
, mssql
, smb
, ssh
ewinrm
.
Atacando por Sessão Nula
Baixando Arquivos
Baixando todos os arquivos do servidor SMB para /tmp/cme_spider_plus/
Baixando os arquivos SMB de um determinado compartilhamento
Pass-The-Hash
Pegando os hashes
DICA: Caso tenha acesso ao Meterpreter, utilize o comando hashdump
para pegar as hashes. Elas são separadas por um :
então utilize a quarta parte para executar a autenticação via hash, mostrada logo abaixo.
Autenticando com os hashes
Varrendo a rede por alvos com SMB ativos
Enumerando Usuários do AD
Descobrindo Compartilhamentos
Brute Force
OBS.: Caso receba a mensagem STATUS_PASSWORD_MUST_CHANGE
, significa que a senha está correta, porém é preciso alterá-la para ter acesso. Verifique no início dessa página, como alterar a senha SMB remotamente utilizando o smbpasswd
.
Trabalhando com arquivos de múltiplos servidores
Insira um IP por linha no arquivo txt
OBS.: Caso apareça escrito (Pwn3d!)
em amarelo, significa que o usuário tem permissão de execução nesse host. Geralmente aparece na própria máquina do usuário, essa flag irá aparecer.
Trabalhando com hosts em um Domínio
Executando comando no SO
Listando Módulos do crackmapexec
Isso é útil para ativarmos e desativarmos módulos (serviços) do SO alvo
Verificando opções de um determinado Módulo
Ativando um Módulo
WinExe
Caso queira deixar o terminal interativo, basta chamar o cmd.exe
.
Hydra
Brute Force
Impacket (Python)
Enumerando usuários (SMB)
Sites
Last updated