Brainfuck - HTB Write Up - Parte 3 - RSA Decrypt


Nessa etapa do laboratório é feita o entendimento do algoritmo RSA e a descriptografia da chave. 



No diretório do usuário Orestis tem diversos arquivos interessantes, como encrypt.sage que basicamente é um script para encriptar a senha armazenada no arquivo /root/root.txt e o resultado é gravado no arquivo output.txt Além desses, tem o arquivo debug.txt onde os valores passados para os argumentos p, q são registrados. 

Script encrypt.sage


A criptografia do RSA 

O RSA é um algoritmo de criptografia assimétrica, ou seja, uma chave-pública e uma chave-privada. No SSH, a chave-pública é usada pelo usuário e serve para criptografar os dados enviados para o servidor, a chave-privada fica armazenada no servidor e server para descriptografar os dados enviados pelo usuário. 

A chave-pública é gerada por dois números primos P e Q que são aleatórios e extensos. 

P = 23

Q = 33

N = P*Q = 759

Aplica-se a N o cálculo de Euller da seguinte forma:

Phi(N) = Phi(P) * Phi(Q)

Phi(N) = (P-1) * (Q-1)

Phi(N) = (23-1) * (33-1)

Phi(N) = 704

O próximo cálculo é feito para encontrar o número aleatório E que precisa ser maior que 1, menor que Phi(N) e ser um número primo de Phi(N)

1 < E < Phi(N) = 1 < E < 704

mdc(704,E) = 1

E = 5 pois 1 < 5 < 704 e é um número primo 

chave-pública = N e E, logo 704 e 5

No script o cálculo final que resulta na chave-criptografada é c = pow(m, e, n) onde M é a mensagem, E é o número aleatório e N é o valor extraido da operação entre P e Q

Descriptografar RSA 

No laboratório, os valores de P, Q e E estão nos seguintes arquivos:

output.txt 


debug.txt


No script ainda tem o valor da chave-publica pois trata-se de um script para descriptografar a chave. 


O script para descriptografar a chave foi descoberto nesse site aqui e também disponibilizei o script no meu github 

Ao executar o comando python3 rsa-decrypt.py é possível obter a chave do usuário root no campo pt (plain-text)


O resultado está em hexadecimal e para converter para caracter usando a tabela ASCII basta usar o comando: 


Aqui o laboratório retorna uma suposta flag mas que não foi aceita. Então existe ainda um outra etapa necessária para fazer a escalação de privilégio a partir do acesso da conta Orestis. 

TO BE CONTINUE...

Comentários

Postagens mais visitadas