51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Centos服务器被入侵后无法使用部分命令问题处理

概述

在项目上因运营商方部署的服务器系统默认root密码为弱密码,导致服务器被暴力登录破解密码并被植入挖矿木马以及修改了部分服务文件。

检查入侵情况

常用命令检查

通过执行一些常用的命令发现:pstopnetstatuptime等命令无法正常使用,且需等待较长时间才能反馈结果。

基础服务检查

挖矿病毒处理参考:https://lolicp.com/linux/202115109.html

通过基础服务配置检查脚本能够发现是否有自启动、定时任务、用户等方面的修改。由于已经清理完毕,事后无法补充暂不编写。(https://lolicp.com/shell/202106309.html

排查入侵

可以通过lsof查看无法正常执行命令或其他正常命令所打开的文件信息,也可以通过ldd命令查看对应命令加载的动态库。通过对比其他相同版本文件打开信息发现/usr/lib/libcurl.so.2.17.0异常信息。

[root@localhost ~]# netstat &
[1] 203982
[root@localhost ~]# lsof -c netstat
COMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF      NODE NAME
netstat 203982 root  cwd    DIR    253,0     4096 268643328 /root
netstat 203982 root  rtd    DIR    253,0      257       512 /
netstat 203982 root  txt    REG    253,0   155008 369211908 /usr/bin/netstat
netstat 203982 root  mem    REG    253,0    68192 134218949 /usr/lib64/libbz2.so.1.0.6
netstat 203982 root  mem    REG    253,0   157424 134218943 /usr/lib64/liblzma.so.5.2.2
netstat 203982 root  mem    REG    253,0    90248 134218836 /usr/lib64/libz.so.1.2.7
netstat 203982 root  mem    REG    253,0   100008 134218956 /usr/lib64/libelf-0.172.so
netstat 203982 root  mem    REG    253,0    19896 134218877 /usr/lib64/libattr.so.1.1.0
netstat 203982 root  mem    REG    253,0    88720 134388762 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
netstat 203982 root  mem    REG    253,0   330464 134311531 /usr/lib64/libdw-0.172.so
netstat 203982 root  mem    REG    253,0    43712 134218789 /usr/lib64/librt-2.17.so
netstat 203982 root  mem    REG    253,0  1136944 134388778 /usr/lib64/libm-2.17.so
netstat 203982 root  mem    REG    253,0    20032 134218881 /usr/lib64/libcap.so.2.22
netstat 203982 root  mem    REG    253,0    86464 134311425 /usr/lib64/libnss_myhostname.so.2
netstat 203982 root  mem    REG    253,0   109976 134388798 /usr/lib64/libresolv-2.17.so
netstat 203982 root  mem    REG    253,0    31344 134388786 /usr/lib64/libnss_dns-2.17.so
netstat 203982 root  mem    REG    253,0    61560 134388788 /usr/lib64/libnss_files-2.17.so
netstat 203982 root  mem    REG    253,0   142144 134388796 /usr/lib64/libpthread-2.17.so
netstat 203982 root  mem    REG    253,0   402384 134218883 /usr/lib64/libpcre.so.1.2.0
netstat 203982 root  mem    REG    253,0    19248 134388776 /usr/lib64/libdl-2.17.so
netstat 203982 root  mem    REG    253,0  2156592 134388770 /usr/lib64/libc-2.17.so
netstat 203982 root  mem    REG    253,0   155784 134218892 /usr/lib64/libselinux.so.1
netstat 203982 root  mem    REG    253,0          436277421 /usr/lib/libcurl.so.2.17.0 (stat: No such file or directory)
netstat 203982 root  mem    REG    253,0   163312 134218243 /usr/lib64/ld-2.17.so
netstat 203982 root    0u   CHR    136,0      0t0         3 /dev/pts/0
netstat 203982 root    1u   CHR    136,0      0t0         3 /dev/pts/0
netstat 203982 root    2u   CHR    136,0      0t0         3 /dev/pts/0
netstat 203982 root    3r   DIR      0,3        0         1 /proc
netstat 203982 root    4r   REG      0,3        0     71110 /proc/67/cmdline
netstat 203982 root    5u  IPv4 94694195      0t0       UDP localhost.localdomain:49016->public2.alidns.com:domain
[root@localhost ~]# ldd /usr/bin/netstat
    linux-vdso.so.1 =>  (0x00007ffe4b5f1000)
    /lib/libcurl.so.2.17.0 (0x00007f4934ea4000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f4934c7d000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f49348af000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f49346ab000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f4934449000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f49352d4000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f493422d000)
[root@localhost ~]# strace /bin/ls 1>/dev/null 2>t
[root@localhost ~]# head -20 t
execve("/bin/ls", ["/bin/ls"], 0x7ffc13088360 /* 24 vars */) = 0
brk(NULL)                               = 0x1080000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f9103fee000
access("/etc/ld.so.preload", R_OK)      = 0
open("/etc/ld.so.preload", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=22, ...}) = 0
mmap(NULL, 22, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0x7f9103fed000
close(3)                                = 0
open("/lib/libcurl.so.2.17.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200!\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=31336, ...}) = 0
mmap(NULL, 2128088, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f9103bc6000
mprotect(0x7f9103bcc000, 2093056, PROT_NONE) = 0
mmap(0x7f9103dcb000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7f9103dcb000
close(3)                                = 0
munmap(0x7f9103fed000, 22)              = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=33822, ...}) = 0
mmap(NULL, 33822, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f9103fe5000
close(3)                                = 0

通过上述排查发现服务或命令中均加载了不知名的动态库,并且无法找到对应动态库文件/usr/lib/libcurl.so.2.17.0
根据警惕利用Linux预加载型恶意动态链接库的后门文章进行操作。

[root@localhost ~]# ls /lib/libcurl.so.2.17.0
ls: 无法访问/lib/libcurl.so.2.17.0: 没有那个文件或目录
[root@localhost ~]# ls /etc/ld.so.preload
ls: 无法访问/etc/ld.so.preload: 没有那个文件或目录
推测被黑时间

由于登录以及其他日志均被清空,无法直接查看入侵时间。可使用stat命令查看病毒文件时间信息。

[root@localhost log]# stat /etc/rc.d/init.d/pdflushs
  文件:"/etc/rc.d/init.d/pdflushs"
  大小:5325          块:16         IO 块:4096   普通文件
设备:fd00h/64768d    Inode:33556205    硬链接:1
权限:(0755/-rwxr-xr-x)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:usr_t:s0
最近访问:2022-04-15 13:47:51.466050737 +0800
最近更改:2018-01-03 00:29:40.000000000 +0800
最近改动:2022-03-24 03:17:54.501269955 +0800
创建时间:-

清理恶意文件

检查文件是否存在

下载静态编译的busybox,可以通过busybox所附带的命令查看到对应的文件以及文件内容。

[root@localhost ~]# wget -O busybox https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificate &&chmod +x busybox
[root@localhost ~]# ./busybox ls -al /etc/ld.so.preload
-rw-r--r--    1 root     root            22 Nov 23 19:46 /etc/ld.so.preload
[root@localhost ~]# ./busybox cat /etc/ld.so.preload
/lib/libcurl.so.2.17.0
[root@localhost ~]# ./busybox ls -al /lib/libcurl.so.2.17.0
-rwxr-xr-x    1 root     root         31336 Nov 23 19:46 /lib/libcurl.so.2.17.0
移除权限并删除

使用busybox 附带的命令解除动态库不可编辑权限并将动态库移除,由于系统进程已经被加载动态库,需要重启服务器才可以继续其他步骤。

[root@localhost ~]# ./busybox chattr -ai /lib/libcurl.so.2.17.0 &&./busybox rm -f /lib/libcurl.so.2.17.0
[root@localhost ~]# reboot
取消动态库加载

解除/etc/ld.so.preload不可编辑状态,并进行删除。

[root@localhost ~]# chattr -ai /etc/ld.so.preload
ERROR: ld.so: object '/lib/libcurl.so.2.17.0' from /etc/ld.so.preload cannot be preloaded: ignored.
[root@localhost ~]# rm -f /etc/ld.so.preload
ERROR: ld.so: object '/lib/libcurl.so.2.17.0' from /etc/ld.so.preload cannot be preloaded: ignored.

验证

检查不可正常使用的命令是否恢复

[root@localhost ~]# uptime 
 15:50:32 up 0 min,  1 user,  load average: 0.46, 0.12, 0.04
赞(0)
未经允许不得转载:工具盒子 » Centos服务器被入侵后无法使用部分命令问题处理