应急排查方法

应急排查方法

1、windows排查命令:

检查浏览器下载目录
dir "%USERPROFILE%\Downloads" /a /o:-d
检查临时目录
dir %TEMP% /a /o:-d
dir %SYSTEMROOT%\Temp /a /o:-d
查看最近访问的文件
dir %USERPROFILE%\Recent /a /o:-d
检查启动信息
wmic startup get command,caption
:: 2. 检查计划任务
schtasks /query /fo LIST /v:: 3. 检查启动文件夹
dir "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup"
dir "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Startup":: 4. 检查服务(关注非标准服务和最近创建的服务)
wmic service list brief
wmic service get name,displayname,pathname,startmode | findstr /i "auto"

进程与网络
:: 1. 查看所有网络连接及对应进程
netstat -ano | findstr "ESTABLISHED LISTENING"

:: 2. 根据 PID 查进程信息
tasklist /FI "PID eq <PID>" /V
wmic process where processid=<PID> get name,executablepath,commandline

:: 3. 检查可疑进程
tasklist /V
wmic process get name,processid,executablepath,commandline /format:list

:: 4. 查看网络代理配置(是否被篡改)
REG QUERY "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

:: 5. 查看路由表
route print

启动项与服务
:: 1. 检查注册表启动项
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
REG QUERY "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
REG QUERY "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce"
REG QUERY "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run"

:: 1. 查看当前登录会话
query user

:: 2. 列出所有用户和管理员组成员
net user
net localgroup administrators

:: 3. 检查隐藏/克隆账户
:: 隐藏账户名末尾带 $
wmic useraccount list full
:: 对比注册表 SAM 与 net user 结果
:: HKLM\SAM\SAM\Domains\Account\Users(需 SYSTEM 权限)

:: 4. 踢出可疑会话
logoff <SessionID>

2、Linux 应急排查

# 1. 查找特权用户(uid=0 应该只有 root)
awk -F: '$3==0{print $1}' /etc/passwd# 2. 查找可远程登录的账户(有密码 hash 的账户)
awk '/\$1|\$6/{print $1}' /etc/shadow# 3. 检查 sudo 权限异常(非管理员不应有 ALL 权限)
grep -v "^#\|^$" /etc/sudoers | grep "ALL=(ALL)"
cat /etc/sudoers.d/*# 4. 检查 SSH 授权密钥(攻击者常植入公钥)
find / -name "authorized_keys" -exec ls -la {} \; -exec cat {} \;# 5. 查看最近登录记录
lastlog           # 所有用户最后登录时间
last              # 历史登录/注销记录
lastb             # 失败登录记录(暴力破解痕迹)进程与网络
# 1. 检查异常网络连接(重点关注 ESTABLISHED 和 LISTEN)
netstat -antlp | grep -E "ESTABLISHED|LISTEN"
# 或
ss -antlp# 2. 根据可疑连接 PID 定位进程
ls -la /proc/<PID>/exe        # 进程对应的可执行文件
cat /proc/<PID>/cmdline       # 完整命令行
ls -la /proc/<PID>/fd         # 打开的文件描述符# 3. 检查异常进程
ps aux --sort=-%cpu | head -20    # CPU 占用排序(挖矿检测)
ps aux --sort=-%mem | head -20    # 内存占用排序# 4. 检查隐藏进程(进程名以 . 开头或伪装为内核线程)
ps -ef | grep -E "^\S+\s+\d+.*\[.*\]" | grep -v "\[kworker"启动项与计划任务
# 1. 检查 crontab(所有用户)
for user in $(cut -f1 -d: /etc/passwd); docrontab -l -u $user 2>/dev/null && echo "=== $user ==="
done
cat /etc/crontab
ls -la /etc/cron.d/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.monthly/ /etc/cron.weekly/# 2. 检查 systemd 服务(关注非官方和最近修改的)
systemctl list-unit-files --type=service | grep enabled
find /etc/systemd/system/ /usr/lib/systemd/system/ -name "*.service" -mtime -7# 3. 检查 rc.local 和 init.d
cat /etc/rc.local
ls -la /etc/init.d/
ls -la /etc/rc.d/rc*.d/ 2>/dev/null# 4. 检查 bashrc/profile 植入
grep -r "curl\|wget\|python\|bash -i\|/dev/tcp" /etc/profile* /etc/bashrc /root/.bashrc /home/*/.bashrc 2>/dev/null文件系统排查
# 1. 查找最近修改的文件(以 3 天为例,根据事件时间调整)
find / -mtime -3 -type f -not -path "/proc/*" -not -path "/sys/*" | head -100# 2. 查找 SUID/SGID 文件(提权后门常见手段)
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null# 3. 检查 /tmp 及隐藏目录
ls -la /tmp/ /var/tmp/ /dev/shm/
find / -name ".. " -o -name "..." -o -name ".hidden" 2>/dev/null# 4. WebShell 检测(Web 服务器目录)
find /var/www/ -name "*.php" -mtime -7
grep -rl "eval\|system\|exec\|passthru\|shell_exec\|base64_decode" /var/www/ 2>/dev/null# 5. 检查文件时间戳篡改(mtime 与 ctime 不一致)
stat <可疑文件>   # 对比 Modify 和 Change 时间日志分析
日志文件                                                            用途                                查看方式
/var/log/auth.log 或 /var/log/secure    SSH 登录、sudo、su    grep "Accepted|Failed" /var/log/auth.log
/var/log/wtmp                                                    登录/注销记录                last -f /var/log/wtmp
/var/log/btmp                                                    失败登录                        lastb -f /var/log/btmp
/var/log/cron                                                    定时任务执行记录        cat /var/log/cron
/var/log/messages 或 /var/log/syslog    系统事件                        grep -i "error|warning|fail" /var/log/messages
~/.bash_history                                                命令历史                        cat /root/.bash_history# 暴力破解检测:统计失败登录 IP
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20# 成功登录排查:关注非常规 IP 和时段
grep "Accepted" /var/log/auth.log | awk '{print $1,$2,$3,$9,$11}'# 提权行为检测
grep "sudo:" /var/log/auth.log | grep -v "session opened\|session closed"Rootkit 检测
# 方法 1: chkrootkit
apt install chkrootkit -y   # 或 yum install chkrootkit
chkrootkit# 方法 2: rkhunter
apt install rkhunter -y     # 或 yum install rkhunter
rkhunter --update
rkhunter --check --sk# 方法 3: 手动检查(工具不可信时)
# 比较系统命令 hash(与已知干净环境对比)
md5sum /usr/bin/ps /usr/bin/netstat /usr/bin/ls /usr/bin/find /usr/bin/top
# 检查 LD_PRELOAD 劫持
echo $LD_PRELOAD
cat /etc/ld.so.preload
# 检查内核模块
lsmod | grep -v "^Module"

3、相关工具:

D盾webshell查杀