如果是 Linux 系统的话,最多的是 CentOS 6 和 CentOS 7,Linux 是全命令界面的;
如果是 Windows 系统的话,一般是 Windows server 2008
大多数应急常见的问题都是挖矿,或者是被植入菠菜
小部分是中了勒索病毒,如果是勒索病毒的话,看看 360、腾讯有没有什么解密工具
如果没有的话就重装系统吧
找出问题 -> 解决问题 -> 编写报告
挖矿应急通常优先使用 top 命令来查看系统进程,一般挖矿病毒占用 CPU 比较大
[root@c7-1 ~]#top -b -n 3 >1.log
[root@c7-1 ~]#
[root@c7-1 ~]#tail -f 1.log
107856 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kworker/3:2
107922 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kworker/0:1
108010 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kworker/0:0
108032 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/3:0
108058 root 20 0 163612 6120 4728 S 0.0 0.2 0:00.11 sshd
108060 root 20 0 116792 3504 1800 S 0.0 0.1 0:00.05 bash
108127 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kworker/3:1
108212 postfix 20 0 91892 4084 3068 S 0.0 0.1 0:00.00 pickup
108221 root 20 0 107956 612 520 S 0.0 0.0 0:00.00 sleep
108222 root 20 0 162020 2224 1532 R 0.0 0.1 0:00.00 top
ps 命令:可以查看进程的瞬间信息
-a:显示现行终端机下的所有程序,包括其他用户的程序
-e:列出程序时,显示每个程序所使用的环境变量
-f:显示 UID , PPIP , C 与 STIME 栏位
[root@c7-1 ~]#ps -ef | head -n 10
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 07:31 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 07:31 ? 00:00:00 [kthreadd]
root 4 2 0 07:31 ? 00:00:00 [kworker/0:0H]
root 6 2 0 07:31 ? 00:00:00 [ksoftirqd/0]
root 7 2 0 07:31 ? 00:00:00 [migration/0]
root 8 2 0 07:31 ? 00:00:00 [rcu_bh]
root 9 2 0 07:31 ? 00:00:04 [rcu_sched]
root 10 2 0 07:31 ? 00:00:00 [lru-add-drain]
root 11 2 0 07:31 ? 00:00:00 [watchdog/0]
查看非 root 运行的进程
[root@c7-1 ~]#ps -U root -u root -N
PID TTY TIME CMD
754 ? 00:00:00 lsmd
757 ? 00:00:00 rpcbind
762 ? 00:00:00 avahi-daemon
763 ? 00:00:00 rtkit-daemon
771 ? 00:00:00 polkitd
778 ? 00:00:00 avahi-daemon
......
查看用户 root 运行的进程
[root@c7-1 ~]#ps -u root | head -n 5
PID TTY TIME CMD
1 ? 00:00:01 systemd
2 ? 00:00:00 kthreadd
4 ? 00:00:00 kworker/0:0H
6 ? 00:00:00 ksoftirqd/0
查看有没有奇怪的进程
[root@c7-1 ~]#ps -aef | grep inetd
root 108349 108060 0 14:15 pts/0 00:00:00 grep --color=auto inetd
检测隐藏进程
ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n | uniq >2
# sort 命令将文本内容进行排序,-n 依照数值大小排序。
# uniq 命令用于检查及删除文本中重复出现的行列,一般与 sort 命令结合使用。
ls /etc/crontab
说明:机器使用过程中难免会留下一些痕迹
who 命令查看当前登录用户(tty 本地登录,pts 远程登录)
[root@c7-1 ~]#who
root :0 2021-09-02 10:04 (:0)
root pts/0 2021-11-05 13:52 (192.168.10.1)
`w 命令查看系统信息,想知道某一时刻用户的行为``
[root@c7-1 ~]#w
14:29:52 up 6:58, 2 users, load average: 0.02, 0.03, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 029月21 ?xdm? 2:46 0.20s /usr/libexec/gnome-sessio
root pts/0 192.168.10.1 13:52 0.00s 0.08s 0.00s w
[root@c7-1 ~]#last -n 5
root pts/0 192.168.10.1 Fri Nov 5 13:52 still logged in
root pts/1 192.168.10.1 Thu Nov 4 20:33 - 21:58 (01:25)
root pts/0 192.168.10.1 Thu Sep 2 10:04 - 09:33 (63+23:29)
root :0 :0 Thu Sep 2 10:04 still logged in
reboot system boot 3.10.0-1062.el7. Thu Sep 2 10:02 - 14:33 (64+04:30)
wtmp begins Thu Sep 2 09:43:38 2021
[root@c7-1 ~]#history 10
111 ps -ef | head -n 10
112 ps -U root -u root -N
113 ps -u root
114 ps -u root | head -n 5
115 ps -aef | grep inetd
116 who
117 w
118 who -m
119 last -n 5
120 history 10
语法:awk [option] ‘pattern{action}’ file
awk -F: '($2=="")' /etc/shadow
[root@c7-1 ~]#awk -F: '($3==0)' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@c7-1 ~]#grep -v -E "^#" /etc/passwd | awk -F: '$3==0{print $1}'
root
[root@c7-1 ~]#pstree -p | head -n 5
systemd(1)-+-ModemManager(768)-+-{ModemManager}(797)
| `-{ModemManager}(810)
|-NetworkManager(818)-+-{NetworkManager}(835)
| `-{NetworkManager}(841)
|-VGAuthService(756)
说明:挖矿病毒避免不了要跟主机通信。
列出本机所有连接和监听的端口,查看有没有非法连接
常用参数:
-a或–all:显示所有连线中的Socket。
-c或–continuous:持续列出网络状态。
-i或–interfaces:显示网络界面信息表单。
l或–listening:显示监控中的服务器的Socket。
-n或–numeric:直接使用ip地址,而不通过域名服务器。
-t或–tcp:显示TCP传输协议的连线状况。
-u或–udp:显示UDP传输协议的连线状况。
示例:
[root@c7-1 ~]#netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1067/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1353/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 108058/sshd: root@p
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1063/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1067/cupsd
tcp6 0 0 :::3128 :::* LISTEN 48608/(squid-1)
tcp6 0 0 ::1:25 :::* LISTEN 1353/master
tcp6 0 0 ::1:6010 :::* LISTEN 108058/sshd: root@p
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::22 :::* LISTEN 1063/sshd
lsof 命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。
常用参数:
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
示例:
lsof -i:3306 #查看 3306 端口占用情况
lsof -p 2,22 #查看 2 和 22 进程情况
lsof -i tcp #查看所有 tcp 网络连接信息
lsof -i udp #查看所有 udp 网络连接信息
find 命令用来在指定目录下查找文件。
find ./ -mtime 0 #查找最近 24 小时内修改过的文件
参数
-mtime n
按照文件的更改时间来找文件,n 为整数。例:
-mtime 0 表示文件修改时间距离当前为 0 天的文件,即距离当前时间
不到 1 天(24小时)以内的文件。
-mtime 1 表示文件修改时间距离当前为 1 天的文件,即距离当前时间
1天(24小时-48小时)的文件。
-mtime+1 表示文件修改时间为大于 1 天的文件,即距离当前时间 2 天
(48小时)之外的文件。
-mtime -1 表示文件修改时间为小于 1 天的文件,即距离当前时间 1 天
(24小时)之内的文件。
find / -name "*.txt" #查找以 .txt 结尾的文件名
find / -iname "*.txt" #忽略大小写
find / ! -name "*.txt" #查找不是以 .txt 结尾的文件
find / -name *.test.gz.log -a -type f -mtime +30 -exec rm {} \;