导语:Energetic Bear/Crouching Yeti倾向于攻击不同的公司,主要关注能源和工业部门,集中在欧洲和美国。
Energetic Bear/Crouching Yeti是至少从2010年以来就广为人知的APT组织。该组织倾向于攻击不同的公司,主要关注能源和工业部门。被Energetic Bear/Crouching Yeti袭击的公司分布在全球范围内,尤其集中在欧洲和美国。2016-2017年,土耳其公司遭受袭击的数量大幅增加。
该组织的主要策略包括发送带有恶意文档的钓鱼邮件以及感染各种服务器。该组织使用一些受感染的服务器作为辅助目的——托管工具和日志。其他服务器用于水坑攻击,以达到该组织的主要目标。
该组织针对美国机构的近期活动在US-CERT咨询中进行了讨论,该咨询(英国国家网络安全中心联合提供)将该组织与俄罗斯政府联系起来。
Kaspersky Lab ICS CERT的这份报告介绍了已识别的服务器的信息,这些服务器已被该组织感染和使用。该报告还包括对2016年和2017年初Energetic Bear组织攻陷的几家网络服务器的分析结果。
一、受害者
下表显示了各国受感染服务器的分布(基于网站内容的语言和/或感染时租用服务器的公司的来源),公司类型和每台服务器在整体攻击中的角色。威胁攻击者袭击的受害者不只限于工业公司。
表1. 感染的服务器
二、水坑
所有的waterhole服务器都会受到相同模式的感染:使用以下文件将链接注入网页或JS文件:file:/IP/filename.png。
注入链接
该链接用于发起对图像的请求,因此用户通过SMB协议连接到远程服务器。在这种攻击类型中,攻击者的目的是从会话中提取以下数据:
· 用户IP
· 用户名
· 域名
· 用户密码的NTLM Hash
应该注意的是,使用该链接请求的图像并非物理上位于远程服务器上。
三、扫描资源
在某些情况下,受影响的服务器用于对其他资源进行攻击。在分析被感染服务器的过程中,许多网站和服务器确认被攻击者使用各种工具扫描,如nmap,dirsearch,sqlmap等(工具描述在下面提供)。
表2. 从受感染服务器之一扫描的资源
表中的站点和服务器似乎没有任何共同之处。尽管扫描的服务器不一定看起来像潜在的最终受害者,但攻击者很可能会扫描不同的资源以找到可用于建立攻击者工具的立足点并随后开展攻击的服务器。
部分被扫描的网站可能是攻击者感兴趣的候选主水坑资源。
在某些情况下,扫描的域名托管在同一台服务器上;有时攻击者会浏览与给定IP匹配的可能域名列表。
在大多数情况下,未发现多次破坏特定目标的企图,除Bump平台网站,航班跟踪服务器和土耳其连锁酒店的服务器。
奇怪的是,扫描的网站包括一个网站开发者的网站kashey.ru,以及在这个网站上发现的资源链接。这些可能是该网站所有者所开发资源的链接:www.esodedi.ru, www.i-stroy.ru, www.saledoor.ru
四、使用的工具
(一)实用程序
在受感染服务器上发现的实用程序是开源代码并可在GitHub上公开获得:
· Nmap – 一个用于分析网络并验证其安全性的开源实用程序。
· Dirsearch — 一个简单的命令行工具,用于对网站上的目录和文件进行暴力攻击(执行穷举搜索)。
· Sqlmap — 一个开源渗透测试工具,它可以自动识别和利用SQL注入漏洞并接管数据库服务器。
· Sublist3r — 一个用Python编写的工具,用于枚举网站子域。该工具使用开源智能(OSINT)。Sublist3r支持许多不同的搜索引擎,例如Google,Yahoo,Bing,Baidu和Ask,以及Netcraft,Virustotal,ThreatCrowd,DNSdumpster和ReverseDNS等服务。该工具可帮助渗透测试人员收集关于他们正在研究的域的子域的信息。
· Wpscan — 一个使用黑箱原理的WordPress漏洞扫描程序,即无需访问源代码即可工作。它可以用来扫描远程WordPress网站来寻找是否存在安全问题。
· Impacket — 一个用于处理SMBTrap所需的各种网络协议的工具集。
· SMBTrap — 一个用于记录通过SMB协议接收数据(用户IP地址,用户名,域名,口令NTLM Hash)的工具。
· Commix — 一个用Python编写的漏洞搜索、命令注入和利用工具。
· Subbrute – 可用于Python和Windows的子域枚举工具,它使用公开名称解析器作为代理,不会将流量发送到目标DNS服务器。
· PHPMailer – 邮件发送工具
另外,在其中一台服务器上找到一个名为ftpChecker.py的自定义Python脚本。该脚本旨在从传入列表中检查FTP主机。
(二)恶意php文件
在nginx文件夹下的不同目录以及攻击者在受感染的Web服务器上创建的工作目录中发现以下恶意PHP文件:
在上表中:
· Web shell是一个允许远程管理机器的脚本。
· WSO是一个流行的Web shell和文件管理器(Orb Web Shell),它可以伪装成包含隐藏登录表单的错误页面。它在GitHub上可用:https://github.com/wso-shell/WSO
发现的两个PHP脚本ini.php和mysql.php包含一个与以下垃圾邮件脚本连接的WSO shell:
https://github.com/bediger4000/php-malware-analysis/tree/master/db-config.php
所有找到的脚本都被混淆了。
wso shell – error_log.php
去混淆后的wso shell – error_log.php
其中在服务器上找到了一个有两个不同名称(proxy87.php和code29.php)的web shell被找到。它使用eval函数执行HTTP cookie或POST请求发送的命令:
Web shell – proxy87.php
去混淆后的web shell – proxy87.php
(三)修改sshd
在分析服务器的过程中发现了一个带有预装后门的修改过的sshd。
例如,在GitHub上提供了一些与后门相似的用于sshd的后门程序:
https://github.com/jivoi/openssh-backdoor-kit
可以在任何具有二进制兼容性的操作系统上编译。
由于在受感染的服务器上用修改的sshd文件替换了原始sshd文件,攻击者可以使用“主密码”在远程服务器上获得授权,同时留下最少痕迹(与通过ssh连接的普通用户相比)。
另外,修改的sshd会记录所有合法的ssh连接(不能使用'主密码'连接),包括连接时间,帐户名称和密码。该日志已加密,位于/var/tmp/.pipe.sock。
解密位于/var/tmp/.pipe.sock的日志
五、攻击者在受感染服务器上的活动
除了使用受感染服务器扫描大量资源外,还识别出其他攻击活动。
获得访问服务器权限后,攻击者在不同的时间安装了他们需要的工具。具体而言,在其中一台服务器上标识了以下用于第三方安装的命令:
· apt install traceroute
· apt-get install nmap
· apt-get install screen
· git clone https://github.com/sqlmapproject/sqlmap.git
此外,攻击者安装了需要的Python包和工具。
下图显示了一个月内对其中一台受感染服务器进行非法登录的次数。攻击者在工作日检查了smbtrap日志文件。在大多数情况下,他们大概在每天的同一时间登录到服务器,可能是在早上:
非法登录服务器的时间(GMT+3)
另外,在分析过程中,确定了一个活动进程,该进程利用SQL注入并从其中一个受害者的数据库中收集数据。
六、总结
受感染服务器的分析结果和攻击者在这些服务器上的活动如下:
1.除极少数情况外,该组织的成员使用公开的工具。该组织使用公共可用的实用程序进行攻击,使攻击溯源的任务变得非常困难。
2.当攻击者想要建立一个立足点以发展针对目标设施的进一步攻击时,互联网上任何有漏洞的服务器都会引起攻击者的兴趣。
3.在观察到的大多数情况下,该组织执行与搜索漏洞、获得各种主机上的持久性以及窃取认证数据相关的任务。
4.受害者的多样性可能表明攻击者利益的多样性。
5.在某种程度上可以肯定地说,该组织为其利益服务或从其外部的客户处获得订单、执行初始数据收集、窃取认证数据并获得适合攻击的资源以便持续发展。
附录I – IOC
文件名和路径
工具*
/usr/lib/libng/ftpChecker.py
/usr/bin/nmap/
/usr/lib/libng/dirsearch/
/usr/share/python2.7/dirsearch/
/usr/lib/libng/SMBTrap/
/usr/lib/libng/commix/
/usr/lib/libng/subbrute-master/
/usr/share/python2.7/sqlmap/
/usr/lib/libng/sqlmap-dev/
/usr/lib/libng/wpscan/
/usr/share/python2.7/wpscan/
/usr/share/python2.7/Sublist3r/
*Note that these tools can also be used by other threat actors.
PHP文件:
/usr/share/python2.7/sma.php
/usr/share/python2.7/theme.php
/root/theme.php
/usr/lib/libng/media.php
日志
/var/tmp/.pipe.sock
PHP文件hash
f3e3e25a822012023c6e81b206711865
c76470e85b7f3da46539b40e5c552712
155385cc19e3092765bcfed034b82ccb
1644af9b6424e8f58f39c7fa5e76de51
2292f5db385068e161ae277531b2e114
7ec514bbdc6dd8f606f803d39af8883f
78c31eff38fdb72ea3b1800ea917940f
Yara规则
rule Backdoored_ssh { strings: $a1 = “OpenSSH” $a2 = “usage: ssh” $a3 = “HISTFILE” condition: uint32(0) == 0x464c457f and filesize< 1000000 and all of ($a*) }
附录II – Shell脚本来检查服务器上的工具
Debian
cd /tmp workdir=428c5fcf495396df04a459e317b70ca2 mkdir $workdir cd $workdir find / -type d -iname smbtrap > find-smbtrap.txt 2>/dev/null find / -type d -iname dirsearch > find-dirsearch.txt 2>/dev/null find / -type d -iname nmap > find-nmap.txt 2>/dev/null find / -type d -iname wpscan > find-wpscan.txt 2>/dev/null find / -type d -iname sublist3r > find-sublist3r.txt 2>/dev/null dpkg -l | grep -E \(impacket\|pcapy\|nmap\) > dpkg-grep.txt cp /var/lib/dpkg/info/openssh-server.md5sums . #retrieve initial hash for sshd md5sum /usr/sbin/sshd > sshd.md5sum #calculate actual hash for sshd
Centos
cd /tmp workdir=428c5fcf495396df04a459e317b70ca2 mkdir $workdir cd $workdir find / -type d -iname smbtrap > find-smbtrap.txt 2>/dev/null find / -type d -iname dirsearch > find-dirsearch.txt 2>/dev/null find / -type d -iname nmap > find-nmap.txt 2>/dev/null find / -type d -iname wpscan > find-wpscan.txt 2>/dev/null find / -type d -iname sublist3r > find-sublist3r.txt 2>/dev/null rpm -qa | grep -E \(impacket\|pcapy\|nmap\) > rpm-grep.txt rpm -qa –dump | grep ssh > rpm-qa-dump.txt #retrieve initial hash for sshd sha256sum /usr/sbin/sshd > sshd.sha256sum #calculate actual sha256 hash for sshd md5sum /usr/sbin/sshd > sshd.md5sum #calculate actual md5 hash for sshd