
1. 项目概述当安全警报响起时“应急响应”这四个字对任何一个运维、安全或者系统管理员来说都意味着肾上腺素飙升的开始。它不是一个按部就班的日常任务而是一场与时间赛跑、与潜在威胁对抗的“战斗”。无论是深夜接到告警电话还是监控大屏上突然跳出的异常流量那一刻你需要的不只是知识更是一套清晰、高效、可执行的行动指南。这个项目就是一份聚焦于Windows和Linux两大核心操作系统的现场排查笔记。它不是一份面面俱到的理论教材而更像是一位老兵的“战场急救包”。里面记录的是当系统出现被入侵迹象、服务异常、性能骤降或出现不明进程时你应该按什么顺序、用什么工具、看哪些地方。目标很明确快速定位问题根因遏制影响范围收集证据并尽可能恢复业务。无论是处理挖矿木马、网站篡改、数据泄露还是单纯的配置错误导致的故障这套思路都能为你提供一个坚实的起点。2. 核心思路与排查框架设计应急响应切忌无头苍蝇似的乱撞。一个清晰的框架能让你在高压下保持冷静避免遗漏关键证据。我通常遵循的是经典的“PDCERF”模型准备、检测、抑制、根除、恢复、跟进中的“检测”与“抑制”环节并将其落地为可操作的排查流。2.1 通用排查流程黄金四小时法则在安全事件中最初的几个小时至关重要被称为“黄金时间”。我的核心思路可以概括为“先存活后诊断先宏观后微观先易失后持久”。隔离与保活存活在条件允许的情况下首要任务不是深入分析而是隔离受影响的主机网络层面并确保系统状态“冻结”防止攻击者继续破坏或擦除痕迹。对于无法立即下线的核心业务至少要进行网络流量限制。信息收集诊断这是排查的主体。遵循从整体到局部、从易失数据到持久化数据的顺序。初步研判与抑制基于收集的信息快速判断事件类型如挖矿、勒索、webshell并采取临时抑制措施如杀掉可疑进程、删除恶意文件、修改弱口令等。深入分析与根除在抑制后进行更深入的分析找到入侵根源如利用的漏洞、初始攻击向量并彻底清除后门。恢复与加固从备份恢复干净数据修补漏洞并加强安全配置。本笔记主要聚焦于第2步信息收集和第3步初步研判这是技术排查中最核心的部分。2.2 Windows 与 Linux 排查路径对比虽然思路相通但由于系统架构和生态不同工具和关注点差异很大。排查维度Windows 侧重点Linux 侧重点核心目标系统状态事件查看器、任务管理器、资源监视器、netstattop,htop,vmstat,iostat,ss/netstat快速发现CPU/内存/网络异常进程与服务任务管理器、tasklist、Get-Process、sc queryps aux,pstree,systemctl status定位恶意进程、异常服务网络连接netstat -ano,Get-NetTCPConnectionss -tunlp,netstat -tunlp,lsof -i发现可疑外连、监听端口自启动项注册表Run、计划任务、服务、启动文件夹/etc/rc.local, systemd服务单元, cron计划任务查找持久化后门文件系统最近修改文件、隐藏文件、ADS流、$MFTfind命令查找特定时间、权限、大小的文件定位恶意软件、webshell用户与日志安全日志、用户账户、远程登录日志RDP/var/log/secure, auth.log, messages、last,who追踪攻击者行为、登录来源内存分析使用DumpIt、WinPMEM获取内存镜像使用LiME、AVML获取内存镜像提取进程、网络连接等易失证据注意在真实环境中取证优先。如果事件可能涉及法律纠纷在操作前应优先考虑制作完整的内存镜像和磁盘镜像避免修改系统状态。本文侧重于“应急止血”场景下的快速响应。3. Windows 系统深度排查实操指南Windows系统因其图形化界面和复杂的后台机制排查时需要点面结合。3.1 快速威胁感知与系统状态检查接到告警后第一件事是远程或现场登录系统如果还能登录的话进行快速扫描。1. 任务管理器不仅仅是看CPU进程页排序查看CPU、内存、磁盘、网络占用率异常的进程。特别关注cmd.exe、powershell.exe、wscript.exe、cscript.exe、mshta.exe等容易被利用的系统进程的实例数量及启动参数。右键“打开文件所在位置”可以快速定位程序路径。性能页观察网络利用率是否在无业务时异常偏高可能存在数据外传或挖矿。用户页检查是否有非授权的远程用户登录。2. 资源监视器更详细的视角 比任务管理器更强大。在“概述”页可以一目了然地看到哪些进程在大量读写磁盘、访问网络。在“网络”页可以查看每个进程建立了哪些远程连接这对于发现反向shell或C2通信非常有效。3. 事件查看器日志宝库 这是Windows排查的核心。重点关注Windows 日志 - 安全事件ID 4624登录成功、4625登录失败、4672特权登录、4688进程创建、5140网络共享访问。通过筛选这些ID可以梳理出攻击者的登录时间、来源IP、创建的进程等关键时间线。Windows 日志 - 系统查看是否有异常的服务启动失败事件ID 7034、7045或驱动加载错误。应用程序和服务日志这里可能有杀毒软件、防火墙、特定应用的安全日志。实操命令管理员权限运行CMD或PowerShell# 快速检查网络连接定位可疑外连IP netstat -ano | findstr ESTABLISHED # 对比PID在任务管理器中找到对应进程需开启PID列 # PowerShell更强大的网络和进程查看 Get-NetTCPConnection | Where-Object {$_.State -eq Established} | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess | Format-Table Get-Process | Select-Id, ProcessName, Path | Format-Table3.2 进程、服务与持久化位置排查攻击者为了保持访问一定会设法持久化。1. 进程深度分析 使用tasklist /v或Get-WmiObject Win32_Process可以获取更详细的进程信息包括命令行参数。可疑迹象进程路径在临时目录C:\Users\Public\、C:\Windows\Temp\、名称伪装成系统进程如svch0st.exe、父进程异常。2. 服务排查# 查看所有服务状态 sc query state all # 查看某个服务的详细信息包括可执行文件路径 sc qc 服务名重点关注服务描述为空、显示名称奇怪、可执行文件路径指向非标准目录的服务。3. 自启动项全面检查 这是持久化的重灾区必须多路并进。注册表HKCU\Software\Microsoft\Windows\CurrentVersion\RunHKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run(64位系统上的32位程序)HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce计划任务通过taskschd.msc图形界面或schtasks /query /fo LIST /v命令查看。攻击者常在此部署定时任务。启动文件夹C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup系统服务如上所述。WMI事件订阅高阶持久化手段可使用Get-WMIObject -Namespace root\Subscription -Class __EventFilter等命令检查。4. 文件系统痕迹追踪查找近期修改的文件可以使用Everything工具或命令快速搜索例如查找最近3天内创建的.exe,.dll,.vbs,.js,.jsp,.php等文件。注意隐藏文件和Alternate Data StreamsADS使用dir /r查看ADS恶意软件可能将自身隐藏在合法文件的ADS中。浏览器历史记录与下载检查%LocalAppData%\Google\Chrome\User Data\Default\History等位置看是否下载过可疑文件。3.3 网络、用户与日志关联分析1. 防火墙与网络规则检查是否有异常入站或出站规则被添加。netsh advfirewall firewall show rule nameall。2. 用户与组管理检查是否有新增的隐藏用户、特权用户如被加入Administrators组。net user、net localgroup administrators。3. 日志关联技巧 假设在安全日志中发现事件ID 4688新进程创建其Process Name为C:\Windows\System32\cmd.exe且Parent Process Name是C:\Program Files\Internet Explorer\iexplore.exe。这极不正常可能是通过浏览器漏洞执行的攻击。你需要立即去检查同一时间点附近的网络连接事件ID 5156和进程访问日志勾勒出攻击链。Windows排查心得善用PowerShell的管道和筛选能力能极大提升效率。例如将网络连接、进程、服务信息关联查询。图形化界面如Process Explorer、Autoruns在初步排查时更直观但命令行工具尤其是PowerShell更适合批量化和自动化。4. Linux 系统深度排查实操指南Linux系统排查更依赖命令行逻辑清晰但需要对系统结构有较好理解。4.1 系统资源与进程的实时监控登录后首先建立一个整体的资源消耗视图。1. 快速总览# 综合查看CPU、内存、负载、进程按F键选择排序字段 top # 或使用更友好的htop需安装 htop # 查看系统负载和运行队列情况 uptime # 查看内存使用详情 free -h # 查看磁盘I/O状态 iostat -x 2 5如果发现某个陌生进程如kinsing、xmr、minerd长期占用大量CPU挖矿木马的可能性极高。2. 网络连接分析netstat已逐渐被功能更强大的ss命令取代。# 查看所有TCP/UDP监听端口及对应进程 ss -tunlp # 等价于 netstat -tunlp但更快 # 查看所有已建立的连接 ss -tunp state established # 查找监听在异常端口如非业务端口的进程 ss -tunlp | grep -E ‘:(6666|7777|8888)\s’发现可疑的外连IP如来自境外陌生地址可以使用whois或威胁情报平台查询其信誉。3. 进程树与关系# 以树状显示进程便于看清父子关系 pstree -p # 查看特定进程的详细信息包括其启动命令cmdline ps aux | grep [进程名或PID] cat /proc/[PID]/cmdline | xargs -0 echo恶意进程常常会fork子进程或守护自身通过进程树可以发现异常分支。4.2 文件系统与隐藏痕迹搜寻Linux下攻击者常用的藏身之处和工具需要重点检查。1. 查找可疑文件# 查找最近3天内被修改的文件从根开始但通常先查关键目录 find / -type f -mtime -3 2/dev/null | head -50 # 查找权限异常的文件如设置了SUID位普通用户执行时拥有文件所有者权限 find / -perm -4000 -type f 2/dev/null # 查找所有可写的目录攻击者可能在其中上传或修改文件 find / -type d -perm -ow 2/dev/null | grep -v /proc # 在Web目录中查找webshell特征eval, base64_decode, system等 find /var/www/ -name “*.php” -exec grep -l “eval(.*base64_decode” {} \;2. 检查关键目录/tmp,/dev/shm临时目录常被用作恶意软件的中转或运行场所。/etc/cron.*,/var/spool/cron/计划任务目录必须检查是否有非root用户添加的任务。/root/.ssh/,/home/*/.ssh/检查authorized_keys文件是否被添加了攻击者的公钥。/etc/passwd,/etc/shadow检查是否有新增的、UID为0root权限的非标准用户。3. 检查动态链接库劫持 查看/etc/ld.so.preload文件如果存在且内容可疑它会预加载恶意so库。使用strace命令跟踪进程的系统调用有时也能发现其加载了异常的库。4.3 用户、日志与历史命令审计1. 用户登录信息# 查看当前登录用户 who # 查看历史登录记录成功/失败 last lastb # 查看所有用户最后一次登录时间 lastlog2. 系统日志分析 日志集中在/var/log/。/var/log/secure或/var/log/auth.log认证相关日志的黄金源。记录SSH登录成功/失败、sudo提权等。仔细查看是否有来自陌生IP的大量失败或成功登录。/var/log/messages或/var/log/syslog系统通用日志。/var/log/cron计划任务执行日志。/var/log/audit/audit.log如果开启了auditd审计服务这里有更详细的进程、文件访问记录是溯源利器。3. 历史命令与操作痕迹# 查看当前用户的命令历史 history # 查看其他用户的命令历史需权限 cat /home/[用户名]/.bash_history攻击者在入侵后可能会执行history -c清空历史但有时会遗漏。此外检查.viminfo,.mysql_history等文件也可能发现线索。4. 网络层排查# 查看防火墙规则iptables iptables -L -n -v # 或 firewalld firewall-cmd --list-all # 抓取特定端口的流量用于深度分析 tcpdump -i eth0 port 80 -w http.pcapLinux排查心得grep,awk,sed三剑客是日志分析和数据筛选的灵魂。例如grep “Failed password” /var/log/secure | awk ‘{print $11}’ | sort | uniq -c | sort -nr可以快速统计出哪些IP在暴力破解并排序。将常用排查命令写成脚本能极大提升响应速度。5. 常见攻击场景与专项排查技巧在实际应急中很多事件有共性。这里针对几种高频场景提供更聚焦的排查思路。5.1 场景一CPU占用率100% – 挖矿木马现象服务器卡顿top查看发现未知进程如kinsing、xmrig、minerd占用大量CPU。排查步骤定位进程top找到PID和进程路径。终止进程kill -9 [PID]。但通常它会由守护进程或定时任务重启。清除文件删除进程对应的可执行文件。注意使用ls -la查看是否有隐藏文件。清除持久化检查定时任务crontab -l当前用户ls -la /etc/cron*cat /etc/crontab以及/var/spool/cron/目录下的所有用户任务。检查系统服务systemctl list-unit-files | grep enabled查看是否有可疑服务。检查/etc/systemd/system/和/lib/systemd/system/下的服务单元文件。检查启动脚本/etc/rc.local,/etc/init.d/。检查特权文件find / -perm -4000 -type f 2/dev/null挖矿木马常会设置SUID权限。检查网络连接ss -tunp查看该进程是否连接矿池地址。检查用户与密钥检查/root/.ssh/authorized_keys是否被添加。排查入侵根源检查Web日志、应用漏洞如Redis未授权、Docker API暴露、SSH弱口令等。5.2 场景二网站被篡改 – Webshell后门现象网站首页被替换或网站目录下存在可疑脚本文件。排查步骤定位恶意文件使用find命令在Web目录按时间、特征查找find /var/www/html -name “*.php” -mtime -1。使用grep搜索常见webshell函数grep -r “eval($_POST” /var/www/html。分析文件内容查看文件创建时间、修改时间、所有者。检查代码看是否有加密、混淆。检查文件权限Web目录下的文件不应有777权限。find /var/www/html -perm -777 -type f。检查服务器日志Web访问日志如Nginx的access.log寻找在文件创建时间点附近的异常访问记录特别是带有POST请求、参数异常长的记录。系统认证日志查看是否有同一时间段的异常登录。检查进程和网络查看是否有php、python等解释器进程在异常执行并建立网络连接。排查上传点检查网站是否存在文件上传功能是否存在漏洞。5.3 场景三日志中出现大量失败登录 – 暴力破解现象/var/log/secure中充满“Failed password”日志。排查步骤立即封禁IP使用fail2ban或手动添加防火墙规则iptables -A INPUT -s [攻击IP] -j DROP。分析攻击源使用awk/sort/uniq命令统计攻击IP和尝试的用户名。检查成功登录在失败日志中穿插寻找“Accepted password”事件确认是否已被攻破。检查后门即使密码未破解攻击者也可能通过其他漏洞如Web漏洞植入后门需结合其他维度排查。加固SSH修改默认端口、禁用root登录、使用密钥认证、部署二次验证。6. 工具链推荐与自动化脚本思路工欲善其事必先利其器。除了系统自带命令一些专业工具能事半功倍。6.1 高效工具推荐Linux:rkhunter,chkrootkit: 经典的Rootkit检测工具用于快速扫描已知后门和异常。Lynis: 系统安全审计工具不仅能排查入侵还能给出加固建议。ClamAV: 开源杀毒引擎可用于扫描恶意文件。maldet(Linux Malware Detect): 专门检测Webshell和恶意脚本。pspy: 无需root权限监听进程创建用于发现短时存在的恶意进程。Windows:Sysinternals Suite: 微软官方神器集。Process Explorer进程管理、Autoruns自启动项、Procmon进程监控、TCPView网络连接等每一个都是排查利器。Volatility: 内存取证分析框架专业且强大。Strings,PEiD: 分析可疑可执行文件。跨平台/分析:Wireshark: 网络流量深度分析。Elastic Stack(ELK): 如果日志量巨大集中化日志分析平台是终极解决方案。6.2 自动化排查脚本编写思路对于需要批量检查多台服务器或希望将流程固化的情况编写脚本非常有用。一个基本的Linux排查脚本框架如下#!/bin/bash # 应急响应快速收集脚本 v1.0 # 将输出重定向到文件./ir_script.sh investigation_$(hostname)_$(date %Y%m%d_%H%M%S).log 21 echo “ 系统信息 uname -a cat /etc/*-release echo -e “\n 当前时间与负载 date uptime echo -e “\n 内存与磁盘使用 free -h df -h echo -e “\n 网络连接 (ESTABLISHED) ss -tunp state established echo -e “\n 监听端口 ss -tunlp echo -e “\n 进程快照 (前20) ps aux --sort-%cpu | head -20 echo -e “\n 计划任务 cat /etc/crontab echo “— User Crontabs —” for user in $(cut -f1 -d: /etc/passwd); do echo “### $user ###”; crontab -l -u $user 2/dev/null; done echo -e “\n 最近7天修改的关键文件 find /etc /bin /sbin /usr/bin /usr/sbin -type f -mtime -7 2/dev/null echo -e “\n SUID/SGID 文件 find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -la {} \; 2/dev/null | head -50 echo -e “\n 历史登录 (成功) last -n 20 echo -e “\n 历史登录 (失败) lastb -n 20 2/dev/null || echo “需要root权限查看lastb” echo -e “\n 收集完成 脚本使用注意此类脚本会遍历文件系统可能对性能有短暂影响请在业务低峰期运行。收集的信息包含敏感内容需妥善保管。7. 排查后的关键动作与反思排查并清除恶意程序不代表事件结束。以下动作至关重要彻底根除根据排查找到的入侵根源如漏洞、弱口令进行修补和加固。恢复验证从可信备份恢复被篡改或删除的业务数据/文件并验证其完整性和功能性。更改凭证更改所有可能泄露的密码、密钥包括系统账户、数据库、中间件等。监控加强在受影响系统及同类系统上加强监控关注之前攻击者使用的IOC失陷指标如恶意IP、域名、文件HASH等。事件复盘撰写事件报告记录时间线、攻击手法、影响范围、处置步骤、根本原因和整改措施。这是提升团队能力、避免重蹈覆辙的关键。应急响应是一项对知识广度、深度和临场心态都有极高要求的工作。这份笔记是我多年经验的凝结但真正的能力来源于一次次实战的锤炼。我的体会是平时多积累、多演练将排查步骤内化成肌肉记忆才能在真正的警报响起时做到忙而不乱精准打击。最后分享一个习惯每次应急响应后我都会把用到的新命令、新思路更新到一个私人笔记里这个不断迭代的“武器库”是你最可靠的战友。