发布于10小时前10小时 背景在一次已授权的内网攻防演练中,终端告警显示某办公主机持续访问固定外网地址,连接周期约 60 秒。EDR 只记录到 rundll32.exe 发起连接,没有给出落地文件来源。此类现象不能仅凭进程名判断:rundll32.exe 可能正常加载控制面板组件,也可能被用于执行恶意 DLL,甚至只是注入后的网络行为宿主。本次分析目标是确认样本是否具备远控能力,定位持久化、进程注入和通信配置,并形成可复核的 IOC、日志线索及修复方案。所有动态操作均应在隔离虚拟机中完成,禁止让未知样本直接访问生产网络或真实互联网。问题定位先围绕进程、文件、网络、持久化四条线固定现场。不要急于结束进程或删除文件,否则容易丢失父子进程关系、内存配置和临时落地物。进程:记录 PID、父进程、命令行、启动时间、签名状态和已加载模块。文件:计算 SHA-256,保留原始路径、创建时间、备用数据流和 Zone.Identifier。网络:确认目标地址、端口、连接周期、DNS 查询以及代理使用情况。持久化:检查 Run 键、计划任务、服务、WMI 永久事件订阅和启动目录。以下 PowerShell 命令适合在管理员终端中进行只读取证。输出目录应位于受控介质,并同步记录系统时间。$Out = "C:\IR\case-2025-01" New-Item -ItemType Directory -Force -Path $Out | Out-Null Get-Date | Out-File "$Out\collection-time.txt" Get-CimInstance Win32_Process | Select-Object ProcessId, ParentProcessId, Name, ExecutablePath, CommandLine, CreationDate | Export-Csv "$Out\processes.csv" -NoTypeInformation -Encoding UTF8 Get-NetTCPConnection | Select-Object State, LocalAddress, LocalPort, RemoteAddress, RemotePort, OwningProcess | Export-Csv "$Out\tcp.csv" -NoTypeInformation -Encoding UTF8 Get-CimInstance Win32_Service | Select-Object Name, State, StartMode, PathName | Export-Csv "$Out\services.csv" -NoTypeInformation -Encoding UTF8 Get-ScheduledTask | Select-Object TaskPath, TaskName, State | Export-Csv "$Out\tasks.csv" -NoTypeInformation -Encoding UTF8 reg.exe query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /s > "$Out\run-hkcu.txt" reg.exe query "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" /s > "$Out\run-hklm.txt" Get-CimInstance -Namespace root\subscription -ClassName __EventFilter | Format-List * | Out-File "$Out\wmi-filters.txt" Get-CimInstance -Namespace root\subscription -ClassName CommandLineEventConsumer | Format-List * | Out-File "$Out\wmi-consumers.txt" Get-FileHash "C:\ProgramData\AudioDriver\audiosrv.dll" -Algorithm SHA256 | Format-List | Out-File "$Out\sample-sha256.txt"静态逆向分析对 DLL 样本先做 PE 结构检查,再进入反编译器。重点不是寻找“木马字符串”,而是还原入口、配置解密、持久化和通信路径。检查 DOS/NT 头、节区权限和熵值。常规编译器很少生成同时具备写入与执行权限的节;高熵节可能是压缩数据,也可能是加密配置,不能单独作为恶意结论。核对导入表。VirtualAlloc、VirtualProtect、WriteProcessMemory、CreateRemoteThread、WinHttpOpen、WinHttpSendRequest 等组合值得继续追踪,但导入函数可能被动态解析。定位 rundll32 对应的导出函数。关注 DllMain 是否只做初始化,以及实际逻辑是否位于导出函数、TLS 回调或新建线程。搜索 URL、User-Agent、互斥体、注册表路径和计划任务名称。若字符串被加密,从使用点反向定位解密循环比盲目扫描更有效。该样本的 .rdata 中没有明文域名,但在 WinHttpConnect 调用前存在逐字节异或循环。进一步追踪发现,密钥由硬编码常量与主机 MachineGuid 的低字节组合生成,因此不同终端的内存配置不同。分析时应同时保留磁盘样本和运行时内存,不能只依赖 strings 输出。识别配置解密函数后,可以为函数参数和结构体手工标注类型。例如配置结构包含 4 字节心跳间隔、2 字节端口、1 字节 TLS 标志以及变长域名。若反编译结果频繁出现错误的数组边界,优先检查结构体对齐、整数宽度和调用约定。动态调试与行为验证动态环境建议使用快照虚拟机、FakeNet-NG 或 INetSim 提供受控 DNS/HTTP 响应,并在宿主侧禁止转发到公网。Procmon 用于观察文件和注册表行为,Wireshark 用于确认协议,x64dbg 用于验证解密和 API 参数。在 WinHttpConnect、WinHttpOpenRequest、WinHttpSendRequest 设置断点,命中后检查服务器名、对象路径、请求头和缓冲区。在 RegSetValueExW、CreateServiceW、CreateProcessW、Task Scheduler COM 调用附近观察持久化参数。若怀疑注入,监控 VirtualAllocEx、WriteProcessMemory、NtMapViewOfSection、SetThreadContext 和 CreateRemoteThread;同时核对目标进程的私有可执行内存页。对 32 位样本在 64 位系统上的注册表访问,要区分 WOW6432Node 重定向,避免漏查持久化键。本例中 rundll32.exe 启动后先创建名为 Global\AudioCacheUpdate 的互斥体,随后将自身复制到 ProgramData 子目录,并创建每 30 分钟执行一次的计划任务。网络侧表现为固定长度 POST 请求,URI 每次变化,但请求体前 8 字节固定。调试确认前 4 字节为版本号,后 4 字节为受害主机标识的 CRC32,而非随机数据。判断远控能力时,应以完整行为链为依据:配置解密、主机信息采集、周期通信、命令分发或模块加载。单独出现网络 API 或自启动项不足以定性。内存与注入检查若网络连接归属于系统程序,需确认是合法模块发起,还是远程线程、进程空洞或反射式加载造成。可使用经过内部审核的 Sysinternals 工具和内存取证工具交叉检查。sigcheck64.exe -accepteula -h -i -m C:\Windows\System32\rundll32.exe listdlls64.exe -accepteula -v rundll32.exe > C:\IR\case-2025-01\rundll32-modules.txt handle64.exe -accepteula -p rundll32.exe > C:\IR\case-2025-01\rundll32-handles.txt vol.py -f memory.raw windows.pslist vol.py -f memory.raw windows.pstree vol.py -f memory.raw windows.netscan vol.py -f memory.raw windows.malfind --pid 4120 vol.py -f memory.raw windows.dlllist --pid 4120malfind 的结果也需要人工复核。JIT、浏览器和安全软件可能产生私有可执行页。更可靠的异常特征包括:内存区域具有 MZ/PE 头但不在模块链表中、页面权限为 RWX、线程入口落在无文件映射区域,以及该区域与异常网络连接处于同一进程。检测规则与日志留痕检测不要只绑定样本哈希。哈希适合封禁单一样本,但样本重新打包后会失效。应组合父子进程、命令行、落地路径、计划任务和网络特征。title: Suspicious Rundll32 DLL From ProgramData status: experimental logsource: category: process_creation product: windows detection: selection_image: Image|endswith: '\rundll32.exe' selection_path: CommandLine|contains: - '\ProgramData\' - '\Users\Public\' - '\AppData\Local\Temp\' selection_dll: CommandLine|contains: '.dll,' condition: selection_image and selection_path and selection_dll falsepositives: - Approved enterprise software updater level: high主机侧建议保留 Security 4688 进程创建事件并启用命令行记录;计划任务重点关注 4698、4702;服务安装关注 7045;PowerShell 关注 4104。部署 Sysmon 时,可结合 Event ID 1、3、7、10、11、13、22 还原进程、网络、模块加载、跨进程访问、文件创建、注册表修改和 DNS 查询链路。对于本例,可将互斥体名称、计划任务名称、DLL 路径、证书信息、通信域名和请求体格式作为分层 IOC。域名与 IP 可能快速更换,固定路径和任务名也可能被随机化,因此检测规则应保留行为条件,并通过环境白名单控制误报。处置与修复建议先隔离终端网络,再采集内存、进程列表、网络连接和样本。若直接重启,内存配置、注入区域及活动会话会丢失。在确认 IOC 覆盖范围后,停止恶意计划任务或服务,终止关联进程,删除持久化项和落地文件。删除前保留哈希、时间戳和访问控制列表。排查样本首次执行来源,包括邮件附件、浏览器下载、共享目录、远程管理工具和软件分发平台。仅清理终端而不修复入口,通常会再次感染。若样本读取过浏览器数据、凭据管理器、LSASS 或域登录令牌,应按凭据泄露事件处理,在可信终端上轮换账号密码、服务账号密钥和会话令牌。限制普通用户对 ProgramData、启动目录和计划任务的异常写入;启用应用控制策略,阻止用户可写目录中的未签名 DLL 被系统工具加载。检查同网段主机是否出现相同 DNS、TLS 指纹、计划任务或父子进程链,并按照首次出现时间构建横向影响范围。修复验证至少包含三轮:重启后确认持久化未恢复;观察一个以上原通信周期,确认无回连;重新运行 EDR 或日志查询,确认同类行为未在其他主机出现。对已发生高权限凭据暴露的主机,优先重装或从可信镜像恢复,不建议仅依赖文件删除。总结逆向木马远控的关键不在于快速给样本贴标签,而是把磁盘文件、内存状态、进程链、持久化和网络协议串成可验证证据链。静态分析负责定位关键函数和配置结构,动态调试负责验证真实参数,日志与内存取证负责确认影响范围。最终产出应同时包含样本哈希、行为 IOC、检测规则、入口修复和凭据处置,才能从单机清理提升为完整的事件闭环。 逆向分析、样本行为与调试流程示意 服务器、云资产与权限边界梳理示意
10小时前10小时 这类样本建议把“分析”和“修复”分开处理:先保全现场,再清除持久化。否则直接删文件,容易丢掉父进程、落地路径和回连目标等关键证据。 静态拆解时,除了字符串和导入表,建议重点核对 PE 时间戳、节区熵、签名状态、TLS Callback,以及是否存在资源段解密或动态解析 API。可先生成基础指纹: Get-FileHash .\sample.exe -Algorithm SHA256 Get-AuthenticodeSignature .\sample.exe | Format-List * sigcheck64.exe -a -h -i -m .\sample.exe strings64.exe -n 6 .\sample.exe > strings.txt 行为定位最好在隔离虚拟机中完成,Procmon 过滤该样本 PID 及其子进程,同时开启进程创建审计。重点观察 Process Create、WriteFile、RegSetValue、计划任务和服务创建;网络侧可用 FakeNet-NG 或 INetSim 接住 DNS、HTTP 和 TLS 请求,不要让样本直接访问公网。若怀疑进程注入,可检查异常的跨进程句柄、私有可执行内存,以及 VirtualAllocEx/WriteProcessMemory/CreateRemoteThread 调用链。 现场主机上可以先导出这些信息,避免只盯着 Run 键: tasklist /v netstat -abno schtasks /query /fo LIST /v sc query type= service state= all reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" wevtutil epl Microsoft-Windows-PowerShell/Operational powershell.evtx wevtutil epl Microsoft-Windows-TaskScheduler/Operational tasks.evtx 还要检查 WMI 永久事件订阅,远控常用它规避常规启动项: Get-CimInstance -Namespace root/subscription -Class __EventFilter Get-CimInstance -Namespace root/subscription -Class CommandLineEventConsumer Get-CimInstance -Namespace root/subscription -Class __FilterToConsumerBinding 修复阶段按“隔离网络 → 终止恶意进程 → 删除持久化 → 隔离落地文件 → 重启复核”的顺序执行,并保留文件哈希、路径、注册表项、任务名、服务名、域名/IP 和首次出现时间。若样本拿到管理员权限、窃取浏览器凭据或修改安全组件,仅删除木马不够,建议重装系统,并在干净设备上轮换密码、撤销登录会话;涉及钱包时还应立即迁移资产并撤销历史授权。 最后可用 Autoruns 和 Defender 离线扫描交叉复核,但不要把“扫描无结果”等同于清理完成。更可靠的验收标准是:持久化项不再出现、原回连目标无新增连接、相关进程链消失,且重启后文件和配置没有被重新生成。
创建帐户或登录后发表意见