1. 在win9x的任务管理器中隐形
这只要把木马服务器端的程序注册为一个服务就可以了,这样,程序就会从任务列表中消失,因为系统不认为该程序是一个进程,当按下Ctrl+Alt+ Delete的时候,也就看不到这个程序.但是,这种方法只适用于Windows9x的系统,对于Windows NT,Windows 2000等,通过服务管理器,还是可以发现在系统中注册过的服务.
在VB中如下的代码可以实现这一功能:
Public Declare Function RegisterServiceProcess Lib "kernel32" (ByVal ProcessID As Long, ByVal ServiceFlags As Long) As Long
Public Declare Function GetCurrentProcessId Lib "kernel32" () As Long
(以上为声明)
Private Sub Form_Load()
RegisterServiceProcess GetCurrentProcessId, 1 (注册系统服务)
End Sub
Private Sub Form_Unload()
RegisterServiceProcess GetCurrentProcessId, 0 (取消系统服务)
End Sub
2. 在winNT/win2000中的任务管理器中隐形
在winNT/win2000中实现进程隐藏的方法有两种:一是采用API的拦截技术;二是采用DLL技术.
1 API的拦截技术 在WINDOWS系统下,可执行文件主要是Exe和Com文件,这两种文件在运行时都有一个共同点,即均会生成一个独立的进程.在Windows中有多种方法能够看到进程的存在:PSAPI(Process Status API),PDH(Performance Data Helper)和ToolHelp API.如果能够采用API的拦截技术,通过建立一个后台的系统钩子,拦截PSAPI的EnumProcessModules等相关的函数来实现对进程和服务的遍历调用的控制,当检测到进程ID(PID)为木马程序的服务器端进程的时候直接跳过,那样就实现了进程的隐藏.如果这个进程是一个木马的服务器部分程序,则显然就是现在win9x/win2000的任务管理器中隐藏的程序.
2 采用DLL技术 DLL文件是Windows的基础,因为所有的API函数都是在DLL中实现的.
DLL文件没有程序逻辑,是由多个功能函数构成的,它并不能独立运行,一般都是由进程加载并调用的.因为DLL文件不能独立运行,所以,在进程列表中并不会出现.如果是一个木马DLL,并且通过别的进程来运行它,那么无论是在入侵检测软件还是进程列表中,都只会出现那个进程而并不会出现木马DLL.运行 DLL文件最简单的方法是利用Rundll32.exe进行,但是很容易被识破.比较高级的方法是使用木马DLL替换常用的DLL文件,通过函数转发器将正常的调用转发给原DLL,截获并处理特定的消息.DLL木马的最佳隐藏方法是动态嵌入技术,动态嵌入技术是指将自己的代码嵌入正在运行的进程中的技术.与一般的木马不同,该技术基本上摆脱了原有的木马模式
监听端口,而是采用替代系统功能的方法,即改写驱动程序或动态链接库.这样做的结果是:由于没有增加新的文件,因此不能用扫描的方法查杀;不需要打开新的端口,所以不能用端口监视的方法查杀;没有新的进程,所以使用进程查看的方法发现不了它,也就不能用kill进程的方法终止其运行.在正常运行时木马几乎没有任何的症状,而一旦木马的控制端向被控端发出特定的信息后,隐藏的程序就立即开始运作.