1. 从告警到流量包APT攻击的初始线索那天下午3点27分安全运营中心的告警大屏突然亮起红灯。SIEM系统弹出一条高危告警内网FTP服务器检测到异常登录行为。作为值班分析师我立即调取了相关流量包一个名为capture.pcap的文件。打开Wireshark扑面而来的是3万多条数据记录。面对这种量级的数据我通常会先做三件事统计协议分布通过Statistics Protocol Hierarchy查看各协议占比筛选异常端口用tcp.port not in {21,80,443,3389}过滤非常用端口定位时间窗口根据告警时间前后5分钟做初步时间筛选# 快速统计HTTP请求方法分布 tshark -r capture.pcap -Y http -T fields -e http.request.method | sort | uniq -c在FTP流量中我发现攻击者使用USER admin和PASS Root123完成了认证。这个弱密码组合让我眉头一皱——这明显是暴力破解的结果。更可疑的是成功登录后立即出现了STOR shell.php的上传操作。2. 穿透Web防线攻击者的横向移动顺着FTP线索我将注意力转向HTTP流量。使用过滤器http contains POST后几个可疑请求浮出水面对/file.php的POST请求携带了eval参数请求头中的User-Agent显示为Rebeyond v1.0响应体中包含status:c3VjY2Vzcwbase64解码为success# 提取Web请求中的关键字段 from pyshark import FileCapture pcap FileCapture(capture.pcap, display_filterhttp) for pkt in pcap: if hasattr(pkt.http, request_method): print(f{pkt.http.request_method} {pkt.http.host}{pkt.http.request_uri})通过追踪TCP流我复原了攻击者的操作链条通过FTP上传WebShell访问/shell.php建立持久化后门使用cmdwhoami等参数执行系统命令最终通过certutil下载第二阶段载荷3. 恶意程序拆解隐藏在流量中的木马在分析到第21号TCP流时一段异常的Base64编码引起了我的注意。解码后出现如下PHP代码片段function encrypt($data,$key) { if(!extension_loaded(openssl)) { for($i0;$istrlen($data);$i) { $data[$i] $data[$i]^$key[$i115]; } return $data; } else { return openssl_encrypt($data, AES128, $key); } }这段代码展示了攻击者使用的两种加密方式当OpenSSL不可用时采用逐字节异或加密优先使用AES-128加密通信内容通过动态调试我提取出关键解密密钥e45e329feb5d925b。用这个密钥解密后续流量后攻击者的C2Command and Control服务器地址终于浮出水面185.xx.xx.xx:443。4. 攻击链重建从入侵到控制的完整路径将各个阶段的发现串联起来完整的攻击时间线逐渐清晰4.1 初始入侵阶段T0:00暴力破解FTP服务admin/Root123T2:17上传WebShell文件shell.phpT4:33通过HTTP POST执行探测命令4.2 权限提升阶段T6:45下载PowerShell脚本到内存执行T9:12转储LSASS进程获取域凭证T12:08创建计划任务实现持久化4.3 横向移动阶段T18:22通过SMB协议扫描内网T25:41利用永恒之蓝漏洞攻击文件服务器T31:56在DC上创建黄金票据通过分析注册表修改记录和WMI事件日志我发现攻击者还做了以下操作禁用Windows Defender实时监控修改防火墙规则放行445端口清除系统日志和Web访问日志5. 防御建议基于攻击手法的防护策略针对此次攻击中暴露的薄弱环节我总结了几个关键改进点网络层防护部署FTP流量解密设备实时检测暴力破解行为对出向443端口流量实施SSL拦截检测在内网核心交换机启用NetFlow/sFlow监控# Suricata规则示例检测WebShell活动 alert http any any - any any (msg:疑似WebShell活动; content:eval; nocase; content:base64_decode; distance:0; classtype:web-application-attack; sid:1000001; rev:1;)主机层加固对关键服务器实施应用白名单策略定期轮换服务账户密码启用LSASS保护EnableLSAProtection日志增强将Windows事件日志提高到Verbose级别收集PowerShell脚本块日志Script Block Logging部署ELK Stack集中分析日志在复盘过程中最让我后怕的是攻击者从初始入侵到获取域管理员权限全程只用了不到36分钟。这提醒我们现代APT攻击已经进入分钟级突破的时代传统的日级响应机制必须升级为实时对抗体系。
从流量包到攻击链:一次APT攻击的深度取证WriteUp
1. 从告警到流量包APT攻击的初始线索那天下午3点27分安全运营中心的告警大屏突然亮起红灯。SIEM系统弹出一条高危告警内网FTP服务器检测到异常登录行为。作为值班分析师我立即调取了相关流量包一个名为capture.pcap的文件。打开Wireshark扑面而来的是3万多条数据记录。面对这种量级的数据我通常会先做三件事统计协议分布通过Statistics Protocol Hierarchy查看各协议占比筛选异常端口用tcp.port not in {21,80,443,3389}过滤非常用端口定位时间窗口根据告警时间前后5分钟做初步时间筛选# 快速统计HTTP请求方法分布 tshark -r capture.pcap -Y http -T fields -e http.request.method | sort | uniq -c在FTP流量中我发现攻击者使用USER admin和PASS Root123完成了认证。这个弱密码组合让我眉头一皱——这明显是暴力破解的结果。更可疑的是成功登录后立即出现了STOR shell.php的上传操作。2. 穿透Web防线攻击者的横向移动顺着FTP线索我将注意力转向HTTP流量。使用过滤器http contains POST后几个可疑请求浮出水面对/file.php的POST请求携带了eval参数请求头中的User-Agent显示为Rebeyond v1.0响应体中包含status:c3VjY2Vzcwbase64解码为success# 提取Web请求中的关键字段 from pyshark import FileCapture pcap FileCapture(capture.pcap, display_filterhttp) for pkt in pcap: if hasattr(pkt.http, request_method): print(f{pkt.http.request_method} {pkt.http.host}{pkt.http.request_uri})通过追踪TCP流我复原了攻击者的操作链条通过FTP上传WebShell访问/shell.php建立持久化后门使用cmdwhoami等参数执行系统命令最终通过certutil下载第二阶段载荷3. 恶意程序拆解隐藏在流量中的木马在分析到第21号TCP流时一段异常的Base64编码引起了我的注意。解码后出现如下PHP代码片段function encrypt($data,$key) { if(!extension_loaded(openssl)) { for($i0;$istrlen($data);$i) { $data[$i] $data[$i]^$key[$i115]; } return $data; } else { return openssl_encrypt($data, AES128, $key); } }这段代码展示了攻击者使用的两种加密方式当OpenSSL不可用时采用逐字节异或加密优先使用AES-128加密通信内容通过动态调试我提取出关键解密密钥e45e329feb5d925b。用这个密钥解密后续流量后攻击者的C2Command and Control服务器地址终于浮出水面185.xx.xx.xx:443。4. 攻击链重建从入侵到控制的完整路径将各个阶段的发现串联起来完整的攻击时间线逐渐清晰4.1 初始入侵阶段T0:00暴力破解FTP服务admin/Root123T2:17上传WebShell文件shell.phpT4:33通过HTTP POST执行探测命令4.2 权限提升阶段T6:45下载PowerShell脚本到内存执行T9:12转储LSASS进程获取域凭证T12:08创建计划任务实现持久化4.3 横向移动阶段T18:22通过SMB协议扫描内网T25:41利用永恒之蓝漏洞攻击文件服务器T31:56在DC上创建黄金票据通过分析注册表修改记录和WMI事件日志我发现攻击者还做了以下操作禁用Windows Defender实时监控修改防火墙规则放行445端口清除系统日志和Web访问日志5. 防御建议基于攻击手法的防护策略针对此次攻击中暴露的薄弱环节我总结了几个关键改进点网络层防护部署FTP流量解密设备实时检测暴力破解行为对出向443端口流量实施SSL拦截检测在内网核心交换机启用NetFlow/sFlow监控# Suricata规则示例检测WebShell活动 alert http any any - any any (msg:疑似WebShell活动; content:eval; nocase; content:base64_decode; distance:0; classtype:web-application-attack; sid:1000001; rev:1;)主机层加固对关键服务器实施应用白名单策略定期轮换服务账户密码启用LSASS保护EnableLSAProtection日志增强将Windows事件日志提高到Verbose级别收集PowerShell脚本块日志Script Block Logging部署ELK Stack集中分析日志在复盘过程中最让我后怕的是攻击者从初始入侵到获取域管理员权限全程只用了不到36分钟。这提醒我们现代APT攻击已经进入分钟级突破的时代传统的日级响应机制必须升级为实时对抗体系。