特洛伊木马防范技术探析
2010-08-15杨恩镇向来生
杨恩镇 向来生
山东师范大学 山东 250014
0 引言
1 木马的隐藏技术
木马的首要特征是它的隐蔽性,为了提高自身的生存能力,木马会采用各种手段来伪装隐藏。常见的木马隐藏方式主要有以下几种。
1.1 文件隐藏
文件隐藏,就是通过伪装迷惑用户,并且隐藏木马文件自身。木马通常会设置自身文件的属性为“隐藏”和“系统”,并把文件名改成类似于系统文件的文件名来隐蔽自己;在Windows NT/2000中,可以利用NTFS的多数据流特性来实现文件隐藏;修改与文件系统操作有关的程序,可以过滤掉木马信息。例如使用Rootkit技术,通过修改系统呈现给用户的文件列表,使用户或检测软件无法发现木马文件,从而实现隐藏;另外把木马文件存放在特殊区域(如引导区)也可以达到隐藏的目的。此外,常见的木马文件隐藏方式有:嵌入到宿主文件中,即插入到某程序中或与某程序捆绑到一起;或者伪装成图片、文本等非可执行文件;或者复制多个副本隐蔽;或者采取文件替换,即用修改后的DLL文件替换系统DLL文件。
1.2 启动隐藏
启动隐藏,是指目标机自动加载运行木马程序,而不被用户发现。在Windows系统中,典型的木马自动加载技术有:修改系统“启动”项;修改注册表的相关键值;修改“组策略”;修改系统配置文件(Win.ini、System.ini和Autorun.bat等);利用文件关联技术和文件劫持技术;上述启动方式,一般要修改系统的相关文件,容易被检测工具发现。随着木马技术的发展,出现了更高级的服务自启动技术和插入系统服务自启动技术。服务自启动技术主要是木马伪装成系统服务,操作系统在启动时自动加载该服务;插入系统服务自启动技术主要是将木马自身插入系统服务程序,伴随系统服务程序启动。
1.3 进程隐藏
进程隐藏,就是通过某种技术手段,使用户不能发现木马进程,或者木马程序不以进程或服务的形式存在。木马实现进程隐藏的方式有两种:伪隐藏和真隐藏。
伪隐藏,就是指木马程序的进程仍然存在,但不在任务管理器中显示。在Windows 9x系统下,可以利用Register-ServiceProcess方法,把木马进程注册为系统服务,使其以服务的方式在后台工作,而不出现在任务管理器的列表中;在Windows NT/XP系统中,可以将木马编写为NT-Service,替换系统相应的服务进程,伪装成合法服务,实现自身进程的隐藏。NameLess木马就采用了这种技术。
典型的伪隐藏方法是利用API拦截技术,建立一个后台的系统钩子(Hook),拦截 ToolHelp API、PDH(Performance Data Helper)、PSAPI(Process Status API)的EnumProcessModules等相关函数的调用,实现对进程和服务的遍历调用的控制,当检测到木马进程 ID(PID)的时候直接跳过,这样进程信息中就不会包含该木马程序的进程,从而实现了木马进程的隐藏。
如今,当我怀揣着文学梦,亦步亦趋来到北大之后,每天我只有珍惜,只有感恩,有时,我会担心第二天一觉醒来,发现自己不在北大。我现在能做的,就是对身边的每一个人好,用我的笔勤奋地耕耘下去,纵然艰难,但身处这样一个和谐的环境内,不对立就是进步,就是人生最大的成功。
真隐藏,是指让木马程序不以进程或服务的方式工作,而是将木马核心代码以线程或DLL的方式插入到远程进程中。
真隐藏的方法一般采用动态嵌入技术、注册表DLL插入、特洛伊DLL、CreateProcess插入和调试程序插入等。其中动态嵌入技术比较流行,其原理是将自己的代码嵌入正在运行的其它进程中。常见的动态嵌入技术有:远程线程注入、挂接API、Windows Hook等。其中远程线程注入技术指的是通过CreateRemoteThread函数在一个远程进程中创建远程线程,进入该进程的内存地址空间。挂接API主要通过改写代码或修改待挂接模块的输入节地址实现,其中修改输入节的方法更为实用,其不存在CPU问题和线程同步问题。
1.4 内核模块隐藏
内核模块隐藏,就是使木马程序依附到操作系统部件上,或成为操作系统的一部分。这种技术具有很好的隐藏性,但是实现起来比较复杂。在Windows系统中采用设备驱动技术,编写虚拟设备驱动程序实现。在Linux系统中,内核级木马一般使用LKM技术实现。LKM(load kernel module)主要是用于系统扩展功能,不需要重新编译内核,就可以被动态加载。由于LKM工作在内核空间,对LKM的追踪要比一般程序困难得多。
1.5 通信隐藏
主要包括通信内容、流量、信道和端口的隐藏。通信内容隐藏主要是对传输内容加密,隐藏通信内容;当不存在任何其他通信流量时,木马程序处于监听状态,等待其他进程通信。一旦出现其他通信流量时,木马程序也随即启动通信,从而实现通信流量的隐藏;通信信道隐藏主要采用网络隐蔽通道技术。比较常见的网络隐蔽通道技术有:ICMP畸形报文传递、HTTP隧道技术、自定义TCP/UDP报文等。端口隐藏主要采用端口复用技术,不打开新的通信端口,而是在一个端口上建立了多个连接,利用系统实际存在的合法端口(如21、80、23等)进行通讯和控制。
1.6 协同隐藏
协同隐藏,是指木马为了能更好地实现隐藏,达到长期潜伏的目的,通常融合多种隐藏技术,多个木马或多个木马部件协同工作,保证木马的整体隐藏能力。此类木马通常包含一个完成主要功能的主木马和若干个协同工作的子木马。子木马协助主木马实现功能和属性的隐藏。Rootkit就是一个使用了协同隐藏技术的木马,它包含多个子木马程序,具有良好的反检测能力。
2 木马的检测和清除方法
木马的查杀,最简单的方法是利用杀毒软件,目前大多数杀毒软件,比如卡巴斯基、诺顿、小红伞、Avast等都能有效删除大多数木马。另外也可以使用专门的木马专杀工具来杀除,例如木马克星、Spy Sweeper、360安全卫士等软件。由于杀毒软件和专杀工具的更新速度通常滞后于新木马的出现,因此有必要掌握木马的检测和手动清除方法。
2.1 检查本地文件
在我的电脑窗口下打开工具-文件夹选项-查看-显示所有文件和文件夹,可以看到隐藏的文件。再选择显示已知文件类型扩展名,查看是否存在多扩展名的程序,如果有就可能是木马文件。然后检查系统文件是否都处于正常的系统文件夹内。如果存在多个同样的系统文件,那么就要注意查看是否为木马文件。
2.2 检查端口及连接
由于木马一般需要通过端口进行通信(如冰河木马使用7626端口进行监听),因此检查系统开放端口及连接是辅助判断木马的一个重要依据。用户可以通过系统自带的netstat命令查看系统的开放端口和TCP/UDP连接,辅助使用Fport等工具具体查看进程与端口的映射关系,来判断系统是否有木马存在。
2.3 检查系统进程
用户可以利用Windows系统自带的任务管理器检查系统的活动进程,观察有没有陌生的进程,重点注意一些CPU占用率较高的进程。另外借助一些专门工具如Process Explorer,用户可以检查更加详尽的进程列表信息,以此来判断进程的合法性。找到对应木马文件后,就可以把木马进程结束。
2.4 检查注册表
重点检查注册表启动项和系统服务相关键值。运行regedit命令打开注册表,展开“HKEY_LOCA-L_MACHINESoftwareMicrosoftWindowsCurrent-Version”和“HKEY_CURRENT_USERSoftwareM-icrosoftWindowsCurrentVersion”下的所有以Run开头的项,检查其下是否有新增的和可疑的键值。找到木马程序的文件名后搜索整个注册表,找出所有对应的项,然后删除或修改注册表里相应的内容,并将安装路径所指示的文件删除。
2.5 检查系统配置文件
检查Win.ini。在C:WINDOWS目录下有一个配置文件Win.ini,在它的[windows]字段中有启动命令“load=”和“run=”,在一般情况下,“=”后面是空白的,如果有启动程序,很可能就是木马。
检查System.ini。在System.ini中,其[boot]字段的“shell=explorer.exe”是加载木马的常见位置。如果该字段变为这样:“shell=explorer.exe某一程序名”,那么后面跟着的那个程序就是木马。另外,Syste-m.ini的[386Enh]字段内的“driver=路径程序名”也是木马常更改的项。
2.6 使用系统工具
主要是利用Windows的文件保护特性,检测驱动程序/动态链接库类型木马,这些木马会修改虚拟设备驱动程序(vxd)或修改动态链接库(DLL)。使用Windows的系统文件检查器可以检测操作系统文件的完整性。如果系统驱动程序或动态链接库被木马程序修改,使用系统文件检查器可以检测出来,并能从安装盘中还原这些系统文件,以保证系统安全和稳定。
3 木马的防范措施
防范木马攻击最基本的方法就是安装杀毒软件和防火墙,防火墙可以主动拦截各种应用程序的网络连接,杀毒软件可以查杀绝大部分的木马。用户可以辅助使用专业的木马防护工具如360安全卫士等实现对系统和网络的监控。
对于一般的木马防护采取如下措施。
3.1 用户系统防护
3.1.1 用户管理策略
为了防止黑客非法入侵,用户管理工作应做到:①禁用来宾账户,同时只保留必要的账户;②安全密码的设置要尽量复杂,并且定期更换;③设置账户锁定策略,防止黑客反复破解用户密码。
3.1.2 文件共享策略
设置文件共享时要注意:①只有需要时才打开文件共享,共享完毕后及时关闭。②关闭默认共享和IPC$共享。用户可以通过修改注册表来删除默认共享,也可以通过在控制面板的服务管理器中关闭Server服务来解决。为了防止IPC入侵,用户可以通过修改注册表禁止IPC$共享和IPC$空连接。
3.1.3 修复漏洞
很多木马可以通过操作系统和应用软件漏洞侵入系统,建议用户开启Windows的自动更新功能,及时升级系统。用户可以使用专用安全工具进行漏洞检查,定期对漏洞进行更新修复。
3.1.4 关闭不常用端口
木马一般需要通过端口与外界进行通信,为安全考虑应当关闭不常使用的端口。例如:关闭3389端口防止黑客通过远程终端服务默认端口入侵。
3.1.5 关闭不必要的服务
Windows操作系统提供很多系统服务以方便管理,但开启太多服务也给入侵者打开了方便之门。所以用户可以根据需要在服务管理器中进行设置,在允许的情况禁止可能为黑客入侵提供方便的服务。
3.2 用户安全意识策略
用户安全意识淡薄是木马攻击得以顺利进行的一个重要原因。用户亟需加强安全意识,杜绝木马心理欺骗层面的入侵企图。①不要随意下载和运行来历不明的软件,安装软件之前先用杀毒软件查杀。②不随意散播个人电子邮箱地址,不要任意执行电子邮件中的附件。③不登录陌生网站,禁用浏览器的“ActiveX控件和插件”以及“Java脚本”功能,禁用文件系统对象FileSystemObject,防止恶意站点网页木马全自动入侵。
4 结束语
随着网络安全防范技术的不断发展,木马程序的入侵手段也在不断变化,新型木马层出不穷。新型木马广泛采用反弹端口、http隧道、API Hook技术、高级防火墙绕过技术、Rootkit技术等各种手段,使得木马在系统中更具隐蔽性,更具危害性。因此,对木马所采用的各种技术进行深入的研究,有助于木马程序的检测和防范,可以更好的应对木马攻击。
[1]Pelaez,C.E.,Bowles,J.,Computer viruses,System Theory.1991.Proceedings.,Twenty-Third Southeastern Symposium on.10-12 Mar 1991.
[2]康治平,向宏.特洛伊木马隐藏技术研究及实践[J].计算机工程与应用.2006.
[3]张新宇,卿斯汉,马恒太等.特洛伊木马隐藏技术研究[J].通信学报.2004.