远程线程嵌入进程技术实现dll木马

远程线程嵌入进程技术实现dll木马

ID:9090596

大小:29.00 KB

页数:3页

时间:2018-04-17

远程线程嵌入进程技术实现dll木马_第1页
远程线程嵌入进程技术实现dll木马_第2页
远程线程嵌入进程技术实现dll木马_第3页
资源描述:

《远程线程嵌入进程技术实现dll木马》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、远程线程嵌入进程技术实现DLL木马设计任务:了解木马的隐藏技术;熟悉采用动态嵌入技术的DLL木马;设计内容:实现利用远程线程技术嵌入进程,生成为RmtDll.exe文件;启动一个木马DLL,用于返回所在进程的PID。当使用RmtDll.exe程序将这个TestDll嵌入目标进程(Explorer.exe)时,该测试DLL将弹出显示一串数字的确认对话框,TestDll.dll已经在目标进程内正确运行了。设计原理:(1)DLL木马的隐蔽性:DLL是DynamicLinkLibrary(动态链接库)的缩写,DLL

2、文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。因为DLL文件不能独立运行,所以在进程列表中并不会出现DLL,假设我们编写了一个木马DLL,并且通过别的进程来运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马DLL,如果那个进程是可信进程,(例如资源管理器Explorer.exe,没人会怀疑它是木马吧?)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员

3、而为所欲为。(2)使用Rundll32的方法进行进程隐藏:运行DLL文件最简单的方法是利用Rundll32.exe,Rundll/Rundll32是Windows自带的动态链接库工具,可以用来在命令行下执行动态链接库中的某个函数,其中Rundll是16位而Rundll32是32位的(分别调用16位和32位的DLL文件),Rundll32的使用方法如下:Rundll32.exe  DllFileName  FuncName例如我们编写了一个MyDll.dll,这个动态链接库中定义了一个MyFunc的函数,那么

4、,我们通过Rundll32.exe  MyDll.dll  MyFunc就可以执行MyFunc函数的功能。如何运行DLL文件和木马进程的隐藏有什么关系呢?假设我们在MyFunc函数中实现了木马的功能,那么我们就可以通过Rundll32来运行这个木马了。在系统管理员看来,进程列表中增加的是Rundll32.exe而并不是木马文件,这样也算是木马的一种简易欺骗和自我保护方法。这种方法进行进程隐藏是简易的,非常容易被识破。比较高级的方法是使用特洛伊DLL。(3)特洛伊DLL的工作原理:替换常用的DLL文件,将正常

5、的调用转发给原DLL,截获并处理特定的消息。例如我们知道WINDOWS的Socket1.x的函数都是存放在wsock32.dll中的,那么我们自己写一个wsock32.dll文件,替换掉原先的wsock32.dll(将原先的DLL文件重命名为wsockold.dll)我们的wsock32.dll只做两件事,一是如果遇到不认识的调用,就直接转发给wsockold.dll(使用函数转发器forward);二是遇到特殊的请求(事先约定的)就解码并处理。这样理论上只要木马编写者通过SOCKET远程输入一定的暗号,就

6、可以控制wsock32.dll(木马DLL)做任何操作。特洛伊DLL技术是比较古老的技术,因此微软也对此做了相当的防范,在Win2K的system32目录下有一个dllcache的目录,这个目录中存放着大量的DLL文件(也包括一些重要的exe文件),这个是微软用来保护DLL的法宝,一旦操作系统发现被保护的DLL文件被篡改(数字签名技术),它就会自动从dllcache中恢复这个文件。虽然说先更改dllcache目录中的备份再修改DLL文件本身可以绕过这个保护,但是可以想见的是微软在未来必将更加小心地保护重要的

7、DLL文件,同时特洛伊DLL方法本身有着一些漏洞(例如修复安装、安装补丁、检查数字签名等方法都有可能导致特洛伊DLL失效),所以这个方法也不能算是DLL木马的最优选择。(4)远程线程技术:DLL木马的最高境界是动态嵌入技术,动态嵌入技术指的是将自己的代码嵌入正在运行的进程中的技术。理论上来说,在Windows中的每个进程都有自己的私有内存空间,别的进程是不允许对这个私有空间进行操作的。但是实际上,我们仍然可以利用种种方法进入并操作进程的私有内存。在多种动态嵌入技术(窗口Hook、挂接API、远程线程)中,最

8、常用的是远程线程技术。远程线程技术指的是通过在另一个运行的进程中创建远程线程的方法进入那个线程的内存地址空间。我们知道,在进程中,可以通过CreateThread函数创建线程,被创建的新线程与主线程(就是进程创建时被同时自动建立的那个线程)共享地址空间以及其他的资源。但是很少有人知道,通过CreateRemoteThread也同样可以在另一个进程内创建新线程,被创建的远程线程同样可以共享远程进程的地址空间,所以,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。