吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 34491|回复: 31
收起左侧

[调试逆向] 修改ProcessMonitor过TMD壳反监测(1)

  [复制链接]
FoodieOnTheWay 发表于 2016-4-19 23:55
本帖最后由 FoodieOnTheWay 于 2016-7-14 22:40 编辑

       了解病毒分析的人对下边三个程序的图标一定很熟悉吧!
       没错,这就是微软旗下SysInternal全家桶中的AutoRuns, ProcessMonitor(简称ProcMon)和ProcessExplorer(简称ProcExp)。
       听前辈们讲,这几款软件在早期非常流行,很多玩儿病毒的人的工具箱里必定有这几款神器。
      

Sysint

Sysint



       在我刚开始接触病毒的时候,朋友们教我的就是如何用自启动监视器(AutoRuns),注册表监视器(RegMon),文件监视器(FileMon)等一系列SysyInternal的工具来监视目标程序。后来,注册表和文件监视器这两个工具双剑合璧,成为了ProcessMonitor,变得更厉害了,我还开心了一阵子。
       不过呢,所谓树大招风,人怕出名猪怕壮,一些工具一旦被很多病毒分析人员使用,病毒作者就开始设法去Anti这些工具。很典型的就是加了ThemIDA这个壳的一些样本。反沙箱,反虚拟机,反OllyDbg反SysInternal全家桶等功能应有尽有。


       最近遇到了加了Themida壳的程序,有时候开着ProcessMonitor/ProcessExplorer运行的,样本就老是给弹框或者直接退出了。我就想在网上找找相关的方法搞定这个问题。说来也怪,可能沙箱,虚拟机算是刚需,在网上能找到不少防止反虚拟机和沙箱的方法,但是防止反ProcessMonitor的还真没找到(也可能是他们自己写了新的)。于是我打算拯救一下他们,看能不能再焕发一下第二春?!



Ⅰ. 样本如何Anti-ProcessMonitor?
      通过对最近遇到的的程序监控API,发现它们一般反Anti-ProcessMonitor的方法有如下3个。
              1. Find process;
              2. Find window name;
              3. Find window class.
      我们的目标就是bypass这三种检测。
      对付第一个比较简单。ProcessMonitor的程序名一般是ProcMon.exe, 直接改名就好。
      第二个也还好,改窗口名也有很多工具可以改。但是如果能一劳永逸,那自己是极好的。
      第三个则真是需要改程序内容了。   
      花了一个多小时时间,终于把ProcessMonitor和ProcessExplorer给改完了。正好有如下这个小程序(熟悉吗?爱盘里面的查壳工具ExeInfoPE:http://down.52pojie.cn/Tools/PEtools/ExeinfoPE.zip ),如果我开着正常的ProcessMonitor,打开它会弹出如下的一个对话框。那就用它做测试吧!
a29c8b99-cfd3-4113-86bb-6ac0f213ffca.png

Ⅱ. 修改 ProcessMonitor程序
     下边我就说下具体的修改过程(其实很简单,思路就按照上面的检测方法去反制,我们这里是修改窗口名和窗口类名):
         1. 用OllyDbg打开Procmon.exe(下载的最新版,https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx);
         2. Ctrl+N进入导入表,然后找到RegisterClassW函数的调用地址,如下图,就可以看到PROCMON_WINDOW_CLASS(窗口类名)这个字符串了;
e124f4a0-cb9e-424a-a64a-e18dc14a75d4.png
         3. 然后就可以根据PROCMON_WINDOW_CLASS的上下文Pattern去找这个字符串,然后用UltraEdit或者其他工具改为你想要的字符串,我这里是把它改为PRoCMoN_WIND0W_CLASS了;

Class

Class

        4. 需要注意的是你会找到两个,不要吃惊,大胆改掉它吧,因为这个文件里还嵌入了一个64位的版本,ProcMon不仅是注册表和文件监控二合一,现在更是64位和32位二合一了,详情我会下边讲;
        5. 按照上面2-4的步骤,找到最后一个CreateWindowExW,顺藤摸瓜就找到了窗口标题,同样改掉他们就完了。
dc3cf539-987e-4d89-a890-0b1c2643e0fb.png
4d7643bd-9635-480e-941b-9fdf9b028cee.png

           最终我的私人定制版ProcessMonitor的窗口标题是这样的,如下小图(不知道为什么,上传到论坛上的图添加到文章时显得特别小,如果有知道怎么调整,请不吝赐教)。具体修改的地方可以参考下边的PE差异对比图。
            f308cd98-a86c-4b02-bcf6-6793cff6b693.png

ProcMon

ProcMon

Ⅲ. ProcessMonitor的32/64位版本一体化  
         我之前在工作机上用过64位的ProcessMonitor,但是没发现过什么问题。这次看到有两套字符串,那就随便看看,结果看到了“MZ”,于是猜测在64位机器上面,应该会释放出来,只是之前没有注意到。果不其然,它在%temp%下释放了一个64位的版本出来,名字是原来的名字+64,我的这个就是“Pr0cmon64.exe”。如果按照我的方法把两套字符串都修改了,那么释放出来的64位版本也是能Bypass的。而且,我的工作机是64位的,那么我就可以把它直接复制到我的工具箱,省得它每次还要再释放文件,启动速度也会快一些。
——————————————————————————————————————————   
      同样的方法也可以用在其他SysInternal的工具上。当然,工具也可以使用别的,比如,对于ProcessMonitor, IDA看一眼就明白了,可以花更少时间搞定这个,不过我当时以为可能会比较复杂,才使用的OllyDBG。有兴趣的可以试试用IDA搞定ProcessMonitor和其他的SysInternal全家桶产品。 下图是我对ProcessExplorer修改的对比图。

ProcExp

ProcExp

     需要提醒大家的是,改过后,SHA1会跟原文件不一致,导致证书失效,UAC提示的时候就没有厂商名称神马的了。

——敬请期待下集———————————————————————————————————         
      还需要提醒大家一点的是,新版本的TMD壳还是能检测到ProcessMonitor的,因为它还有别的路子去找到ProcessMonitor,只是用API监控发现不出来。
      扣字儿真是比扣代码还累啊,因为第一次在论坛发帖,花了很长时间才写了这么短一篇,鉴于马上12点了,我就就此打住,下次写怎么Bypass比较新的版本TMD的检测,大家表骂我卖关子,真的是因为明天还要继续忙,可能还要加班。   

——非常抱歉,下集已经没有了—————————————————————————————   
      非常不想食盐的,但是谁让自己懒呢。一方面,Boss们同意用火绒的工具,感觉用着还挺好的,所以就没有继续改进的动力了。进一步说,底层的更改还是蛮难的,可能还要请其他同事帮忙,而我这人不太愿意求人,所以就放弃了。求不拍砖。   

····························································
应一些同学的要求,把我修改好的放上来。密码是52Pojie

PorcMon/ProcExp

PorcMon/ProcExp

ProcMon ProcExp.zip

2.02 MB, 下载次数: 795, 下载积分: 吾爱币 -1 CB

密码52Pojie

点评

很简单把文章扔到简书,ctrl+V一下就可以到论坛了,对了简书还支持ctrl+V图片  发表于 2018-5-1 10:47

免费评分

参与人数 5威望 +2 吾爱币 +1 热心值 +5 收起 理由
wyj + 1 + 1 不好意思,手误点错扔鸡蛋
xouou + 1 虽然看不懂,不顶没天理
dingk + 1 谢谢@Thanks!
我的爱是你 + 1 挺好的东西怎么没人看呢!
Hmily + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pj_security 发表于 2019-1-1 17:25
本帖最后由 pj_security 于 2019-1-1 17:28 编辑

用WinObj或者procexp还可以看到 sysinternal的工具都会创建一个标志性的互斥体对象.
用CreateFile打开这些对象检查下返回值也可以知道.
5 - 无权限
2 - 对象不存在
以及打开成功.
所以要想过,  应该也定位一下 'CreateMutexA'这里API处改改
无标题.png
 楼主| FoodieOnTheWay 发表于 2016-4-20 12:47
本帖最后由 FoodieOnTheWay 于 2016-4-20 12:48 编辑
Hmily 发表于 2016-4-20 10:13
赞一个,之前我们有个需求也是修改ProcessMonitor,绕过一些监控,发现最大的问题还是修改驱动通信接口,改 ...

X64这个确实是没法绕过去。巨硬的开发者生态总体上来讲,还是在往严格了走,上层的人也在尝试着去把握这个度,据说之前是希望改良,最近则是想打破旧的这套东西,把UWP(通用windows程序)扶持起来,实现全球通。不过从目前的效果来看,WinPhone是不行了,UWP也没啥价值了,可惜了我们以前还专门学习了一下UWP的开发流程。所以以后有大的系统版本更新,估计还会添加一些安全相关的特性。
Hmily 发表于 2016-4-20 10:13
赞一个,之前我们有个需求也是修改ProcessMonitor,绕过一些监控,发现最大的问题还是修改驱动通信接口,改完签名没了x64新系统还无法加载很悲剧。
dingk 发表于 2016-4-21 21:19
可以用火绒的火绒剑啊,也能起到同样的作用,只是没这个微软的用着顺手
www52pojiecn 发表于 2016-4-22 23:49
收听了,期待继续
GodIand 发表于 2016-4-24 14:22
学习到新知识了,感谢分享
头像被屏蔽
chen1234 发表于 2016-4-25 07:46 来自手机
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
panjb 发表于 2016-5-8 19:11
提示: 作者被禁止或删除 内容自动屏蔽
海风爸爸 发表于 2016-7-9 08:09
伸手党   给个分享呗。。。
 楼主| FoodieOnTheWay 发表于 2016-7-14 22:31
海风爸爸 发表于 2016-7-9 08:09
伸手党   给个分享呗。。。

已放在帖子附件中,密码52Pojie。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 10:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表