Supporter - Nibble Euler Neto Posted October 3, 2018 Supporter - Nibble Posted October 3, 2018 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]++
Prog Posted October 3, 2018 Posted October 3, 2018 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
Supporter - Nibble Euler Neto Posted October 5, 2018 Author Supporter - Nibble Posted October 5, 2018 Boa! Realmente não tinha dado atenção às imagens, foquei só na flag encriptada. Foi bem como descreveram o desafio: "é simples mas tem que pensar fora da caixa". Valeu mesmo pelas informações!
Recommended Posts
Archived
This topic is now archived and is closed to further replies.