执行概要
在最近一次应急响应(IR)参与中,Talos发现了一个新的恶意软件家族,它被用来攻击暴露在网络上的SSH服务器。我们将该恶意软件命名为GoScanSSH,该恶意软件是使用Go编程语言编写的,并显示了几个有趣的特性。虽然这并不是Talos所观察到的第一个使用Go语言编写的恶意软件家族,但是使用这种编程语言编写的恶意软件还是是比较少见的。在这个特殊的例子中,我们还观察到攻击者为每一个感染了GoScanSSH恶意软件的主机创建了独有的恶意软件二进制文件。此外,还发现GoScanSSH命令和控制(C2)基础设施,利用Tor2Web代理服务,试图让跟踪攻击者控制基础设施这一操作更加困难,并使其具有很强的灵活性。
初始感染过程
GoScanSSH所使用的初始感染向量很可能是对一个可公开访问的SSH服务器的SSH凭据强力攻击,该服务器允许基于密码的SSH认证。在这一系列的攻击中,攻击者利用一个包含超过7000个用户名/密码组合的wordlist。一旦攻击者发现了一个允许成功进行SSH身份验证的有效的凭证集,那么他们就会创建一个独特的GoScanSSH恶意软件二进制文件,并将其上传到被攻击的SSH服务器上。然后,恶意软件就会被执行,从而感染系统。
该恶意软件使用的用户名/密码组合似乎针对性较弱或者直接对一系列基于linux的设备是默认凭证。恶意软件使用下列用户名试图对SSH服务器进行身份验证:
- admin
- guest
- oracle
- osmc
- pi
- root
- test
- ubnt
- ubuntu
- user
其中这些凭证的组合特别针对以下内容:
- 开放嵌入式Linux娱乐中心(OpenELEC)
- Raspberry Pi
- 开源媒体中心(OSMC)
- Ubiquiti设备默认凭证
- 越狱iphone
- PolyCom SIP电话默认凭证
- 华为设备默认凭证
- Asterisk默认凭证
- 各种键盘模式
- 众所周知的常用密码
本文的以下部分包含关于GoScanSSH恶意软件具体操作的其他详细信息以及该恶意软件其他可用功能的详细信息。
恶意软件操作
GoScanSSH是一个针对Linux系统并使用Golang(Go)编程语言编写的恶意软件。在分析过程中,Talos发现了超过70个与GoScanSSH恶意软件家族相关的独特的恶意软件样本。我们观察了GoScanSSH样本的示例,它们被编译来支持多种系统架构,包括x86、x8664、ARM和MIPS64。在分析GoScanSSH的MIPS64版本时,Talos发现了一个线程,在该线程中Ubiquiti企业网关路由器(Ubiquiti Enterprise Gateway Router )用户在他们的路由器上发现了该恶意软件,这表明该恶意软件也在各种设备类型上传播和执行。Talos还观察到了该恶意软件在野外活动的多个版本(版本1.2.2、1.2.4、1.3.0等等),这表明这种威胁正在继续被攻击者积极地开发和改进。
在感染之后,GoScanSSH恶意软件试图确定受感染的系统有多强大。这一操作是通过确定在固定时间间隔内可以执行多少哈希计算来完成的。当恶意软件向C2服务器发送一个“checking_in”消息时,确定的结果与关于受害者机器的基本调查信息一起将被传送到C2服务器。这条消息在发送到C2服务器之前将被加密。对这条消息进行解密表明它正在使用JSON进行传输,并使用以下格式:
恶意软件还会获得一个唯一的标识符,如上面的请求所示,该标识符也会被发送到C2服务器。Talos在分析的样本中观察到大量的标识符,但相同的标识符只出现两次。观察到的不同标识符的例子如下:
在Talos分析的GoScanSSH样本中,恶意软件被配置为接触以下C2服务器域名:
- hXXp://5z5zt3qzyp6j4bda[.]onion[.]link
- hXXp://5z5zt3qzyp6j4bda[.]onion[.]to
- hXXp://3xjj3i6rv3bdxd6p[.]onion[.]link
- hXXp://3xjj3i6rv3bdxd6p[.]onion[.]to
- hXXp://b4l7gbnyduslzhq4[.]onion[.]link
- hXXp://b4l7gbnyduslzhq4[.]onion[.]to
这些域名是通过Tor2Web代理服务访问的。该服务允许标准互联网上的系统访问托管在Tor上的资源,而不需要系统安装Tor客户端。Talos观察到恶意软件越来越多地使用这些代理服务,正如一篇博客中描述的那样。通过利用Tor2Web,攻击者可以在Tor网络中托管他们的C2基础设施,而不需要在他们的恶意软件中包含额外的Tor功能。
受攻击的主机和C2基础设施之间的通信是经过身份验证的,以确保受攻击的主机不能被劫持。为了实现这一点,对在受感染系统和C2服务器之间传输的消息,使用随机生成的密钥进行AES加密。还使用RSA非对称加密对密钥进行加密。RSA公钥是在恶意软件二进制文件中硬编码的。加密的密钥和被传输的JSON的内容被连接起来,并被base64编码。然后,作为HTTP GET请求的URI部分,发送给C2服务器。
在启动SSH扫描活动之前,该恶意软件将等待C2服务器响应前面提到的HTTP GET请求,该请求使用与“checking_in”消息相关联的JSON数据结构的SHA256散列。如果还没有收到响应,恶意软件就会执行一个睡眠功能,并将重新尝试这个过程。
通过使用Cisco Umbrella的调查来分析DNS请求,该请求试图解析上面列出的一个C2域名,Talos发现解析域名的尝试明显增加,这可能表明受攻击的主机数量在继续增加。
在对与所有Talos分析样本中收集到的所有C2域名有关的被动DNS数据分析中,可以看到,从2017年6月19日开始的解析尝试,表明这次攻击活动已经持续了至少9个月。此外,已经观察到具有最大数量解析请求的C2域名8579次解析请求。
下图显示了我们所识别的所有恶意域名的DNS活动总数如下:
Talos识别出的与该进行中的恶意活动有关的250个域名的完整列表,在本文的攻击指标(IOC)部分。
扫描易受攻击的SSH服务器
GoScanSSH恶意软件所执行的主要功能之一是扫描并识别暴露在互联网上的其他易受攻击的SSH服务器,攻击者可能会进一步攻击它们。这一操作通过首先随机生成一个IP地址来执行的,并且避免特殊用途的IP地址。然后,将IP地址与恶意软件不扫描的CIDR块列表进行比较。该列表的内容主要是由不同的政府和军事实体控制的网络范围,特别要避开此处列出的美国国防部指定的范围。此外,列表中的一个网络范围被分配给韩国的一个组织。如果所选的IP属于这些网络范围就会被丢弃,并生成一个新的IP地址。
恶意软件试图在TCP/22上与选定的IP地址建立一个TCP连接。如果连接成功建立,恶意软件就会执行反向DNS查找,以确定IP地址是否解析为任何域名。如果反向DNS查询返回一个域名,则将其与各种政府和军事实体相关的域名列表进行比较。如果域名匹配列表上的任何条目,连接终止,IP将被丢弃,并生成一个新的IP。在这个过程中包含的CIDR块和域名的列表可以在附录A和B中找到。
一旦确定所选的IP地址是额外攻击的理想目标,恶意软件就会试图通过使用前面提到的包含用户名和密码组合的wordlist对系统进行身份验证,从而获得有效的SSH凭证。如果成功,恶意软件将报告返回到C2服务器。返回到C2服务器的通信将使用以下格式在JSON中传输关于攻击状态的横幅和其他信息:
Talos认为攻击者随后会为受攻击的系统编译一个新的恶意软件二进制文件,并感染新的主机,导致该进程在新感染的系统上重复。
总结
上述这些攻击表明了,暴露在互联网上的服务器,存在被网络犯罪分子不断攻击的风险。企业应该采用最佳措施,来确保所暴露的服务器可以免受来自世界各地的攻击者的不断攻击。企业还应该确保系统已被加强,在将新系统部署到生产环境之前,默认凭证是可以被更改的,并且这些系统会被持续监视,以试图对它们进行攻击。Talos将继续监测和跟踪这一攻击,以及其他威胁,以确保客户在这些威胁不断演变的情况下继续受到保护。
覆盖
我们的客户可以发现并阻止这种威胁的其他方法如下。
- 先进的恶意软件保护(AMP)非常适合用于阻止威胁行为者使用的恶意软件的执行。
- CWS或WSA网页扫描阻止对恶意网站的访问,并检测在这些攻击中使用的恶意软件。
- 电子邮件安全(Email Security )可以阻止威胁参与者发送的恶意电子邮件,作为他们活动的一部分。
- 网络安全设备(Network Security ),如NGFW、NGIPS和Meraki MX可以检测与这种威胁相关的恶意活动。
- AMP Threat Grid有助于识别恶意的二进制文件,并为所有Cisco安全产品建立保护。
- Umbrella,我们的安全因特网网关(SIG),阻止用户连接到恶意域名、IP和URL,不管用户是否在公司网络上。
- Open Source Snort Subscriber Rule Set,客户可以通过在Snort.org上下载最新的规则包来保持更新最新的规则包。
攻击指标(IOC)
在这里可以找到与该恶意软件相关联的二进制哈希(SHA256)的列表。
可以在这里找到与该恶意软件相关的域名列表。
附录A:IP黑名单
下面的列表用于确定恶意软件所使用的随机生成的IP是否不用于试图破坏系统。
- 0.0.0.0/8
- 10.0.0.0/8
- 100.64.0.0/10
- 127.0.0.0/8
- 169.254.0.0/16
- 172.16.0.0/12
- 192.0.0.0/24
- 192.0.2.0/24
- 192.88.99.0/24
- 192.168.0.0/16
- 198.18.0.0/15
- 198.51.100.0/24
- 203.0.113.0/24
- 224.0.0.0/4
- 240.0.0.0/4
- 255.255.255.255/32
- 6.0.0.0/8
- 7.0.0.0/8
- 11.0.0.0/8
- 21.0.0.0/8
- 22.0.0.0/8
- 26.0.0.0/8
- 28.0.0.0/8
- 29.0.0.0/8
- 30.0.0.0/8
- 33.0.0.0/8
- 55.0.0.0/8
- 214.0.0.0/8
- 215.0.0.0/8
- 211.238.159.0/24
附录B:域名黑名单
下面的列表用于根据反向DNS查找的结果确定是否继续尝试攻击系统。如果域名在下列列表中,它将被丢弃。
- mil
- gov
- army
- airforce
- navy
- gov.uk
- mil.uk
- govt.uk
- mod.uk
- gov.au
- govt.nz
- mil.nz
- parliament.nz
- gov.il
- muni.il
- idf.il
- gov.za
- mil.za
- gob.es
- police.u