分析Regin的Hopscotch和Legspin模块 非官方中文译文•安天技术公益翻译组译注
| | An analysis of Regin's Hopscotch and Legspin | | Costin Raiu, Igor Soumenkov | | | | Costin Raiu是卡巴斯基实验室全球研究和分析团队的总监。也是一位自由思想家、软件开发员、建筑师、摄影师、编辑。 | | | | | | | | | | • 本译文译者为安天实验室工程师,本文系出自个人兴趣在业余时间所译,本文原文来自互联网的公共方式,译者力图忠于所获得之电子版本进行翻译,但受翻译水平和技术水平所限,不能完全保证译文完全与原文含义一致,同时对所获得原文是否存在臆造、或者是否与其原始版本一致未进行可靠性验证和评价。 • 本译文对应原文所有观点亦不受本译文中任何打字、排版、印刷或翻译错误的影响。译者与安天实验室不对译文及原文中包含或引用的信息的真实性、准确性、可靠性、或完整性提供任何明示或暗示的保证。译者与安天实验室亦对原文和译文的任何内容不承担任何责任。翻译本文的行为不代表译者和安天实验室对原文立场持有任何立场和态度。 • 译者与安天实验室均与原作者与原始发布者没有联系,亦未获得相关的版权授权,鉴于译者及安天实验室出于学习参考之目的翻译本文,而无出版、发售译文等任何商业利益意图,因此亦不对任何可能因此导致的版权问题承担责任。 • 本文为安天内部参考文献,主要用于安天实验室内部进行外语和技术学习使用,亦向中国大陆境内的网络安全领域的研究人士进行有限分享。望尊重译者的劳动和意愿,不得以任何方式修改本译文。译者和安天实验室并未授权任何人士和第三方二次分享本译文,因此第三方对本译文的全部或者部分所做的分享、传播、报道、张贴行为,及所带来的后果与译者和安天实验室无关。本译文亦不得用于任何商业目的,基于上述问题产生的法律责任,译者与安天实验室一律不予承担。 |
分析Regin的Hopscotch和Legspin模块
Costin Raiu, IgorSoumenkov
2015年1月22日
对于Regin这样的高级威胁来说,失误是非常罕见的。然而,当涉及到人类编写代码时,有些错误是难以避免的。分析Regin行动时,我们发现的最有趣的事情是一些模块的被遗忘的代号。
这些模块是:
Hopscotch Legspin Willischeck U_STARBUCKS
我们决定更详细地分析其中两个模块:Hopscotch和Legspin.。
尽管Regin平台整体复杂性很高(有时甚至过度工程化),但这些工具却是很简单直接的,能够为Regin操作者提供互动控制台接口。有趣的是,这些工具在多年前就开发了,甚至在Regin平台本身创建之前。
Hopscotch模块
| 6c34031d7a5fc2b091b623981a8ae61c | 大小 | 36864字节 | 类型 | Win32 EXE | 编译时间 | 2006.03.22 19:09:29 (GMT) |
该模块还有另一个二进制模块,作为资源103存储。
| 42eaf2ab25c9ead201f25ecbdc96fb60 | 大小 | 18432字节 | 类型 | Win32 EXE | 编译时间 | 2006.03.22 19:09:29 (GMT) |
这个可执行模块被设计为用于横向运动的独立交互式工具。它不包含任何漏洞,而是利用以前获得的凭证在使用标准API的远程机器上进行身份验证。 该模块从标准输入(操作者)接收目标机器的名称和可选的远程文件名。执行时,攻击者可以从多个选项进行选择,该工具提供人类可读的响应和建议。 下面是在虚拟机中运行的“Hopscotch”的示例:
验证机制(SU or NETUSE) [S]/N: | 继续? [n]: | 远程计算机上已经存在同名文件 – 不删除… |
该模块可以使用两个例程在目标机器上进行验证:或者连接到一个名为“IPC$”(称为“NET USE”)的标准共享,或作为拥有足够权限来执行进一步行动的本地用户(“SU”或“切换用户”)登陆。
该模块使用两个命名管道,用远程有效载荷SVCSTAT.EXE建立双向加密通信信道。一个管道从操作者向有效载荷提交输入,另一个则从有效载荷向标准输出写入数据。数据使用RC4算法加密,并且初始密钥交换使用非对称加密予以保护。
一旦完成,该工具就会删除远程文件,并关闭验证会话,从而有效地消除所有的操作痕迹。
SVCSTAT.EXE有效载荷模块在进程dllhost.exe中启动其副本,然后在目标机器上准备相应的命名管道,之后等待数据。一旦原始模块连接到管道,它就会设置管道通信的加密,并等待shellcode输入。 可执行文件被注入新的进程dllhost.exe或svchost.exe,然后执行,其输入和输出句柄重定向到发起攻击的远程插件。这使得操作者能够控制注入的模块并与它进行交互。
Legspin模块
| 29105f46e4d33f66fee346cfd099d1cc | 大小 | 67584字节 | 类型 | Win32 EXE | 编译时间 | 2003.03.17 08:33:50 (GMT) |
该模块也是为计算机管理开发的独立命令行程序。当远程运行时,它就会成为一个强大的后门。值得注意的是,当本地运行时,该程序具有完全控制台支持功能。它甚至能够区分支持Windows控制台API和支持TTY兼容终端(接受颜色转义码)的控制台。
除了在PE标头中的编译时间戳,还有两个迹象显示其真实编译时间是2003年。该程序输出两个版本标签:
此外,该程序采用传统的API函数,如在Windows2000中引入并在Windows Vista中废弃的“NetBIOS”。
一旦启动和初始化,它就为操作者提供一个交互式命令提示符,等待传入命令。可用的命令列表相当大,允许操作者执行许多管理操作。一些命令要求来自操作者的其他信息,并且命令需提供可用参数的文本描述。该程序实际上是一个管理shell,旨在由攻击者/使用者手动操作。
| | cd | 改变当前的工作目录 | dir
ls
dirl
dirs | 文件和目录的列表 | tar | 查找匹配给定的掩码和时间范围的文件,将其内容写入到XOR加密的文档中 | tree | 输出使用伪图的目录树
|
trash | 读取并输出Windows“回收站”目录中的内容 | get | 检索目标机器上的任意文件,并进行LZO压缩 | put | 向目标机器上传任意文件,并进行LZO压缩 | del | 删除文件 | ren
mv
copy
cp | 复制或移动文件到新的位置 | gtm | 获取文件的创建、访问、编写时间戳,并记住这些值 | stm | 将文件的创建、访问、编写时间戳设置为先前检索到的值 | mtm | 修改之前检索到的文件时间戳 | scan
strings | 从给定的文件中查找并输出出所有可读字符串 | more | 输出任意文件的内容 | access | 检索和输出文件或目录的DACL项 | audit | 检索和输出文件或目录的SACL项 | finfo | 检索和输出给定文件的版本信息 | cs | 转储任意文件或几个系统文件的前10,000字节 advapi32.dll
kernel32.dll
msvcrt.dll
ntdll.dll
ntoskrnl.exe
win32k.sys
cmd.exe
ping.exe
ipconfig.exe
tracert.exe
netstat.exe
net.exe
user32.dll
gdi32.dll
shell32.dll | lnk | 搜索LNK文件,解析并输出其内容。 | info | 输出一般系统信息: • CPU 类型 • 内存状态 • 计算机名称 • Windows和Internet Explorer版本号 • Windows安装路径 • 代码页 | dl | 输出有关磁盘的信息: • 类型 • 可用/已用空间 • 分区列表,其文件系统类型。 | ps | 列出所有正在运行的进程 | logdump | 未完成的,只显示参数说明。 | reglist | 转储本地或远程蜂巢的注册表信息 | windows | 枚举所有可用的台式机和所有打开的窗口 | view | 列出一个域中所有可见的服务器 | domains | 列出网络中的域控制器 | shares | 列出所有可见的网络共享 | regs | 输出注册表中的其他系统信息: • IE版本 • Outlook Express的版本 • 默认的登录用户名 • 系统安装日期 • BIOS日期 • CPU频率 • 系统根目录 | ips | 列出网络适配器信息: • DHCP/静态IP地址 • 默认网关地址 | times | 从本地或远程计算机获得当前时间 | who | 列出机器访问的当前用户和域名 | net
nbtstat
tracert
ipconfig
netstat
ping | 运行相应的系统程序并输出结果 | tel | 连接到主机的一个给定TCP端口,发送由操作者提供的一个字符串,输出响应。 | dns
arps | 使用DNS或ARP请求解析主机 | users | 列出所有用户帐户的信息 | admins | 列出具有管理权限的用户帐户的信息 | groups | 列出有关用户组的信息 | trusts | 列出有关域间信任用户帐户的信息 | packages | 输出安装的软件包的名称 | sharepw | 执行暴力登录攻击,试图获取远程共享的密码。 | sharelist | 连接到远程共享 | srvinfo | 检索指定服务器的当前配置信息 | netuse | 连接、断开或列出网络共享 | netshare | 在当前机器上创建或删除网络共享 | nbstat | 列出NetBIOS LAN适配器信息 | run | 创建一个进程,将其输出重定向到操作者 | system | 使用WinExec API运行任意命令 | exit | 退出程序 | set | 设置用于其他shell命令的各种内部变量 | su | 作为不同用户登录 | kill | 根据PID终止进程 | kpinst | 修改注册表值:
[HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] System
这个值通常应指向 "lsass.exe"。 | svc
drv | 创建、修改或删除系统服务。 | help
? | 输出支持的命令列表 |
我们发现的Legspin模块没有内置的C&C机制。相反,它依赖于Regin平台将控制台输入/输出重定向到操作者,反之亦然。
结论
与Regin的大多数其他模块不同,Legspin和Hopscotch似乎是更早开发的独立工具。特别是,Legspin后门可以追溯到2003年,甚至2002年。值得指出的是,并非所有的Regin部署都包含Legspin模块;在大多数情况下,攻击者通过其他Regin平台功能管理受害者。
这意味着,在Regin平台之外,Legspin可以作为一个带有输入/输出包装器的简单后门独立使用。
虽然我们对Regin的了解越来越多,但是仍然有很多未知内容。有一点已经很清楚:锁着时间的推移,我们所了解的Regin模块可能会被新的模块和技术所替代。
|