Dancing Machine

Machine name: Dacing

Address: https://app.hackthebox.com/starting-point

Introdução

Existem várias maneiras de transferir um arquivo entre dois hosts (computadores) na mesma rede. Um desses protocolos é o SMB (Server Message Block), que é estudado neste exemplo. Este protocolo de comunicação fornece acesso compartilhado a arquivos, impressoras e portas seriais entre os pontos finais de uma rede. Normalmente, vemos os serviços SMB rodando em máquinas com Windows.

Durante a varredura, normalmente veremos a porta TCP 445 aberta no alvo, reservada para o protocolo SMB. Geralmente, o SMB opera nas camadas de Aplicação ou Apresentação do modelo OSI. Por conta disso, ele depende de protocolos de camadas inferiores para transporte. O protocolo da camada de Transporte com o qual o Protocolo SMB da Microsoft é mais comumente usado é o NetBIOS sobre TCP/IP (NBT). É por isso que, durante as varreduras, é muito provável que vejamos ambos os protocolos com portas abertas rodando no alvo. Veremos isso durante a fase de enumeração do tutorial.

Usando o protocolo SMB, uma aplicação (ou o usuário de uma aplicação) pode acessar arquivos em um servidor remoto, além de outros recursos, como impressoras. Assim, uma aplicação cliente pode ler, criar e atualizar arquivos no servidor remoto. Ela também pode se comunicar com qualquer programa de servidor configurado para receber uma solicitação de cliente SMB.

Um armazenamento habilitado para SMB na rede é chamado de compartilhamento. Esses compartilhamentos podem ser acessados por qualquer cliente que tenha o endereço do servidor e as credenciais apropriadas. Como muitos outros protocolos de acesso a arquivos, o SMB requer algumas camadas de segurança para funcionar corretamente dentro de uma topologia de rede. Se o SMB permite que os clientes criem, editem, recuperem e removam arquivos em um compartilhamento, há uma necessidade clara de um mecanismo de autenticação. Em um nível de usuário, os clientes SMB precisam fornecer uma combinação de nome de usuário e senha para visualizar ou interagir com o conteúdo do compartilhamento SMB.

Apesar de ter a capacidade de proteger o acesso ao compartilhamento, um administrador de rede pode, às vezes, cometer erros e acidentalmente permitir logins sem credenciais válidas ou utilizando contas de convidado ou logins anônimos. Vamos ver isso nas seções seguintes.

Como mencionado anteriormente, observamos que a porta 445 TCP para SMB está ativa e em funcionamento, o que significa que temos um compartilhamento ativo que podemos explorar. Pense nesse compartilhamento como uma pasta que pode ser acessada pela internet. Para fazer isso, precisaremos ter os serviços e scripts apropriados instalados.

Para enumerar com sucesso o conteúdo do compartilhamento no sistema remoto, podemos usar um script chamado smbclient. Se o script não estiver presente em sua máquina, você pode instalá-lo digitando o seguinte comando no terminal (para sistemas operacionais baseados em Debian):

sudo apt install smbclient -y

O próximo passo é começar a enumerar o conteúdo do compartilhamento encontrado em nosso alvo, independentemente da situação.

O smbclient tentará se conectar ao host remoto e verificar se há necessidade de autenticação. Se houver, ele pedirá a senha para o nome de usuário local. Devemos ficar atentos a isso. Se não especificarmos um nome de usuário específico para o smbclient ao tentar se conectar ao host remoto, ele usará o nome de usuário da sua máquina local, aquele com o qual você está atualmente logado. Isso acontece porque a autenticação SMB sempre exige um nome de usuário. Portanto, se você não fornecer um nome de usuário explicitamente para tentar fazer login, o smbclient usará o nome de usuário local atual para evitar gerar um erro no protocolo.

No entanto, vamos usar nosso nome de usuário local, pois não sabemos se existem nomes de usuário remotos presentes no host de destino com os quais poderíamos tentar fazer login. Em seguida, seremos solicitados a fornecer uma senha. Essa senha está relacionada ao nome de usuário que você forneceu antes.

Hipoteticamente, se fôssemos um usuário remoto legítimo tentando acessar o recurso, saberíamos nosso nome de usuário e senha e faríamos o login normalmente para acessar o compartilhamento. Neste caso, não temos essas credenciais, então o que vamos tentar realizar é qualquer uma das seguintes opções:

  • Autenticação de convidado
  • Autenticação anônima

Qualquer uma dessas opções nos permitirá fazer login sem precisar de uma combinação correta de nome de usuário e senha, e ver os arquivos armazenados no compartilhamento. Vamos prosseguir e tentar isso. Deixaremos o campo da senha em branco, apenas pressionando Enter para informar ao script para continuar.

Como sempre, podemos digitar o nome do nosso script no terminal seguido pela opção -h ou --help para saber mais sobre as capacidades desse script e como utilizá-lo.

Executando o comando acima, vemos que quatro compartilhamentos diferentes são exibidos. Vamos analisar cada um deles e ver o que significam:

  • ADMIN$ – Compartilhamentos administrativos são compartilhamentos de rede ocultos criados pelos sistemas operacionais da família Windows NT, permitindo que administradores de sistemas tenham acesso remoto a cada volume de disco em um sistema conectado à rede. Esses compartilhamentos não podem ser permanentemente excluídos, mas podem ser desativados.
  • C$ – Compartilhamento administrativo para o volume de disco C:. É onde o sistema operacional está instalado.
  • IPC$ – Compartilhamento de comunicação entre processos. Usado para comunicação entre processos via pipes nomeados e não faz parte do sistema de arquivos.
  • WorkShares – Compartilhamento personalizado.

Foothold

Vamos tentar conectar em cada um dos compartilhamentos, exceto o IPC$, que não é útil para nós, pois não é navegável como um diretório comum. Vamos usar a mesma tática de antes, tentando fazer login sem as credenciais corretas para encontrar permissões configuradas de forma inadequada em qualquer um desses compartilhamentos. Apenas deixaremos o campo da senha em branco para cada nome de usuário e veremos se funciona. Primeiro, vamos tentar o ADMIN$.

Agora vamos fazer isso com todos os compartilhamentos encontrados para ver se algum foi mal configurado.

Sucesso! O compartilhamento SMB WorkShares estava mal configurado, permitindo que fizéssemos login sem as credenciais apropriadas. Podemos ver que o prompt do terminal mudou para smb: >, indicando que agora nossa shell está interagindo com o serviço. Podemos usar o comando help para ver o que podemos fazer dentro dessa shell.

Pelo output, podemos notar que a maioria dos comandos que usamos no Linux estão presentes. Vamos usar os seguintes comandos para navegar pelo compartilhamento:

  • ls: listar o conteúdo dos diretórios dentro do compartilhamento
  • cd: mudar os diretórios dentro do compartilhamento
  • get: baixar o conteúdo dos diretórios dentro do compartilhamento
  • exit: sair da shell do SMB

Ao digitar o comando ls, aparecem dois diretórios, um para Amy.J e outro para James.P. Entramos no primeiro e encontramos um arquivo chamado worknotes.txt, o qual podemos baixar utilizando o comando get.

Este arquivo agora está salvo no local de onde executamos o comando smbclient. Vamos continuar procurando por outros arquivos valiosos no diretório de James.P. Ao navegar até ele, encontramos o arquivo flag.txt que estávamos procurando. Depois de recuperar esse arquivo, podemos usar o comando exit para sair do shell e verificar os arquivos que acabamos de baixar.

Uma vez que o shell do SMB seja encerrado, podemos ler os dois documentos que exfiltramos. O worknotes.txt parece sugerir outros serviços que podem ser explorados. Normalmente, arquivos desse tipo podem ser encontrados em máquinas dentro de um Hack The Box Pro Lab, indicando o próximo alvo ou servindo como recurso para exploração adicional ou movimentação lateral dentro do laboratório. No nosso caso, é apenas uma prova de conceito. Não precisaremos desse arquivo.

Question 01: What does the 3-letter acronym SMB stand for?

Server Message Block

Question 02: What port does SMB use to operate at?

445

Question 03: What is the service name for port 445 that came up in our Nmap scan?

Primeiramente, precisamos executar a ferramenta Nmpa para visualizar quais portas estão abertas e o que está sendo executado em cada uma:

nmap -sV -T5 10.129.145.49 –stats-every=5s

Podemos ver que a porta 445 está aberta e está executando o aplicativo abaixo:

microsoft-ds

Question 04: What is the ‘flag’ or ‘switch’ that we can use with the smbclient utility to ‘list’ the available shares on Dancing?

-L

Question 05: How many shares are there on Dancing?

Podemos responder a pergunta acima com o comando abaixo.

smbclient -N -L //10.129.145.49.

4

Question 06: What is the name of the share we are able to access in the end with a blank password?

Ao testar os compartilhamentos, verificamos que apenas um deles não nos solicitou senha. Então, para nos conectarmos, realize a conexão sem passar uma senha:

smbclient -N -L //10.129.145.49

WorkShares

Question 07: What is the command we can use within the SMB shell to download the files we find?

Se conecter no diretório do James. P e liste os arquivos com o comando ls, para acessar o diretório utilize o comando cd:

cd James.P\

e liste o conteúdo desse diretório:

agora, vamos usar o comando get, para fazer o download do arquivo para a nessa máquina:

get

Question 08: Submit the flag

E por último, vamos usar o comando cat para exibir o conteúdo desse arquivo:

5f61c10dffbc77a704d76016a22f1664

Rolar para cima