发布于1小时前1小时 背景在一次已授权的内网攻防复盘中,终端检测平台发现一台 Windows 服务器周期性访问境外 VPS。连接每 60 秒出现一次,目标端口为 443,但流量不符合正常 TLS 握手特征。主机上没有对应业务,也没有计划任务变更记录。这类事件不能只按“封禁 IP、删除文件”处理。远控木马通常同时具备持久化、进程注入、配置加密和备用通信地址。本文以防守侧逆向流程为主线,说明如何在隔离环境中确认载荷行为、提取远控配置,并结合日志验证影响范围。所有操作应限定在授权环境和隔离分析网络中。问题定位:先固定证据,再处理主机发现异常外联后,优先隔离网络,不要立即结束进程或删除样本。结束进程会丢失解密后的配置、注入代码和套接字信息,直接删除文件则可能破坏时间线。记录主机名、登录用户、IP、EDR 告警时间和目标地址。保存进程树、网络连接、服务、计划任务和自启动项。采集可疑文件、内存镜像及相关 Windows 事件日志。对证据计算 SHA-256,并记录采集时间和工具版本。$case = "C:\IR\case-2025-01" New-Item -ItemType Directory -Force $case | Out-Null Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,Name,ExecutablePath,CommandLine | Export-Csv "$case\process.csv" -NoTypeInformation -Encoding UTF8 Get-NetTCPConnection | Select-Object LocalAddress,LocalPort,RemoteAddress,RemotePort,State,OwningProcess | Export-Csv "$case\network.csv" -NoTypeInformation -Encoding UTF8 Get-ScheduledTask | Select-Object TaskPath,TaskName,State | Export-Csv "$case\tasks.csv" -NoTypeInformation -Encoding UTF8 Get-CimInstance Win32_Service | Select-Object Name,State,StartMode,PathName | Export-Csv "$case\services.csv" -NoTypeInformation -Encoding UTF8 reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /s > "$case\run-hkcu.txt" reg.exe query "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /s > "$case\run-hklm.txt" wevtutil epl System "$case\System.evtx" wevtutil epl Security "$case\Security.evtx" wevtutil epl Microsoft-Windows-Sysmon/Operational "$case\Sysmon.evtx" Get-FileHash "C:\ProgramData\WinUpdate\update.exe" -Algorithm SHA256 | Format-List | Out-File "$case\sample.sha256"采集动作本身会改变访问时间和部分日志。条件允许时,应由 EDR 远程取证或可信应急介质执行,并同步记录操作日志。技术分析:从静态特征判断样本结构先在隔离虚拟机中完成基础静态分析。不要双击运行样本,也不要把样本上传到非授权的公共分析平台,因为样本可能包含企业域名、内网地址或受保护数据。第一步检查 PE 头、节区、导入表和数字签名。远控载荷常见异常包括:节区熵值较高、入口点落在非常规节区、导入函数很少、存在可写可执行节区,或者签名存在但校验失败。# Linux 分析机示例 sha256sum update.exe file update.exe python3 -m pefile update.exe strings -a -n 6 update.exe | head -n 200 floss update.exe > floss-strings.txt # 检查签名与基本元数据(Windows Sysinternals) sigcheck64.exe -a -h -i update.exe如果导入表只保留 LoadLibrary、GetProcAddress、VirtualAlloc 一类函数,同时字符串很少,通常意味着 API 动态解析或加壳。此时不要仅依据杀毒名称判断家族,应继续确认入口点解包逻辑和最终落地模块。观察点可能含义验证方法高熵节区压缩、加密或封装资源比较节区熵、入口点和内存映射RWX 内存解包代码或注入载荷调试器内存映射、EDR 内存事件动态解析 API隐藏网络、注入相关导入跟踪 GetProcAddress 返回值固定周期外联心跳或任务轮询抓包并计算连接时间间隔伪装系统路径持久化及可信名称滥用核对签名、父进程和真实安装来源动态分析:定位解包、配置和远控通信动态分析环境应关闭共享剪贴板、共享目录和宿主机网络桥接。网络侧可以使用 INetSim 或 FakeNet-NG 模拟 DNS、HTTP 和 TCP 服务,避免样本连接真实控制端。使用 x64dbg 或 WinDbg 时,可以重点观察 VirtualAlloc、VirtualProtect、WriteProcessMemory、CreateRemoteThread、WinHttpConnect、InternetConnect 和 connect。若样本先申请可写内存,写入大量数据,再改成可执行权限,应在权限切换后转储该区域,而不是只分析磁盘上的壳。# WinDbg 示例:记录常见内存与网络 API 调用 bp kernel32!VirtualAlloc bp kernel32!VirtualProtect bp kernel32!WriteProcessMemory bp kernel32!CreateRemoteThread bp ws2_32!connect bp winhttp!WinHttpConnect g # PowerShell 查看进程加载模块与连接归属 Get-Process -Id 4120 -Module | Select-Object ModuleName,FileName,FileVersionInfo Get-NetTCPConnection -OwningProcess 4120配置提取通常有三个切入点:在资源段或高熵数据段中搜索加密块,跟踪其交叉引用。在网络连接函数前回溯参数构造过程,识别域名、端口、URI 和客户端标识。在解密函数返回后转储缓冲区,避免先完整还原自定义加密算法。例如,在 connect 调用前观察 sockaddr 结构,可以直接得到目标 IP 和端口;若使用 WinHTTP,则检查 WinHttpConnect 的服务器名称和端口参数。对于多组备用地址,应全部提取,不能只封禁告警中出现的单个 IP。内存取证:确认注入和真实执行载荷远控木马常把最终载荷注入 explorer.exe、svchost.exe 或浏览器进程。仅查看磁盘样本会遗漏内存中的实际模块。获得内存镜像后,可以使用 Volatility 3 对比进程、网络和可执行内存区域。python3 vol.py -f host.raw windows.info python3 vol.py -f host.raw windows.pslist python3 vol.py -f host.raw windows.pstree python3 vol.py -f host.raw windows.cmdline python3 vol.py -f host.raw windows.netscan python3 vol.py -f host.raw windows.malfind python3 vol.py -f host.raw windows.dlllist --pid 4120 python3 vol.py -f host.raw windows.handles --pid 4120分析时重点关注:父子进程关系是否符合正常启动路径,例如 Office 进程启动脚本解释器或 rundll32。进程映像路径与进程名称是否匹配,是否存在从用户可写目录启动的“系统进程”。私有内存中是否存在 MZ/PE 头、可执行权限或明显代码段。网络连接所属 PID 是否与磁盘上的合法程序不一致。线程起始地址是否落在未映射模块的私有内存区域。malfind 命中不等于恶意,浏览器和 JIT 运行时也会产生可执行私有内存。应结合线程起点、区域内容、进程签名和网络行为交叉判断。日志还原:验证持久化与横向影响逆向结果需要回到日志中验证。例如样本中出现服务安装、计划任务和 PowerShell 下载能力,应在 Sysmon、Security 和任务计划日志中寻找对应证据。Sysmon 事件 1:进程创建和完整命令行。Sysmon 事件 3:网络连接,需预先启用。Sysmon 事件 7:模块加载,建议针对高风险目录过滤采集。Sysmon 事件 10:进程访问,可辅助识别注入行为。Sysmon 事件 11:文件创建。Sysmon 事件 12、13、14:注册表对象和值变更。System 7045:新服务安装。Security 4698:计划任务创建。PowerShell 4104:脚本块日志。# 查询新服务、计划任务和 PowerShell 脚本块 Get-WinEvent -FilterHashtable @{LogName='System'; Id=7045} | Select-Object TimeCreated,Id,Message Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4698} | Select-Object TimeCreated,Id,Message Get-WinEvent -FilterHashtable @{ LogName='Microsoft-Windows-PowerShell/Operational'; Id=4104 } | Select-Object TimeCreated,Message # 在 Sysmon 中围绕样本路径查询事件 Get-WinEvent -LogName 'Microsoft-Windows-Sysmon/Operational' | Where-Object { $_.Message -match 'ProgramData\\WinUpdate|update\.exe' } | Select-Object TimeCreated,Id,Message如果远控样本具备凭据访问或横向执行能力,还应检查 4624、4625、4648、4672、4688,以及目标主机上的 7045、4698。时间线要统一时区,并同时记录首次落地、首次执行、首次外联、持久化建立和账号活动。检测规则与关键配置检测不宜只依赖文件哈希和 IP。哈希容易变化,控制端也可能快速迁移。更稳定的规则应组合路径、父进程、签名状态、持久化位置和网络周期。title: Suspicious Executable Persistence From User Writable Directory status: experimental logsource: product: windows category: process_creation detection: path: Image|contains: - '\\AppData\\' - '\\ProgramData\\' - '\\Users\\Public\\' parent: ParentImage|endswith: - '\\schtasks.exe' - '\\services.exe' - '\\wscript.exe' suspicious_name: Image|endswith: - '\\svchost.exe' - '\\winupdate.exe' - '\\runtimebroker.exe' condition: path and (parent or suspicious_name) falsepositives: - Legitimate enterprise software installed under ProgramData level: high该规则必须结合资产基线调优。ProgramData 并非天然恶意目录,应补充签名验证、软件分发记录和父进程白名单,避免直接用于自动阻断。风险处置与修复建议隔离而非断电:优先通过 EDR 网络隔离保留主机运行状态;只有确认存在持续破坏或数据外传时才升级处置。清理完整持久化链:同时检查服务、任务计划、Run 键、WMI 永久事件订阅、启动目录和侧加载目录。轮换受影响凭据:包括交互登录账号、服务账号、浏览器保存凭据、API 密钥和已登录会话令牌。轮换应在可信终端完成。控制权限边界:移除本地管理员冗余授权,限制服务账号交互登录,启用 Windows Defender Credential Guard,并使用 LAPS 管理本地管理员密码。补齐日志:启用进程命令行审计、PowerShell 脚本块日志和合理裁剪后的 Sysmon 规则,保证日志集中传输,避免主机失陷后被一并删除。重建高风险主机:若已确认内核级组件、凭据全面暴露或无法证明清理完整,应从可信镜像重建,而不是继续手工删除文件。扩大排查范围:根据域名、证书、URI、互斥体、服务名、计划任务名和行为特征检索全网,不要只使用单一样本哈希。总结远控木马分析的核心不是给样本贴家族标签,而是回答四个问题:它如何进入、如何维持、如何通信、获得了什么权限。有效流程应把磁盘静态分析、隔离动态调试、内存取证和日志时间线结合起来。处置时既要保留证据,也要覆盖备用控制端、注入进程、持久化项和已暴露凭据,最后将逆向得到的稳定行为转化为可持续的检测规则。 服务器、云资产与权限边界梳理示意 逆向分析、样本行为与调试流程示意
创建帐户或登录后发表意见