卡巴斯基2010 在针对数字签名和系统文件防护变的非常严格,注册表更不说,经过这么多年的升级基本上没有可以利用的价值, 卡巴斯基2010 之前版本可以通过修改感染系统文件进行启动,绕过监控,只需要给PE 文件添加一个数字签名,由于卡吧监控并不严格只是判断是否加了签名,而没有判断签名是否正确,所以给很多马留了生存空间。
但是, 卡巴2010 后的版本就没有这么幸运了,对系统目录文件的验证变的十分严格,即使想用程序给系统目录的文件改个名字,也会被提示风险软件,而主要的几种启动方式例如 服务启动,Winlogon 启动, ActiveX, 感染系统文件, DLL 劫持 , 替换 SVCHOST 等等,已经无计可实了。
下面简单分析这几种启动方式死法
1. 服务启动方面,注册服务的最终都要写注册表,以前可以直接写,后来导入注册表,再后来通过 RegRestoreKey 恢复,最最后HIV 文件分析,现在怎么写也写不进去了,死了。
2. Winlogon这个启动方式非常好在 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/Notify 项下面创建一个子键加上要启动的项名称在 DllName 中加上自己的 DLL 为 DLL 导出几个函数系统启动时会由 Winlogon 加载启动稳定是没得说,不过修改注册表这一步以经没办法实现了,实在可惜。
3. ActiveX目前还有可以利用的价值,不过要好好想想哈
4. DLL劫持一直被称为神奇的马甲,但由于 卡巴2010 开始对系统文件目录的严格查杀,劫持也变的非常不容易了IE 还可以利用,在 IE 的目录里把原 DLL 改名自己的 DLL 放进去然后发函数转发到原 DLL ,由于 IE 目录是 Program Files 目录而非 %Windows% 所以进行劫持还是可取的,而且穿透防火墙的效果好,你没见所有的防火墙直接就能放行吗 ? 但缺点也很明显,只有用户启动 IE 的时候你的 DLL 才会被加载。 本文作者 冷风
5. SVCHOST服务启动,首先要区分 SVCHOST 启动与普通服务启动。 SVCHOST 是唯一可以与 IE 颦美的方式,由于 DNS 服务的域名解析是由 SVCHOST 进程启动的所以他必须连接网络。而让 SVCHOST 加载自己的 DLL 是一个非常好方式,比如前些时间流行的替换 BITS 服务就是,还可以过主动防御。 SVCHOST 自己创建一个分组的话是最稳定的,得会多出一个 SVCHOST 进程出来。哎 , 缺点必须动注册表。
对启动方式 大概说一下 方便后面启动的理解,看一下上面主流的启动方式基本上以经被封杀的无路可以走了,而其它还有一些加载方法属于某些人自己的神兵利器。如果别人不爆,想搞到也要大费力气 。还是就上面几种方式说说思路吧
首先就对修改注册表启动这一块想过 2010 以经是不太可能的了,这些启动方式中除去跟注册表有关系的就是 DLL 劫持与 PE 感染了, PE 感染可以让系统文件加载我们自己的 DLL 与 DLL 劫持实现不同但效果基本一样,但这两种方法两关要过,其一是系统的 WFP 文件保护功能,其二就是 卡巴 2010对系统文件夹的保护了,对于系统的 WPW 功能你可以通过调用 sfc_os_dl 中的的第 5 个函数来关闭以前有人说要让 winlogon 来执行,才能关闭其实不用,你可以直接调用,当然这个功能以被卡吧看住了只要你一调用他就杀你,解决方法是你把这个功能实现写到 DLL 里面,然后导出一个函数,你的程序加载这个 DLL 再调用,这样 卡巴 虽然很牛但也不能知道你的函数是什么导出格式,有几个参数,所以他模拟也模拟不出,就行了。
然后就是与 卡巴 的正面交锋了,这Y 的很猛的,首先他会使劲检测你的程序 看是不是跟 windows 里的系统文件有染,一但发就直接喀嚓了,所以一定要小心就算是使用 GetWindowsDirectory 之类的也要小心啦, 卡巴 同志这时候正瞪着眼睛看着你呢,比如你想使用把MoveFileEx 把里面的文件改个名,然后把自己的文件 CopyFile 或者 MoveFile 进去,那就完蛋了, 卡巴 会直接报一个Install Windows 风险,为什么会报 Install Windows 风险呢?就是因为你动系统目录的文件了,不过他也不能太苛刻毕竟很多的正常的软件也要访问,如何解决这个鸟?通过批处理 BAT 行不?我试了不行。 本文作者 冷风
我通过另一个办法简单模拟了一下可以实现,其实很简单啦,本文作者 冷风,方法就是你把要访问系统目录的功能分开来写,比如你要替换Usp10.dll 然后通过启动 Http SSL 服务来启动你的马,那你在关闭系统的文件保护之后,必须把原来的 Usp10.dll 改名,然后才能把自己的 DLL 拷贝进来,这时你要注意,给 Usp10.dll 改名和拷贝自己的文件不能在一个 PE 中完成,你可以把 改名这个操作放到 RenameUSP.EXE 中把拷贝 DLL 放到 WriteDll.EXE 中然后 想法调用这两个 EXE 这样每个 EXE 单独操作, 卡巴 针对每个EXE 执行的时候不会报警,但合到一块操作就会报警,还有不嫌麻烦的话把这些操作封装到 DLL 再调用。 本文作者 冷风
在测试 卡巴 的中途我把半成品拿到瑞星的2010 测试了一下,发现主动防御可以直接过去啦,看来瑞星还要努力啊,不过我喜欢瑞星,只要自己手工配置一下,杜绝 95% 的马能跑起来还是完全没有问题的 ^_^ 如果你要过瑞星的话要注意明文字符串,比如你在搞一个劫持 LPK.DLL 进行启动的马,那你最好不要在代码出出现 TCHAR szHijiackDll[]=_T("LPK.DLL") 这样的代码,因为瑞星好像会扫这个东西然后直接给你报一个 Win32.FakeLPK 还是简单加密一下啦,就算用 _tcscat 连接也好哈。 本文作者 冷风
还有一点,我还没能确定, 卡巴 在关方有一个列表,这个列表中的软件呢,就算没有数字签名,也会被认为是安全的软件,他会把运行的文件对这个列表对比,有的话就直接放行了,这是一个人性化的操作,是否有可以利用的价值还需要研究呐,你想如果不连接网络的话, 卡巴 怎么处理他会不会放松检查的严格成度来保证软件的兼容性?在测试时我给EXE 随便加了一个签名,然后断网运行,发现原来报警,断网却没有报警。这个没有严格测试有朋友感兴趣就自己测试一下吧。 本文作者 冷风
嗯,驱动很热门啊,用驱动搞死它行不? 行啊!!不过,但是,可是 ...... 就算是神枪手要杀人也得有出枪的机会,但是 卡巴 大叔不会给你这个机会,所以这个想法还是放弃的好。驱动嘛还是用来做安全盾牌吧,进了驱动就是天堂,但是杀毒软件在进天堂的紧要关口都设了埋伏,所以我们还是从R3 下地狱好了, R3 下虽然很崎岖但毕竟路很多。 本文作者 冷风
360也在搞安全认证,不过现在只接受公司的软件认证,看来这是很好的一块市场啊,如果 360 成了权威的安全认证的话,以后的软件都得加上 360 认证的证书。这样也不错,毕竟现在想要给你的软件买个安全证书也不是容易的事情。哎我还有很我废话要说不过我家领导要下班了,就写到这里,文章是随兴而写乱七八糟,前张后合,有什么错误的地方请多包涵,如果你有兴趣的话可以与我联系,我的 ID 冷风 QQ121121606 欢迎指正错误一块学习进步。