木马核心技术剖析读书笔记之木马实例解析

模块化的木马系统架构

木马核心技术剖析读书笔记之木马实例解析

被控端是整个木马的核心,它包含 Dropper 与常驻模块两部分

Dropper

Dropper 是木马在植入过程中执行的组件,只在目标机器上执行一次,然后自行删除。Dropper 首先判断系统环境,如果检测出在沙盒或者虚拟机中运行,则执行错误的功能,或者非木马本身的功能。如果有调试器存在,则放弃执行。如果没有发现异常,则继续获取系统中安装的安全软件类型等信息,对不同的杀软使用不同的穿透策略,如不同方式的启动项写入、不同的文件释放方式、不同的驱动安装方式等。在一些情况下,要利用某些杀软的功能缺陷,对杀软的功能进行禁用或关闭。在 Windows Vista 之后的系统中,Dropper 在执行过程中还要考虑UAC的问题,需将 Droppr 的执行权限提升至管理员权限,而非受限用户权限,否则无法成功植入。完成木马的植入后,Dropper 进行自我清除。Dropper 组件是木马能否成功植入目标机器的关键,有需要对部分代码进行加密,以便降低被安全软件查杀的可能

常驻模块

常驻模块是在木马植入后在目标机器上长期运行的模块。该组件与木马控制端进行通信,传送被控端获取到的数据,接收控制端发来的控制命令。常驻模块需能自动判断目标机器所在的网络是否使用了代理,并能穿透代理。常驻模块通常需要使用 Rootkit 技术,隐藏木马的主要组件模块、通信端口和连接等信息;能定时检查木马的启动项、重要组件是否完整,并利用更新模块,下载并更新木马组件

木马常驻模块的主要作用是保持控制端对目标的控制,需要具备控制者需要的、特定的功能模块,并可以根据需要,动态添加、删减功能模块。这些功能通常包括:远程文件访问,控制端可以访问目标机器的文件系统,并可根据需要上传、下载文件;远程命令行,控制端可在目标机器上执行命令行命令操作;浏览器监控,能获取并返回浏览器的历史记录、密码信息等;远程桌面,控制者通过图形化的方式操控目标机器的桌面,达到与操作本地桌面一样的效果;另外,还可以针对特定的软件,如 Keepass、Skype 和 Outlook 等软件,进行有针对性的处理

控制端从功能而言,是一个比较普通的网络服务器程序。控制端可以接收所有被控端的连接,并显示相应的连接信息和主机信息;能对被控端收集的数据进行解析,提供给控制者查看和使用。控制端一般使用简洁明了的 GUI 界面,要具备良好的交互体验,使得用户能方便地对被控端进行操作、下发控制命令等。在性能方面,控制端需要充分考虑被控端数量较多的情况下,大并发连接的处理问题

木马架构的模块化,主要是以功能为单元进行划分。但在针对具体的组件内容时,可以根据实际情况进行组织,最终目的是要保证木马在运行中可以添加功能,减少编译修改次数

生成器

木马程序的特殊性,针对特定场景生成的配置信息,一般需要附加在木马程序的被控端组件上(一般是Dropper程序),而不是与木马被控端程序分离。木马 Dropper 配置信息读取、处理等操作,是在开发过程中预先定义的。因此 Dropper 读取、处理的格式必须和生成器在 Dropper 中填写的配置信息,在格式上保持一致

被控端

木马核心技术剖析读书笔记之木马实例解析

木马释放组件

Dropper 完成运行环境的检测后,开始进行常驻模块的释放安装。由于 Windows Vista 之后的系统,都有 UAC 限制,在释放动作开始之前,Dropper 进程需要获得管理员权限

获得管理员权限的方式有很多种,最常用的方式是 COM 提权。通过在 Explorer.exe 进程中注入代码,利用 COM 的 IFileOperation(”Elevation:Administator!new:{3ad05575-8857-4850-9277-11685bdb8e09}”)接口,将木马的 DLL 复制到某一个 UAC 白名单进程的相同目录下,该 DLL 是该 UAC 白名单进程需要加载的 DLL(DLL劫持)。然后启动该 UAC 白名单进程,木马 DLL 的 DllMain 就运行起来,并且具备了管理员权限,能够进行木马后续的释放操作

常驻模块

木马核心技术剖析读书笔记之木马实例解析

控制端

控制端的架构

木马核心技术剖析读书笔记之木马实例解析

控制端的通信

控制端的网络通信模块需要支持高并发的网络连接,在 Windows 系统中,使用 I/O 完成端口模型是一个比较好的选择,IOCP 是一个高性能、多处理器兼容的 I/O 模型,在管理大量 Socket 时,有很好的系统性能和伸缩性

IOCP 是 Windows 中的一个 I/O 构造机制,可以应用于任何 I/O 操作