删除服务器木马
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
以上是关于删除服务器木马的主要内容,如果未能解决你的问题,请参考以下文章
网站被植入了php寄生虫木马,天天生成垃圾页面。请教各位大神如何查找并删除寄生虫木马?
20155203 20155204 《信息安全技术》实验四 木马及远程控制技术