钩子注入,即远程
线程插入(注入)技术,指的是通过在另一个进程中创建远程线程的方法进入目标进程的
内存地址空间。
钩子注入,即远程线程插入(注入)技术,指的是通过在另一个进程中创建远程线程的方法进入目标进程的
内存地址空间。将
木马程序以DLL的形式实现后,需要使用插入到目标进程中的远程线程将该
木马DLL插入到目标进程的
地址空间,即利用该线程通过调用Windows API LoadLibrary函数来加载木马DLL,从而实现木马对系统的侵害。
钩子注入是病毒、
木马常有的行为特征之一,一些正常
软件也会提示钩子注入。病毒或
木马程序不仅仅会钩子注入,它还可能修改硬盘文件、篡改注册表、修改主页等。一些正常程序也往往会采用钩子注入的行为,比如一些要确保和系统紧密结合的
防病毒软件、
即时通讯工具等。
钩子是WINDOWS中消息处理机制的一个要点,通过安装各种钩子,
应用程序能够设置相应的子例程来监视系统里的消息传递以及在这些消息到达目标窗口程序之前处理它们。 钩子的种类很多,每种钩子可以截获并处理相应的消息,如
键盘钩子可以截获键盘消息,鼠标钩子可以截获鼠标消息,外壳钩子可以截获启动和关闭
应用程序的消息,
日志钩子可以监视和记录输入事件。
若在dll中使用SetWindowsHookEx设置一
全局钩子,系统会将其加载入使用user32的进程中,因而它也可被利用为无进程
木马的进程注入
手段。
木马编写者首先把一个实际为木马主体的dll文件载入内存,然后通过“线程注射”技术将其注入其他进程的内存空间,最后这个dll里的代码就成为其他进程的一部分来实现了自身的隐藏执行,通过调用“hook”机制。
钩子(hook),是
Windows消息处理机制的一个平台,
应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许
应用程序截获处理window消息或特定事件。
这个dll
木马便实现了监视用户的输入输出操作,截取有用的资料等操作。这种
木马的实际执行体是一个dll文件,由于Windows系统自身就包含着大量的dll文件,谁也无法一眼看出哪个dll文件不是系统自带的,所以这种木马的隐蔽性又提高了一级,而且它的执行方式也更加隐蔽,这是由Windows系统自身特性决定的,Windows自身就是大量使用dll的系统,许多dll文件在启动时便被相关的
应用程序加载进内存里执行了,可是有谁在进程里直接看到过某个dll在运行的?因为系统是把dll视为一种模块性质的执行体来调用的,它内部只包含了一堆以函数形式输出的模块,也就是说每个dll都需要由一个用到它的某个函数的exe来加载,当dll里的函数执行完毕后就会返回一个运行结果给调用它的exe,然后dll进程退出内存结束这次执行过程,这就是标准的dll运行周期,而采用了“线程注射”技术的dll则不是这样,它们自身虽然也是导出函数,但是它们的代码是具备执行逻辑的,这种模块就像一个普通exe,只是它不能直接由自身启动,而是需要有一个特殊作用的程序(称为加载者)产生的进程把这个dll的主体函数载入内存中执行,从而让它成为一个运行中的
木马程序。