CTF. Senhas no Firefox. Senha do Android. Ataque de inversão de bits. Resolvendo problemas com criptografia r0ot-mi. Parte 3

imagem



Neste artigo, quebramos a permutação e as cifras de Vigenere, descriptografamos a senha salva no navegador Mozilla Firefox, lidamos com o bloqueio do Android e lidamos com o ataque Bit-Flipping. Partes anteriores:



Parte 1 - Codificações, cifra de deslocamento, hashes brutos e criação de imagem usando PIL python.

Parte 2 - Cripta, XOR, ZIP não criptografado e cracking PRNG.



Informação organizacional
, - , :



  • PWN;
  • (Crypto);
  • c (Network);
  • (Reverse Engineering);
  • (Stegano);
  • WEB-.


, , , .



, , Telegram . , , .



. , - , .





Senha do Mozilla Firefox







Precisamos encontrar a senha do usuário. Baixe e abra o arquivo que contém o diretório .mozilla. Este diretório contém uma pasta com extensões e uma pasta com o nome do navegador.







Como não estamos interessados ​​em extensões, vamos ao diu-browser. Existe um arquivo de configuração de perfil e mais um diretório.







Vamos para a pasta e vemos os arquivos.







Todas as senhas armazenadas no banco de dados são criptografadas, então você não será capaz de vê-las assim. Você pode usar este script para descriptografar .

python3 firefox_decrypt.py ~//.mozilla/firefox/o0s0xxhl.default/






Cifra de Vigenère







Recebemos um texto criptografado e precisamos encontrar seu autor. Como esta é uma cifra de Vigenère, usaremos um decodificador online .







Escolhemos o modo automático.







E obtemos o texto simples e a chave. Resta google o texto e encontrar o autor.



Padrão de bloqueio Android







Recebemos um dump do sistema de arquivos android e é solicitado que encontremos a senha. Isso é muito fácil de fazer com acesso ao sistema de arquivos. O hash de senha (SHA1) está localizado no arquivo /data/system/gesture.key.







Podemos pegar e torcer o hash ou usar androidpatternlock .







Encontrou a senha e o padrão.



Cifra de permutação







Recebemos uma mensagem criptografada e é solicitado a descriptografá-la. Como esta é uma cifra Rail Fence, usaremos o já familiar decodificador online .







E agora, entre as descrições propostas, precisamos escolher aquela que possui um texto significativo.







E obtemos a resposta.



AES CBC - ataque de inversão de bits







Recebemos um host e uma porta para conexão. Vamos nos conectar usando o netcat.







Temos opções de ação - registre-se ou faça login. Vamos nos registrar primeiro.







E recebemos um texto parcialmente aberto e criptografado. Agora, entramos com este token.







Porém, após o login, não podemos acessar os dados, pois não somos membros do grupo.







Com a tarefa resolvida, agora vamos lidar com o ataque Bit-Flipping. Esse ataque geralmente ocorre quando a função de criptografia recebe alguma entrada, acrescenta uma string aleatória e outra string antes de criptografá-la (nosso caso).



Abaixo está um diagrama para descriptografar uma mensagem usando o algoritmo AES CBC.







O fato é que o bloco anterior do texto cifrado é xorsado com o próximo bloco, a fim de remover a sobreposição de texto, como resultado temos o texto descriptografado.



Portanto, se alterarmos um byte de texto cifrado no bloco anterior, um byte de texto simples no próximo bloco será alterado.







Agora vamos voltar à tarefa. O texto não criptografado possui o parâmetro is_member = false. É difícil imaginar como mudar. Mas como temos os símbolos da equação, para que todo o texto seja um múltiplo do tamanho do bloco, podemos alterá-los para que, quando descriptografados, a string is_member = true seja obtida.



Vamos descobrir como fazer isso. Esta linha deve ser obtida durante a descriptografia do último bloco - EvilP2. Para fazer isso, precisamos coletar o bloco EvilC1.







Como fazer: Temos CC1 e PP2. Fazendo proxy deles juntos, podemos obter DC2. Como sabemos que EvilP2 contém “; is_member = false]” e sabemos DC2, fazendo proxy deles entre nós, você pode obter EvilC1.



Vamos nos registrar novamente.







Inicializamos os parâmetros iniciais.







Agora temos os blocos que conhecemos.







Agora temos novos blocos.







Recolhemos a carga.







Tentamos fazer login.







E não deu em nada, eles nos encontraram. Provavelmente, isso se deve à presença de dois parâmetros idênticos. Vamos matar o primeiro.







E agora nós logamos com sucesso e pegamos o token.







Você pode se juntar a nós no Telegram... Vamos reunir uma comunidade na qual haverá pessoas versadas em várias áreas de TI, para que possamos sempre ajudar uns aos outros em quaisquer questões de TI e segurança da informação.



All Articles