远程控制木马是一种具有远程控制、信息窃取、隐蔽传输功能的恶意程序。远程控制木马通常采用诱骗的方式安装,并在用户的计算机中通过隐藏运行以实现长时间控制用户计算机的目的。
(1) 远程控制木马的连接方式
为了实现对目标主机的远程控制,远程控制木马程序都采用C/S结构,即它由客户端和服务端木马程序两部分组成。攻击者在自己的计算机上安装客户端,在目标主机上安装服务端。远程控制木马的的连接方式主要有以下两种:
1)传统连接技术
由木马的客户端程序主动连接服务端程序。当服务端程序在目标计算机上被诱骗安装并运行后,一般会打开一个默认的端口监听客户端发来的连接请求。当客户端向服务器端主动发出连接请求的数据包时,服务端的木马程序就会自动应答客户端的请求,建立连接。
2)反弹端口技术
由于防火墙技术能够有效拦截采用客户端从外网连接内网服务端的木马程序,当对内部连接外网的连接请求认为是正常连接,因此反弹式木马是服务端主动发起连接,客户端被动等待连接。
根据木马客户端的IP地址是静态的还是动态的,反弹端口连接可以分为以下两种:
第一种是,当木马客户端的IP地址是公网静态IP地址且网络端口设置为特定端口时,木马服务端通过设置好固定的IP地址和待连接端口,直接回连木马的客户端程序。
第二种是,木马服务端主动连接采用动态IP地址的木马客户端,而攻击者为了避免暴露身份,往往通过跳板计算机控制被入侵的用户计算机。攻击者在跳板计算机中安装木马客户端,被入侵的目标主机安全木马的服务端。
当跳板采用动态IP地址时,为了使木马的服务端及时获得新变化后的跳板的IP地址,攻击者利用一个被其控制的代理服务器保存每次改变后的跳板的IP地址和待连接端口。每当跳板主机改变了IP地址,攻击者就更新代理服务器中存在的IP地址和端口号。被入侵的用户计算机上的木马服务端每次启动时,往往先去连接代理服务器查询最新木马客户端的IP地址和端口,再按照新的IP地址和客户端进行连接。这种方式适用于客户端是动态IP地址的情况,但要求客户端的IP是公网IP。
(2) 远程控制木马的隐藏技术
为了避免被杀毒软件查杀和用户察觉,木马往往在系统中采用隐藏技术。下面介绍三种木马的隐藏技术:
1)线程插入技术
应用程序在运行时都会在操作系统中产生一个进程。每个进程都对应着不同的进程标识符(Progress ID, PID)。每个进程可包含一个或多个线程,线程之间可以同步执行。线程之间一般是相互独立的,一个线程发生错误时并不一定会影响整个进程。
线程插入技术就是利用了线程之间运行的相对独立性,把木马程序作为一个线程插入其他应用程序的地址空间,这个被插入的应用程序对于系统来说是一个正常的程序。这样就不会有木马自身的进程存在,从而达到隐藏进程的效果。
2)DLL动态劫持技术
DLL动态劫持技术是一种让程序加载非系统目录下DLL的技术。Windows系统有有一个特性,它会强制操作系统中的应用陈谷首先从应用程序所在目录中加载模块,因此程序加载DLL文件时首先搜索的是程序所在的目录。如果攻击者精心构造一个与原DLL文件同名的DLL并保存在应用程序的目录下,那么就有机会让应用程序加载这个新的DLL文件并且不影响应用程序正常的运行。
为了实现隐藏木马进程和木马文件的目标,攻击者可以编写一个在包含原DLL文件的功能上又增加了远程控制功能的同名DLL文件,并且使用具有高执行权限的应用程序在运行时加载该DLL文件,攻击者救恩能够利用这个新DLL实现既对目标主机的远程控制,同时又没有木马进程和木马的文件。
3)Rootkit技术
Rootkit技术是一种内核隐藏技术,它使得恶意程序可以逃避操作系统标准管理程序的查找。目前主流的Rootkit技术主要在内核态实现,如DKOM(直接内核对象操作)技术,通过动态修改内核数据结构来逃避安全软件的检测。由于这些数据结构睡着系统的运行而不断更新变化,因此难以检测,而且由于不同操作系统版本的内核有差异,因此使用这种隐藏技术的木马兼容性较差。
(3)关于远程控制木马的检测
除了使用杀毒软件等常规手段外,还可以通过全面检测注册表、文件、网络连接、运行的进程等进行人工分析。