Ir para conteúdo

Malwaretech - ransomware1


Euler Neto

Posts Recomendados

  • Apoiador Nibble

Link: https://www.malwaretech.com/ransomware1

Alguém conseguiu resolver o desafio? Estou me batendo no assembly e não estou conseguindo decriptar a flag.

A flag encriptada é essa:

00000000  28 bb da 49 3e 0d 11 c7  bb b3 ea 3e c5 e7 23 0b  |(..I>......>..#.|
00000010  73 ba f0 55 c0 85 17 c1  e0 9d d9 69 e0 5e 6d 4e  |s..U.......i.^mN|
00000020  20 b3 b6 48 17 10 0f c0  d3 b0 e8 2c ad f5 40 01  | ..H.......,..@.|
00000030  71 ac f4 52 be f8 1e c1  fa 8a f0       			          |q..R.......|
0000003b

Pelo meu ponto de vista, os dois primeiros loops da função que criptografa ficaram assim:

mov     [ebp+var_111C], 0
...
mov     eax, [ebp+var_111C] 		  ; eax = 0
xor     edx, edx 									; edx = 0
mov     ecx, 20h 								; ecx = 20h
div     ecx 											; eax = eax/ecx = 0/20h = 0, edx = eax%ecx = 0%20h = 0
mov     eax, [ebp+arg_4]				; eax = 0
movzx   ecx, byte ptr [eax+edx] ; ecx = eax+edx = 0+0 = 0
mov     edx, [ebp+var_111C]				; edx = 0
movzx   eax, [ebp+edx+Buffer]	; eax = Buffer[edx] = Buffer[0] = 28h
xor     eax, ecx									; eax = 28h xor 0 = 28h
mov     ecx, [ebp+var_111C]				; ecx = 0
mov     [ebp+ecx+Buffer], al		; Buffer[ecx] = Buffer[0] = 28 (8 primeiros bits)
...
mov     ecx, [ebp+var_111C]
add     ecx, 1
mov     [ebp+var_111C], ecx				; [ebp+var_111C]++
mov     [ebp+var_111C], 1
...
mov     eax, [ebp+var_111C] 		  ; eax = 1
xor     edx, edx 									; edx = 0
mov     ecx, 20h 								; ecx = 20h
div     ecx 											; eax = eax/ecx = 1/20h = 0, edx = eax%ecx = 1%20h = 1
mov     eax, [ebp+arg_4]				; eax = 0
movzx   ecx, byte ptr [eax+edx] ; ecx = eax+edx = 0+1 = 0
mov     edx, [ebp+var_111C]				; edx = 1
movzx   eax, [ebp+edx+Buffer]	; eax = Buffer[edx] = Buffer[1] = BBh
xor     eax, ecx									; eax = BBh xor 1 = BAh
mov     ecx, [ebp+var_111C]				; ecx = 1
mov     [ebp+ecx+Buffer], al		; Buffer[ecx] = Buffer[1] = BAh (8 primeiros bits)
...
mov     ecx, [ebp+var_111C]
add     ecx, 1
mov     [ebp+var_111C], ecx				; [ebp+var_111C]++

 

Link para o comentário
Compartilhar em outros sites

void DecryptTR( BYTE * baData, BYTE * baListKey, DWORD dwSize )
{
  DWORD dwLoop= 0;

	while ( dwLoop < dwSize )
	{
		baData[dwLoop] ^= baListKey[dwLoop % 32];

		dwLoop++;
	}
}

baixei o arquivo e refiz a função em c..

nessa parte:

mov     eax, [ebp+arg_4]				; eax = 0

 

eax deve receber um array ( BYTE * baListKey ) ao qual não está recebendo ( push 0 = null ), igualmente para o nome do arquivo que tbm não é recebido...

nesse array deve conter 32 bytes ( MOV ECX, 0x20, DIV ECX... ) então abri o txt U HAVE BEEN HACKED... e encontrei esse email: xxxEdgeLord1337xxx@420blazeit.bit

tem 33 caracteres nele... eu tentaria isso ?

 

#Edit 03/10/2018 - 13:55:

Decidi ir de uma ideologia diferente, peguei as imagens de exemplo, e lembrei de algo: mencionaram que o user usava o Windows 7...

pensei nas imagens padrão do win7, que ficam na pasta imagens....

Chrysanthemum.jpg_encrypted, e pesquisei na internet a imagem, então encontrei a mesma imagem sem criptografia, peguei os 32 bytes iniciais de ambas ( encriptada e desencriptada ),

e fiz o XOR para pegar a key list. e voilà! consegui encontrar os bytes, desencriptei o arquivo flag.txt....

Aqui o código em cpp + flag (SENHA: mentebinaria):

https://ghostbin.com/paste/taag5z4o

(obs: faltou um delete dos bytes, mas enfim haahshassahahshsa )

Aqui os arquivos de imagens decriptados(2):

https://puu.sh/BF7mz/2ae0e3362f.rar

 

mensagem do desafio:

https://puu.sh/BF7v9/bdd9a7bab2.png

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...