Bandit – Level 21

Chegamos ao nível 21 do desafio Bandit. Desta vez há um programa que é executado automaticamente em intervalos regulares pelo cron. Verifique a configuração em /etc/cron.d para ver os comandos executados.

Os comandos que podem ser necessários para resolver esse nível são: cron, crontab, crontab(5) (use “man 5 crontab” para acessar).

Depois de ler os manuais podemos entender que o cron é uma ferramenta que permite que sejam agendadas tarefas.

No diretório /etc/cron.d ficam os arquivos das tarefas agendadas. Vamos dar uma olhada:

Encontramos o arquivo cronjob_bandit22. Vamos que o que ele faz:

Agora vamos ver o que faz o arquivo

E por fim vamos que o que tem no arquivo /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv

A senha é exibida e temos mais um nível concluído!

Bandit – Level 20

Continuando nossa série sobre o desafio Bandit, chegamos ao nível 20.

Existe um arquivo binário no diretório home que faz o seguinte: Faz uma conexão no endereço localhost na porta que for especificada como argumento na linha de comando. Então lê a linha de texto da conexão e compara com a senha do nível 20. Se a senha estiver correta será transmitida a senha para o nível 21.

Nota: Você terá que logar duas vezes: uma para usar o comando setuid e outra para iniciar o serviço onde o setuid vai conectar.

Nota 2: Tente conectar para seu próprio serviço de rede se ver que isso funciona como você pensa.

Os comandos que podem ser úteis são: ssh, nc, cat.

Primeiro executei o arquivo suconnect que está home do usuário bandit20:

Os comandos ssh e cat já são conhecidos, mas vamos ver do que se trata o comando nc:

O comando nc executa o netcat, um simples utilitário UNIX que efetua leitura e escrita de dados através de conexões de rede, usando o protocolo TCP ou UDP.

Então fiz o seguinte:

Iniciei o nc para aguardar na porta 30002 por uma conexão. Depois, em outra sessão executei:

Então, onde eu havia iniciado o nc enviei a senha do usuário bandit20. Na outra sessão obtivemos a resposta:

E pronto, desafio completado!

Bandit – Level 19

Estamos chegando perto do fim do desafio Bandit, mas ainda temos alguns níveis. No nível 19 o desafio é usar o setuid binário no diretório home. A senha poderá ser encontrada no caminho /etc/bandit_pass depois de usar o setuid binário.

O desafio recomenda a leitura do seguinte material:

Ao fazer a leitura descobrimos que quem inventou o setuid foi Dennis Ritchie, o cara que inventou a linguagem de programação C.

Precisamos mudar a permissão do arquivo com a senha para que ele seja lido pelo usuário bandit19.

No home do usuário bandit19 existe um arquivo chamado bandit20-do.

Ao executá-lo percebemos que ele pode executar comandos como o usuário 20.

Então executei o seguinte:

E pronto, senha obtida. Mas para fins didáticos, penso que o intuito deste nível era explicar o setuid.

Se executamos o comando:

Podemos ver que apesar do uid e gid serem do usuário 19, o euid é do usuário 20. Ele pertence aos grupos 19 e 20. Por isso que podemos ler o arquivo da senha.

Bandit – Level 18

O nível 18 do desafio Bandit é interessante: ao efetuar o login a conexão é fechada.

Este nível diz que a senha está no arquivo readme do diretório home, mas que alguém modificou o arquivo .bashrc e será preciso logar por SSH.

Os comandos que podem ser úteis são: ssh, ls, cat

Ao pesquisar sobre o comando SSH descobri que podemos executar um comando na mesma linha de comando que efetua a conexão. Então fiz o seguinte:

A conexão foi fechada, mas temos a senha para o próximo nível!

Bandit – Level 17

Chegamos ao nível 17 do desafio Bandit. Desta vez existem 2 arquivos no diretório home do usuário: passwords.old e passwords.new. A senha do próximo nível está no arquivo passwords.new na única linha que não foi alterada entre os arquivos passwords.old e passwords.new.

Os comandos que podem ajudar são: cat, grep, ls

Lembrei do comando grep e então fui ler o manual. Encontrei duas opções interessantes: -v e -f. A opção -v inverte o sentido de correspondência, para selecionar linhas não correspondentes. A opção -f recupera os dados do arquivo linha por linha. Assim, para resolver o problema usamos o seguinte comando:

Pronto! Temos a senha do próximo nível.

 

 

 

 

Bandit – Level 16

Chegamos ao nível 16 do desafio Bandit. Desta vez a senha para o próximo nível poderá ser obtida enviando a senha do nível atual para uma porta entre os números 31000 a 32000 no endereço localhost. Primeiro descubra quais portas estão ouvindo, depois verifique qual está com o SSL ativo. Apenas um serviço lhe entregará a senha correta.

Os comandos que podem ser úteis são: ssh, telnet, nc, openssl, s_client, nmap

A leitura desse material poderá ajudar:

Sabemos que existe um serviço ouvindo entre as portas 31000 e 32000. Vamos ver quais portas estão ativas. Para isso usaremos o nmap, um poderoso port scanner:

Descobrimos 5 portas abertas. Vamos testá-las:

Uma das portas, ao receber a senha do nível atual devolveu uma chave privada. É preciso salvar a chave em um arquivo. Temos permissão de escrita na pasta /tmp, então:

O arquivo pode ter qualquer nome. É necessário configurar as permissões do arquivo. Nele colocamos o conteúdo da chave privada obtida. Depois acessamos por ssh:

Pronto, estamos no nível 17!

 

 

Bandit – Level 15

O nível 15 do desafio Bandit informa que a senha para o próximo nível poderá ser recuperada enviando a senha do nível atual para o servidor localhost na porta 30001 usando criptografia SSL.

Os comandos que podem ser úteis são: ssh, telnet, nc, openssl, s_client, nmap.

Este material poderá ser útil:

Depois de ler um pouco tentei o seguinte comando:

Aparentemente a conexão foi bem sucedida, então informei a senha.

Obtive uma saída sem erros, mas não a senha:

O desafio informava o seguinte:

Helpful note: Getting “HEARTBEATING” and “Read R BLOCK”? Use -quiet and read the “CONNECTED COMMANDS” section in the manpage. Next to ‘R’ and ‘Q’, the ‘B’ command also works in this version of that command…

Depois de ler o manual do comando s_client o comando ficou assim:

E pronto! Conseguimos a senha para o próximo nível.

Bandit – Level 14

O nível 14 do desafio Bandit diz que a senha do próximo nível pode ser recuperada ao enviar a senha do nível anterior para a porta 30000 no endereço localhost.

Os comandos que podem ajudar são: ssh, telnet, nc, openssl, s_client, nmap

É recomendada a leitura do seguinte material:

Na verdade eu achei esse nível o mais fácil de todos. Talvez porque eu já tinha alguma noção de como as coisas funcionam. Então fiz o seguinte:

Isso abriu uma conexão por telnet no endereço localhost, na porta 30000. Então colei a senha do nível anterior e obtive a senha do próximo nível.

Bandit – Level 13

Neste nível a senha está em no arquivo armazenado em /etc/bandit_pass/bandit14 e só pode ser lido pelo usuário bandit14. Precisamos da chave privada do SSH para poder acessar o próximo nível.

Nota: localhost é um nome de host que se refere a máquina local.

Na pasta /home/bandit13 existe um arquivo chamado sshkey.private. Esta é a chave privada para acesso ao servidor, mas precisamos da chave pública.

Tentei o seguinte:

Pronto, conseguimos o acesso como usuário bandit14.

A senha está em etc/bandit_pass/bandit14.

 

 

Bandit – Level 12

Estamos no nível 12 do desafio Bandit. Desta vez a senha para o próximo nível está no arquivo data.txt que é um hexdump de um arquivo que foi repetidamente comprimido. Neste nível será preciso criar um diretório abaixo do diretório /tmp. Isso é feito com o comando mkdir. Para copiar o arquivo para o diretório usaremos o comando cp. O comando mv será útil para renomear o arquivo.

Os comandos que podem ser usados para encontrar a solução são: grep, sort, uniq, strings, base64, tr, tar, gzip, bzip2, xxd, mkdir, cp, mv.

A leitura do material a seguir pode ajudar:

Hex dump on Wikipedia

Depois de ler o artigo na Wikipédia deduzi que precisamos transformar o arquivo da forma de hexdump para a forma binária do arquivo. Para fazer isso usamos o comando xxd com a opção -r. Acontece que no diretório onde estamos não temos permissão de escrita. Veja:

Por isso teremos que copiar o arquivo para o diretório /tmp. Vamos antes criar um diretório para depois copiar o arquivo.

O diretório que criei foi hexdump07082014. Provavelmente você terá que criar outro diretório, porque esse já vai existir.

Agora temos o arquivo binário. Precisamos descobrir que tipo de arquivo é:

Vamos descompactá-lo:

Parece que teremos que renomear o arquivo para de data.bin para data.gz:

E então descompactar:

Não terminou ainda. Vamos ver que tipo de arquivo temos agora:

Agora vamos extrair o arquivo com o comando bzip2:

Como eu não especifiquei o nome do arquivo gerado o comando bzip2 gerou o arquivo data.out. Vamos ver que tipo de arquivo é:

Vamos descompactá-lo mais uma vez:

Qual será o tipo de arquivo que temos agora? Vamos descobrir:

Vamos extraí-lo:

Agora temos o arquivo data5.bin. Está começando a ficar chato…

Descompactando:

Temos agora o arquivo data6.bin. Até onde isso vai?

Descompactar:

Vamos ver que arquivo temos:

Extrair mais uma vez:

Outro arquivo. Espero que estejamos perto do fim!

Renomear e descompactar:

Finalmente!

Conseguimos a senha e podemos partir para o próximo nível!