0x00 背景概述
2018年以来,加密货币市场出现震荡,很多币种币值较年初都有一定程度的缩水,但是由于“免费电”挖矿这种零投入模式的存在,币市降温似乎并没有给各类挖矿木马的传播者造成太大的影响,挖矿木马仍然是黑产团伙重要的盈利点。对于企业内部安全来说,无论是办公环境还是生产环境,挖矿木马都可以被定义为高危威胁,360 MeshFire Team聚焦于威胁检测的落地运营,在日常运营中提炼了挖矿的主要威胁场景,对恶意挖矿事件的持续进行监测和处置,总结归纳出对此类威胁类型的主要检测指标和处置流程,同时给出部分工具,方法和样本案例,供相关从业者参考。
本文的后半部分我们以一个捕获到的高危MAC挖矿样本为例,展开此类安全事件的监测和处置过程。该样本借助 “MAC使用word文档”等关键词SEO搜索结果,诱导用户下载执行挖矿程序,导致MAC电脑用户在网络中寻求帮助时会不甚感染挖矿木马。由于MAC系统少有人安装杀软,且目前没有杀软程序报毒相关样本,为了避免出现更多的受感染者,我们决定提前公开部分分析结果,向更多用户发出预警。特感谢专注于IOS安全研究的360 涅槃团队在分析过程中给予的支持和帮助。
0x01恶意挖矿行为来源
1.企业员工自主挖矿
在一些论坛或者社交网络中,不难找到“免费”挖矿的践行者分享经历的信息。他们或利用手头的办公资源,或利用自身管理的服务器和其他网络设备,通过部署矿机的方式进行挖矿行为。这种行为最直接的后果是:员工获取不正当利益的同时,致使企业遭受损失。而一旦被发现,员工也可能会因此承担相应的责任。
2.PC感染挖矿木马
在github等代码托管平台中,有大量的开源挖矿程序。这就给挖矿木马的二次开发提供了基础组件。在我们发现的挖矿木马传播事件中,攻击者多次利用xmrig、xmr-stak等开源项目,或是自己编写恶意挖矿代码进行挖矿。而矿机程序的传播,也不外乎几个方面:垃圾邮件传播、挂马网页、僵尸网络、挖矿蠕虫、捆绑安装工具和破解软件的安装等。
3.服务器感染挖矿木马
如果企业服务器秘钥管理不善或软件补丁更新不及时,则可能因为弱口令、应用程序漏洞等原因,被攻击者成功入侵,植入恶意挖矿代码。一个比较突出的实例是:今年上半年由于Redis提权漏洞的出现,大量攻击者利用该漏洞入侵Linux服务器进行扫描和挖矿,而被挖矿恶意代码感染的服务器,从而导致性能降低甚至死机的状况出现。
4.网站挖矿脚本
几年前,随着加密货币价格持续走高,“浏览即挖矿”这一黑产模式出现在我们的视野当中。网页中植入一段JS代码,用户浏览时即可在主机挖矿,在加密货币具备价值的前提下,这种变现模式比流量和广告变现要容易得多。利益驱动下,多个网站,甚至广告平台被曝光网页植入挖矿脚本的情形出现也就不足为奇了。对于企业和相关机构来说,员工浏览植入挖矿脚本的网页,会对计算机性能、电力造成损耗,而企业网站如果因为安全问题被植入挖矿代码,则是对企业信誉,乃至形象的损害。
0x02 内网挖矿威胁监控和处置流程
1.内网资产挖矿监控体系
我们日常安全运营依赖自研的宙合大数据威胁检测平台,整合终端、流量、网络边界、邮件等安全防护设备产生的告警信息和安全日志,基于特征检测、威胁情报和大数据关联聚合等技术手段,构建了一套基于大数据技术的内网威胁检测体系。通过数据关联和聚合分析,为网络扫描、漏洞利用、病毒传输、风险行为、邮件钓鱼等多种威胁场景的日常运营分析工作提供数据平台支撑。系统基本架构如下所示:
宙合平台同样适用于内网挖矿威胁场景的监测,基于挖矿行为的入侵检测的规则,从邮件附件、流量还原样本检测、服务器安全Agent和终端EDR日志等多种数据维度挖掘和关联,我们可以从主机运行环境,网络通信过程等多个采集点完成此类威胁的发现。
2.恶意挖矿监控和取证模式
2.1.资产定位
威胁检测落地首先需要完善安全基础工作,资产数据清晰准确的管理至关重要,将精细化的资产信息关联到告警日志中,将极大的提升安全运营的效率。一旦监测到威胁,快速响定位相应资产取证,而资产归属得以确认则是取证工作顺利进行的先决条件。在日常工作中完善运维和IT资产管理,梳理清晰的网络拓扑和网络安全策略等前置基础工作必不可少。
2.2.挖矿特征监测思路和规则
挖矿恶意软件主要目的是为了感染目标机器,运行挖矿软件,为追求利益最大化,防止追踪,一般恶意挖矿软件挖掘的加密货币符合下面4个条件:
(1) 匿名性 (2) CPU挖矿 (3) 价值靠前 (4) 抗AISC
目前市面上存在2000多种加密货币,而符合上面4个条件,升级算法后的门罗币(XMR)几乎是唯一选择,这也是恶意挖矿软件大多挖掘门罗币的原因。
门罗币采用Cryptonight算法,目前较为常用CPU挖矿软件有:xmr-stak,xmrig,claymore,对软件网络特征进行分析,发现各软件特征如下:
xmr-stak
xmrig
Claymore
从上面特征中,我们可以明显看到,挖矿客户端首先会与矿池互联,产生登陆操作,登陆操作分为两种,一种是直接登录,一种是通过jsonrpc方式,这两种方式依赖于TCP的Stratum。开源的ET open规则里都进行了监控。规则细节如下:
alert tcp-pkt $HOME_NET any -> $EXTERNAL_NET any (msg:"ET POLICY Cryptocurrency Miner Checkin"; flow:established,to_server; content:"|7b 22|id|22 3a|"; nocase; depth:6; content:"|22|jsonrpc|22 3a|"; nocase; distance:0; content:"|22 2c 22|method|22 3a 22|login|22 2c 22|params|22 3a|"; fast_pattern; content:"|22|pass|22 3a 22|"; nocase; content:"|22|agent|22 3a 22|"; nocase; content:!"<title"; nocase; content:!"<script"; nocase; content:!"<html"; nocase; metadata: former_category POLICY; classtype:policy-violation; sid:2024792; rev:4; metadata:affected_product Windows_XP_Vista_7_8_10_Server_32_64_Bit, attack_target Client_Endpoint, deployment Perimeter, signature_severity Minor, created_at 2017_10_02, updated_at 2018_06_15;)
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"ET POLICY Crypto Coin Miner Login"; flow: to_server,established; content:"|7b 22|method|22 3a 20 22|login|22 2c 20 22|params|22 3a 20 7b 22|login"; nocase; depth:37; fast_pattern:17,20; content:"agent|22 3a 20 22|"; nocase; distance:0; reference:md5,d1082e445f932938366a449631b82946; reference:md5,33d7a82fe13c9737a103bcc4a21f9425; reference:md5,ebe1aeb5dd692b222f8cf964e7785a55; classtype:trojan-activity; sid:2022886; rev:2;)
除开源规则外,还可使用如下规则,监控挖矿软件与矿池之间的网络通信过程。
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Cryptocurrency Miner Request Pools"; content:"|22|method|223a|"; content:"|22|params|223a|"; content:"|22|job_id|223a|"; content:"|22|nonce|223a|"; content:"|22|result|223a|"; classtype:bad-unknown;rev:1;sid:7000179;)
2.3挖矿行为的终端取证
取证是事件分析和追溯的重要步骤,取证结果直接关系能否成功定位威胁,及后续工作的进行。下面简单介绍些我们在日常不同操作系统下的取证对象、方法及工具,应用场景不限于各类安全事件响应工作中的取证环节,供参考。
2.3.1 Windows主机取证
Windows取证工具有很多,下面列举部分工具,并简单描述使用场景。
Sysinternals:一个用于监控Windows系统的工具套件,有PsTools、Process Monitor、ProcessExplorer、Autoruns、sysmon、Whois、ProcDump等,几乎涵盖Windows取证各个方面。https://docs.microsoft.com/en-us/sysinternals/ AVZ:一款信息获取工具,可以获得进程、服务、内核空间、端口等信息。 GMER:可以用来检测和删除rootkit的工具http://www.gmer.net/ Forensic Toolkit:可以用于数字取证的实用工具http://accessdata.com/solutions/digital-forensics/forensic-toolkit-ftk?/solutions/digital-forensics/ftk Rekall:一个内存分析框架,可以检测系统的inline_hook,创建内存转储http://www.rekall-forensic.com 火绒剑、PcHunter、PETools等分析和取证辅助工具 ……
2.3.2 Linux取证
Linux取证工作的主要对象有:
用户:Linux不同用户往往有不同的操作权限,如果有非正常新增用户或用户权限异常变动,往往是有问题的。 进程:一般被入侵的Linux系统(服务器)都会有恶意程序运行,通过查看进程信息则可以发现一些威胁痕迹。 网络:可以通过对进程网络通信和端口占用情况,与网络告警信息比对,以此找到威胁源。 命令历史:如不加删除,linux用户历史命令都会存在用户目录下.bash_history当中。 登录历史:可以通过查看登录历史判断威胁落地的时间,以及入侵的可能责任对象。 开机启动和定时任务:一旦系统被入侵,则可能通过开机启动项配置,crontab和守护进程设置的方式达到持久化的效果,所以linux取证环节中,对相应项的检测是很重要的。 系统日志和各类应用日志:重要性不必多说。
除上述方面和对象外,还有许多要注意的其他内容,这里不做赘述。
2.3.3 MacOS取证
MacOS取证对象与Linux类似,除部分内置软件外这里列举部分取证工具仅供参考:
fsmon:跨平台文件监控工具 https://github.com/nowsecure/fsmon dtrace:动态行为检测神器 http://dtrace.org/blogs/ objective-see部分MacOS防护软件:https://www.objective-see.com/products.html instruments:MacOS原生动态行为监控工具,需要xcode环境
3. 后续处置工作
1. 矿池域名封堵
随着时间推移,节点直连区块中心挖矿的模式,已经很难挖到加密货币了,现在更多的人选择将节点连接到矿池的方式获取加密货币。所以,对于企业而言,阻断内网资产对常见挖矿威胁矿池的访问,是一种较为有效的网络侧处置手段。
2. 攻击链还原
为了确认恶意挖矿事件的攻击链,需要对取证结果、样本分析结果、网络日志等信息进行关联整合,形成攻击事件的流程。还原攻击链的目的主要有三个:一是确认挖矿行为的源头是来自于入侵还是内部员工的违规行为;二是找到内部资产脆弱点,从而对内部资产进行安全升级;三是提取攻击载荷特征,部署入侵监测系统、防火墙过滤规则,便于威胁源头阻断和后续的追溯工作。
3. Payload查杀
对于一些企业和机构来说,如果内网部署企业级终端安全防护产品,则可通过后台策略进行内网查杀,如果不能则需要根据payload行为编写专杀工具或手动清理感染痕迹。
0x04 挖矿木马事件典型示例
破解版应用程序诱导下载安装挖矿程序恶意事件
安全分析人员在8月发现内网部分MacOS主机产生挖矿网络告警,通过Review告警信息,资产确认后,锁定若干Mac办公机。进一步取证,分析,发现这些Mac主机确实感染挖矿木马,攻击样本来自百度搜索“MAC使用word文档”等关键字反馈结果的置顶广告推荐。
1. 事件告警
8月10日前后,内网发现大量挖矿告警,告警地址显示为45.195.146.32,该IP地址对应域名funningx.com,告警端口为3333,产生告警截图如下
2. 资产定位和主机取证
发现告警后,第一时间从网络资产管理系统中查询告警IP所属主机,确定主机为部分iMac和Macbook。拿到取证机后,接入网络,查看3333端口占用进程信息,定位到一个名为ssl.plist的进程。IDA静态分析样本行为,确认这是一个xmr-stak的矿机程序。
在~/Library/LaunchAgents,/Library/LaunchDeamos,/Library/LaunchAgents,/System/Library/LaunchDaemons开机启动项中查找ssl.plist路径信息,均无所获,其他开机启动方式检查也未有结果。杀掉进程,删除ssl.plist, cpu.txt, config.txt, pools.txt等配置文件后,重启系统,挖矿程序会重新启动。
在~/Library/LaunchAgents目录下发现两个plist文件:com.apple.Yahoo.plist和com.apple.Google.plist。其中com.apple.Google.plist是一个plist文件,内容如下:
该plist配置文件表明系统开机时会启动osascript,并且运行com.apple.Yahoo.plist这个applescript脚本。
由文件16进制内容可知,这是一个run-only applescript脚本文件。手动启动com.apple.Yahoo.plist,并进行主机行为和网络监测,发现该脚本文件的部分行为是:根据主机类型释放挖矿配置文件,下载http://101.55.20.149/gogoto.png 保存为11.png并运行。
同样用osascript启动脚本,并监控osascript行为和网络行为。行为显示该脚本的部分功能为:下载http://101.55.20.149/ssl.zip 并解压到~/Library/Safari目录下,得到ssl.plist和openssl文件夹,并运行ssl.plist进程。
根据脚本行为锁定101.55.20.149这个IP,Review被感染主机历史流量日志,发现攻击载荷最初的入口均来自vip1.czscrj.com,由百度搜索“excel mac版下载” “mac 使用word”等关键字查询获取:
下载office4mac.zip,解压运行,mac主机启动挖矿程序,开始挖矿,主机和网络行为与告警一致。至此取证工作完毕。
3. 样本行为分析
office4mac.app 目录结构如下:
~ /Desktop/office4mac/office4mac.app
└── Contents
├── Info.plist
├── MacOS
│ └── applet
├── PkgInfo
└── Resources
├── 001.plist ———————-即为com.apple.Yahoo.plist applescript脚本文件
├── 1.png
├── 10.png
├── 2.png
├── 3.png
├── 4.png
├── 5.png
├── 6.png
├── 7.png
├── 8.png
├── 9.png
├── Scripts
│ └── main.scpt ——-程序编译的applescript代码,run-only,不可读
├── applet.icns
├── applet.plist
├── applet.rsrc
└── description.rtfd
└── TXT.rtf
尤其可以认定该样本是一个applescript导出为run-only模式的Mac平台应用程序。由于目前还没有找到run-only applescript 的有效分析方法,逆向osascript的工作还在进行中,但是通过行为监测,可以大致梳理出office4mac.app运行后挖矿工具的安装流程,流程如下:
(1) 运行office4mac.app 启动office4mac.appContentsMacOSapplet进程,进程行为是加载office4mac.appContentsResourcesScriptsmain.scpt,执行脚本文件。从文件行为检测上看,该脚本的部分功能是:读取主机硬件信息,向~/Library/LaunchAgents/目录下释放com.apple.Google.plist 和com.apple.Yahoo.plist两个文件并com.apple.Google.plist由脚本创建并写入内容,com.apple.Yahoo.plist为样本的资源文件office4mac.appContentsResources01.plist复制到相应目录下。经过测试,com.apple.Yahoo.plist的主要行为是:http://101.55.20.149/gogoto.png 保存为11.png并运行。
(2) 11.png运行后的脚本检测结果是:自删除,释放挖矿配置文件,cpu.txt,config.txt,pools.txt等。然后调用curl下载http://101.55.20.149/ssl.zip 并解压到~/Library/Safari目录下,得到ssl.plist和openssl文件夹,并运行ssl.plist进程。ssl.plist即为xmr-stak矿机程序。
另外,在虚拟机中测试office4mac应用程序,不会触发挖矿行为,猜测脚本代码中有虚拟机检测的行为,因代码暂时没能准确解读,所以仅作猜想。
4. 用户自查和病毒查杀方案
MacOS用户可参考如下方案完成挖矿病毒自查和病毒查杀:
1. 终端输入命令netstat –an |grep 3333查看是否有ssl.plist进程绑定3333端口。 2. 查看主机是否运行挖矿进程:ps -ef |grep ssl.plist,如果有进程,则需要用kill pid命令杀掉进程。 3. 通过ls ~/Library/LaunchAgents/ 看目录下是否有com.apple.Google.plist 和com.apple.Yahoo.plist,如果有,则删除文件。 4. 删除~/Library/Safari/目录下的ssl.plist ,cpu.txt ,config.txt,pools.txt 和openssl文件夹,进入相应目录使用rm命令即可。 5. 实测此office4mac应用程序并不会安装mac平台office应用软件,如有需求请寻找其他资源,建议购买正版。
5. 小结
office4mac应用程序的开发者采用导出为run-only applescript的方式生成payload文件,但现阶段对applescript脚本的分析方法还比较匮乏,所以分析人员采用fsmon和dtrace等系统行为检测工具分析样本的行为。关于applescript的逆向,需要后续跟进和分析。
0x05 总结
文中给出的基于大数据技术进行挖矿威胁场景的监测方法,从实践的检验来看有非常好的效果,挖矿相关行为会持续产生规律性告警,客户端及网络流量一侧也能准确捕捉到挖矿行为的产生,是一种比较成熟的挖矿行为检测模型。
关于MacOS平台盗版Office挖矿的事件,由于macos系统对applescript原生支持混淆和编译,这是保护软件著作的一种途径,但也给applescript恶意代码对抗分析,逃避杀软检测带来了捷径。目前applescript的恶意代码比较少见,但如果对此种类型恶意代码的前景做一个大胆预测, applescript恶意代码日后有可能成为MacOS平台中VBS恶意宏脚本的角色。所以,现阶段安全从业者不应对此有所忽视。
此外,网络攻击形式是有趋利性的,从银行木马,到勒索软件,再到现在各类挖矿木马,本质上都是一个在尽可能短的时间内攫取更多利益的过程。现在很多面向个人和企业的杀软也逐渐推出防挖矿功能,但是对企业来说,仅仅依靠杀软在终端提供支持还远远不够,对MAC系统安全的也不应该有绝对的自信,需要的是完善的威胁监测机制和安全运营流程,不断提升应急响应的效率,减少不必要的损失。
0x06 附录:部分IOC
Office4mac.zip:
MD5 7e077211cb23838ba48073dde67a80a4 SHA-1 d6118f4ec47ee0c4606b9a1594648ffbafefc3a0 File Type ZIP TRiD Zip archive data, at least v1.0 to extract File Size 3.8 MB
Yahoo.plist:
MD5 f3247a8b7a25d35dc88dbd676d7f2476 SHA-1 f3d83291008736e1f8a2d52e064e2decb2c893ba File Type run-only applescript TRiD Compiled AppleScript script (100%) File Size 4.23 KB
11.png:
MD5 1b477f3f2b2af9e22dff5c316fe3d5a9 SHA-1 c6759838dd64c370cc6e728828cc71e738339702 File Type run-only applescript TRiD Compiled AppleScript script (100%) File Size 6.28 KB
ssl.zip:
MD5 af08ffb2ddd5c207f0d8b8ded070282c SHA-1 8bcdc85aec55821791032cb9d6c9f7ab161def3e File Type ZIP TRiD ZIP compressed archive (80%) File Size 1.12 MB
ssl.plist:
MD5 b74ff65d7af518316f5d0230f62f9433 SHA-1 b8f6734ceede14e071320820b9de448ccfa1466f File Type Mach-O Magic Mach-O 64-bit executable TRiD Mac OS X Mach-O 64bit Intel executable (100%) File Size 769.74 KB