Título: pregunta sobre runPE en windows 10 basado en talleres antiguos del foro Publicado por: Belial & Grimoire en 27 Febrero 2018, 03:27 am Hola
Estaba tratando de recrear el runPE que The Swash hizo una vez, quería ver si todavia funcionaba en Windows 10 y al parecer si, agregue una sección y notepad sigue funcionando. Pero me quedé con la idea de como se ejecutaba código, así que buscando en el foro, retomaron varios talleres y hay uno de Ferchu donde explica una manera de ejecutar código mediante opcodes, pero hay algo que no entendí, yo sé que la mejor manera es con programación pero siempre se me ha hecho más interesante saber como funcionan las cosas manualmente. Bueno, les explico. el menciona que agrega un registro y modifica algunas cosas Citar El metodo para agregar la sección es igual que en el capitulo anterior, pero con la diferencia que ahora en vez de desvincular la "Bound Import Table", lo que vamos a hacer es un truquito que consiste en bajar la cabecera PE 0x28 bytes, para tener lugar para definir nuestra sección sin pisar la tabla. Al bajar la cabecera pisamos datos que no son importantes. Luego solo modificamos en offset PE, y listo, agregamos la sección sin desvincular la tabla. Los datos a modificar en la cabecera entonces son: Nombre Valor Tamaño offset PE: 0xE0 - 0x28 = 0xB8 (4 bytes) NumberOfSections: 0x0004 (+1) (2 bytes) AddressOfEntryPoint: 0x00014031 (4 bytes) SizeOfImagebase: 0x00014050 (4 bytes) Como notaran, ahora modificamos el OEP, con el de nuestro codigo (como ya tengo el codigo echo ya se que empiza en esa dire), y debemos anotar el OEP original del programa para hacer un salto luego de que nuestro codigo finalize, para que comienze el programa normalmente. Lo cual elimina 0x28 bytes de la zona donde no hay nada o solo garbage, despues agrega esos 0x28 bytes para agregar la nueva sección y no modificar el archivo, sino queda inservible, después agrega la nueva sección. A SizeOfImageBase le agrega los 50 bytes de la sección o eso creo. En el código de ASM solo le agrega un jmp a donde inicia la ejecución normal, por ejemplo... en el ejemplo de Ferchu, la ejecución es en el offset 0x9D730000 e ImageBase 0x00000001 Entonces yo lo que haría es algo así Código
lo que significa que es AddressOfEntryPoint + ImageBase = 0x010739D Pero aqui viene mi duda, ¿no entiendo donde Ferchu consiguió este dato?, ¿de dondé sacó 0x00014031? Citar AddressOfEntryPoint: 0x00014031 (4 bytes) quiero imaginar que abrio con ollydbg su codigo en asm, y 0x00014031 es la dirección de donde inicia Citar Cadena titulo "Soy el notepad y estoy infectado!!!\0" Cadena msg "Infectado!!!\0" call [siguiente instruccion] E8 00 00 00 00 pop eax 58 push 0 6A 00 sub eax, 0x12 2C 12 push eax 50 sub eax, 0x24 2C 24 push eax 50 push 0 6A 00 mov eax, 0x77D5050B B8 0B 05 D5 77 // B8 + direccion de MessageBoxA call eax FF D0 mov eax, 0x010739D B8 9D 73 00 01 // B8 + entry point jmp eax FF E0 ¿Alguien sabe si 0x00014031 será la posición en memoria de "call [siguiente instruccion] E8 00 00 00 00"? o de donde saco 0x00014031?, a ver si alguien recuerda, y es que no puedo abrir cosas con ollydbg porque no me funciona aunque lo seguiré intentando, y casi no le entiendo a Windbg y con gdb pues no logro saber si funciona y no me gusta wine para cosas de windows. Ya se que es un metodo muy viejo, y practicamente los AV ya lo detienen y etc... pero me dio por repasar esto tan antiguo y tratar de hacerlas funcionar en Windows 10, ya es lo unico que me falta para intentar con nasm, espero me puedan ayudar Saludos Título: Re: pregunta sobre runPE en windows 10 basado en talleres antiguos del foro Publicado por: Flamer en 28 Febrero 2018, 21:50 pm hola belia tanto tiempo sin verte por acá
no te emociones no creo que pueda ayudarte con tu problema pero te cuento que si agregas bytes de mas y agrandas un archivo creo que te quedara inservible y tendrás que editarlo todo así que trata de mantener el mismo tamaño. otra cosa en vez de ollydbg usa mejor este, ya que tiene su versión para 64 bits también https://x64dbg.com/ (https://x64dbg.com/) saludos Flamer Título: Re: pregunta sobre runPE en windows 10 basado en talleres antiguos del foro Publicado por: Belial & Grimoire en 1 Marzo 2018, 16:24 pm Hola, si.. ya paso un buen rato
No lo pienso agrandar, tiene que quedar igual... solo es reemplazar bytes, pero en el ejemplo elimina bytes basura y luego agrega la misma cantidad de bytes que elimino para no desacomodar las posiciones y ahi coloca el nuevo registro, después cambia el entrypoint para que se ejecute tu código y en tu código tener ya un jmp de regreso al EntryPoint original para que se ejecute el programa normalmente, solo que no recuerdo de donde sale este registro AddressOfEntryPoint: 0x00014031 (4 bytes) |