alguien recuerda como se ejecutaba codigo con runPE como explico ferchu?

Iniciado por Belial & Grimoire, 23 Junio 2013, 02:12 AM

0 Miembros y 1 Visitante están viendo este tema.

Belial & Grimoire

hola

Alguien de casualidad tendra el taller de ferchu en PDF?, es que las imagenes ya no funcionan, y no recuerdo como era la tercera parte del taller, que era sobre agregar codigo para que aparezca un messagebox

la parte que no recuerdo es donde dice que una forma de hacerlo es con un truco, que era restarle 0x28 a PE

E0 - 28 = 0xB8

pero en la imagen se mostraba donde eliminarlo y en que parte "CREO" se agregaba algo para que quedara acomodado, y no se que mas cosas se hacian

alguien me podria recordar como era esa parte, porque solo recuerdo que al final, se debia colocar los los opcodes de algun codigo en ASM para su execucion, pero no recuerdo la primera parte para acomodar PE y no mover Bound Import tables o algo así decía él

alguien recuerda eso, o tendrá el taller de ferchu con los ejemplos?

salu2
.                                 

x64core

No sé, pero "infectar" en Notepad y hacer que muestre un msg box?
Inyecta esta shellcode (hello world):


C:
unsigned char data[140] = {
   0x31, 0xF6, 0x56, 0x64, 0x8B, 0x76, 0x30, 0x8B, 0x76, 0x0C, 0x8B, 0x76, 0x1C, 0x8B, 0x6E, 0x08,
   0x8B, 0x36, 0x8B, 0x5D, 0x3C, 0x8B, 0x5C, 0x1D, 0x78, 0x01, 0xEB, 0x8B, 0x4B, 0x18, 0x67, 0xE3,
   0xEC, 0x8B, 0x7B, 0x20, 0x01, 0xEF, 0x8B, 0x7C, 0x8F, 0xFC, 0x01, 0xEF, 0x31, 0xC0, 0x99, 0x32,
   0x17, 0x66, 0xC1, 0xCA, 0x01, 0xAE, 0x75, 0xF7, 0x66, 0x81, 0xFA, 0x2A, 0xB6, 0x74, 0x09, 0x66,
   0x81, 0xFA, 0xAA, 0x1A, 0xE0, 0xDB, 0x75, 0xC5, 0x8B, 0x53, 0x24, 0x01, 0xEA, 0x0F, 0xB7, 0x14,
   0x4A, 0x8B, 0x7B, 0x1C, 0x01, 0xEF, 0x03, 0x2C, 0x97, 0x85, 0xF6, 0x74, 0x15, 0x68, 0x33, 0x32,
   0x20, 0x20, 0x68, 0x75, 0x73, 0x65, 0x72, 0x54, 0xFF, 0xD5, 0x95, 0x31, 0xF6, 0xE9, 0xA0, 0xFF,
   0xFF, 0xFF, 0x56, 0x68, 0x72, 0x6C, 0x64, 0x21, 0x68, 0x6F, 0x20, 0x77, 0x6F, 0x68, 0x48, 0x65,
   0x6C, 0x6C, 0x54, 0x87, 0x04, 0x24, 0x50, 0x50, 0x56, 0xFF, 0xD5, 0xCC
};

ASM:
data   db 31h, 0F6h, 56h, 64h, 8Bh, 76h, 30h, 8Bh, 76h, 0Ch, 8Bh, 76h, 1Ch, 8Bh, 6Eh, 08h
       db 8Bh, 36h, 8Bh, 5Dh, 3Ch, 8Bh, 5Ch, 1Dh, 78h, 01h, 0EBh, 8Bh, 4Bh, 18h, 67h, 0E3h
       db 0ECh, 8Bh, 7Bh, 20h, 01h, 0EFh, 8Bh, 7Ch, 8Fh, 0FCh, 01h, 0EFh, 31h, 0C0h, 99h, 32h
       db 17h, 66h, 0C1h, 0CAh, 01h, 0AEh, 75h, 0F7h, 66h, 81h, 0FAh, 2Ah, 0B6h, 74h, 09h, 66h
       db 81h, 0FAh, 0AAh, 1Ah, 0E0h, 0DBh, 75h, 0C5h, 8Bh, 53h, 24h, 01h, 0EAh, 0Fh, 0B7h, 14h
       db 4Ah, 8Bh, 7Bh, 1Ch, 01h, 0EFh, 03h, 2Ch, 97h, 85h, 0F6h, 74h, 15h, 68h, 33h, 32h
       db 20h, 20h, 68h, 75h, 73h, 65h, 72h, 54h, 0FFh, 0D5h, 95h, 31h, 0F6h, 0E9h, 0A0h, 0FFh
       db 0FFh, 0FFh, 56h, 68h, 72h, 6Ch, 64h, 21h, 68h, 6Fh, 20h, 77h, 6Fh, 68h, 48h, 65h
       db 6Ch, 6Ch, 54h, 87h, 04h, 24h, 50h, 50h, 56h, 0FFh, 0D5h, 0CCh

Dis:
010F1901      31F6          XOR ESI,ESI
010F1903      56            PUSH ESI
010F1904      64:8B76 30    MOV ESI,DWORD PTR FS:[ESI+30]
010F1908      8B76 0C       MOV ESI,DWORD PTR DS:[ESI+C]
010F190B      8B76 1C       MOV ESI,DWORD PTR DS:[ESI+1C]
010F190E      8B6E 08       MOV EBP,DWORD PTR DS:[ESI+8]
010F1911      8B36          MOV ESI,DWORD PTR DS:[ESI]
010F1913      8B5D 3C       MOV EBX,DWORD PTR SS:[EBP+3C]
010F1916      8B5C1D 78     MOV EBX,DWORD PTR SS:[EBP+EBX+78]
010F191A      01EB          ADD EBX,EBP
010F191C      8B4B 18       MOV ECX,DWORD PTR DS:[EBX+18]
010F191F      67:E3 EC      JCXZ SHORT CommandC.010F190E
010F1922      8B7B 20       MOV EDI,DWORD PTR DS:[EBX+20]
010F1925      01EF          ADD EDI,EBP
010F1927      8B7C8F FC     MOV EDI,DWORD PTR DS:[EDI+ECX*4-4]
010F192B      01EF          ADD EDI,EBP
010F192D      31C0          XOR EAX,EAX
010F192F      99            CDQ
010F1930      3217          XOR DL,BYTE PTR DS:[EDI]
010F1932      66:C1CA 01    ROR DX,1
010F1936      AE            SCAS BYTE PTR ES:[EDI]
010F1937    ^ 75 F7         JNZ SHORT CommandC.010F1930
010F1939      66:81FA 2AB6  CMP DX,0B62A
010F193E      74 09         JE SHORT CommandC.010F1949
010F1940      66:81FA AA1A  CMP DX,1AAA
010F1945    ^ E0 DB         LOOPDNE SHORT CommandC.010F1922
010F1947    ^ 75 C5         JNZ SHORT CommandC.010F190E
010F1949      8B53 24       MOV EDX,DWORD PTR DS:[EBX+24]
010F194C      01EA          ADD EDX,EBP
010F194E      0FB7144A      MOVZX EDX,WORD PTR DS:[EDX+ECX*2]
010F1952      8B7B 1C       MOV EDI,DWORD PTR DS:[EBX+1C]
010F1955      01EF          ADD EDI,EBP
010F1957      032C97        ADD EBP,DWORD PTR DS:[EDI+EDX*4]
010F195A      85F6          TEST ESI,ESI
010F195C      74 15         JE SHORT CommandC.010F1973
010F195E      68 33322020   PUSH 20203233
010F1963      68 75736572   PUSH 72657375
010F1968      54            PUSH ESP
010F1969      FFD5          CALL EBP
010F196B      95            XCHG EAX,EBP
010F196C      31F6          XOR ESI,ESI
010F196E    ^ E9 A0FFFFFF   JMP CommandC.010F1913
010F1973      56            PUSH ESI
010F1974      68 726C6421   PUSH 21646C72
010F1979      68 6F20776F   PUSH 6F77206F
010F197E      68 48656C6C   PUSH 6C6C6548
010F1983      54            PUSH ESP
010F1984      870424        XCHG DWORD PTR SS:[ESP],EAX
010F1987      50            PUSH EAX
010F1988      50            PUSH EAX
010F1989      56            PUSH ESI
010F198A      FFD5          CALL EBP
010F198C      CC            INT3




Al final crashearia porque tiene un INT3 podes poner un RET

Belial & Grimoire

http://foro.elhacker.net/analisis_y_diseno_de_malware/abril_negro_2008_taller_de_formato_pe_by_ferchu-t208278.0.html

aquí esta explicado como hacerlo, pero las imágenes no las puedo ver, solo no recuerdo la parte donde modifica PE disminuyendo 0x28 para no alterar Bound Import y ejecutar un código

Yo obtengo el MsgBox mediante PEB a diferencia de él, que lo hace con las direcciones

bueno, no se sea necesario hacer lo que ferchu explica en su taller para ejecutar código en una nueva sección, por eso me gustaría saber eso

salu2
.                                 

x64core

Cita de: Belial & Grimoire en 23 Junio 2013, 17:26 PM
http://foro.elhacker.net/analisis_y_diseno_de_malware/abril_negro_2008_taller_de_formato_pe_by_ferchu-t208278.0.html

aquí esta explicado como hacerlo, pero las imágenes no las puedo ver, solo no recuerdo la parte donde modifica PE disminuyendo 0x28 para no alterar Bound Import y ejecutar un código

Yo obtengo el MsgBox mediante PEB a diferencia de él, que lo hace con las direcciones

bueno, no se sea necesario hacer lo que ferchu explica en su taller para ejecutar código en una nueva sección, por eso me gustaría saber eso

salu2

Yo simplemente agregaria una nueva sección copiara mis instrucciones a ella, Guardo el actual valor del punto de entrada del
PE y lo cambio para que apunta a mi sección ( En mis instrucciones debo como ultimo hacer un salto al viejo punto de entrada ).

The Swash

Hola,

Lo único que hacía Ferchu era correr 0x28 bytes el inicio de la cabecera NT_HEADER, que comienza con la firma PE.

0x28 bytes porque eso es lo que ocupa una sección en el SECTION_HEADER.

Saludos.

Belial & Grimoire

hola

pero alguien sabe con que vuelve a llena esos 0x28 hexadecimales?, porque si borro 0x28 obviamente dejare incompleto el archivo, entonces creo el llenaba con algo esos 28 hexadecimales para volver a acomodar los offset en su lugar y dejar el archivo completo, y no recuerdo eso

si borro 28 hexadecimales, que necesito para llenar esos 28 hexadecimales que borre para dejar el archivo con la misma cantidad de hexadecimales?

porque en una imagen se alcanza a ver que borra los 28 hexadecimales, pero tambien se alcanza a ver que despues de los 28 hexadecimales de PE vuelve a acomodar los hexadecimales para que quede todo en su lugar
.                                 

x64core

Lo que deberias hacer es, aprender a agregar una nueva sección a una imagen, sea como sea de la forma en la que se
explica en el manual, lo mejor y simple es como dije antes agregar la sección y cambiar en punto de entrada, mas cosas
podrian ser hechas despues.

Bajate la documentacion oficial acerca del formato actualizada http://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx

al menos lee la parte de las cabeceras del PE, el contenido de las secciones para esto no es necesario.

Belial & Grimoire

es que agregar secciones ya lo hice, solo me hace falta lograr ejecutar opcodes

miren esta imagen de ferchu, elimina 28 hexadecimales y se nota en la imagen, pero luego lo alinea, el problema es que esta muy chica la imagen y no alcanzo a ver con que alinea los demas hexadecimales, en la parte de abajo se ve una linea morada, donde se muestra que esta alienado

http://s1.subirimagenes.com/otros/368697modificado31.jpg

mi problema no es que quiera que me expliquen todo el formate PE, solo esa parte de los 28 hexadecimales, eso es todo
.                                 

x64core

Cita de: Belial & Grimoire en 16 Julio 2013, 16:55 PM
es que agregar secciones ya lo hice, solo me hace falta lograr ejecutar opcodes

miren esta imagen de ferchu, elimina 28 hexadecimales y se nota en la imagen, pero luego lo alinea, el problema es que esta muy chica la imagen y no alcanzo a ver con que alinea los demas hexadecimales, en la parte de abajo se ve una linea morada, donde se muestra que esta alienado

http://s1.subirimagenes.com/otros/368697modificado31.jpg

mi problema no es que quiera que me expliquen todo el formate PE, solo esa parte de los 28 hexadecimales, eso es todo


Yo nisiquiera me tome el tiempo de mirar el manual de ferchu, pero lo que yo supongo es que quieres hacerlo de la forma correcta y si
lo es posible optima. Y si ya has podido agregar la sección solo cambias el punto de entrada y luego debes de redirigir al original.
Pueda que quieras mostrarnos el codigo que llevas lo voy a arreglar  :D


Belial & Grimoire

lo estoy haciendo manualmente con un editor de hexadecimal, te agradeceria mucho si me puediras explicar esa parte de cambiar el punto de entrada y redirigirlo

te dejo el block de notas que modifique y el codigo hecho en nasm, me imagino que te servira mas el codigo que los opcodes

Estoy usando windows 7 32bits

http://www.mediafire.com/download/ej8gzpqbz9x88bj/notepad.exe

Código (asm) [Seleccionar]
[BITS 32]

section .data

hola: db 'hola mundo',0
box: db 'user32.dll',0
ldlib: dd '0xFFFFFFFF'
ap: db 'MessageBoxA',0
bbox: dd '0xFFFFFFFF'

section .text

global _WinMain@16
extern _LoadLibraryA@4
extern _GetProcAddress@8
extern _ExitProcess@4

_WinMain@16:

xor eax, eax
push box
call _LoadLibraryA@4
mov [ldlib], eax

push ap
push dword [ldlib]
call _GetProcAddress@8
mov [bbox], eax

push 0
push hola
push hola
push 0
call dword [bbox]

push 0
call _ExitProcess@4
.