如何将DLL注入其他进程中(类似于木马程序)在WIN2000的进程管理器中不可见(0分)

  • 主题发起人 主题发起人 cjsoft
  • 开始时间 开始时间
C

cjsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将DLL注入其他进程中(类似于木马程序)在WIN2000的进程管理器中不可见。<br>最好有原代码可参考。vc也可。<br>在这儿先谢了!!
 
我记得在一个安全站点上看到类似的资料,我找找先:)<br>啊,找到了,以下是节选: &nbsp;<br>第二种方法是不使用进程,不使用进程使用什么?为了弄明白这个问题,我们必须要先了解<br>Windows系统的另一种“可执行文件”----DLL,DLL是Dynamic Link Library(动态链接库)<br>的缩写,DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的。DLL文件没有<br>程序逻辑,是由多个功能函数构成,它并不能独立运行,一般都是由进程加载并调用的。<br>(你你你,你刚刚不是说不用进程了?)别急呀,听我慢慢道来:因为DLL文件不能独立运<br>行,所以在进程列表中并不会出现DLL,假设我们编写了一个木马DLL,并且通过别的进程来<br>运行它,那么无论是入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马<br>DLL,如果那个进程是可信进程,(例如资源管理器Explorer.exe,没人会怀疑它是木马吧?<br>)那么我们编写的DLL作为那个进程的一部分,也将成为被信赖的一员而为所欲为。<br>&nbsp; &nbsp; 运行DLL文件最简单的方法是利用Rundll32.exe,Rundll/Rundll32是Windows自带的动态<br>链接库工具,可以用来在命令行下执行动态链接库中的某个函数,其中Rundll是16位而<br>Rundll32是32位的(分别调用16位和32位的DLL文件),Rundll32的使用方法如下:<br>&nbsp; &nbsp; Rundll32 DllFileName FuncName<br>例如我们编写了一个MyDll.dll,这个动态链接库中定义了一个MyFunc的函数,那么,我们<br>通过 &nbsp; &nbsp; Rundll32.exe MyDll.dll MyFunc就可以执行MyFunc函数的功能。<br><br>&nbsp; &nbsp; 这个和木马的进程隐藏有什么关系么?当然有了,假设我们在MyFunc函数中实现了木马<br>的功能,那么我们不就可以通过Rundll32来运行这个木马了么?在系统管理员看来,进程列<br>表中增加的是Rundll32.exe而并不是木马文件,这样也算是木马的一种简易欺骗和自我保护<br>方法(至少你不能去把Rundll32.exe删掉吧?想从Rundll32进程找到DLL木马还是有一点麻烦<br>的)使用Rundll32的方法进行进程隐藏是简易的,非常容易被识破。(虽然杀起来会麻烦一点)<br>比较高级的方法是使用特洛伊DLL,特洛伊DLL的工作原理是使用木马DLL替换常用的DLL文件,<br>通过函数转发器将正常的调用转发给原DLL,截获并处理特定的消息。例如,我们知道WINDOWS<br>的Socket1.x的函数都是存放在wsock32.dll中的,那么我们自己写一个wsock32.dll文件,替换<br>掉原先的wsock32.dll(将原先的DLL文件重命名为wsockold.dll)我们的wsock32.dll只做两件<br>事,一是如果遇到不认识的调用,就直接转发给wsockold.dll(使用函数转发器forward);二<br>是遇到特殊的请求(事先约定的)就解码并处理。这样理论上只要木马编写者通过SOCKET远程输<br>入一定的暗号,就可以控制wsock32.dll(木马DLL)做任何操作。特洛伊DLL技术是比较古老的<br>技术,因此微软也对此做了相当的防范,在Win2K的system32目录下有一个dllcache的目录,这个<br>目录中存放着大量的DLL文件(也包括一些重要的exe文件),这个是微软用来保护DLL的法宝<br>,一旦操作系统发现被保护的DLL文件被篡改(数字签名技术),它就会自动从dllcache中恢复这<br>个文件。虽然说有种种方法可以绕过DLL保护(例如先更改dllcache目录中的备份再修改DLL<br>文件、或者利用KnownDLLs键值更改DLL的默认启动路径等),但是可以想见的未来微软必将<br>更加小心地保护重要的DLL文件;同时由于特洛伊DLL方法本身有着一些漏洞(例如修复安装<br>、安装补丁、升级系统、检查数字签名等方法都有可能导致特洛伊DLL失效),所以这个方<br>法也不能算是DLL木马的最优选择。<br><br>还有很多的,大家可以去www.patching.net/shotgun看看的^_^<br><br>
 
这位大虾所摘的文章小弟也曾看过,可无奈vc太差,对文章中的不全的例子照着做了一下<br>未遂 ^*_*^ 希望那位高手指导一下。最好有成功的原代码。谢了!!
 
http://www.csdn.net/expert/Topic/156/156011.shtm
 
一个拙见:<br>简单的办法,作一个线程的名字是内部的某个线程,如果他已经打开,<br>则关闭他,然后打开自己(当然,要选择没有什么用的线程)。<br><br>别扔了,鸡蛋不是钱啊?都说了是拙见了。(我倒——)
 
我对你的敬仰之情如滔滔江水。。。。。。。。。。。 <br>如果有分数可以加给你的话,那将是9999999。。。。。。。。。。。 <br>好象你也是CSDN上的常客<br>以后多指教
 
后退
顶部