-
-
[讨论][求助] 如何用API monitor hook一些很常见的病毒反hook方式
-
发表于:
2018-4-4 17:21
6971
-
[讨论][求助] 如何用API monitor hook一些很常见的病毒反hook方式
【背景】
本人分析看雪论坛中旧帖中一个木马时,
看到恶意代码执行之前有个操作: 获取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到点)?或者有没有别的抓取的工具或者解决方案?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2018-4-4 18:24
被demoLin编辑
,原因: