2023年7月3日发(作者:)
服务器被⼊侵(疑似挖矿病毒)处理服务器被⼊侵(疑似挖矿病毒)处理
⼀、环境介绍:系统:ubuntu 18.04内存:128G
硬盘:500G(操作系统盘)+15T(数据盘)a、查看物理CPU个数root@ubuntu:~# cat /proc/cpuinfo| grep"physical id"| sort| uniq| wc -l2b、查看每个物理CPU中core的个数(即核数)root@ubuntu:~# cat /proc/cpuinfo| grep"cpu cores"| uniqcpu cores :16c、查看逻辑CPU总的个数(利⽤超线程技术实现。2个物理CPU;2x16=32核;每核2线程:32x2=64线程)root@ubuntu:~# cat /proc/cpuinfo| grep"processor"| wc -l64d、查看总线程数,可以理解为总逻辑cpu的数量root@ubuntu:~# grep 'processor' /proc/cpuinfo| sort -u | wc -l64 64
e、查看 CPU型号内核:Linux ubuntu4.15.0-147-generic #151-Ubuntu SMP Fri Jun 18 19:21:19 UTC 2021 x86_64 x86_64x86_64GNU/Linux64 Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz (利⽤超线程技术实现的64个逻辑CPU)64 Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz (利⽤超线程技术实现的64个逻辑CPU) ⽂章主题之外补充:KVM、VMwre等等虚拟化,应该分配⼏颗CPU 是以总核数来确定的(如上16x2=32核),不是以逻辑(线程数)CPU 的数量来确定。
⼆、服务器状态排查⼀ 引⽤:之前看到过⼀篇⽂章介绍说:只要是跑着的线程,那么都是占⽤CPU的线程,如果⼀个进程有多个线程在同时运⾏,那么cpu占引⽤:之前看到过⼀篇⽂章介绍说:只要是跑着的线程,那么都是占⽤CPU的线程,如果⼀个进程有多个线程在同时运⾏,那么cpu占满是不可能的,每个线程本来就是会被操作系统分配时间⽚的。举个例⼦:如果3个线程同时运⾏,那么只有问题线程所使⽤的30%是满的,3个线程同时都是问题线程的概率是很⼩的(但不是没有可能),所以cpu总体使⽤率可能是50%以上,但不可能达到100%,遇满的,3个线程同时都是问题线程的概率是很⼩的(但不是没有可能),所以cpu总体使⽤率可能是50%以上,但不可能达到100%,遇到问题进程,这个⾸先得看是不是程序占得cpu,这个还是可以top⼀下,查看性能监测器,确定是某个程序的话,可以通过windbg抓dump进⾏分析。然后听到了⼀个感觉会有些烧脑的名词——线程监控,把内部线程和系统线程id结合,可能会在调试状态下查看CPU使⽤率,然后找到哪个函数CPU占⽤过⾼这么个场景会⽤到。备注:在我的环境中达到50% 服务器并不卡,可能在⾼点达到70~80%就会卡了。 在我这个场景下,第⼀张图:⽤户CPU占⽤率达到了50%左右,Load average 负载达到了32左右,CPU总核数也是32第⼆、三张图就能清晰的看到 CPULoad average 达到了32左右top 命令后按“1“:2、⼼⾥想:CPU load average 负载这么⾼,可能是磁盘IO出问题的时候,CPU都等着向磁盘写数据呢,或者磁盘有坏道,写的慢,CPU任务执⾏不完,就⼀直处于等待的状态,所以导致的负载这么⾼,排查iowait信息,如下显⽰:磁盘IO是正常的。3、排查定时任务crontab中任务脚本,以及硬盘使⽤情况,内存使⽤情况,也都未发现异常。4、列出进程id, 线程id和cpu占有率,同时按照cpu占有率排序root@ubuntu:/etc#psH -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu以为⽤这个命令可以把隐藏的进程都显⽰出来,是我年轻了5、排查⽹络,服务器连接的IP以及监听的端⼝是否异常,并使⽤ifconfig查看⽹卡收发的流量情况6、排查/etc/passwd 是否有可疑⽤户或者登录的权限设置有问题(就不附图⽚了)
7、排查/var/log/message ⽤户登录记录,我这⽤的是vim打开,⾥⾯的记录也都被清空了,此时还没有意识到/var/log下⽂件的重要性,这让我很后悔,原因嘛,等下就晓得了。思路⼩结:以上排查后,偏偏CPU占⽤率很⾼,其他的很正常,这不符合逻辑呀附上此时内⼼独⽩:真TM奇了怪了 到底是个啥导致的CPU占⽤率这么⾼???要么就等他⾃⼰爆吧,反正⼜不能重启;⼼⾥⼜想,难得遇到这么个场景,重启此时的服务器环境就没有了,问题始终要解决,⿎着上吧。
三、服务器排查⼆1、重点:以上的排查这是部分的排查,要想找到问题所在,还是要耐住性⼦,虽然知道服务器⾥⾯有那么多的⽂件,遇到的问题就在这么多⽂件的其中,但是解决的途径也是在其中。2、突然想到:⼀开始的/var/log/message 是直接⽤ vim 打开看的,并没有把/var/log下的所有的⽂件都看过,要不把 /var/log下的所有⽂件都看⼀遍,哈哈哈,这可能是真是运⽓,在/var/log/syslog⾥⾯尽然有很多的报错是关于SSH服务的,SSH服务⼀直在不断的重启,并且⼀直在调度分配新的job去执⾏重启,怀疑可能是⼀直就是因为这个原因导致的CPU占⽤率这么⾼;并且查看状态⼀直有ip在暴⼒破解密码,同时也统计了⼀下密码被暴⼒破解的次数:有12万多。我们的密码我感觉设置的也很简单,感觉都经受不了这么多次的尝试。(别⼈设置的,我的话最起码⼗位数起步,⼤⼩写,特殊字符)activating(start) 这个状态是不正常的。 这个状态是不正常的。3、排查了ssh服务的配置⽂件/etc/ssh/sshd_config ⽂件,⾥⾯没有问题,⼿动重启了⼀遍,仍然是activating(start)这个错误的状态,打算重做SSH服务4、重装SSH 服务,遇到了新的问题:问题1、Errors were encountered whileprocessing问题2、The following packages have unmet dependencies: openssh-server : Depends: openssh-client (=1:7.2p2-4ubuntu2.8) Depends: openssh-sftp-serverbut it is not going to be installed问题3:dpkg:erro processing package openssh-server(--configure) installed openssh-server package post-installation scriptsubprocess returned error exit status 1 errors were encontered while processing问题4:dpkg: error processing package openssh-server (--configure): subprocess installed post-installation scriptreturned error exit status 10Errorswere encountered while processing:问题5:等等⼀连串的依赖报错之类的问题以上的问题都是由于对ubuntu 的不熟悉,apt-get remove openssh-server 会出现⼀连串的问题,切记,要想把软件卸载⼲净就不要使⽤这个 apt-get remove xxxxx;正确做法:apt-get purge openssh-server openssh-client ,就不会有上述的⼀些依赖问题。⼼得:出现以上类似的其他软件包的问题,其实可能都是由于在之前使⽤了remove。场景:若是现在需要新装⼀个软件,出现了类似的上述的依赖报错问题,并且这个报错是之前卸载某个软件遗留下来的,可以通过:先which xxx 或者whereis xxx ,查询⼀下软件包的主要配置⽂件在哪,将他cp备份保存⼀份;接下来使⽤apt-get purge xxxx 来卸载依赖报错的软件(xxx是之前的卸载的软件,并且这个软件在报错中⼀定会体现的);然后apt-get install –f && apt-get install xxxx 将依赖报错的软件重新安装,在把新的配置⽂件对照着cp备份保存的配置⼀下,再然后apt-get update更新如软件包的信息,可以理解为更新下载源;最后再apt-getinstall 安装需要新装的那⼀个软件。
5、重装SSH服务遇到了个最棘⼿的问题,同时这个问题也证明了服务器确实已经被⼊侵过了。问题1、unable tomake backup link of `./usr/bin/sshd’ before installing new version: Operationnot permitted这句话的意思是:我如果要apt-get install openssh-server openssh-client ,需要先把/usr/bin/sshd 这个⽂件删除掉,并且能够对这个⽂件有权限进⾏读写执⾏操作问题2、root超级管理员也没有权限对sshd⽂件进⾏操作,我知道的Linux下有lsattr 和chattr这俩命令是设置特殊权限的,但是从下图可见,使⽤这俩系统中⾃带的命令对sshd⽂件进⾏操作,显⽰权限被拒绝了。我⼜要冒内⼼独⽩了:真NM的⽜逼,完全懵逼了,这俩命令都不⾏,linux下还有啥命令或者第三⽅的商业软件能够这么拽 解决⽅法:正常的lsattr应该是这样的,有----------;lsattr俩命令再这两张图⽚⾥⾯完全不⼀样,猜测第⼀张图⽚⾥⾯的lsattr可能被修改或者替换了。接下我从相同版本的ubuntu18.04上拷贝了lsattr和chattr 两份⽂件,重命名为:lsattr_new 和 chattr_new,并上传到了第⼀张图⽚的服务器中。使⽤lsattr_new和 chattr_new 对sshd 进⾏操作,终于⽣效了。接下来重装SSH服务,执⾏命令:apt-get update && apt-get install openssh-server openssh-client && systemctrestart sshd 。内⼼独⽩:⼼累~~~~⼀开始怀疑,因为ssh 服务⼀直不断再重启,再不停分配新的job,是这个原因导致的CPU占⽤率这么⾼。唉,是我天真了没啥⽑⽤看来还是因为其他的原因,第⼆次想放着不管了,让他⾃⼰爆了再去重启。继续继续-------俺只是那么⼀想
三、借助第三⽅商⽤软件——Bitdefender GravityZone排查1、这个商⽤病毒查杀软件⽀持的平台以及系统版本还是挺全的,⽅式1、可以使⽤KVM或者VMware等虚拟机进⾏部署,这个适⽤于有虚拟化环境,只需要⼀台虚拟机就能够部署,最低要求8G内存;⽅式2、可以使⽤SAAS的⽅式进⾏部署,但是需要联⽹,这个适⽤于部署在物理机上。我这采⽤的是⽅式2SAAS部署Bitdefender GravityZone步骤:步骤1:登录控制台后,到这个页⾯下完整安装包(不能联⽹的机器就不能⽤这个包,需要先联⽹安装,然后再给你⽣成⼀个内⽹安装包)我这的环境是可以上⽹的。步骤2:下载linux安装包;上传到服务器上后解压压缩包:tar –zxvf 包名;chmod +x installer ;./installer 进⾏安装步骤3:使⽤图⽚中的命令进⾏扫描操作扫描到有结果会⾃动清理(清理:是剥离恶意代码,重组正常的⽂件,清理之前会拷贝⼀份到隔离区)步骤4:完成后可以在控制台,⽹络区域,点击这个设备,弹出信息框,扫描⽇志客户端扫描完成后,会出⼀份扫描清理的报告;控制台,左侧,隔离区也能看到扫描结果步骤5:到控制台,左侧,ThreatXploer可以看到更多信息四、挖矿病毒的处理1、、/usr/local/lib/ ⽂件的作⽤:执⾏top执⾏top看到看到CPUCPU占⽤率较⾼,但是显⽰的进程关于CPU占⽤率较⾼,但是显⽰的进程关于CPU的占⽤率都并不⾼, 的占⽤率都并不⾼, 这个⽂件会动态连接库后门来隐藏进程信息 这个⽂件会动态连接库后门来隐藏进程信息
busybox-x86_64 100%[==================>] 977.65K 173KB/s in 5.8s
2021-07-14 19:31:15 (170KB/s) - ‘busybox-x86_64’ saved [1001112/1001112]root@clamav:/opt# chmod +xbusybox-x86_64root@clamav:/opt# mvbusybox-x86_64 busyboxroot@clamav:/opt# mkdirruqingroot@clamav:/opt/ruqing#/opt/busybox ls -al /usr/local/bin/-rw-r--r-- 1 root root 12952 Jul 14 19:@clamav:/opt/ruqing# /opt/busyboxls -al l /etc/d-rw-r--r-- 1 root root 12952 Jul 14 19:@ubuntu:/etc#/opt/busybox cat d/usr/local/lib/
2、lsattr_new 和chattr_new ⽂章前⾯有介绍过,参数含义:i:不允许对⽂件进⾏删除、改名,也不能添加和修改数据a:只能在⽂件中増加数据,但是不能删除和修改数据:只能在⽂件中増加数据,但是不能删除和修改数据u:在删除时,其内容会被保存,以保证后期能够恢复:在删除时,其内容会被保存,以保证后期能够恢复使⽤lsattr_new查看⽂件的特殊权限root@ubuntu:/usr/local/bin#lsattr_new -u--ia--------e---lsattr取消设置的权限root@ubuntu:/usr/local/bin# chattr_new -@ubuntu:/usr/local/bin# rm – 3、在删除⽂件后,执⾏任何命令都⼀直出现如下报错,这是因为关键的挖矿进程——zfsutils-md5sum还在运⾏,、在删除⽂件后,执⾏任何命令都⼀直出现如下报错,这是因为关键的挖矿进程——zfsutils-md5sum还在运⾏,/etc/利⽤Linux的利⽤Linux的/usr/local/lib//usr/local/lib/预加载型恶意动态链接库的后门ERROR: : object'/usr/local/lib/' from /etc/d cannot be preloaded (cannotopen sharedobject file): ignored.关于d⽂件的解释可参考:使⽤lsattr_new 查看d⽂件的特殊权限root@ubuntu:/etc# lsattr_new dERROR: : object'/usr/local/lib/' from /etc/d cannot be preloaded (cannotopen sharedobject file): ignored.-u--ia--------e--- d# 执⾏以上命令后,退出重新登录,否则之前的bash是注⼊过的# 下⾯的命令要等所有注⼊过.2.17.0的进程都退出后才有⽤,否则还会被改取消设置的权限root@ubuntu:/etc# chattr_new dERROR: : object'/usr/local/lib/' from /etc/d cannot be preloaded (cannotopen sharedobject file): @ubuntu:/etc# pwdERROR: : object'/usr/local/lib/' from /etc/d cannot be preloaded (cannotopen sharedobject file): ignored./etcroot@ubuntu:/etc# cat dERROR: : object'/usr/local/lib/' from /etc/d cannot be preloaded (cannotopen sharedobject file): ignored./usr/local/lib/@ubuntu:/etc# rm –rf d
4、键盘敲得⼲脆⾮响的⼀步,连呼Nice删除以上两个⽂件后,便能看到了⼀直被隐藏的进程zfsutiles-md5sum,该进程使⽤top、ps、unhide等命令均⽆法查出来。从下图能够看到进程zfsutiles-md5sum,占⽤服务器上所有CPU,运⾏累计占⽤的时间以及CPU 占⽤率。通过上图中的zfsutils-md5sum进程的pid是2649,使⽤命令:cd /proc/2649 下,可看到红框中内容,exe链接的/usr/lib/zfs-linx//zfsutils-md5sum就是病毒的主程序使⽤命令:kill -9 2649,杀掉这个进程,CPU占有率⽴马恢复正常。相当可惜,我尽然没有记录下这个关键性的kill,就出去冒烟了5、服务器中还有⼀个⽬录/root/.debug是包含挖矿病毒程序,因为不确定⾥⾯的部分内容,所以也需要将这个 ⽂件夹删除。五、遗留问题以为找到病毒程序,并kill 掉占⽤CPU资源的进程就结束了??只想感叹⼈外有⼈,还没完呢1、问题1:系统的CPU 使⽤率虽然恢复正常,但仍然遗留有病毒程序,/usr/lib/zfs-linux//路径下的zfsutils-md5sum就是主运⾏程序,如下图,该zfsutils-md5sum⽂件使⽤重新替换过的lsattr_new 也不能查看该⽂件具有的特殊权限信息,同时对该⽂件进⾏操作⼀直提⽰权限被拒绝。2、问题2:su – 普通⽤户 提⽰权限不够,对系统中权限设置进⾏了检查,是正确的,新建⽴test⽤户进⾏测试,结果也是提⽰权限拒绝,这是因为将前⾯提到的/root/.debug⽂件夹权限改为:700,属主属组均为root,才导致的su – 普通⽤户提⽰权限失效;将该⽬录权限改为755后,su – 普通⽤户功能恢复正常,可是该⽂件是含有病毒的程序,最后也将该⽂件夹删除了。猜测可能是因为环境依赖问题,打算重启⼀次服务器,重启后却发现,服务器⽹卡⽆法配置IP地址。重启前未对⽹卡配置⽂件进⾏过任何修改,同时后⾯也排查了⽹卡配置⽂件,重试了⼏次后都未能将⽹卡绑定上IP地址。
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688328320a120911.html
评论列表(0条)