一、什么是木马?
- 定义
- trojan virus,伪装成良性软件窃取数据或给主机造成危害(隐蔽性强),通常会在被感染主机上下在其他恶意软件(例如间谍软件、广告软件或勒索软件)。
- 危害
- 恶意代码下载、劫持计算机、DDOS网络的一部分
- 来源
- 文件下载传播(文件共享站点)、邮件点击传播(后缀名exe、vbs、bat等)、受感染的网站、遭入侵的wifi网络(重定向到虚假网站)
- 使用者如何初步判断
- 主机运行速度变慢,加载自动运行,自动变更文件名,复制到其他文件夹中
- 基本原理
- 服务端和客户端,植入受害主机的是服务端,黑客利用客户端进入运行了服务端的电脑。运行了木马程序的服务端以后,会产生一个有着容易迷惑用户的名称的进程,暗中打开端口,向指定地点发送数据(如网络游戏的密码,即时通信软件密码和用户上网密码等),黑客甚至可以利用这些打开的端口进入电脑系统。
木马发展
植入阶段
- 利用系统漏洞、软件漏洞、交互脚本、电子邮件、超链接
- 安装阶段
- 自动压缩或者解压缩文件
- 文件增大
- 隐藏伪装安装木马控制端过程中产生的部分文件
- 将文件属性设置为系统隐蔽、只读
- 将文件图标更换进行伪装,冒充系统文件或者图片、文本等其他非可执行的文件
- 将文件的名字进行伪装,冒充系统文件或常用的应用程序文件名
- 将文件自我删除
网络通信阶段
- 利用1024以上的高端口进行网络通信。
- 利用端口复用技术或端口寄生技术进行网络通信。
- 利用反向连接技术进行网络通信。主要利用防火墙的漏洞、反弹端口、创建套接字连接客户端。
- 利用潜伏技术,使用ICMP协议进行网络通信。
- 利用电子邮件、IRC及ICQ(通信协议)等方式与控制端进行网络通信。
- 通过发送UDP以及FTP的方式进行网络通信。
- 在网络通信过程中,产生异常的通信流量变化。
- 利用“HTTP隧道技术”。将所要传送的数据全部封装到HTTP协议里进行传送,访问局域网里通过HTTP、SOCK S4/5代理上网的电脑,实现穿墙。(跳板)
- 建立隐蔽通道。
- 利用Option域和传输数据时通常很少用到的域。
- 利用传输数据时必须强制填充的域。
- 木马被控制端处于监听状态,等待其他进程通信。
- 利用数据缓冲区暂存待发送的数据。
- 利用进程通信发许多SYN包。
三、典型木马分析
Zeus(网银木马)
- 点击邮件,下载恶意word文档,包含宏病毒
- 使用ZwWriteVirtualMemory将解密后的PE文件写入到svchost
- svchost: svchost.exe是一类通用的进程名称。它是和运行动态链接库(DLLs)的Windows系统服务相关的。在Windows启动时,svchost.exe检查注册表中的服务,运行并载入它们。
- 隐藏:添加注册表启动项、加密、以svchost做为傀儡进程
- 反杀:
- 添加注册表启动项到自启动,RegNotifyChangeKeyValue函数来监控注册表,防止启动项被删除;
- 使用FindFirstChangeNotificationW函数监控木马副本的寄生目录,在开始监控之前,先读取木马Buffer到内存中做备份,一旦目录下的文件被重命名或重写,就判断木马和寄存目录的文件夹是否存在,不存在则重新创建目录,如果木马副本文件被删除,则从内存读取之前保存的木马Buffer重新写入该文件。
- 反调试:通过遍历进程列表、读取注册表、文件路径和一些系统监控工具的设备名称,判断是否被反病毒人员进行分析,如果检测到有以下环境,则不做任何事情并结束进程。
- 功能:盗取其银行账户同时还会收集用户计算机内的数据信息,包括系统版本(WMI接口),CPU情况,内存,用户名,系统中的服务项,浏览器中保存的密码、证书等信息等,还可以远程控制
- 冰河(远古,远控)
- G_Client.exe、G_Server.exe
- 服务端(受害主机)打开一个端口等待连接(监听),客户端连接远程端口后开始通信。
- 隐藏方式:在注册表的HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows\CurrentVersion\Run和RUNSERVICE键值中加上了\kernl32.exe,其次如果你删除了这个键值,冰河的服务端会在c:\windows下生成一个叫sysexplr.exe文件,这个文件是与文本文件相关联的,只要你打开文本,sysexplr.exe文件就会重新生成krnel32.exe。
dll木马:灰鸽子(下载型)
- 功能:监视摄像头、键盘记录、监控桌面、文件操作等。还提供了黑客专用功能,如:伪装系统图标、随意更换启动项名称和表述、随意更换端口、运行后自删除、毫无提示安装等,并采用反弹链接这种缺陷设计,使得使用者拥有最高权限,一经破解即无法控制
- G_Server.exe、G_Server.dll和G_Server_Hook.dll三个文件相互配合组成了灰鸽子服务端, G_Server_Hook.dll负责隐藏灰鸽子。通过截获进程的API调用隐藏灰鸽子的文件、服务的注册表项,甚至是进程中的模块名。截获的函数主要是用来遍历文件、遍历注册表项和遍历进程模块的一些函数。所以,有些时候用户感觉中了毒,但仔细检查却又发现不了什么异常。有些灰鸽子会多释放出一个名为G_ServerKey.dll的文件用来记录键盘操作。注意,G_Server.exe这个名称并不固定,它是可以定制的,比如当定制服务端文件名为A.exe时,生成的文件就是A.exe、A.dll和A_Hook.dll。Windows目录下的G_Server.exe文件将自己注册成服务(9X系统写注册表启动项),每次开机都能自动运行,运行后启动G_Server.dll和G_Server_Hook.dll并自动退出。
网银木马:弼马温(盗号型)
- FTP木马(远控型)
- 鬼影(寄生在硬盘主引导区MBR)
- 整个样本以非文件形式存在,直接写入磁盘扇区。包括感染的MBR以及保存在磁盘末尾非文件系统的payload。
- 绕过windows的PatchGuard保护
- 兼容XP, win7(x86,x64)
- 自保护功能:感染木马后通过WinHex等工具查看到的MBR是正常的,而且无法修改被感染的MBR
- 从内核态向用户态的指定系统进程注入下载者DLL
- 启动过程中关闭指定进程
- 邮件炸弹木马(DOS攻击肉鸡)
- Gozi网银木马变种(Ursnif)
AutoIt解释器木马(Auto456)
伪装方式(诱导点击)
- 修改图标:隐写术,伪装在普通文件中:图片(.jpg.exe)、文本、图标(windows一般默认不显示文件后缀名)、自解压文件
- 捆绑文件:绑定到某一应用程序或系统文件,每次启动对应程序或系统就会运行木马(在任务管理器中仍然可以看到)
- 出错显示:提示文件错误但是其实木马已经运行(出错显示)
- 定制端口:控制端用户可以在1024-65535之间任选一个端口作为木马端口(一般不选1024以下的端口),这样就给判断木马的类型带来了麻烦。
- 自我销毁
- 木马更名
身份隐藏
- 自身为隐藏文件
- 隐藏到配置文件
- 隐藏在win.ini,系统启动时自动运行
- [windows]字段下:run=c:\windowsfile. Exe load=c:\windowsfile.exe(windowsfile.exe很可能是木马)
隐藏在注册表(regedit)
HKEY_LOCAL_MACHINE\Software\Microsof\Windows\CurrentVersion\ 下所有以“run”开头的键值; HKEY_CURRENT_USER\Software\Microsof\Windows\CurrentVersion\ 下所有以“run”开头的键值; HKEY-USERS.Default\Software\Microsoft\Windows\CurrentVersion\ 下所有以“run”开头的键值。 HKCU64\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\RunOnce
隐藏在驱动程序
- 例:Windows安装目录下(C:\WINDOWS)的System.ini
- [boot]字段:shell=
- [386Enh]字段:driver=
- [mic]、[drivers]、[drivers32]字段
- 例:Windows安装目录下(C:\WINDOWS)的System.ini
- 隐藏在驱动组(自动加载到系统中)
- 检查HKEY_CURRENT_USER\Softwar\Microsoft\Windows\CurrentVersio\Explorer\ShellFolders\Startup的值对应目录中是否有可疑文件
- 隐藏在Autoexec.bat和Winstart.bat(都能自动加载)
- 隐藏在超链接中点击下载
- 隐藏在恶意网站中