代码注入、挂钩与恶意软件混淆技术解析
在网络安全领域,恶意程序常常运用代码注入和挂钩技术来执行恶意操作,同时还会使用混淆技术来躲避安全检测。下面我们将详细探讨这些技术。
挂钩技术
攻击者向合法(目标)进程注入代码(通常是DLL,但也可以是可执行文件或shellcode),除了执行恶意代码外,另一个目的是挂钩目标进程的API调用。一旦代码注入目标进程,它就能完全访问进程内存并修改其组件,从而实现对API调用的控制。常见的挂钩技术有以下几种:
IAT挂钩
IAT(导入地址表)包含应用程序从DLL导入的函数地址。在IAT挂钩技术中,将DLL注入目标进程后,注入DLL中的代码(Dllmain()函数)会挂钩目标进程的IAT条目。具体步骤如下:
1. 通过解析内存中的可执行映像来定位IAT。
2. 识别要挂钩的函数条目。
3. 用恶意函数的地址替换该函数的地址。
以合法程序调用DeleteFileA() API删除文件为例,正常情况下,程序会通过IAT查找DeleteFileA()的地址并调用该函数。挂钩后,IAT中DeleteFileA()的地址被替换为恶意函数的地址,当合法程序调用DeleteFileA()时,调用会被重定向到恶意函数。恶意函数可以阻止合法程序删除文件、监控被删除的文件参数,还能在重新调用原函数后过滤输出参数。
不过,IAT挂钩存在一些缺点。如果程序使用运行时链接,或者攻击者想挂钩的函数是以序号形式导入的,该技术就无法生效。此外,IAT挂钩很容易被检测到,因为正常情况下,IAT中的条目应在其对应模块的地址范围内。在64位Windows系统中,PatchGuard技术会阻止对调用
超级会员免费看
订阅专栏 解锁全文
3

被折叠的 条评论
为什么被折叠?



