关于网络安全:干货木马DLL实现热更新的骚批操作

57次阅读

共计 635 个字符,预计需要花费 2 分钟才能阅读完成。

以前开发木马有个需要: 木马是一个 DLL 文件,DLL 须要注入到某个过程常驻,该 DLL 具备自我降级能力,当发现新的可用版本时,立刻 Free 本人,加载新的。

上面是我的一个实现计划:

开启一个监听线程,从网络上拉新的可用版本,下载放到一个长期目录,如果发现须要降级,则立刻 FreeLibrary 本身,而后执行更新过程。

因为 FreeLibrary 之后以后模块的内存区域曾经有效,所以更新的过程应用一个独自的线程,并将要更新过程的代码通过 shellcode 的模式写到调配的内存中执行。

更新过程中将会应用一些零碎 API 函数,这里不能间接通过函数名来调用,因为这样会拜访导入表,而 DLL 此时曾经 Free 掉了。所以当时通过筹备一个参数传递给该线程,该参数有更新线程要用到的一些数据和地址:

上面看看更新监听线程如何工作以及如何筹备这些参数:

创立好更新线程后,本人得及时退出并 Free 本人,这里须要用非凡的技巧调用 FreeLibray(这样更新线程能力把本人删掉):

上面看看更新线程如何工作:

同 Free 本人模块一样,最初 VirtualFree 参数和以后代码所占内存页面后,不能再回来,通过构建栈参数的模式,完结以后线程。这个函数编译后的二进制指令保留到全局数组中:

上面是测试的成果(XP、Win7 32 &64 均测试通过):

最初有几个中央要阐明的是:

1、加载新的 dll 前要把长期目录下的文件删除掉,防止出现递归循环更新过程。

2、执行更新过程前须要判断 dll 的版本信息,同样是为防止出现递归循环过程。

正文完
 0