侧边栏壁纸
博主头像
术业有道之编程博主等级

亦是三月纷飞雨,亦是人间惊鸿客。亦是秋霜去叶多,亦是风华正当时。

  • 累计撰写 99 篇文章
  • 累计创建 50 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

记录一次挖矿程序

Administrator
2021-11-16 / 0 评论 / 0 点赞 / 373 阅读 / 12446 字

写在前面

在服务器上使用docker build程序,发现奇慢无比,执行了一下htop好家伙,本片正式开始。

一、检查系统可疑进程

image.png
有5个进程长时间占用了CPU,一查xmrig 你懂得,要是想学挖矿谷歌一下这个词,你会回头来谢我的。
有人肯定会问了,不是觉得网络慢么,怎么会是CPU满,有这个疑问的同学,建议先去知乎刷点liunx tcp相关的知识。

我当时没想到要写成博客,直接找到/root/.c2pool这个文件夹,进去查看了config.json文件,没找到突破口,索性直接删除了/root/.c2pool(应该截个图再删除的)。

查了下时间 /root/.c2pool这个文件夹,落盘时间为2021-11-10 11:21:45。收获敏感时间,后面的系统敏感位置都根据这个时间来判断,只要大于等于这个时间,都要查。

二、检查系统敏感文件

  • 第一步:当然是检查 ssh,在我预料之中,有一个名为sssd的后门。
    image.png

image.png

这里面我打开看过,其实就是单独起了一个ssh进程,当然配置文件是他自己的。

  • 第二步:有第一步的信息了,接下来当然是检查ssl
    image.png

虚惊一场,没啥问题。我以为他会把ssl指向到了刚才他创建的那个sssd文件夹中的文件。

  • 第三步:(ssh都被改了,不会这么单纯相信秘钥还是原厂的吧)检查秘钥文件
    公钥和私钥都被他删除了,多了个authorized_keys文件,这是基本操作了,打开这个文件一看,全是乱码,我截图了。
    image.png

    • 看起来,像一些服务的信息,正常这里应该是某些服务器公钥才对,由于是乱码(编码设置都没用)没搞明白这里写的是什么内容。
  • 第四步:检查原厂的ssh服务有没有异常
    image.png

    • 确认无异常
  • 第五步:检查开机启动项

    • init.d文件夹很干净,从时间上看,这里面的程序与挖矿无关。
      image.png
  • 第六步:检查系统启动项
    image.png

    • 找到了2个东西
    • 第一个c3pool_miner.service 这个就是刚刚开头被我发现的那5个进程,指向的文件就是被我删除的/root/.c2pool这个文件夹
    • 第二个东西,这就开始搞混淆了
      image.png
    • 进到 multi-user.target.wants瞄一眼
      image.png
    • 这两个玩意,眼熟不。又有一个c3pool_miner.service,合着是外面那个估计暴露给你删除的。打开看一下另一个sssd.service
      image.png
    • 很明显,通过写入临时的DEBUG_LOGGER系统变量来传递登录秘钥,看起来还有其他程序在配合。
    • 看这个脚本出现的代码,检查了一下 /etc/sysconfig
      image.png
    • 没有异常

三、检查痕迹

到上面这里,线索断了,是哪个程序在提供DEBUG_LOGGER没有找到。重启了服务器,突然看到/var/log下有点眼熟的东西
image.png

这倒是让我抓到了几个方向。

执行了htop
image.png
没有异常。

发现服务器上的mysql.sock文件被删除了,得知是mysql root使用了弱密码,且开启了远程登录。

继续排查方向:
1、从mysql日志出发。
2、从/var/log出发。
寻找DEBUG_LOGGER相关的输出日志。

检查结果:

  • mysql相关的日志全部被清除了,并且删除了mysql.sock文件。
  • /var/log下相关日志全部被删除了,只留下了btmp-20211101,执行last -f /var/log/btmp-20211101打开看看。
    image.png
    image.png
    还有很多很多。
    很明显,这里记录了通过默认的端口来检测程序口令,也就是常说的爆破。从日志看,攻击很早就开始了,只是从3306端口默认了mysql root,很容易就进来了。由于没有日志证据,我只能猜测是通过3306进来的。

接下来我找到了一把如何通过mysql root进行服务器提权,向目标服务器写入文件的文章。大致了解了用mysql root提权liunx权限原理

四、还原一下攻击过程

主要就是渗透攻击:
1、嗅探扫描服务器ip开放端口,试探端口默认的程序协议,来确定该端口运行的程序。
2、使用端口对应的客户端程序,进行相同协议的默认账户进行登录,密码使用密码本匹配,爆破。
3、爆破成功后(我这里使用mysql 3306 root开启了远程登录举例),在本地mysql 客户端发起远程mysql root连接,由于前面的爆破是知道了默认root账户密码的,可以正常登录进来。
4、接下来就是渗透攻击的主要操作:

  • 创建一个数据库,
  • 然后创建一张表,执行create table a (shell text)
  • 插入数据
    insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );
    
    insert into a values ("a=wshshell.run (""run.sh /c net user 1 1/add"",0) " );
    
    insert into a values ("b=wshshell.run (""run.sh /c net localgroup root 1 /add"",0) " );
    
  • 将数据生成文件select * from a into outfile "/root"
    现在可执行文件已经在/root落盘成功了。
    5、利用mysql root获取liunx root权限
  • 这就很复杂了,我也没搞太明白,找到了一篇博客说明,有兴趣的可以看看。MySQL数据库Root权限MOF方法提权研究
  • 大概意思就是利用了mysql的一个漏洞,来做shell反弹到特定服务器上,特定服务器就具有了远程操作mysql服务器的root权限。

五、如何检查服务器是否被纳入攻击目标

1、在服务器上执行last -f /var/log/btmp,这里面记录了没有正确登录的日志。要是已经黑进来了,这个文件大概率是被删除的。发现大量的异常登录但是服务器还是正常的时候,一定要增强端口暴露出去的服务器的密码强度。有更新补丁的及时打补丁。

2、liunx其他日志文件也可以去看看,不过意义不大,一般黑进来都会删除那些日志的。也可以通过服务器日志莫名其妙丢失了来确认是否已经被黑了。

3、检查/etc目录,一般向系统申请root权限启动的程序都会在这个文件夹下。

4、检查系统启动/etc/systemd/system目录,通过判断修改时间是否有异常即可。

5、检查ssh服务,一般都会有后门。

6、检查服务器秘钥,一般都会被篡改,或者增加新的秘钥。

7、检查ssl服务,有的会改这个。

8、检查systemd服务,一般都会增加好几个地方的服务。

六、服务器已经被攻击了怎么办

1、牛皮想折腾的的就慢慢折腾,斗智斗勇。不牛皮不想折腾的的直接重装系统。

2、一定反思一下,为什么就黑你的服务器,别人的怎么没被黑,兄弟,这里面有你的故事。

个人公众号

0

评论区