发布于13小时前13小时 本文以一次授权内网演练中的 Windows 终端告警为例,围绕“疑似远控木马”展开静态分析、动态取证、网络定位和修复验证。重点不是编写或投递木马,而是确认样本是否具备远程控制特征、还原其启动链路,并在不破坏证据的前提下完成处置。一、背景与分析边界某办公终端出现异常外连。EDR 记录到一个位于用户临时目录的未知可执行文件,进程父子关系为 winword.exe -> powershell.exe -> update.exe。授权范围仅包含该测试终端和隔离分析环境,禁止对真实生产系统执行样本运行、横向尝试或命令控制。本次分析目标包括:确认样本是否为远控木马或加载器,并提取文件哈希、签名和编译信息。识别其进程注入、持久化、文件落地和网络通信行为。根据日志判断是否存在凭据访问、横向移动或权限边界突破。清除持久化项,恢复系统配置,并验证修复结果。二、样本接收与证据固定不要直接双击告警文件。先在隔离存储中复制样本,计算哈希,并记录采集时间、主机名、文件路径和原始权限。若样本来自正在运行的主机,优先保留原文件和进程内存,后续只对副本进行静态分析。mkdir C:\IR\case-20250301 copy C:\Users\Public\AppData\Local\Temp\update.exe C:\IR\case-20250301\update.exe Get-FileHash C:\IR\case-20250301\update.exe -Algorithm SHA256 Get-AuthenticodeSignature C:\IR\case-20250301\update.exe | Format-List * Get-Item C:\IR\case-20250301\update.exe | Select-Object FullName,Length,CreationTimeUtc,LastWriteTimeUtc重点记录签名状态。未签名并不等于恶意,但“临时目录落地、无可信签名、文件名伪装成更新程序”通常应提高告警等级。哈希应写入工单和隔离环境白名单,避免后续重复分析造成证据混淆。三、静态分析:先判断是否存在远控组件特征初步分析可使用 PE-bear、Detect It Easy、Ghidra 或 capa 等工具。关注以下指标:PE 架构、入口点、节区权限和节区熵。可写可执行节区、异常节区名或高熵节区,可能表示打包、加密配置或运行时解密。导入表中的 VirtualAlloc、VirtualProtect、CreateRemoteThread、WriteProcessMemory、WinHttpOpen、InternetOpenA、WSAStartup 等函数。资源节、版本信息、调试路径和编译时间。编译时间只能作为弱证据,不能单独用于归因。字符串中的域名、IP、URI 路径、互斥体名称、注册表路径、服务名以及命令解释器调用。对字符串结果要区分“配置数据”和“普通库字符串”。如果样本运行时才解密配置,静态字符串为空并不能排除远控能力。可在隔离环境中使用 API Monitor、x64dbg 或 Procmon 观察解密后的文件、注册表和网络行为,但不要连接真实 C2 地址。四、进程树与权限边界定位在受影响主机上,应先确认当前进程、父进程、令牌完整性级别和命令行。以下命令用于快速采集,不会主动执行样本:Get-CimInstance Win32_Process | Where-Object { $_.Name -match 'update|powershell|rundll32|regsvr32|mshta' } | Select-Object ProcessId,ParentProcessId,Name,ExecutablePath,CommandLine Get-Process -Id 4120 | Select-Object Id,ProcessName,Path,StartTime whoami /all netstat -ano | findstr ESTABLISHED重点检查以下异常组合:Office、浏览器或 PDF 阅读器直接派生 PowerShell、rundll32.exe、regsvr32.exe 或未知用户程序。低权限用户进程连接到高权限服务,或样本尝试打开其他用户、系统进程的写入权限。进程路径位于 %TEMP%、%APPDATA%、Public 等用户可写目录,而文件名伪装成系统更新组件。网络连接对应的 PID 与样本进程一致,且连接在进程启动后短时间内建立。如果发现疑似进程注入,不要立即终止进程后再取证。应先记录 PID、句柄关系、网络连接和内存镜像。终止操作可能丢失解密后的配置、C2 地址及注入线程信息。五、网络通信与 C2 特征确认远控木马常见通信方式包括固定 IP、域名解析后连接、HTTP(S) 长轮询、WebSocket、DNS 隧道或自定义 TCP 协议。分析时应结合 DNS、代理、终端和防火墙日志,而不是仅凭某个域名判断恶意。在终端侧可以通过 PID 关联连接:$pid = 4120 Get-NetTCPConnection -OwningProcess $pid | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,CreationTime Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational';Id=22} -MaxEvents 50 | Format-List TimeCreated,Message Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational';Id=3} -MaxEvents 50 | Format-List TimeCreated,MessageSysmon 事件 3 可用于关联网络连接,事件 22 可用于关联 DNS 查询。若环境启用了 Sysmon,建议同时检查事件 1(进程创建)、7(映像加载)、8(远程线程创建)、10(进程访问)、11(文件创建)和 13(注册表值修改)。未启用相关事件时,应在后续基线建设中补充,但不要为了取证临时大范围修改生产策略。如果样本通过 HTTPS 通信,网络侧通常只能看到目标 IP、SNI、证书和流量时间序列。可使用代理日志、TLS 指纹、域名首次出现时间和终端进程关联进行判断。不要在生产环境对未知样本进行中间人解密,除非已有明确授权、密钥托管和隐私审批。六、持久化排查远控样本常见持久化位置包括当前用户和计算机级 Run 键、计划任务、服务、启动目录、WMI 永久事件订阅、浏览器扩展以及登录脚本。建议先导出再删除,保留原始值和执行者信息。reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run schtasks /query /fo LIST /v Get-CimInstance Win32_Service | Where-Object { $_.PathName -match 'AppData|Temp|Users|Public' } | Select-Object Name,StartMode,State,StartName,PathName Get-ChildItem $env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup -Force Get-ChildItem C:\Windows\System32\Tasks -Force | Select-Object FullName,LastWriteTime发现异常项后,不要只删除落地文件。应同时核查其创建时间、写入进程、任务作者、服务账户和启动参数。例如计划任务执行 powershell.exe -WindowStyle Hidden -EncodedCommand ...,应还原命令行来源并检查其调用的脚本、下载地址和相关日志。对于 WMI 永久事件订阅,可使用授权的取证工具或 PowerShell 查询 __EventFilter、CommandLineEventConsumer 和 __FilterToConsumerBinding 对象。七、有限规则匹配与样本初筛YARA 适合对隔离样本目录进行初筛,不能替代行为分析。规则应尽量组合 PE 结构、API 特征和组织内已确认的稳定字符串,避免只匹配文件名。rule Suspicious_RAT_PE_Triage { meta: purpose = "authorized triage only" scope = "isolated sample repository" strings: $mz = { 4D 5A } $api1 = "CreateRemoteThread" ascii wide nocase $api2 = "WriteProcessMemory" ascii wide nocase $net1 = "WinHttpOpen" ascii wide nocase $net2 = "InternetOpenA" ascii wide nocase condition: uint16(0) == 0x5A4D and 2 of ($api*) and 1 of ($net*) }规则命中只能说明样本具备可疑能力,不能直接证明其完成了进程注入或建立 C2。对于加壳样本,建议先在隔离环境中记录解包后的内存映像,再对内存映像进行二次匹配。八、日志留痕与处置验证处置顺序建议为:隔离终端网络、固定证据、确认持久化、停止相关任务或服务、删除样本及副本、重置受影响凭据、恢复安全策略,最后解除隔离。若样本以管理员或 SYSTEM 权限运行,应按凭据可能泄露处理,包括登录用户、浏览器会话、令牌和本地服务账户。修复后至少验证以下内容:原样本哈希不再出现在终端文件系统和软件分发目录中。异常计划任务、服务、Run 键和 WMI 订阅已清除,且没有新的同类启动项。终端不再向历史目标域名、IP 或异常端口发起连接。EDR、Sysmon、Windows 安全日志和代理日志能够关联进程、用户、命令行和网络连接。相关账户已完成密码或令牌轮换,且没有新增本地管理员、远程桌面用户或计划任务账户。如果日志显示样本曾访问 LSASS、浏览器凭据目录、共享目录或域控相关服务,应扩大事件范围,按凭据泄露和横向移动进行调查,而不是仅把文件删除视为完成处置。九、风险与修复建议使用应用控制或 WDAC、AppLocker 限制用户可写目录执行文件,并对 PowerShell 开启脚本块日志、模块日志和受约束语言模式。通过 Sysmon 或 EDR 记录进程创建、网络连接、远程线程、进程访问、文件创建和注册表修改事件,统一转发到集中日志平台。限制办公终端直接访问互联网,仅允许经代理访问必要目标;对新注册域名、动态 DNS 和异常 TLS 指纹设置告警。对普通用户移除本地管理员权限,限制服务账户登录交互式会话,减少远控样本利用权限边界扩大的机会。建立“样本哈希—进程树—网络连接—持久化项—账户活动”的关联查询,而不是只依赖单个杀毒引擎结论。总结逆向木马远控分析的关键,是把静态特征与主机行为、网络连接和权限边界串起来。一个可疑文件只有在确认其执行链路、持久化方式、通信目标和实际权限后,才能判断影响范围。授权环境中应优先保护证据,避免直接运行未知样本;处置阶段则要同时清理启动链路、轮换凭据并验证日志闭环,防止木马主体删除后仍通过计划任务、服务或账户权限再次恢复。 逆向分析、样本行为与调试流程示意 服务器、云资产与权限边界梳理示意
12小时前12小时 这类 RAT 取证建议先把“样本授权”和“行为证据”分开记录,否则后面很容易只剩一份可疑文件,无法说明它做了什么。 样本接收时至少记录来源、时间、原始文件名、SHA-256、存储介质和操作人员,并对原文件只读保存: Get-FileHash .\sample.exe -Algorithm SHA256 Get-Item .\sample.exe | Format-List Name,Length,CreationTime,LastWriteTime sigcheck64.exe -nobanner -a -h -i .\sample.exe 动态分析不要直接联网。建议使用快照后的隔离虚拟机,准备一台受控 DNS/HTTP 模拟服务,先观察样本启动前后的差异。Procmon 可以重点过滤: Process Name is sample.exe Operation is RegSetValue Operation is CreateFile Operation is CreateProcess Operation is TCP Connect 持久化不要只查“启动项”。Windows RAT 常见落点包括 Run/RunOnce、计划任务、服务、WMI 永久事件订阅、Startup 目录,以及用户目录下伪装成更新程序的可执行文件。可以先导出现场状态: reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /s reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /s schtasks /query /fo LIST /v sc.exe query type= service state= all Get-CimInstance -Namespace root\subscription -Class __EventFilter Get-CimInstance -Namespace root\subscription -Class CommandLineEventConsumer Get-CimInstance Win32_StartupCommand | Format-List * 排查结果最好关联到进程树和时间线。例如样本落地后创建了某个计划任务,再由任务启动同目录文件,这比单独贴一条注册表记录更有证明力。事件日志可重点看 4688(进程创建)、7045(新服务)、4698(计划任务);如果环境启用了 Sysmon,则关注 1、3、11、12/13、22 事件。 通信定位建议同时从进程和域名两侧入手,不要只依赖 netstat 的瞬时结果: Get-NetTCPConnection | Sort-Object OwningProcess | Select-Object State,LocalAddress,LocalPort,RemoteAddress,RemotePort,OwningProcess Get-Process -Id <PID> | Select-Object Id,Path,StartTime Resolve-DnsName <可疑域名> netsh trace start capture=yes report=yes tracefile=C:\Temp\rat.etl 抓包时重点确认 DNS、首次连接时间、SNI/Host、固定心跳间隔、加密前后的包长模式和断线重连规律。即使 TLS 无法解密,周期性连接、固定 URI、异常 User-Agent 以及与样本进程 PID 的时间对应关系,通常也足够支撑通信归因。建议把 PCAP、进程树、落地文件哈希、持久化位置和事件日志时间统一到同一时间线,最后再下结论。
创建帐户或登录后发表意见