概述
RemCom是一个开源工具(仿自sysinternals的psexec.exe),使用smb协议远程管理windows终端,被很多恶意样本(如驱动人生病毒或者某些apt组织)使用过,impacket工具集里面的psexec.py集成了RemCom程序的服务器端程序,会在被控端释放运行。本文对这个工具进行简单的介绍,理清它们之间的关系。
样本的基本情况
文件大小: 55.0 KB (56,320 字节)
修改时间: 2024年08月08日,17:21:06
MD5: 6983f7001de10f4d19fc2d794c3eb534
SHA1: 23873bf2670cf64c2440058130548d4e4da412dd
SHA256: 3c2fe308c0a563e06263bbacf793bbe9b2259d795fcc36b953793a7e499e7f71
PE32
编译器: EP:Microsoft Visual C/C++(2008-2010)[EXE32]
编译器: Microsoft Visual C/C++(2008 SP1)[libcmt]
链接程序: Microsoft Linker(9.0)[控制台32,console]
这个样本是impacket工具集合中的psexec.py释放的一个组件,是RemCom,代码在https://github.com/kavika13/RemCom, 这是服务器端。源代码在此(https://github.com/kavika13/RemCom/blob/master/RemComSvc/Service.cpp),不用逆向了。
Impacket
Impacket 是一个用 Python 编写的库,用于处理 SMB/CIFS 协议,以及 Windows 进程注入和其他相关任务。它是一个强大的工具集,主要用于渗透测试和开发目的,可以帮助安全研究人员执行各种任务,如远程执行命令、文件共享管理、Windows身份验证等。
Impacket 的组成部分
Impacket 包含多个模块和工具,其中包括但不限于:
- smbclient.py: 类似于 Unix/Linux 系统中的 smbclient,用于访问 SMB/CIFS 共享。
- psexec.py: 用于远程执行命令或启动服务,类似于 Microsoft 的 PsExec 工具。
- smbserver.py: 用于创建 SMB/CIFS 服务器,可以接收来自客户端的连接请求。
- getAD.py: 用于获取 Active Directory 中的信息。
- secretsdump.py: 用于从 Windows 系统中提取 SAM 数据库和密码策略信息。
- impacket-spoofer: 用于 SMB 重定向攻击。
- impacket-smbrelay: 用于 SMB 中继攻击。
PSexec和psexec.py
Psexec是一款由Mark Russinovich在1996年开发的Sysinternals系列工具之一,主要功能是用于在远程计算机上执行命令。
在当时,主流的远程运维方式主要还是依赖于Telnet和SSH服务,这两种服务在Windows主机中默认没有安装,而在后来出现的Windows远程桌面服务对带宽的要求有比较高,所以只有700Kb且只需要通过SMB服务进行通信的Psexec工具很快就得到了从事Windows运维以及安全从业者们的关注。
Sysinternals中的Psexec是一款闭源工具,在后来开源爱好者们发布了一款模仿Psexec功能的开源项目RemCom,这个项目托管在Github[https://github.com/kavika13/RemCom]
上,有兴趣的小伙伴可以阅读一下项目的源码。RemCom工具主要由两个部分组成:RemCom和RemComSVC,前者作为客户端运行,后者为一个Windows服务程序,作用是接受客户端指令,在所安装的机器上执行指令并向客户端返回执行结果。
impacket工具出现后,作者@agsolino便将RemComSVC的二进制程序嵌入到Python中,并基于impacket中的DCERPC和SMB协议重新实现了RemCom的功能,并将其命名为psexec.py。
psexec.py的利用方法
控制端 kali
受控端 win7 x86
配置 win7 x86为win7原版系统,关闭防火墙,检查并设置注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system
LocalAccountTokenFilterPolicy = 1 [DWORD]
如下图所示
在kali中使用psexec.py远程执行命令,如下图所示,可以看到将文件nnDXOSFO.exe上传到靶机上。
这个程序其它是revcomsvc.exe,其md5为6983f7001de10f4d19fc2d794c3eb534
。
驱动人生病毒
攻击者针对驱动人生公司的供应链进行攻击,利用其软件升级通道下发永恒之蓝下载器木马,并利用其软件升级通道下发木马,在攻击模块中利用“永恒之蓝”漏洞攻击,造成短时间内大范围感染。事件发生之后,驱动人生公司对受到木马影响的升级通道进行了紧急关闭。
但该木马下载器的幕后控制者并没有就此放弃行动,而是借助其已经感染的机器进行持续攻击:包括通过云控指令下发挖矿模块,在中招机器安装多个服务以及通过添加计划任务获得持续执行的机会,后续版本在攻击模块新增SMB爆破、远程执行工具psexec攻击、利用Powershell版mimikatz获取密码,以增强其扩散传播能力。
2019年2月10日发现的更新版本中,我们发现攻击者再次对攻击模块进行升级,改变其木马生成方式为Pyinstaller,同时在打包的Python代码中新增了email、cookie、ftp、http相关功能文件。
驱动人生使用Python编译,使用pyinstaller打包成exe文件,其中使用了Impacket库利用永恒之蓝漏洞和psexec攻击。
参考资料
- Impacket网络协议工具包介绍 - FreeBuf网络安全行业门户
- 内网渗透瑞士军刀-impacket工具解析(五) - 先知社区 (aliyun.com)
- GitHub - fortra/impacket: Impacket is a collection of Python classes for working with network protocols.
- GitHub - kavika13/RemCom: Remote Command Executor: A OSS replacement for PsExec and RunAs - or Telnet without having to install a server. Take your pick 😃
- 永恒之蓝下载器木马持续活跃:始于供应链攻击,不断变换攻击手法 - FreeBuf网络安全行业门户