Apache 服务器背后的 Stantinko 代理

译者:知道创宇404实验室翻译组原文链接:https://www.intezer.com/blog/research/stantinkos-proxy-after-your-apache-server/

前言

黑客通常会开发自己的Linux恶意软件,BlackTech的新型恶意软件ELF_PLEAD 和Winnti的PWNLNX工具就是最近的例子。结合这种趋势,我们发现了与Stantinko group相关的新版本Linux代理木马。在本文发布之时,只检测到一个在VirusTotal中的恶意软件。

Stantinko黑客组织以Windows操作系统为目标而闻名,其活动可以追溯到2012年。恶意软件主要包括硬币矿工和广告软件僵尸网络。

在2017年 概述Stantinko运营的白皮书中,ESET研究人员分析了Linux木马代理。到目前为止,这是Stantinko唯一已知的Linux恶意软件。

我们发现了这个伪装为httpd的Linux木马的新版本。httpd是Apache超文本传输协议服务器,这是Linux服务器上的常用程序。该示例的版本为2.17,而较早的版本为1.2 。

我们认为,这种恶意软件是利用受到破坏的Linux服务器的广泛活动的一部分。我们将对该恶意软件进行技术分析,并将其与以前的版本进行比较。

技术分析

新的代理版本文件名为httpd,在撰写本文时,只检测到一个在VirusTotal中的恶意软件。图1描述了VirusTotal的结果,于2020年11月7日从俄罗斯(斯坦汀科的主要目标国家之一)上载,是未剥离的64位ELF二进制文件。

图1:VirusTotal(7d2af32e487f8a61d7fc1a0c39)中样本检测报告

恶意软件流

执行后,恶意软件将验证配置文件,该配置文件将与恶意软件一起在受感染的计算机上传递。恶意软件期望配置文件位于“ /etc/pd.d/proxy.conf”。如果配置文件不存在,或者缺少所需的结构,则该恶意软件将退出而不进行任何其他恶意活动。图2是配置解析逻辑的摘录。配置存储为键/值对。

图2:ParseConfigElement函数用于解析配置文件

该配置文件应具有以下密钥:proxy_ip、port、redirect_url、localhost、ip_header和request_header_log_files。

验证并解析配置文件结构后,将调用start_demon 函数,并且代理程序将自身守护进程。然后创建一个套接字和一个侦听器以接受来自客户端的连接。我们相信与该特洛伊木马进行交互的客户是活动中其他受感染的计算机。图3是摘自主要功能的代码片段,显示了上述通用代码流程。

图3:主要功能流程片段

客户端连接到侦听器后,程序将调用on_client_connect函数,检查请求方法是GET、POST还是NOTIFY。

如果请求方法是GET,则程序将返回301重定向HTTP响应,该响应包含来自配置文件的redirect_url参数。这意味着,如果仅使用浏览器简单搜索C&C IP,可能会由于重定向到良性网站而产生误导,而不会留下攻击中使用的额外有效负载的痕迹。如果请求方法是POST或NOTIFY,则恶意软件将使用create_post_data函数根据客户端的HTTP请求标头和内容来构建POST请求,以发送到C&C服务器。然后,程序将调用mysql_server_do_request函数,该函数负责将POST请求发送到C&C。图4显示了on_client_connect的一个片段功能。

图4:on_client_connect函数的代码片段

POST请求被发送到C&C服务器上的以下路径之一:

/kbdmai/index.php/kbdmai/dht/index.php/kbdmai/DRTIPROV/index.php/kbdmai/winsvc/index.php/kbdmai/anti_rstrui/index.php

根据从客户端发送的数据,在detect_proxy_script函数中选择路径。我们认为,每条路径都将不同的有效负载作为攻击链的一部分。C&C IP地址作为proxy_ip参数存储在配置文件中。最后,代理将C&C响应转发回客户端。图5着重强调了攻击流程。

图5:攻击流程

受感染的客户端将POST或NOTIFY HTTP请求发送到代理代理解析该请求,然后将POST请求传递给攻击者的服务器攻击者的服务器回复代理,代理将响应传递给客户端未受感染的计算机将GET请求发送到代理代理通过301重定向回复到预配置的URL

版本比较

两种版本之间的差异将近三年,特洛伊木马代理的目的相似,但并不完全相同。在本节中,我们将基于以下三个条件比较版本1.2 和2.17:参数、功能和ELF结构。

参量

新版本(2.17)使用一个配置文件,该配置文件与恶意软件一起放在受害者的计算机上。配置文件包含C&C IP地址以及其他参数。在旧版本(1.2 )中,C&C被硬编码在二进制文件中,一旦检测到二进制文件,便可以更轻松地阻止广告系列的流量。

功能性

除了代理功能外,旧版本还从C&C接收文件和自我更新命令。新版本更简单,因为它仅充当代理。

ELF结构

版本1.2 和2.17均未删除,并包含调试符号。旧版本是静态链接的,而新版本是动态链接的。

Stantinko连接

将文件上传到Intezer Analyze后,我们注意到新变体与旧变体共享了几个函数名。这些函数(例如get_binary_full_pathread_variable_string )不会在新版本中静态调用。我们几乎可以肯定,这些功能是以前版本中的遗留功能。

图6:Linux版本之间的字符串重用

有趣的是,基于ESET的研究,C&C路径暗示了一些早期活动。硬编码路径的示例如图7所示。根目录名称为kbdmai。 “ KDBMAI.dll”是Stantinko在2012年使用的恶意软件文件名。此外,该恶意软件的C&C托管在kdbmai [.] net上。另一个有趣的目录是DRTIPROV。DRTIPROV是该组织的Windows恶意软件之一的程序数据库(pdb)路径的一部分。

图7:在detect_proxy_script函数中硬编码的路径

包装

Stantinko是针对Linux服务器的最新恶意软件,它可以在雷达下飞行,并加入Doki、IPStorm 和RansomEXX等威胁。

现在,新的Stantinko样本中的代码已在Intezer的基因组数据库中建立了索引。注册 Intezer Protect 社区版, 以在运行时防御Linux云服务器免受最新的Linux威胁。

IOCs

新版本:2.17 1de81bf6ee490b6bebe9f27d5386a48700e8431f902f4f17d64ddc5d8509ca7a

旧版本:1.2 889aa5a740a3c7441cdf7759d4b1c41c98fd048f4cf7e18fcdda49ea3911d5e5

968b41b6ca0e12ea86e51e0dd13599cd127ad860e1c52c2678f4f2cb9

43a6894d5953b37f92940d5c783cf358b5e25bba8c096fa54657bb2e5

a305dd50ea92a2794cb6e0aa9d1d176e2cea48ff503fc2eb276

欢迎关注我和我的专栏:

Paper 安全技术精粹​zhuanlan.zhihu.com/seebug

访问以下链接免费下载安全技术白皮书:

知道创宇白皮书下载​www.yunaq.com/wp/?from=lzhihu0132