文章总结: 这篇文档是HW(护网)应急响应常用命令速查手册的第二部分,提供了51-100号命令,覆盖持久化检查、日志审计、内存取证、威胁狩猎与主动检测以及快速遏制与系统加固等关键领域。每个命令都包含具体用法、解析、应用场景和注意事项,适用于Linux和Windows系统。这些命令帮助安全人员快速检测、分析和应对安全事件,如检查系统启动项、分析日志、内存取证、扫描恶意文件等。文档强调了应急响应中的实用技巧和最佳实践,是网络安全应急响应人员的实用参考工具。
综合评分: 90
文章分类: 应急响应,系统安全,漏洞分析,威胁情报,安全工具
HW必备:50个应急响应常用命令速查手册二(实战收藏)
安小圈
2025年6月4日 08:45
以下文章来源于HACK之道
,作者牛叫瘦
HACK之道
.
HACK之道,专注于红队攻防、实战技巧、CTF比赛、安全开发、安全运维、安全架构等精华技术文章及渗透教程、安全工具的分享。
安小圈
第679期
51. 目标:检查Linux系统启动项 (Linux)
-
• 命令:
systemctl list-unit-files --type=service --state=enabled(systemd服务) +ls -la /etc/init.d/ /etc/rc*.d/(SysV init脚本) +grep -rE "^(exec|script)" /etc/init/(Upstart) +cat /etc/rc.local(传统) -
• 解析: 覆盖主流Linux初始化系统的启动项检查点:
-
•
systemctl ...:列出所有已启用的 (enabled) systemd服务。 -
•
ls -la /etc/init.d/ /etc/rc*.d/:查看SysV init脚本目录及其在对应运行级别 (rcX.d/) 的符号链接(S开头表示启动)。 -
•
grep ... /etc/init/:检查Upstart job配置文件(如有)。 -
•
cat /etc/rc.local:查看传统的rc.local启动脚本内容。 -
• 场景: Linux持久化检查核心。 查找通过服务、init脚本、
rc.local实现自启动的可疑项。 -
• 注意: 根据系统使用的init系统(
systemd为主流)侧重检查。
- 52. 目标:检查Windows WMI事件订阅(高级持久化)(Windows PowerShell)
-
• 命令:
Get-WmiObject -Namespace root\Subscription -Class __EventFilter; Get-WmiObject -Namespace root\Subscription -Class __EventConsumer; Get-WmiObject -Namespace root\Subscription -Class __FilterToConsumerBinding -
• 解析: 分别查询WMI事件订阅的三个核心组件:
-
•
__EventFilter:定义触发事件的条件(如特定时间、进程创建、登录)。 -
•
__EventConsumer:定义事件触发后的动作(如执行命令、发送邮件、记录日志)。恶意利用主要是ActiveScriptEventConsumer(执行脚本) 和CommandLineEventConsumer(执行命令)。 -
•
__FilterToConsumerBinding:将过滤器 (Filter) 和消费者 (Consumer) 绑定起来。 -
• 场景: 检测利用WMI事件订阅实现的无文件、高隐蔽持久化。攻击者常用此技术在特定事件(如用户登录)时触发恶意代码执行。
-
• 注意: 需要管理员权限。输出较技术化,需仔细分析过滤器和消费者的具体内容。工具如
WMI Explorer或Autoruns可辅助可视化。
- 53. 目标:查找含有隐藏属性的文件(Windows)(Windows cmd)
- • 命令:
dir /s /b /a:h C:\ 2>nul(系统根目录) 或指定目录 - • 解析:
dir /s(递归子目录)/b(裸格式,只显示路径)/a:h(只显示隐藏属性文件)C:\(搜索C盘根)2>nul(隐藏错误)。可替换C:\为C:\Users或C:\Windows\Temp等。 - • 场景: 攻击者常将恶意文件设置为隐藏属性 (
attrib +h) 以躲避普通文件浏览。检查隐藏文件中是否有可疑项。 - • 注意: 系统文件也常隐藏。需结合路径、文件名、大小判断。PowerShell可用
Get-ChildItem -Path C:\ -Force -Recurse -Hidden -ErrorAction SilentlyContinue。
- 54. 目标:查找ADS(Alternate Data Streams – 文件流)(Windows cmd)
-
• 命令:
dir /s /r <目录路径> | find ":$DATA"(例如dir /s /r C:\Users\ > ads.txt & type ads.txt | find ":$DATA") -
• 解析: NTFS文件系统特性。恶意软件可将代码隐藏在文件流中。
-
•
dir /s /r:递归 (/s) 并显示备用数据流 (/r)。 -
• 输出重定向到文件 (
> ads.txt) 避免滚动过快。 -
•
find ":$DATA":在输出中查找包含:$DATA的行(标识数据流)。 -
• 场景: 检测利用文件流隐藏的恶意代码或数据(如
notepad.exe:hidden.exe)。查看流内容可用more < file.txt:streamname。 -
• 注意: 合法程序(如IE下载)也使用ADS。检查非预期文件上的非预期流名。PowerShell专用工具更佳(如
Get-Item -Path file.txt -Stream *)。
- 55. 目标:查找大文件(定位潜在数据驻留/外泄源)(Linux)
-
• 命令:
find / -path /proc -prune -o -path /sys -prune -o -path /dev -prune -o -type f -size +100M -exec ls -lhS {} + 2>/dev/null | head -n 20 -
• 解析:
-
•
find ... -size +100M:查找大于100MB的文件(大小可调)。 -
•
-exec ls -lhS {} +:ls -lhS(-l长格式,-h人类可读大小,-S按文件大小降序排序)。 -
•
head -n 20:显示最大的20个文件。 -
• 场景: 查找异常的大文件,可能是:
-
• 攻击者驻留的数据(如窃取的数据库dump、打包的日志文件)。
-
• 恶意软件本体(如挖矿程序、勒索软件加密模块)。
-
• 未清理的临时转储文件。
-
• 注意: 数据库文件、虚拟机磁盘、日志归档等合法文件通常较大。需结合位置和上下文判断。
- 56. 目标:查找0字节文件(可能为占位符或失败产物)(Linux)
- • 命令:
find /tmp /var/tmp /dev/shm /home -type f -size 0 -exec ls -la {} + 2>/dev/null - • 解析: 在临时目录和用户目录下查找大小为0字节的文件 (
-size 0),并列出详细信息。 - • 场景: 0字节文件有时是攻击工具运行失败的残留物,或是用于测试文件创建权限的占位符。检查其创建时间、权限和父目录。
- • 注意: 很多程序也会创建合法的0字节文件(如锁文件
.lock)。非核心线索。
- 57. 目标:检查文件的数字签名(Windows – 识别未签名/无效签名)(Windows PowerShell)
-
• 命令:
Get-AuthenticodeSignature -FilePath "C:\path\to\file.exe" | Format-List *(单文件) 或Get-ChildItem -Path C:\Windows\System32\*.exe -Recurse -ErrorAction SilentlyContinue | Get-AuthenticodeSignature | Where-Object {$_.Status -ne "Valid"} | Select-Object Path, Status, StatusMessage | Format-Table -AutoSize(扫描目录示例) -
• 解析:
-
•
Get-AuthenticodeSignature:获取文件的Authenticode签名信息。 -
•
Format-List *:显示签名所有详细信息(单文件)。 -
•
Where-Object {$_.Status -ne "Valid"}:过滤出签名状态非Valid的文件(如NotSigned,HashMismatch哈希不匹配可能被篡改,UnknownError)。 -
• 场景: 重要! 检查关键系统文件或可疑程序是否具有有效的、可信的数字签名。未签名或签名无效的文件风险较高。
-
• 注意: 合法软件也可能未签名(尤其是开源软件)。
System32下的未签名/无效签名文件需高度警惕。Sigcheck(Sysinternals) 功能更强大。
- 58. 目标:查找Linux文件扩展属性(xattr – 可能隐藏元数据)(Linux)
- • 命令:
getfattr -d -m - /path/to/file(单文件) 或find / -path /proc -prune -o -path /sys -prune -o -path /dev -prune -o -type f -exec getfattr -d -m - {} \; 2>/dev/null | grep -v "file:"(全盘找有xattr的文件,输出非空结果) - • 解析:
getfattr显示文件扩展属性。一些高级恶意软件可能利用xattr存储配置或标记。 - • 场景: 检查敏感文件(如SSH密钥、配置文件)或可疑文件是否被设置了异常的扩展属性。
- • 注意: 合法程序(如SELinux, Capabilities)也广泛使用xattr (
security.*命名空间)。非主流攻击向量。
- 59. 目标:检查SSH授权密钥(authorized_keys – 后门账户)(Linux)
- • 命令:
grep -vE '^#|^$' /home/*/.ssh/authorized_keys /root/.ssh/authorized_keys 2>/dev/null - • 解析: 查看所有用户(包括root)的
authorized_keys文件内容,排除空行和注释 (grep -vE '^#|^$')。 - • 场景: 攻击者常添加自己的公钥到
authorized_keys文件,实现免密SSH登录后门。检查是否有非预期的公钥条目(尤其注意root用户)。 - • 注意: 确认每个条目的来源和合法性。查看密钥注释(如果有)。
- 60. 目标:检查最近访问过的文件(按atime – 需文件系统支持)(Linux)
- • 命令:
find / -path /proc -prune -o -path /sys -prune -o -path /dev -prune -o -type f -atime -1 -print 2>/dev/null | head -n 100(最近1天) - • 解析:
-atime -1查找访问时间在最近1天内的文件。head -n 100限制输出。 - • 场景: 如果攻击者访问了敏感文件(如
/etc/shadow, 数据库凭证文件),其访问时间 (atime) 可能更新(需确保文件系统挂载时使用了relatime或strictatime,默认的noatime会禁用)。 - • 注意:
atime更新依赖文件系统配置,默认可能不启用或非实时更新。 可靠性较低,作为辅助线索。
第五部分:日志审计 – 挖掘攻击痕迹 (命令 61-75)
日志是事件重建的关键证据源。
- 61. 目标:实时监控系统认证日志(SSH登录尝试)(Linux – journald)
-
• 命令:
journalctl -f -u sshd | grep -E "Failed password|Accepted password" -
• 解析:
-
•
journalctl -f -u sshd:实时跟踪 (-f)sshd服务的日志 (-u sshd)。 -
•
grep -E "Failed password|Accepted password":过滤出包含认证失败 (Failed password) 或认证成功 (Accepted password) 的关键行。 -
• 场景: 实时检测暴力破解SSH。 观察失败尝试的来源IP、用户名、频率;警惕成功的非授权登录。
-
• 注意: 对于
syslog/rsyslog系统,查看/var/log/auth.log或/var/log/secure并使用tail -f。关注Accepted publickey(密钥登录成功) 同样重要。
- 62. 目标:统计过去24小时SSH登录失败最多的IP (Linux – syslog)
-
• 命令:
grep "Failed password" /var/log/auth.log | grepdate -d ’24 hours ago’ ‘+%b %e’| awk '{print $11}' | sort | uniq -c | sort -nr | head -n 20 -
• 解析:
-
•
grep "Failed password" /var/log/auth.log:提取所有失败记录。 -
•
grepdate -d ’24 hours ago’ ‘+%b %e’`:过滤出包含昨天日期(格式如 May 29`)的行(时间范围可调)。 -
•
awk '{print $11}':提取来源IP(字段位置可能因日志格式而异,需验证!常见是$11或$NF)。 -
•
sort | uniq -c | sort -nr:统计每个IP的失败次数并降序排序。 -
•
head -n 20:显示前20名。 -
• 场景: 快速识别正在进行或刚结束的SSH暴力破解攻击源IP,用于封禁 (
iptables,hosts.deny) 或进一步调查。 -
• 注意: 日志格式至关重要! 使用
awk '{print NR " " $0}' /var/log/auth.log | less查看样例行,确认IP所在字段号 ($NF常指最后一列)。日期过滤需匹配日志时间格式。
- 63. 目标:查找成功登录系统的用户及来源 (Linux)
-
• 命令:
grep "session opened" /var/log/auth.log* | grep -E "user=| for " | awk '{print $1, $2, $3, $11, $12, $13}' | sort | uniq(简化版,需适配格式) -
• 命令 (更可靠):
last -ai | awk 'NF>5 && $0 !~ /reboot|wtmp/ {print $1, $3, $NF}' | sort | uniq(使用last命令) -
• 解析:
-
•
last -ai: 显示登录历史,-a显示主机名/IP在最后一列,-i显示IP数字格式。 -
•
awk 'NF>5 && $0 !~ /reboot|wtmp/ {print $1, $3, $NF}':过滤掉行字段少于5的无效行 (NF>5),排除reboot和wtmp记录,打印用户名 ($1)、登录日期时间 ($3)、来源IP ($NF)。 -
• 场景: 检查是否有异常用户(如
test,oracle, 未知用户)或从非预期IP(如外国IP、内网非常用IP)成功登录系统。 -
• 注意:
last命令读取/var/log/wtmp,攻击者可能篡改或清除该文件 (echo > /var/log/wtmp)。检查文件完整性或结合其他日志源。
- 64. 目标:分析Web访问日志寻找攻击迹象(如SQLi, XSS, Webshell访问)(Linux)
-
• 命令 (Apache/Nginx):
tail -f /var/log/apache2/access.log | grep -E -i "union.*select|%27|%22|%3Cscript|\.php\?.*=php|cmd=|system\(|passthru\(|shell_exec\(|wget |curl |base64_decode|/\.\./|/etc/passwd" -
• 解析:
-
•
tail -f:实时跟踪日志。 -
•
grep -E -i:不区分大小写 (-i) 匹配常见攻击特征的正则 (-E): -
• SQL注入:
union.*select,%27(单引号),%22(双引号) -
• XSS:
%3Cscript(<script) -
• Webshell访问/参数执行:
.php\?.*=php,cmd=,system(,passthru(,shell_exec( -
• 文件下载/外联:
wget,curl -
• Base64混淆:
base64_decode -
• 路径遍历:
/\.\./ -
• 敏感文件访问:
/etc/passwd -
• 场景: 实时Web入侵检测。 快速发现针对Web应用的攻击尝试或已成功的攻击行为(通过访问特征识别)。
-
• 注意: 模式库需持续更新和调整! 高误报率,需结合上下文(如响应状态码、访问频率、源IP)分析。可保存匹配项到单独文件 (
>> suspicious_access.log)。
- 65. 目标:分析Web错误日志寻找漏洞利用成功迹象 (Linux)
-
• 命令:
grep -E -i "PHP Fatal error|PHP Warning|PHP Notice|ORA-[0-9]{5}|Stack trace|Exception|error 500|mod_security" /var/log/apache2/error.log* -
• 解析: 查找包含应用程序级错误的日志行,这些错误可能表明攻击尝试成功触发了漏洞:
-
• PHP错误:
PHP Fatal error,Warning,Notice -
• 数据库错误:
ORA-[0-9]{5}(Oracle),SQLSTATE(其他) -
• 堆栈跟踪:
Stack trace,Exception -
• HTTP 500错误:
error 500 -
• WAF拦截:
mod_security(ModSecurity规则触发) -
• 场景: 攻击者利用漏洞时可能触发应用程序错误或异常。这些日志是漏洞可能被成功利用的重要间接证据。
-
• 注意: 并非所有错误都代表被入侵,但需结合访问日志和上下文调查。
- 66. 目标:查询Windows安全事件日志(重点:登录、账号管理、进程创建)(Windows PowerShell)
-
• 命令:
Get-WinEvent -LogName Security -FilterXPath '((EventID=4624) or (EventID=4625) or (EventID=4688) or (EventID=4720) or (EventID=4722) or (EventID=4726) or (EventID=4732) or (EventID=1102))' -MaxEvents 100 | Format-List TimeCreated, Id, Message -
• 解析: 使用
Get-WinEvent查询安全日志 (-LogName Security),通过XPath筛选关键事件ID (-FilterXPath): -
•
4624:登录成功 -
•
4625:登录失败 -
•
4688:创建新进程 (关键!) -
•
4720:创建用户 -
•
4722:启用用户 -
•
4726:删除用户 -
•
4732:将成员添加到启用安全的本地组 (如管理员组) -
•
1102:审计日志已清除 (可疑!) -
•
-MaxEvents 100:获取最近100条(可调)。 -
•
Format-List:详细列出时间、ID、完整消息。 -
• 场景: Windows事件日志分析核心。 追踪用户登录、账号变更、进程执行(特别是
4688记录的命令行)、日志清除等高危事件。 -
• 注意: 需要管理员权限。事件ID列表可根据需要扩展(如
4672特权登录,4697服务安装,5140文件共享访问)。EventID=4688需启用命令行审计策略。工具如Event Viewer或Zimmerman Tools更强大。
- 67. 目标:查找Windows日志中特定进程创建事件(如恶意进程)(Windows PowerShell)
- • 命令:
Get-WinEvent -LogName Security -FilterXPath 'EventID=4688 and (EventData/Data[@Name="NewProcessName"]="C:\path\to\malware.exe")' | Format-List * - • 解析: 在
4688进程创建事件中,通过XPath精确过滤EventData下Data节点Name="NewProcessName"的值等于特定路径 (C:\path\to\malware.exe) 的事件。 - • 场景: 确认特定恶意程序是否被执行过,并查看其执行时间、父进程、用户等详细信息。
- • 注意: 路径需精确或使用通配符 (
contains或*在XPath中受限)。可结合父进程ID (EventData/Data[@Name="ParentProcessName"]) 或命令行 (EventData/Data[@Name="CommandLine"]) 过滤。
- 68. 目标:检查Linux系统日志是否被轮转或清除(异常时间戳)(Linux)
- • 命令:
ls -l /var/log/*.gz /var/log/*.1 /var/log/messages* /var/log/syslog* | sort -k 6,7(按日期排序) +grep "log file rotated" /var/log/syslog(查看轮转记录) - • 解析: 查看日志文件(当前、轮转、压缩)的修改时间 (
ls -l ... | sort -k 6,7),检查时间序列是否连续、是否有大段空白。同时查看syslog中logrotate的轮转记录 (grep "log file rotated"),确认轮转操作是否在预期时间发生。 - • 场景: 攻击者可能手动删除或轮转日志 (
logrotate -f) 以擦除入侵痕迹。检查日志文件的时间线是否异常中断。 - • 注意: 正常轮转也会删除旧日志。关注非计划时间的轮转或大量日志文件时间戳相同。
- 69. 目标:分析Linux内核日志(dmesg)寻找硬件/驱动异常或Rootkit痕迹(Linux)
- • 命令:
dmesg -T -l err,crit,alert,emerg | tail -n 50(带时间戳的错误及以上级别信息) 或dmesg | grep -i -E "error|warning|tainted|malware|inject|rootkit" - • 解析:
dmesg显示内核环形缓冲区消息。-T显示可读时间戳(需要dmesg支持)。-l过滤日志级别。查找错误、内核污染标志 (tainted)、提及恶意软件、注入、Rootkit等关键词。 - • 场景: 检测底层异常,如硬件故障、驱动崩溃、内核模块 (
LKM) Rootkit加载痕迹(尽管高级Rootkit会隐藏)、内存损坏等。 - • 注意: 信息较底层,需一定内核知识解读。
/var/log/kern.log保存持久化记录。
- 70. 目标:聚合分析多台主机日志(需集中日志环境 – ELK/Splunk/Graylog等)
-
• 场景: 大型HW/真实事件中,攻击往往跨越多个系统。集中式日志管理平台(如ELK Stack, Splunk, Graylog)是必需品。
-
• 关键能力:
-
• 关联分析: 跨主机追踪攻击者行为链(如A主机SSH登录 -> B主机SMB连接)。
-
• 仪表盘: 可视化关键指标(登录失败地图、TOP攻击IP、异常进程创建)。
-
• 告警: 基于规则实时触发(如检测到
mimikatz命令行特征)。 -
• 搜索: 强大的查询语言(如KQL, SPL)快速定位事件。
-
• 非单机命令: 强调在HW准备阶段部署集中日志的重要性。应急时可快速登录平台进行高级查询。
- 71. 目标:解析Windows PowerShell操作日志(Module Logging/Transcript)(Windows)
-
• 命令:
Get-WinEvent -LogName "Windows PowerShell" -MaxEvents 50 | Where-Object {$_.Id -eq 4103 -or $_.Id -eq 4104} | Format-List Message(Module Logging) 或Get-ChildItem $env:USERPROFILE\Documents\WindowsPowerShell\Transcripts\* -ErrorAction SilentlyContinue | Select-Object -Last 1 | Get-Content(查看最近的Transcript) -
• 解析:
-
• Module Logging (事件ID
4103,4104): 记录执行的PowerShell命令块。需预先启用策略。 -
• Transcripts: 会话记录文件。需预先启用策略,记录在
Documents\WindowsPowerShell\Transcripts。 -
• 场景: 攻击者大量使用PowerShell。如果启用了日志记录,这是追踪其活动的宝贵证据,能看到执行的命令、脚本内容。
-
• 注意: 默认不启用! HW前强烈建议在关键系统启用PowerShell Module Logging和Script Block Logging (
4104)。Transcripts可能被攻击者发现并删除。
- 72. 目标:检查Linux cron任务执行历史(syslog)(Linux)
- • 命令:
grep -E "CRON|REPORT" /var/log/syslog | grep -v "pam_unix(cron:session): session opened"(过滤常见噪音) - • 解析: 在
syslog中查找包含CRON或REPORT的行(cron守护进程日志),排除session opened这类低信息量的记录。关注任务执行命令 (CMD) 和输出。 - • 场景: 确认可疑cron任务是否实际执行,查看其执行时的输出(如有错误或异常行为)。
- • 注意: 日志中记录了任务执行的命令 (
CMD (....)),是溯源关键。
- 73. 目标:查找Windows RDP登录成功/失败记录 (Windows PowerShell)
- • 命令:
Get-WinEvent -LogName Security -FilterXPath '((EventID=4624) and (EventData/Data[@Name="LogonType"]="10")) or ((EventID=4625) and (EventData/Data[@Name="LogonType"]="10"))' | Format-List TimeCreated, Id, Message - • 解析: 在登录事件 (
4624/4625) 中,通过LogonType=10筛选出远程交互式登录(即RDP)。查看成功和失败的RDP连接尝试。 - • 场景: RDP是攻击者横向移动和控制的常用途径。检测RDP爆破 (
4625) 和成功的非授权RDP登录 (4624+ 异常用户/IP)。 - • 注意:
LogonType=3是网络登录(如SMB共享),2是交互式本地登录,也需关注。
- 74. 目标:检查Linux sudo命令执行历史 (Linux)
- • 命令:
grep sudo /var/log/auth.log* | grep -v "session opened" | grep COMMAND(常见格式) 或直接查看/var/log/sudo.log(如果配置) - • 解析: 查找
auth.log中sudo相关的记录,过滤掉session opened,重点看包含COMMAND的行,记录了哪些用户通过sudo执行了什么命令。 - • 场景: 追踪特权命令执行。检查是否有低权限用户或异常用户执行了高危
sudo命令(如/bin/bash,chmod,wget,useradd)。 - • 注意: 确保系统配置了
sudo日志(通常默认在auth.log)。
- 75. 目标:分析Windows Defender/AV日志(检测/隔离事件)(Windows PowerShell)
- • 命令:
Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" | Where-Object {$_.Id -eq 1116 -or $_.Id -eq 1117} | Format-List TimeCreated, Id, Message(查看检测/隔离事件) - • 解析: 查询Windows Defender操作日志,事件ID
1116(检测到威胁),1117(已执行操作,如隔离、删除)。查看检测到的威胁名称、路径、操作结果。 - • 场景: 确认系统自带的AV是否检测到了恶意活动,即使未能完全阻止。威胁名称 (
Threat Name) 是重要情报。 - • 注意: 第三方AV日志位置不同。日志可能被攻击者禁用或清除。
第六部分:内存取证 – 冻结攻击现场 (命令 76-85)
当磁盘取证不够时,内存是活的证据库。需要专用工具(如Volatility/Volatility3)。
- 76. 目标:获取Linux内存快照 (LiME)
- • 命令:
insmod lime-<kernel-version>.ko "path=/tmp/memdump.lime format=lime"(需提前编译匹配内核版本的LiME模块) - • 场景: 在不关闭系统的情况下获取物理内存的完整转储。关键第一步!
- • 注意: 需提前准备。操作有风险(加载内核模块)。确保路径 (
/tmp) 有足够空间。Windows 常用DumpIt.exe或FTK Imager。
- 77. 目标:列出Linux内存中的进程(Volatility3 –
linux.pslist)
- • 命令:
vol -f /path/to/memdump.lime linux.pslist - • 解析: 使用Volatility3 (
vol) 分析内存镜像 (-f),运行linux.pslist插件,列出内存中捕获到的进程列表(PID, PPID, 名称, 启动时间等)。 - • 场景: 发现隐藏进程! 对比
ps输出,找出内核级Rootkit隐藏的进程(仅在内存中可见)。
- 78. 目标:检查Linux进程命令行参数(Volatility3 –
linux.psaux)
- • 命令:
vol -f /path/to/memdump.lime linux.psaux - • 解析: 显示每个进程的完整命令行参数 (
argv[])。 - • 场景: 查看可疑进程实际执行的命令和参数,即使磁盘上的文件已被删除或进程已结束。
- 79. 目标:列出Linux网络连接(Volatility3 –
linux.netstat)
- • 命令:
vol -f /path/to/memdump.lime linux.netstat - • 解析: 显示内存中的网络连接状态(协议、本地地址/端口、远端地址/端口、状态、PID)。
- • 场景: 发现
netstat/ss未显示的隐藏连接(如通过Rootkit隐藏的C2连接)。
- 80. 目标:查找Linux内存中的Bash命令历史(Volatility3 –
linux.bash)
- • 命令:
vol -f /path/to/memdump.lime linux.bash - • 解析: 尝试从Bash进程的内存中恢复命令历史记录。
- • 场景: 即使攻击者清空了
.bash_history文件,仍可能在内存中残留其执行过的命令。重要溯源线索!
- 81. 目标:扫描Linux内存中的恶意代码特征(Yara规则)(Volatility3 –
linux.yarascan)
- • 命令:
vol -f /path/to/memdump.lime linux.yarascan -Y "/path/to/malware_signatures.yar" - • 解析: 使用Yara规则 (
-Y) 扫描整个内存或特定进程空间,匹配已知恶意软件的特征(字符串、字节模式)。 - • 场景: 主动在内存中搜寻已知恶意软件家族或自定义后门的痕迹。
- 82. 目标:获取Windows内存快照(WinPMEM/DumpIt)(Windows cmd)
- • 命令:
WinPMEM_v3.3.exe -l(列出选项) 然后WinPMEM_v3.3.exe <output>.raw(转储为RAW格式) 或直接运行DumpIt.exe(简单易用) - • 场景: Windows内存取证第一步。获取物理内存镜像。
- 83. 目标:列出Windows内存中的进程(Volatility3 –
windows.pslist)
- • 命令:
vol -f /path/to/memdump.raw windows.pslist - • 解析/场景: 同Linux,发现隐藏进程。比较
windows.psscan(更全面扫描) 和windows.pslist的结果差异。
- 84. 目标:提取Windows内存中的进程可执行文件(Volatility3 –
windows.dumpfiles/windows.procdump)
- • 命令 (DLL/EXE):
vol -f /path/to/memdump.raw -o /path/to/output/dir windows.dumpfiles --pid <PID> --virtaddr <BaseVirtAddr>或vol -f ... windows.procdump --pid <PID> -D /path/to/output/dir - • 解析: 从内存中将指定进程 (
--pid) 的可执行体(PE文件)或特定内存映射文件 (--virtaddr指定基址)转储到磁盘。 - • 场景: 对内存中的恶意进程进行二进制提取,用于静态分析(反编译、HASH、字符串提取)或沙箱运行。
- 85. 目标:查找Windows内存中的敏感信息(密码、令牌、证书)(Volatility3 –
windows.hashdump,windows.certs,windows.vault)
-
• 命令:
-
• 密码HASH:
vol -f ... windows.hashdump -
• 证书:
vol -f ... windows.certs -
• 凭据保险库:
vol -f ... windows.vault -
• 场景: 尝试从LSASS进程内存、注册表缓存、凭据管理器内存中提取密码HASH、明文密码(如果存在)、存储的证书和凭据。高风险高收益操作!
-
• 注意: 提取的HASH可用于Pass-the-Hash攻击。需严格遵守授权和合规要求。
第七部分:威胁狩猎与主动检测 (命令 86-95)
基于假设和情报主动寻找威胁。
- 86. 目标:扫描本地文件系统匹配Yara规则(批量检测恶意文件)(Linux)
-
• 命令:
yara -r -s -m /path/to/malware_rules.yar /path/to/scan/directory > yara_scan_results.txt -
• 解析:
-
•
yara:Yara扫描引擎。 -
•
-r:递归目录。 -
•
-s:显示匹配字符串(方便验证)。 -
•
-m:显示元数据(规则中的meta信息)。 -
•
/path/to/malware_rules.yar:包含恶意软件特征的Yara规则文件。 -
•
/path/to/scan/directory:扫描的目录。 -
•
> yara_scan_results.txt:保存结果。 -
• 场景: 使用已知的恶意软件特征库(如Valhalla, FLARE-VM, 自定义规则)对特定目录进行批量扫描,找出潜在恶意文件。
-
• 注意: 规则质量是关键! 更新规则库。扫描范围要明确,避免全盘扫描消耗过大。结合HASH在VT验证结果。
- 87. 目标:检查计划任务/cron中是否有连接到C2的命令(如curl/wget)(Linux)
- • 命令:
grep -E -l -r -i "curl |wget |nc |ncat |socat |telnet |ssh |openssl s_client" /etc/cron* /var/spool/cron/crontabs /etc/anacrontab 2>/dev/null - • 解析: 在cron配置文件中递归搜索 (
-r) 包含常见网络工具 (curl,wget,nc等) 的命令行 (-i忽略大小写),只输出文件名 (-l)。 - • 场景: 查找通过定时任务建立与C2通信的持久化后门(如定时发送心跳、下载新指令)。
- • 注意: 合法任务也可能使用这些工具(如定时拉取更新)。需人工复核命令内容和目标地址。
- 88. 目标:查找Linux进程内存中包含恶意IP/域名的进程 (Linux – gdb/scans mem)
- • 命令 (危险!仅示例思路):
for pid in $(ps -e -o pid=); do if grep -s -q "malicious\.domain" /proc/$pid/mem 2>/dev/null; then echo "Found in PID: $pid ($(ps -p $pid -o comm=))"; fi; done(理论可行,但/proc/pid/mem访问极其危险且复杂) - • 推荐替代: 使用
memgrep工具 (如https://github.com/orlikoski/memgrep) 或 Volatility/Yara内存扫描 (命令81) 更安全有效。 - • 场景: 检测正在运行的进程其内存空间中是否包含已知的恶意C2地址或指令。
- • 注意: 直接扫描
/proc/pid/mem极不稳定且可能导致进程崩溃!强烈建议使用专用工具。
- 89. 目标:检测Linux LD_PRELOAD劫持(检查环境变量和预加载库)(Linux)
- • 命令:
grep -r -E 'LD_PRELOAD|LD_LIBRARY_PATH' /etc/environment /etc/profile.d/* /home/*/.*rc /root/.*rc 2>/dev/null(配置文件) +ps e -eo pid,user,command | grep -E 'LD_PRELOAD|LD_LIBRARY_PATH'(进程环境) - • 解析: 在常见的Shell初始化文件 (
/etc/environment,/etc/profile.d/*,~/.bashrc,~/.profile等) 和 所有进程的环境变量 (ps e) 中搜索LD_PRELOAD或LD_LIBRARY_PATH设置。 - • 场景:
LD_PRELOAD劫持是常见的库注入技术。检查是否有非预期的库被预加载,特别是在进程环境中动态设置的(比配置文件更隐蔽)。 - • 注意: 合法程序也会设置。关注路径是否指向
/tmp,/dev/shm或陌生路径的.so文件。
- 90. 目标:检查Windows AMSI绕过痕迹(PowerShell日志/事件)(Windows PowerShell)
-
• 命令:
Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" | Where-Object {$_.Id -eq 4104 -and $_.Message -like "*amsiinitfailed*"}(Script Block Logging) 或 查找事件ID1(AMSI扫描开始) 但无后续成功/失败事件 (可能被绕过) -
• 解析: AMSI (Antimalware Scan Interface) 是防御恶意PowerShell的关键。攻击者会尝试绕过它。
-
• 事件ID
4104(Script Block Logging) 中如果包含amsiinitfailed等字符串,表明AMSI初始化失败(可能是绕过)。 -
• 如果看到事件ID
1(AMSI扫描开始) 但没有对应的事件ID2(威胁报告) 或3(扫描完成无威胁),可能意味着扫描被绕过或结果被篡改。 -
• 场景: 检测攻击者是否成功绕过了AMSI防护机制执行恶意PowerShell脚本。
-
• 注意: 需要启用PowerShell Script Block Logging (
4104) 和AMSI审核。日志可能不完整。
- 91. 目标:查找异常的子进程关系(如explorer.exe启动cmd.exe)(Windows PowerShell)
- • 命令:
Get-CimInstance Win32_Process | Select-Object ProcessId, ParentProcessId, Name, CommandLine | Where-Object {$_.Name -eq "cmd.exe" -and $_.ParentProcessId -ne (Get-Process -Name explorer).Id} | Format-Table -AutoSize(查找非explorer启动的cmd) - • 解析: 查询所有进程,选择PID、PPID、名称、命令行。过滤出进程名为
cmd.exe且其父进程ID 不等于 Explorer进程ID的进程。 - • 场景:
cmd.exe通常由用户交互 (explorer.exe) 启动。如果它由其他进程(如w3wp.exeIIS进程,sqlservr.exeSQL进程, 未知进程)启动,则非常可疑,可能表示命令注入或利用成功。 - • 注意: 可以扩展到其他进程(如
powershell.exe,rundll32.exe,mshta.exe,wmic.exe)。了解系统的合法自动化任务。
- 92. 目标:检查Linux系统调用表Hook(需root/内核模块 – SystemTap/lynis)
-
• 思路: 检测内核级Rootkit对系统调用表的篡改。
-
• 非简单命令:
-
•
lynis审计:lynis audit system(检查kernel_modules部分) -
• SystemTap脚本: 编写脚本比对
/proc/kallsyms中的系统调用地址与预期值。 -
• 专用工具:
rkhunter --checkall,chkrootkit(过时但基础检查)。 -
• 场景: 检测最隐蔽的内核级Rootkit。
-
• 注意: 操作复杂,风险高(加载内核模块)。通常由专业取证人员进行。
- 93. 目标:利用威胁情报平台查询本地IP/域名/HASH (Linux/Windows)
-
• 命令 (使用API): 例如用
curl查询VirusTotal: -
•
curl -s --request GET --url 'https://www.virustotal.com/api/v3/files/<FILE_HASH>' --header 'x-apikey: <YOUR_VT_API_KEY>' | jq .(查HASH) -
•
curl -s --request GET --url 'https://www.virustotal.com/api/v3/ip_addresses/<SUSPECT_IP>' --header 'x-apikey: <YOUR_VT_API_KEY>' | jq .(查IP) -
• 场景: 将本地发现的IoC(文件HASH、IP、域名)提交到VirusTotal、AlienVault OTX、IBM X-Force等平台,获取全球威胁情报。
-
• 注意: 注意隐私和合规! 不要上传敏感数据。使用API密钥。
jq用于格式化JSON输出。
- 94. 目标:检测DNS隧道活动(高熵域名请求)(需专用工具 – dnscat2日志/IDS)
-
• 思路: 攻击者利用DNS协议进行隐蔽通信(隧道)。
-
• 非简单命令:
-
• 分析DNS查询日志: 查找大量长、随机子域名 (
b3jf9x8a.domain.tld)、TXT/NULL等非常规类型查询、异常高频查询。 -
• 网络流量分析 (Wireshark/Zeek): 检查DNS载荷大小、请求/响应模式。
-
• 专用检测工具:
dnspeep,DNSMessenger或IDS/IPS规则(如Suricata)。 -
• 场景: 检测高级持久化威胁(APT)常用的数据外泄或C2通信隐蔽通道。
-
• 注意: 需要基础DNS监控和日志记录。
- 95. 目标:模拟攻击者行为进行狩猎(假设已失陷 – MITRE ATT&CK驱动)
-
• 思路: 根据ATT&CK框架,针对特定战术(如持久化、凭证访问、横向移动)设计检测命令组合。
-
• 示例 (查找凭证转储):
-
• Linux:
grep -i -E "passwd|shadow|sudoers|\.kdbx|\.ppk|\.pem" /var/log/* /home/*/.*history(日志/历史) +find /tmp /dev/shm /home -name "*cred*" -o -name "*pass*" -type f -exec ls -la {} + 2>/dev/null(临时文件) -
• Windows:
Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4104 -and $_.Message -like "*sekurlsa::logonpasswords*"}(检测mimikatz) +dir /s /b C:\ *.kdbx *.ppk *.pem *_history 2>nul(查找密码库/密钥/历史文件) -
• 场景: 主动假设系统已失陷,针对攻击者最可能的目标(如偷凭证)进行针对性搜索。
-
• 注意: 需要深入理解ATT&CK技术和攻击者行为。
第八部分:快速遏制与系统加固 (命令 96-100)
初步止损,防止进一步破坏。
- 96. 目标:隔离主机网络(Linux – 快速阻断进出流量)
- • 命令:
iptables -P INPUT DROP && iptables -P OUTPUT DROP && iptables -P FORWARD DROP(紧急断开所有网络) 或iptables -A INPUT -j DROP -s <攻击者IP>(仅阻断特定攻击者IP) - • 场景: 紧急止损! 确认主机失陷后,立即切断其网络连接,防止C2通信、横向移动、数据外泄。仅在确定需要隔离时使用!
- • 注意: 慎用! 会断开所有远程连接(包括你的SSH)。确保有其他访问途径(如物理Console、带外管理)或最后执行。更精确的方法是阻断特定IP/端口。
- 97. 目标:终止恶意进程及其子进程 (Linux)
- • 命令:
pkill -TERM -P <父恶意PID>(终止指定PID的所有子进程) 然后kill -9 <父恶意PID>(强制终止父进程) - • 场景: 快速停止正在运行的恶意进程,遏制其破坏活动(如挖矿、加密、通信)。
- • 注意: 确认PID准确! 误杀关键进程(如数据库)会导致服务中断。了解进程树结构 (
pstree)。Windows 使用Stop-Process -Id <PID> -Force。
- 98. 目标:锁定可疑用户账户 (Linux)
- • 命令:
usermod -L <用户名>(锁定密码登录) +passwd -l <用户名>(同效) + 检查并移除其.ssh/authorized_keys条目 +usermod -s /sbin/nologin <用户名>(禁用Shell) - • 场景: 当发现某个用户账户被用于非授权访问时,立即锁定其所有登录途径。
- • 注意: 确认锁定用户不会影响关键业务。记录锁定操作。Windows 使用
net user <用户名> /active:no。
- 99. 目标:临时禁用Web服务器(阻止Webshell访问)(Linux)
- • 命令:
systemctl stop apache2或systemctl stop nginx - • 场景: 发现Web应用存在Webshell且无法立即清除时,临时关闭Web服务,阻断攻击者访问入口。
- • 注意: 会造成服务中断。应尽快清理Webshell并恢复服务。记录操作。
- 100. 目标:应用关键安全补丁(紧急修复已知漏洞)(Linux – 基于RHEL)
*命令:yum --security check-update(检查安全更新) 然后yum update --security(仅安装安全更新) 或yum update <特定包名>(更新特定漏洞包)
*场景:如果事件是由未修补的已知漏洞(如ProxyLogon, Log4Shell)引发的,在遏制后立即应用相关补丁,防止再次被利用。
*注意:务必在测试环境验证后再上生产!补丁可能带来兼容性问题。HW期间需评估补丁安装的窗口期。Debian/Ubuntu 使用apt list --upgradable | grep security+apt upgrade --only-upgrade <包>。Windows 使用Get-Hotfix检查已安装补丁,通过WSUS或wuauclt /detectnow/usoclient ScanInstallWait安装更新。
END
【内容来源:HACK之道 】
- HW必备:50个应急响应常用命令速查手册一(实战收藏)
- # 沈传宁:落实《网络数据安全管理条例》,提升全员数据安全意识
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安小圈 《HW必备:50个应急响应常用命令速查手册二(实战收藏)》