HW必备:50个应急响应常用命令速查手册二(实战收藏)

admin 2025年6月4日11:11:48评论46 views字数 19453阅读64分50秒阅读模式
安小圈

第679期

HW必备:50个应急响应常用命令速查手册二(实战收藏)
HW必备:50个应急响应常用命令速查手册二(实战收藏)
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 为主流)侧重检查。
  1. 52. 目标:检查Windows WMI事件订阅(高级持久化)(Windows PowerShell)
    • • 命令:Get-WmiObject -Namespace rootSubscription -Class __EventFilter; Get-WmiObject -Namespace rootSubscription -Class __EventConsumer; Get-WmiObject -Namespace rootSubscription -Class __FilterToConsumerBinding
    • • 解析: 分别查询WMI事件订阅的三个核心组件:
      • • __EventFilter:定义触发事件的条件(如特定时间、进程创建、登录)。
      • • __EventConsumer:定义事件触发后的动作(如执行命令、发送邮件、记录日志)。恶意利用主要是 ActiveScriptEventConsumer (执行脚本) 和 CommandLineEventConsumer (执行命令)。
      • • __FilterToConsumerBinding:将过滤器 (Filter) 和消费者 (Consumer) 绑定起来。
    • • 场景: 检测利用WMI事件订阅实现的无文件、高隐蔽持久化。攻击者常用此技术在特定事件(如用户登录)时触发恶意代码执行。
    • • 注意: 需要管理员权限。输出较技术化,需仔细分析过滤器和消费者的具体内容。工具如 WMI Explorer 或 Autoruns 可辅助可视化。
  2. 53. 目标:查找含有隐藏属性的文件(Windows)(Windows cmd)
    • • 命令:dir /s /b /a:h C: 2>nul (系统根目录) 或指定目录
    • • 解析:dir /s(递归子目录)/b(裸格式,只显示路径)/a:h(只显示隐藏属性文件)C:(搜索C盘根)2>nul(隐藏错误)。可替换C:C:UsersC:WindowsTemp 等。
    • • 场景: 攻击者常将恶意文件设置为隐藏属性 (attrib +h) 以躲避普通文件浏览。检查隐藏文件中是否有可疑项。
    • • 注意: 系统文件也常隐藏。需结合路径、文件名、大小判断。PowerShell可用 Get-ChildItem -Path C: -Force -Recurse -Hidden -ErrorAction SilentlyContinue
  3. 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 *)。
  4. 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、打包的日志文件)。
      • • 恶意软件本体(如挖矿程序、勒索软件加密模块)。
      • • 未清理的临时转储文件。
    • • 注意: 数据库文件、虚拟机磁盘、日志归档等合法文件通常较大。需结合位置和上下文判断。
  5. 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)。非核心线索。
  6. 57. 目标:检查文件的数字签名(Windows - 识别未签名/无效签名)(Windows PowerShell)
    • • 命令:Get-AuthenticodeSignature -FilePath "C:pathtofile.exe" | Format-List * (单文件) 或 Get-ChildItem -Path C:WindowsSystem32*.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 的文件(如 NotSignedHashMismatch 哈希不匹配可能被篡改, UnknownError)。
    • • 场景:重要! 检查关键系统文件或可疑程序是否具有有效的、可信的数字签名。未签名或签名无效的文件风险较高。
    • • 注意: 合法软件也可能未签名(尤其是开源软件)。System32 下的未签名/无效签名文件需高度警惕。Sigcheck (Sysinternals) 功能更强大。
  7. 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.* 命名空间)。非主流攻击向量。
  8. 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用户)。
    • • 注意: 确认每个条目的来源和合法性。查看密钥注释(如果有)。
  9. 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)

日志是事件重建的关键证据源。

  1. 61. 目标:实时监控系统认证日志(SSH登录尝试)(Linux - journald)
    • • 命令:journalctl -f -u sshd | grep -E "Failed password|Accepted password"
    • • 解析:
      • • journalctl -f -u sshd:实时跟踪 (-fsshd 服务的日志 (-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 (密钥登录成功) 同样重要。
  2. 62. 目标:统计过去24小时SSH登录失败最多的IP (Linux - syslog)
    • • 命令:grep "Failed password" /var/log/auth.log | grep date -d '24 hours ago' '+%b %e' | awk '{print $11}' | sort | uniq -c | sort -nr | head -n 20
    • • 解析:
      • • grep "Failed password" /var/log/auth.log:提取所有失败记录。
      • • grep date -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,用于封禁 (iptableshosts.deny) 或进一步调查。
    • • 注意:日志格式至关重要! 使用 awk '{print NR " " $0}' /var/log/auth.log | less 查看样例行,确认IP所在字段号 ($NF 常指最后一列)。日期过滤需匹配日志时间格式。
  3. 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)。
    • • 场景: 检查是否有异常用户(如 testoracle, 未知用户)或从非预期IP(如外国IP、内网非常用IP)成功登录系统。
    • • 注意:last 命令读取 /var/log/wtmp,攻击者可能篡改或清除该文件 (echo > /var/log/wtmp)。检查文件完整性或结合其他日志源。
  4. 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?.*=phpcmd=system(passthru(shell_exec(
        • • 文件下载/外联:wget curl
        • • Base64混淆:base64_decode
        • • 路径遍历:/../
        • • 敏感文件访问:/etc/passwd
    • • 场景:实时Web入侵检测。 快速发现针对Web应用的攻击尝试或已成功的攻击行为(通过访问特征识别)。
    • • 注意:模式库需持续更新和调整! 高误报率,需结合上下文(如响应状态码、访问频率、源IP)分析。可保存匹配项到单独文件 (>> suspicious_access.log)。
  5. 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 errorWarningNotice
      • • 数据库错误:ORA-[0-9]{5} (Oracle), SQLSTATE (其他)
      • • 堆栈跟踪:Stack traceException
      • • HTTP 500错误:error 500
      • • WAF拦截:mod_security (ModSecurity规则触发)
    • • 场景: 攻击者利用漏洞时可能触发应用程序错误或异常。这些日志是漏洞可能被成功利用的重要间接证据。
    • • 注意: 并非所有错误都代表被入侵,但需结合访问日志和上下文调查。
  6. 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 更强大。
  7. 67. 目标:查找Windows日志中特定进程创建事件(如恶意进程)(Windows PowerShell)
    • • 命令:Get-WinEvent -LogName Security -FilterXPath 'EventID=4688 and (EventData/Data[@Name="NewProcessName"]="C:pathtomalware.exe")' | Format-List *
    • • 解析: 在 4688 进程创建事件中,通过XPath精确过滤 EventData 下 Data 节点 Name="NewProcessName" 的值等于特定路径 (C:pathtomalware.exe) 的事件。
    • • 场景: 确认特定恶意程序是否被执行过,并查看其执行时间、父进程、用户等详细信息。
    • • 注意: 路径需精确或使用通配符 (contains 或 * 在XPath中受限)。可结合父进程ID (EventData/Data[@Name="ParentProcessName"]) 或命令行 (EventData/Data[@Name="CommandLine"]) 过滤。
  8. 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) 以擦除入侵痕迹。检查日志文件的时间线是否异常中断。
    • • 注意: 正常轮转也会删除旧日志。关注非计划时间的轮转或大量日志文件时间戳相同。
  9. 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 保存持久化记录。
  10. 70. 目标:聚合分析多台主机日志(需集中日志环境 - ELK/Splunk/Graylog等)
    • • 场景: 大型HW/真实事件中,攻击往往跨越多个系统。集中式日志管理平台(如ELK Stack, Splunk, Graylog)是必需品。
    • • 关键能力:
      • • 关联分析: 跨主机追踪攻击者行为链(如A主机SSH登录 -> B主机SMB连接)。
      • • 仪表盘: 可视化关键指标(登录失败地图、TOP攻击IP、异常进程创建)。
      • • 告警: 基于规则实时触发(如检测到 mimikatz 命令行特征)。
      • • 搜索: 强大的查询语言(如KQL, SPL)快速定位事件。
    • • 非单机命令: 强调在HW准备阶段部署集中日志的重要性。应急时可快速登录平台进行高级查询。
  11. 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:USERPROFILEDocumentsWindowsPowerShellTranscripts* -ErrorAction SilentlyContinue | Select-Object -Last 1 | Get-Content (查看最近的Transcript)
    • • 解析:
      • • Module Logging (事件ID 41034104): 记录执行的PowerShell命令块。需预先启用策略。
      • • Transcripts: 会话记录文件。需预先启用策略,记录在 DocumentsWindowsPowerShellTranscripts
    • • 场景: 攻击者大量使用PowerShell。如果启用了日志记录,这是追踪其活动的宝贵证据,能看到执行的命令、脚本内容。
    • • 注意:默认不启用! HW前强烈建议在关键系统启用PowerShell Module Logging和Script Block Logging (4104)。Transcripts可能被攻击者发现并删除。
  12. 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 (....)),是溯源关键。
  13. 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 是交互式本地登录,也需关注。
  14. 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/bashchmodwgetuseradd)。
    • • 注意: 确保系统配置了 sudo 日志(通常默认在 auth.log)。
  15. 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)。

  1. 76. 目标:获取Linux内存快照 (LiME)
    • • 命令:insmod lime-<kernel-version>.ko "path=/tmp/memdump.lime format=lime" (需提前编译匹配内核版本的LiME模块)
    • • 场景: 在不关闭系统的情况下获取物理内存的完整转储。关键第一步!
    • • 注意: 需提前准备。操作有风险(加载内核模块)。确保路径 (/tmp) 有足够空间。Windows 常用 DumpIt.exe 或 FTK Imager
  2. 77. 目标:列出Linux内存中的进程(Volatility3 - linux.pslist
    • • 命令:vol -f /path/to/memdump.lime linux.pslist
    • • 解析: 使用Volatility3 (vol) 分析内存镜像 (-f),运行 linux.pslist 插件,列出内存中捕获到的进程列表(PID, PPID, 名称, 启动时间等)。
    • • 场景:发现隐藏进程! 对比 ps 输出,找出内核级Rootkit隐藏的进程(仅在内存中可见)。
  3. 78. 目标:检查Linux进程命令行参数(Volatility3 - linux.psaux
    • • 命令:vol -f /path/to/memdump.lime linux.psaux
    • • 解析: 显示每个进程的完整命令行参数 (argv[])。
    • • 场景: 查看可疑进程实际执行的命令和参数,即使磁盘上的文件已被删除或进程已结束。
  4. 79. 目标:列出Linux网络连接(Volatility3 - linux.netstat
    • • 命令:vol -f /path/to/memdump.lime linux.netstat
    • • 解析: 显示内存中的网络连接状态(协议、本地地址/端口、远端地址/端口、状态、PID)。
    • • 场景: 发现 netstat/ss 未显示的隐藏连接(如通过Rootkit隐藏的C2连接)。
  5. 80. 目标:查找Linux内存中的Bash命令历史(Volatility3 - linux.bash
    • • 命令:vol -f /path/to/memdump.lime linux.bash
    • • 解析: 尝试从Bash进程的内存中恢复命令历史记录。
    • • 场景: 即使攻击者清空了 .bash_history 文件,仍可能在内存中残留其执行过的命令。重要溯源线索!
  6. 81. 目标:扫描Linux内存中的恶意代码特征(Yara规则)(Volatility3 - linux.yarascan)
    • • 命令:vol -f /path/to/memdump.lime linux.yarascan -Y "/path/to/malware_signatures.yar"
    • • 解析: 使用Yara规则 (-Y) 扫描整个内存或特定进程空间,匹配已知恶意软件的特征(字符串、字节模式)。
    • • 场景: 主动在内存中搜寻已知恶意软件家族或自定义后门的痕迹。
  7. 82. 目标:获取Windows内存快照(WinPMEM/DumpIt)(Windows cmd)
    • • 命令:WinPMEM_v3.3.exe -l (列出选项) 然后 WinPMEM_v3.3.exe <output>.raw (转储为RAW格式) 或直接运行 DumpIt.exe (简单易用)
    • • 场景: Windows内存取证第一步。获取物理内存镜像。
  8. 83. 目标:列出Windows内存中的进程(Volatility3 - windows.pslist
    • • 命令:vol -f /path/to/memdump.raw windows.pslist
    • • 解析/场景: 同Linux,发现隐藏进程。比较 windows.psscan (更全面扫描) 和 windows.pslist 的结果差异。
  9. 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、字符串提取)或沙箱运行。
  10. 85. 目标:查找Windows内存中的敏感信息(密码、令牌、证书)(Volatility3 - windows.hashdumpwindows.certswindows.vault)
    • • 命令:
      • • 密码HASH:vol -f ... windows.hashdump
      • • 证书:vol -f ... windows.certs
      • • 凭据保险库:vol -f ... windows.vault
    • • 场景: 尝试从LSASS进程内存、注册表缓存、凭据管理器内存中提取密码HASH、明文密码(如果存在)、存储的证书和凭据。高风险高收益操作!
    • • 注意: 提取的HASH可用于Pass-the-Hash攻击。需严格遵守授权和合规要求。

第七部分:威胁狩猎与主动检测 (命令 86-95)

基于假设和情报主动寻找威胁。

  1. 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验证结果。
  2. 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) 包含常见网络工具 (curlwgetnc 等) 的命令行 (-i 忽略大小写),只输出文件名 (-l)。
    • • 场景: 查找通过定时任务建立与C2通信的持久化后门(如定时发送心跳、下载新指令)。
    • • 注意: 合法任务也可能使用这些工具(如定时拉取更新)。需人工复核命令内容和目标地址。
  3. 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 极不稳定且可能导致进程崩溃!强烈建议使用专用工具
  4. 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 文件。
  5. 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) 或 查找事件ID 1 (AMSI扫描开始) 但无后续成功/失败事件 (可能被绕过)
    • • 解析: AMSI (Antimalware Scan Interface) 是防御恶意PowerShell的关键。攻击者会尝试绕过它。
      • • 事件ID 4104 (Script Block Logging) 中如果包含 amsiinitfailed 等字符串,表明AMSI初始化失败(可能是绕过)。
      • • 如果看到事件ID 1 (AMSI扫描开始) 但没有对应的事件ID 2 (威胁报告) 或 3 (扫描完成无威胁),可能意味着扫描被绕过或结果被篡改。
    • • 场景: 检测攻击者是否成功绕过了AMSI防护机制执行恶意PowerShell脚本。
    • • 注意: 需要启用PowerShell Script Block Logging (4104) 和AMSI审核。日志可能不完整。
  6. 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.exe IIS进程, sqlservr.exe SQL进程, 未知进程)启动,则非常可疑,可能表示命令注入或利用成功。
    • • 注意: 可以扩展到其他进程(如 powershell.exerundll32.exemshta.exewmic.exe)。了解系统的合法自动化任务。
  7. 92. 目标:检查Linux系统调用表Hook(需root/内核模块 - SystemTap/lynis)
    • • 思路: 检测内核级Rootkit对系统调用表的篡改。
    • • 非简单命令:
      • • lynis 审计:lynis audit system (检查 kernel_modules 部分)
      • • SystemTap脚本: 编写脚本比对 /proc/kallsyms 中的系统调用地址与预期值。
      • • 专用工具:rkhunter --checkallchkrootkit (过时但基础检查)。
    • • 场景: 检测最隐蔽的内核级Rootkit。
    • • 注意: 操作复杂,风险高(加载内核模块)。通常由专业取证人员进行。
  8. 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输出。
  9. 94. 目标:检测DNS隧道活动(高熵域名请求)(需专用工具 - dnscat2日志/IDS)
    • • 思路: 攻击者利用DNS协议进行隐蔽通信(隧道)。
    • • 非简单命令:
      • • 分析DNS查询日志: 查找大量长、随机子域名 (b3jf9x8a.domain.tld)、TXT/NULL 等非常规类型查询、异常高频查询。
      • • 网络流量分析 (Wireshark/Zeek): 检查DNS载荷大小、请求/响应模式。
      • • 专用检测工具:dnspeepDNSMessenger 或IDS/IPS规则(如Suricata)。
    • • 场景: 检测高级持久化威胁(APT)常用的数据外泄或C2通信隐蔽通道。
    • • 注意: 需要基础DNS监控和日志记录。
  10. 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)

初步止损,防止进一步破坏。

  1. 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/端口。
  2. 97. 目标:终止恶意进程及其子进程 (Linux)
    • • 命令:pkill -TERM -P <父恶意PID> (终止指定PID的所有子进程) 然后 kill -9 <父恶意PID> (强制终止父进程)
    • • 场景: 快速停止正在运行的恶意进程,遏制其破坏活动(如挖矿、加密、通信)。
    • • 注意:确认PID准确! 误杀关键进程(如数据库)会导致服务中断。了解进程树结构 (pstree)。Windows 使用 Stop-Process -Id <PID> -Force
  3. 98. 目标:锁定可疑用户账户 (Linux)
    • • 命令:usermod -L <用户名> (锁定密码登录) + passwd -l <用户名> (同效) + 检查并移除其 .ssh/authorized_keys 条目 + usermod -s /sbin/nologin <用户名> (禁用Shell)
    • • 场景: 当发现某个用户账户被用于非授权访问时,立即锁定其所有登录途径。
    • • 注意: 确认锁定用户不会影响关键业务。记录锁定操作。Windows 使用 net user <用户名> /active:no
  4. 99. 目标:临时禁用Web服务器(阻止Webshell访问)(Linux)
    • • 命令:systemctl stop apache2 或 systemctl stop nginx
    • • 场景: 发现Web应用存在Webshell且无法立即清除时,临时关闭Web服务,阻断攻击者访问入口。
    • • 注意: 会造成服务中断。应尽快清理Webshell并恢复服务。记录操作。
  5. 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 安装更新。

原文始发于微信公众号(安小圈):HW必备:50个应急响应常用命令速查手册二(实战收藏)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月4日11:11:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   HW必备:50个应急响应常用命令速查手册二(实战收藏)https://cn-sec.com/archives/4130443.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息