删除服务器木马

Posted mingyuewu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除服务器木马相关的知识,希望对你有一定的参考价值。

删除服务器木马

一、木马症状

输入top命令后,发现某不知名进程ld-linux-x86-64占用全部CPU,该进程很可能是木马

二、分析

1 查看该进程打开的文件

lsof -p pid (70056)

通过进程号显示该进程打开的文件

lsof   -p    70056
COMMAND     PID USER   FD   TYPE   DEVICE SIZE/OFF     NODE NAME
ld-linux- 70056   es  cwd    DIR    253,0     4096  2490819 /tmp/.ICE-unix/ /.x
ld-linux- 70056   es  rtd    DIR    253,0     4096        2 /
ld-linux- 70056   es  txt    REG    253,0   164240  2506237 /tmp/.ICE-unix/ /.x/stak/ld-linux-x86-64.so.2
ld-linux- 70056   es  mem    REG    253,0  4445856  2506231 /tmp/.ICE-unix/ /.x/stak/xmrig
ld-linux- 70056   es  mem    REG    253,0   402384  2506228 /tmp/.ICE-unix/ /.x/stak/libpcre.so.1
ld-linux- 70056   es  mem    REG    253,0   155784  2506230 /tmp/.ICE-unix/ /.x/stak/libselinux.so.1
ld-linux- 70056   es  mem    REG    253,0    88776  2506241 /tmp/.ICE-unix/ /.x/stak/libgcc_s.so.1
ld-linux- 70056   es  mem    REG    253,0   105824  2506236 /tmp/.ICE-unix/ /.x/stak/libresolv.so.2
ld-linux- 70056   es  mem    REG    253,0    15688  2506233 /tmp/.ICE-unix/ /.x/stak/libkeyutils.so.1
ld-linux- 70056   es  mem    REG    253,0    67104  2506247 /tmp/.ICE-unix/ /.x/stak/libkrb5support.so.0
ld-linux- 70056   es  mem    REG    253,0    41272  2506250 /tmp/.ICE-unix/ /.x/stak/libltdl.so.7
ld-linux- 70056   es  mem    REG    253,0    46608  2506235 /tmp/.ICE-unix/ /.x/stak/libnuma.so.1
ld-linux- 70056   es  mem    REG    253,0    90248  2506246 /tmp/.ICE-unix/ /.x/stak/libz.so.1
ld-linux- 70056   es  mem    REG    253,0   210784  2506240 /tmp/.ICE-unix/ /.x/stak/libk5crypto.so.3
ld-linux- 70056   es  mem    REG    253,0    15920  2506244 /tmp/.ICE-unix/ /.x/stak/libcom_err.so.2
ld-linux- 70056   es  mem    REG    253,0   967784  2506243 /tmp/.ICE-unix/ /.x/stak/libkrb5.so.3
ld-linux- 70056   es  mem    REG    253,0   320784  2506245 /tmp/.ICE-unix/ /.x/stak/libgssapi_krb5.so.2
ld-linux- 70056   es  mem    REG    253,0  2156160  2506232 /tmp/.ICE-unix/ /.x/stak/libc.so.6
ld-linux- 70056   es  mem    REG    253,0  1137024  2506239 /tmp/.ICE-unix/ /.x/stak/libm.so.6
ld-linux- 70056   es  mem    REG    253,0   254392  2506238 /tmp/.ICE-unix/ /.x/stak/libhwloc.so.5
ld-linux- 70056   es  mem    REG    253,0    19288  2506242 /tmp/.ICE-unix/ /.x/stak/libdl.so.2
ld-linux- 70056   es  mem    REG    253,0    43776  2506248 /tmp/.ICE-unix/ /.x/stak/librt.so.1
ld-linux- 70056   es  mem    REG    253,0   142232  2506229 /tmp/.ICE-unix/ /.x/stak/libpthread.so.0
ld-linux- 70056   es  mem    REG    253,0  2521144  2506249 /tmp/.ICE-unix/ /.x/stak/libcrypto.so.10
ld-linux- 70056   es  mem    REG    253,0   470376  2506234 /tmp/.ICE-unix/ /.x/stak/libssl.so.10
ld-linux- 70056   es    0r   CHR      1,3      0t0     4601 /dev/null
ld-linux- 70056   es    1w   CHR      1,3      0t0     4601 /dev/null
ld-linux- 70056   es    2w   CHR      1,3      0t0     4601 /dev/null
ld-linux- 70056   es    3r   DIR    253,0     4096        2 /
ld-linux- 70056   es    4u   REG      0,9        0     4597 [eventpoll]
ld-linux- 70056   es    5r  FIFO      0,8      0t0 13038985 pipe
ld-linux- 70056   es    6w  FIFO      0,8      0t0 13038985 pipe
ld-linux- 70056   es    7r  FIFO      0,8      0t0 13038986 pipe
ld-linux- 70056   es    8w  FIFO      0,8      0t0 13038986 pipe
ld-linux- 70056   es    9u   REG      0,9        0     4597 [eventfd]
ld-linux- 70056   es   10r   CHR      1,3      0t0     4601 /dev/null
ld-linux- 70056   es   11u  IPv4 54392979      0t0      TCP 192.168.11.237:37144->167.114.96.154:http (ESTABLISHED)
# 发现该进程打开了很多 /tmp/.ICE-unix/ /.x目录下的文件,该进程的程序文件可能在/tmp/.ICE-unix目录下
删除该目录   rm  -fr   /tmp/.ICE-unix/ /.x
不熟悉是否重要的目录不要随便删

2 查看进程的环境变量/proc/$pid/environ

可以在/proc/$pid/environ中查看该进程的初始环境,如果进程改变了它的环境,这个目录里查不到,即不能反应进程实时的环境变量

cat /proc/70056/environ 
HOSTNAME=pc239
SELINUX_ROLE_REQUESTED=TERM=xtermSHELL=/bin/bash
HISTSIZE=0SSH_
CLIENT=192.168.34.30 57180 22SELINUX_USE_CURRENT_RANGE=SSH_TTY=/dev/pts/0HISTFILESIZE=0JRE_HOME=/usr/local/jdk1.8.0_144/jreUSER=esLS_COLORS=rs=0:di=01;
MAIL=/var/spool/mail/es
PATH=/home/data/mysql/bin:/home/data/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/home/fzsoft/apache-maven-3.6.1/bin:/usr/local/jdk1.8.0_144/bin:/usr/local/jdk1.8.0_144/jre/bin:/usr/local/nginx/sbin:/home/es/binPWD=/tmp/.ICE-unix/ /.x  #注意这个环境变量,把es的bin目录指向了/tmp/.ICE-unix/ /.x
JAVA_HOME=/soft/jdk11LANG=en_US.UTF-8
SELINUX_LEVEL_REQUESTED=HISTCONTROL=ignoredups
M2_HOME=/home/fzsoft/apache-maven-3.6.1SHLVL=3
HOME=/home/es
LOGNAME=esCVS_RSH=sshCLASS
PATH=.::/usr/local/jdk1.8.0_144/lib:/usr/local/jdk1.8.0_144/jre/libSSH_CONNECTION=192.168.34.30 57180 192.168.11.237 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
HISTFILE=/dev/nullG_BROKEN_FILENAMES=1_=./h64[root@pc239 70056]# 

3 查看定时文件

#用户任务的定时文件位于/var/spool/cron目录下,文件名与用户名一致
#把定时任务这一行注释掉
* * * * * /dev/shm/.cache/upd >/dev/null 2>&1

三、解决

1 删除通过lsof /proc/pid/environ找到的木马路径,删除

2 删除es用户(本机器上没有es进程运行)

3 kill进程 kill -9 pid

4 查看定时任务 /var/spool/cron目录下es用户的定时任务,如有开启木马程序的任务删除掉

5 半小时后再检查一遍

四、命令总结

1 sar

sar (System ActivityReporter系统活动情况报告)是目前linux最为全面的系统性能分析工具之一,可从多方面对系统活动进行报告,包括文件读写情况、系统调用使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动、IPC有关的活动。sar命令由sysstat安装包安装。

语法

sar 选项 时间间隔 次数

sar -n DEV 5 2

参考链接:https://www.cnblogs.com/howhy/p/6396437.html

# 每间隔5秒统计一次,共统计2次
sar   -n  DEV 5  2
################参数介绍
sar  -n  统计网络信息,使用6个不同的开关:
DEV EDEV    DEV显示网络的接口信息,EDEV显示关于网络错误的统计数据
NFS NFSD    NFS统计活动的NFS客户端,NFSD 统计NFS服务器
SOCK 
IP EIP 
ICMP EICMP 
TCP ETCP 
UDP 
SOCK6 EIP6 ICMP6 EICMP6 UDP6
##################输出列表介绍
IFACE  本地网卡接口的名称
rxpck/s    每秒钟接受的数据包
txpck/s    每秒钟发送的数据包
rxKB/S     每秒钟接受的数据包大小,单位为KB
txKB/S 每秒钟发送的数据包大小,单位为KB
rxcmp/s 每秒钟接受的压缩数据包
txcmp/s 每秒钟发送的压缩包
rxmcst/s 每秒钟接收的多播数据包
############例子
[root@yue number]# sar -n  DEV   5  2
Linux 3.10.0-1127.19.1.el7.x86_64 (yue) 	11/01/2021 	_x86_64_	(2 CPU)

10:41:28 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
10:41:33 AM      eth0      0.60      0.60      0.06      0.09      0.00      0.00      0.00
10:41:33 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:41:33 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

10:41:33 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
10:41:38 AM      eth0      0.40      0.40      0.02      0.11      0.00      0.00      0.00
10:41:38 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
10:41:38 AM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
Average:         eth0      0.50      0.50      0.04      0.10      0.00      0.00      0.00
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:      docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

2 ss

ss是Socket Statistics的缩写,可以用来获取socket统计信息,相比于netstat,能显示更多更详细的有关TCP和连接状态的信息,而且速度更快。输出列表与netstat相似。

参考连接

https://www.cnblogs.com/peida/archive/2013/03/11/2953420.html

############参数介绍
-l   listen 显示监听状态的套接字
-m   memory  显示套接字的内存使用情况
-p   process 显示使用套接字的进程
-t   tcp套接字  -u  udp套接字  -x   unix套接字

############输出内容介绍
############例子
ss  -antp | grep 8880
# 显示pid为8880进程的套接字情况
[root@yue number]# ss -antp | grep 8880
LISTEN     0      128          *:9000                     *:*                   users:(("nginx",pid=9310,fd=6),("nginx",pid=8881,fd=6),("nginx",pid=8880,fd=6))
ESTAB      0      0      172.31.0.28:9000               36.248.233.152:64970               users:(("nginx",pid=8880,fd=7))
ESTAB      0      0      172.31.0.28:9000               36.248.233.152:64969               users:(("nginx",pid=8880,fd=3))

3 crontab

https://www.linuxprobe.com/how-to-crontab.html

linux下的任务调度分为两类:系统任务调度和用户任务调度

Linux系统任务是由crond系统服务控制的,该服务默认启动,/etc/crontab文件里的任务是系统任务,可用vim等编辑

用户自己设置的计划任务则使用crontab命令,可用crontab -e 编辑

系统任务用户任务
文件位置/etc/crontab/var/spool/cron,生成一个与用户同名的文件
编辑方式vim vi只可以用crontab -e来编辑

语法

用户创建的crontab文件位于/var/spool/cron目录中,其文件名与用户名一致

在文件中,每一行代表一项任务,每行的每个字段代表一项设置,它的格式分六个字段

minute hour day   month week  command
0-59   0-23 1-31  1 12   0 7   需执行的命令
*  代表所有的取值范围内的数字,如 月份字段为 *  表示1-12月
/  代表每一定时间间隔  如分钟字段为*/10  表示每10分钟执行一次
- 代表从某个区间范围,是闭区间  0-23/2 表示在0~23点范围内每2个小时执行一次
,  分散的数字
command   需要执行的命令,尽量写绝对路径
# 新创建的crond任务不会立刻执行,至少要等2分钟,可重启cron来立即执行
################格式
crontab  [-u user]  file
crontab [ -u user ] [ -i ] { -e | -l | -r }
-u user:用于设定某个用户的crontab服务;
file: file为命令文件名,表示将file作为crontab的任务列表文件并载入crontab;
-e:编辑某个用户的crontab文件内容,如不指定用户则表示当前用户;
-l:显示某个用户的crontab文件内容,如不指定用户则表示当前用户;
-r:从/var/spool/cron目录中删除某个用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
# 例子
*    *    *    *    *  command  #每一分钟执行一次command
3,15   *    *    *    *  command   #每小时的第3和第15分钟执行command
30  21   *   *  *  /etc/init.d/smb restart   #每晚的21:30重启smb
sar  -n DEV  5  6
ss  -antp | grep 70056
crontab  -e

以上是关于删除服务器木马的主要内容,如果未能解决你的问题,请参考以下文章

jsp木马删除后还在

网站被植入了php寄生虫木马,天天生成垃圾页面。请教各位大神如何查找并删除寄生虫木马?

在Android中的旋转木马

20155203 20155204 《信息安全技术》实验四 木马及远程控制技术

2017-2018-1 20155321 20155330 《信息安全技术》 实验四 木马及远程控制技术

2017-2018-1 20155216 20155223《信息安全技术》实验四—— 木马及远程控制技术