首页
社区
课程
招聘
[讨论][求助] 如何用API monitor hook一些很常见的病毒反hook方式
发表于: 2018-4-4 17:21 6970

[讨论][求助] 如何用API monitor hook一些很常见的病毒反hook方式

2018-4-4 17:21
6970
 【背景】 
     本人分析看雪论坛中旧帖中一个木马时,看到恶意代码执行之前有个操作:
             获取kernel.dll基址,然后通过函数名字符串校验和来匹配到相应kernel.dll API,将其函数地址存储起来,等到使用时直接调用存储的绝对地址。


    我自己也在一些其他病毒分析帖子看到过这种逻辑,感觉算是个病毒逻辑比较常见的反hook方式(目的应该是反hook吧?)。这种操作对样本的单个分析没有太大的影响。但是我的目标想跑出这个病毒的API行为序列,所以想利用API monitor来捕获API的序列。遇到的问题就是API monitor 无法抓取到通过上述反hook方式使用的API,譬如一些CreateToolhelp32Snapshot之类重点函数都用kernel解密函数来获取绝对地址使用。下面是关于问题的详细分析:
    
【问题描述】
     关于传统hook方式:修改指定kernel函数的前5个字节,当然可以解决上述问题。因为病毒最终访问的就是原函数地址,修改前5字节修改的也是原函数。
      我使用API mointor的原因是,它能勾选的dll比较全,给的API序列参数详细信息很多。所以想用它来弥补我调试分析的缺漏。
    
    API monitor hook的方式是加载一个sys文件到指定进程中:
   
    然后在本地Temp目录下生成勾选的monitor函数代码文件,映射到内存中,并不修改原函数。 (这属于驱动注入么?不懂)
    
    这是一部分monitor定义代码文件内容:
    
    其中apimonit.6FE02FF0是对应加载的模块sys文件中一个通用的地址处理函数,比如使用GetProcAddress函数获取到的函数还是monitor定义代码文件中的地址。
    而且API monitor在监控指定的进程后,它好像只是直接将IAT中的函数地址替换成monitor定义代码文件中的地址。下面是测试程序:
   
       API mointor 监控
     未监控
    所以对于未使用IAT中函数,直接访问绝对地址的方式,并不能hook到。

【探讨】
    上面对于API monitor hook的方式只是从侧面进行了分析,并没有很完整的理解API monitor的hook方式,不知有没有坛友比较了解API Monitor的hook机制,或者类似的hook机制,交流一下。
     还有就是关于上述的病毒反hook方式能不能利用API monitor抓取到(我怕我没get到点)?或者有没有别的抓取的工具或者解决方案?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2018-4-4 18:24 被demoLin编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
去内核里hook
2018-4-4 18:09
0
雪    币: 3136
活跃值: (97)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
3
hzqst 去内核里hook
主要是想用工具来hook行为序列,自己hook的函数有限
2018-4-4 18:25
0
雪    币: 3136
活跃值: (97)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
4
自顶一波
2018-4-5 10:30
0
游客
登录 | 注册 方可回帖
返回
//