阅读:11645回复:46
进程保护挑战 - 无HOOK无KDOM,微软标准函数
看到有人诟病360的自我保护,又见江民、微点等一堆国内挫人使用一大堆HOOK对自己的进程做保护
导致系统不稳定还保护不住 于是放点东西出来给大家玩玩,欢迎挑战 测试程序没有使用任何HOOK,没有使用任何KDOM,没有修改任何未公开的数据结构或调用,完全是微软的标准接口和函数,却让无数进程结束,ARK工具望之兴叹,哈哈! 以下是无法结束本测试程序的程序列表,欢迎各位测试自己的工具,逐步更新此表 Icesword 1.22 --- failed RKU 3.7 --- failed gmer 1.14 --- failed SnipeSword 20080225 -- failed Wsyscheck 20080223 --failed 墨者安全专家进程管理3.05 --- failed DarkSpy 1.0.5 --- failed SysProt 1.0.0.5 --- failed 挑战规则: 让进程退出 禁止: 不允许攻击窗口 不允许恢复驱动使用标准函数建立的接口等 不允许破坏驱动内部数据或代码流程(例如保护PID值) 不允许类似上面的技巧 测试程序见压缩包: 测试方法:使用Driver Monitor或DrvLoad等工具加载ppxx.sys 运行ppxx.exe 尝试将其结束 |
|
|
沙发#
发布于:2008-04-03 22:27
.text:000106DC call PsSetCreateProcessNotifyRoutine
.text:000106E1 push offset sub_10560 ; NotifyRoutine .text:000106E6 call PsSetCreateThreadNotifyRoutine 建立这样连个回调,然后在回调里判断是否自己的进程,不是的话就无限期 KeDelayExecutionThread 同志们不用反了,直接想办法吧 |
|
|
板凳#
发布于:2008-04-03 22:29
老大,IDA也要给点专业精神啊,你反的不正确,这样会误导后来的同志们的
|
|
|
地板#
发布于:2008-04-03 22:40
.text:000106DC call PsSetCreateProcessNotifyRoutine
.text:000106E1 push offset sub_10560 ; NotifyRoutine .text:000106E6 call PsSetCreateThreadNotifyRoutine 建立这样连个回调,然后在回调里判断是否自己的进程,是的话就无限期 KeDelayExecutionThread 不好意思,我说反了 |
|
|
地下室#
发布于:2008-04-04 00:01
安全结束进程需要在进程内线程执行代码,LZ又不让进程存在活动线程,2个条件完全冲突,也就是找出外部结束进程的办法...
|
|
5楼#
发布于:2008-04-04 00:08
啥呢,楼上也没搞清楚。。。
建议还是仔细IDA F5后再发言~ |
|
|
6楼#
发布于:2008-04-04 08:26
谁有兴趣就干下这个重体力活吧,哈哈.
|
|
|
7楼#
发布于:2008-04-04 17:58
好久没来了,刚来就发现这么好玩的东西哈。
我的想法: 1. 直接摘链,这个我就不说了,体力活而已; 或者 hook 那个KeDelayExecutionThread ; 2. 由于驱动设计的缺陷,因此我们可以以很容易的杀死目标进程(注意:偷懒方法,针对此程序设计而已,无任何技术,只是思路而已,呵呵)。 说说方法2: 1. 加载 ppxx.sys 2. 运行 ppxx.exe 另他处于被保护状态; 3. 运行我提供的 updatexxpp 程序,然后使用任意程序结束目标或者直接关闭 ppxx.exe 即可 :) 不过,这些方法有违规的嫌疑,和要求有些擦边了 :( 但是,话说话来了,本来方法就不多,如果都不让用了... updatexxpp 的源代码如下: =========================== // created by codez @2008 #include <stdio.h> #include <stdarg.h> #include <windows.h> #define CODE 0x222000 #define DEVICE_NAME "\\\\.\\xxpp" void fatal (char * fmt, ...) { va_list args; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); } int main(int argc, char * argv[]) { HANDLE hDevice = CreateFile(DEVICE_NAME, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); DWORD dwPid, dw; if (hDevice == INVALID_HANDLE_VALUE) { fatal ("No device found! Good luck!\n"); return -1; } dwPid = 0; if (DeviceIoControl(hDevice, CODE, &dwPid, sizeof(dwPid), NULL, 0, &dw, NULL)) { printf ("OK! You could use taskmgr program to kill the target file now!\n"); } else { fatal ("Failed to set process id!!! Error=0x%lX\n", GetLastError()); } CloseHandle(hDevice); return 0; } // end |
|
8楼#
发布于:2008-04-04 18:10
不知道 Hook KeDelayExecutionThread 这个算不算作弊。
|
|
9楼#
发布于:2008-04-04 22:56
楼上的两个办法都算是作弊
1.hook kexxx,实际是干扰了保护驱动程序本身的工作流程,试想,如果我不用kedelay呢?这只能算只针对性的攻击 2.给DEVICE发请求改PID,是修改了保护驱动本身的数据,试想,我换一个IOCTL,或者干脆用随机的呢? |
|
|
10楼#
发布于:2008-04-05 04:15
EP_X0FF
|
|
11楼#
发布于:2008-04-05 16:19
越来越发现内核不好玩了;—<
|
|
12楼#
发布于:2008-04-06 00:13
日啊,xpsp2虚拟机,sys无法加载,拜托mj你下次别弄残废版来消遣我等啊
|
|
13楼#
发布于:2008-04-06 01:27
都是标准函数,有啥不能加载的,仔细看好了,你要先手动加载驱动!偷懒没写加载代码,什么残废版,说话小心点
|
|
|
14楼#
发布于:2008-04-06 10:27
说实话,这个程序本身就存在类似于恶意软件的行为,所以,如果非要用某种通用的方法去实现针对某种特定的方法的确意义不大。
不管摘练是否犯规,但是这是一个很通用的方法,基本上你的驱动只要没有根本性的机制改变,也可以被杀掉。 如果说有更通用的方法,那么就是通过其他系统引导本身硬盘,删除程序而已。 MoveFileEx 或者类似的方法可以轻松搞定,呵呵。 |
|
15楼#
发布于:2008-04-06 11:06
本身这就是个保护挑战,恶意不恶意,不知道从哪里说起
摘链无疑不现实,因为如果这是个恶意程序,那么它可能根本不用这种一眼就能出来的钩子,试问你怎么摘? 至于什么删除程序,更是可笑,这是进程保护挑战,与文件何干? |
|
|
16楼#
发布于:2008-04-06 11:21
给点提示....
|
|
17楼#
发布于:2008-04-06 11:27
PsNotifyMrg.zip 放个测试程序,环境是XPSP2
用法是先加载驱动,然后执行PsNotifyMrgApp.exe选择\\.\PsNotifyMrgDevice,open handle Operation Type,选择IOCT_800 Input Size :4 Input Pattern:你进程的PID 点击Execute Transfer,以后你指定的PID就可以避开所有的PROCESS, THREAD CALLBACK的监视,不过其他的调用还是会经过所有的CALLBACK。主要是针对特定进程避开监视而又不影响其他进程的监视。不过也只是个想法而已。 |
|
|
18楼#
发布于:2008-04-06 13:38
引用第17楼wowocock于2008-04-06 11:27发表的 : wowo老大的驱动是拿什么编译的,这么大? 他的意思是根本不让你干扰他的routine,必须让它执行... |
|
19楼#
发布于:2008-04-06 13:49
WOW老牛出手了 :) 膜拜先
方法似乎是先取到所有的notify,然后把他们保存下来,最后都干掉 然后自己注册一个,替他们来执行,所以就可以过滤掉指定的PID了(或者TID~) 但是似乎只能执行在XP下 ,首先2K没有REMOVE那个函数,其次2k上就是一张地址表,而XP后则是CallBackObject了 PS:终于看到WOW牛发出的SYS没有CV了,F5好开心~~~ - - !不过大家为啥都只盯着可怜的notify不放呢。。。 |
|
|
上一页
下一页