1. 项目概述:从流量视角看加密WebShell的攻防博弈
在当前的攻防对抗中,WebShell的通信流量加密化已成为主流趋势。像冰蝎4.0和哥斯拉1.6这类新一代的WebShell管理工具,其核心特征就是采用了强加密的通信协议,使得传统的基于特征码(如特定字符串、固定URL路径)的检测手段几乎完全失效。当攻击者成功上传一个加密WebShell后,从网络流量层面看,它与一个正常的HTTPS API请求或加密数据传输几乎没有区别,这给防守方的威胁检测带来了巨大挑战。作为一名长期从事安全运营和应急响应的从业者,我深刻体会到,单纯依赖端点安全产品(EDR/AV)或WAF的规则匹配,在面对这类高级威胁时往往力不从心。我们必须将视线下沉到最基础的网络数据包层面,结合深度包检测(DPI)技术,从看似无序的加密流量中寻找攻击者的蛛丝马迹。
这个实战项目的核心目标,就是构建一套基于Wireshark和Suricata的、针对加密WebShell流量的检测分析能力。Wireshark作为业界标准的网络协议分析器,是我们进行手动深度分析和取证调查的“显微镜”;而Suricata作为高性能的开源网络威胁检测引擎(IDS/IPS),则是我们实现自动化、实时检测的“雷达”。我们将通过分析冰蝎4.0和哥斯拉1.6的通信流量模型,提炼出它们即便在加密状态下也无法完全掩盖的行为特征,并最终将这些特征转化为可操作的Suricata规则。无论你是安全分析师、SOC工程师还是对流量分析感兴趣的研究人员,掌握这套方法,都将使你具备在加密流量中发现高级威胁的关键能力。
2. 核心思路与工具选型:为什么是Wireshark+Suricata?
面对加密流量,很多人的第一反应是“无解”,因为内容不可读。但实际上,加密只是隐藏了载荷(Payload)的内容,通信的元数据(Metadata)和部分行为模式依然暴露在外。我们的检测思路正是基于这一点,从“内容检测”转向“上下文和行为检测”。
2.1 检测思路的转变:从载荷到上下文
传统的WebShell检测关注HTTP请求体或响应体中的特定关键字(如eval、system)。当这些内容被AES、TLS等加密后,此路不通。我们的新思路关注以下几个仍可观测的维度:
- 通信模式:WebShell通常需要频繁、双向地执行命令并返回结果。这可能导致在短时间内产生大量“请求-响应”对,且请求和响应的数据量可能存在特定关联(如一个小指令产生一个大输出)。
- 协议异常:虽然使用HTTP/HTTPS协议,但为了绕过WAF,攻击者可能使用非常规的HTTP方法、畸形的Header,或者将数据藏在Cookie、URL参数等位置,即使这些数据是加密的,其存放位置本身就可疑。
- 密钥交换与心跳特征:像冰蝎这类工具,在建立连接时可能存在一个密钥协商过程。虽然协商内容加密,但固定的协商阶段(如连接建立后的前几个特定长度数据包)可以成为特征。此外,维持连接的心跳包也可能有固定间隔或长度。
- 统计学特征:加密后数据的熵值(随机性程度)、数据包长度分布、传输时间间隔等,可能与正常业务流量存在差异。
2.2 工具选型解析:显微镜与雷达的组合
基于以上思路,我们选择Wireshark和Suricata这套组合拳:
Wireshark(显微镜):用于离线深度分析和特征提取。它的强大之处在于:
- 完整的协议解析:即使流量被TLS加密,它也能清晰展示TCP流、TLS握手过程、证书信息、HTTP请求/响应元数据(如URL、Header、状态码)。
- 强大的过滤和搜索:我们可以基于包长度、时间间隔、特定TCP标志位等进行过滤,快速定位可疑会话。
- 流追踪和重组:能够将一个TCP或HTTP会话的所有数据包重组,方便我们观察完整的通信过程,这是分析行为模式的基础。
- 自定义解析器:在极端情况下,可以为私有协议编写Lua解析器,但这在应对冰蝎、哥斯拉时通常不需要。
Suricata(雷达):用于将我们从Wireshark中分析出的特征,转化为可实时运行的检测规则。它的优势在于:
- 高性能多线程检测:能够处理千兆甚至万兆级别的网络流量。
- 强大的规则语言:支持基于协议、内容(支持十六进制和字符串)、长度、阈值、流量方向等复杂条件的组合判断。
- 应用层协议识别:能准确识别HTTP、TLS、DNS等协议,并提取相关字段,供规则使用。
- 文件提取与日志记录:可以配置从流量中提取文件,并生成结构化的警报日志(EVE JSON格式),便于与SIEM系统集成。
注意:这套方法主要针对网络层面的检测,是纵深防御中重要的一环。它不能替代主机层面的HIDS、日志分析或WAF,而应与它们协同工作。
2.3 环境准备与基础配置
在开始分析前,你需要一个可控的测试环境。
- 靶机:一台安装有Web服务器(如Apache/Nginx + PHP)的虚拟机或容器,并故意上传我们待分析的冰蝎4.0和哥斯拉1.6的WebShell服务端脚本。
- 攻击机:安装冰蝎和哥斯拉客户端的机器,用于生成攻击流量。
- 监控机:安装Wireshark和Suricata的机器。为了方便,可以将监控机设置为网络网关或采用端口镜像(SPAN)的方式捕获靶机的所有流量。在简单测试中,直接在靶机上安装Wireshark抓取
lo(回环)或本机网卡的流量也可行。
Wireshark的安装很简单,从官网下载对应系统版本即可。Suricata的安装建议使用官方文档,对于CentOS/RHEL系可以使用EPEL源,对于Ubuntu/Debian系可以使用官方PPA,以确保版本较新。
安装后,首先配置Suricata以验证其基本功能:
# 检查Suricata版本 suricata --build-info # 测试默认配置 suricata -c /etc/suricata/suricata.yaml -T-T参数会测试配置文件并输出支持的协议和功能,确保没有致命错误。
3. 冰蝎4.0流量深度解析与特征提取
冰蝎4.0默认采用AES加密通信,其Java版本服务端尤为常见。我们的目标是在不解密的情况下,找到其流量的“指纹”。
3.1 通信流程抓取与初步观察
首先,在监控机上启动Wireshark,开始抓包。然后,从攻击机使用冰蝎客户端连接靶机的WebShell。完成几个基本操作,如执行whoami、浏览目录。操作完成后,停止抓包。
在Wireshark中,使用过滤器http或tls快速定位到与靶机IP相关的流量。你会发现,冰蝎4.0的流量看起来就是普通的HTTPS(或HTTP,如果未配置SSL)。关键步骤是追踪TCP流。
- 选中一个疑似冰蝎通信的数据包(通常是靶机Web端口,如443或80)。
- 右键 ->
追踪流->TCP流。 - 这时,Wireshark会打开一个新窗口,显示该TCP连接的所有数据。虽然内容显示为乱码(因为加密),但我们可以观察其结构。
3.2 关键特征分析与识别
通过对多个冰蝎4.0会话的分析,我们可以总结出以下非内容层面的特征:
特征一:固定的HTTP请求头即使载荷加密,冰蝎的HTTP请求头可能包含一些特征。例如,其
User-Agent字段可能为默认值或较旧/不常见的浏览器标识。更重要的是,观察Content-Type。冰蝎可能使用application/octet-stream或text/plain来传输加密数据,而正常的Web应用API更常用application/json或application/x-www-form-urlencoded。特征二:请求与响应的长度关联模式这是非常关键的一点。在冰蝎的通信中,客户端的请求(上传指令)通常是一个较短且长度固定的数据包(例如,经过AES加密并Base64编码后,长度可能稳定在某个值附近)。而服务端的响应(返回命令执行结果)则是长度可变且可能非常大的数据包。你可以通过Wireshark的
长度列观察这一现象。在单个TCP流中,这种“短请求、长响应”的模式如果频繁、规律地出现,就非常可疑。特征三:Base64编码的“痕迹”冰蝎默认会对加密后的二进制数据进行Base64编码,然后放在HTTP Body或Cookie中传输。Base64编码的数据有一个特征:其字符集仅限于
A-Za-z0-9+/=,并且字符串长度通常是4的倍数。虽然我们不能直接检测加密内容,但可以检测HTTP体中是否充满了这种高度规整的Base64字符模式。在Wireshark中,你可以通过查看TCP流窗口底部显示的“流字节”为ASCII码,观察是否大量出现上述字符。特征四:心跳包机制为了维持连接,冰蝎可能会有心跳包。这些心跳包可能表现为:固定时间间隔(如每30秒)出现的、长度非常固定的小数据包(请求和响应都短且固定)。
3.3 基于Wireshark的过滤与验证技巧
在Wireshark中,我们可以使用显示过滤器来验证这些特征:
tcp.stream eq <流编号>:专注于分析某一个会话。http.content_type contains "octet-stream":查找使用非常规Content-Type的HTTP流量。frame.len > 1000 && tcp.dstport == 80:查找发往Web端口的大响应包(需结合上下文判断)。- 观察
统计->对话(Conversations)视图,查看哪些IP对之间在短时间内建立了大量TCP连接并传输了不对称的数据量(客户端发送字节数 << 服务器发送字节数)。
4. 哥斯拉1.6流量模型剖析与差异化特征
哥斯拉是另一款流行的加密WebShell工具,其流量特征与冰蝎有相似之处,但也有明显区别。分析它有助于我们完善检测规则库。
4.1 哥斯拉通信协议特点
哥斯拉同样采用强加密(支持多种加密算法),但其通信模型和载荷封装方式与冰蝎不同。通过抓包分析哥斯拉的流量,你会发现:
特征一:HTTP参数位置哥斯拉更倾向于将加密后的数据放在HTTP请求的
GET参数或POST的表单字段中,参数名可能有一定规律或伪装性。例如,你可能看到像?id=xxxx或data=xxxx这样的参数,其值是一长串Base64字符串。特征二:响应头特征哥斯拉服务端的HTTP响应头有时会包含一些特定的字段或值,或者缺少一些正常Web服务器应有的头信息。例如,
Server头可能被修改或移除,Content-Length头的计算方式可能略显突兀。特征三:连接复用与流模式与冰蝎可能频繁建立短连接不同,哥斯拉可能更倾向于在一个TCP连接上复用多个HTTP请求(HTTP Keep-Alive)。你需要在一个TCP流中看到多个HTTP请求/响应对。每个请求都很短(携带指令),每个响应的长度则取决于命令输出。
特征四:加密算法标识的潜在泄露哥斯拉客户端和服务端在通信时,可能会在最初的几个数据包中协商或传输加密算法、密钥相关的元信息。虽然这些信息也被加密,但数据包的长度和出现的时序可能形成固定模式。例如,连接建立后的第2个和第3个数据包长度总是固定的X字节和Y字节。
4.2 对比分析与综合画像
将冰蝎和哥斯拉的流量放在一起对比,我们可以建立一个更全面的“加密WebShell流量画像”:
| 特征维度 | 冰蝎 4.0 (示例) | 哥斯拉 1.6 (示例) | 正常业务流量 (对比) |
|---|---|---|---|
| HTTP方法 | 主要为POST | GET/POST混合 | 符合RESTful规范,多样 |
| 载荷位置 | HTTP Body 或 Cookie | URL参数 或 POST表单 | JSON Body / Form Data |
| Content-Type | application/octet-stream | application/x-www-form-urlencoded | application/json等 |
| 请求/响应长度比 | 请求短而固定,响应长且变 | 请求短,响应长,均在同一个连接内 | 比例多样,与API功能相关 |
| 连接行为 | 可能频繁新建连接 | 倾向于长连接复用 | 连接生命周期与业务逻辑匹配 |
| User-Agent | 可能为默认或空 | 可能伪装但仍有破绽 | 主流浏览器或SDK标识 |
这个画像告诉我们,不能依赖单一特征,而需要结合多个上下文特征进行综合判断。
5. 构建Suricata检测规则库
基于以上分析,我们可以将特征转化为Suricata规则。Suricata规则的核心结构是:action protocol source destination (rule options)。
5.1 规则语法基础与关键字段
一条检测冰蝎可疑HTTP请求的规则雏形可能是这样的:
alert http $HOME_NET any -> $EXTERNAL_NET any ( \ msg:"ET WEB_SHELL Possible Behinder (冰蝎) Encrypted Traffic - Unusual Content-Type"; \ flow:established,to_server; \ http.content_type; content:"application/octet-stream"; nocase; \ http.user_agent; content:"Mozilla/4.0"; depth:20; \ classtype:trojan-activity; \ sid:20240001; rev:1;)alert: 动作,表示触发警报。http: 协议。$HOME_NET any -> $EXTERNAL_NET any: 流量方向。通常我们需要监控从外部到内部服务器($EXTERNAL_NET -> $HOME_NET)和从内部服务器出站的流量。msg: 警报信息。flow:established,to_server: 只检查已建立连接中流向服务器的流量。http.content_type; content:"...": 匹配HTTP内容类型头。http.user_agent; content:"..."; depth:20: 匹配User-Agent头的前20个字节。classtype: 分类。sid和rev: 规则唯一标识和版本。
5.2 针对冰蝎4.0的核心规则编写
我们可以从多个维度编写规则,形成规则集:
规则1:检测非常规Content-Type与短固定长度请求
alert http $EXTERNAL_NET any -> $HOME_NET any ( \ msg:"ET WEB_SHELL Possible Behinder Traffic - Octet-Stream with Short Request"; \ flow:established,to_server; \ http.content_type; content:"application/octet-stream"; nocase; \ http.request_body; pcre:"/^[A-Za-z0-9+\/=]{100,500}$/"; \ threshold: type threshold, track by_src, count 5, seconds 60; \ classtype:web-application-attack; \ sid:20240002; rev:1;)这条规则结合了application/octet-stream类型和请求体为长度在100到500字符之间的类Base64字符串(通过PCRE正则判断)两个特征。threshold表示在60秒内从同一源IP看到5次此类请求才报警,减少误报。
规则2:检测心跳或固定模式的短包
alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS ( \ msg:"ET WEB_SHELL Suspicious Fixed-Size Small Packet Burst"; \ flow:established; \ dsize:64; \ threshold: type both, track by_src, count 10, seconds 30; \ classtype:suspicious-flood; \ sid:20240003; rev:1;)这条规则检测发往Web端口的、长度恰好为64字节的TCP数据包(dsize:64),并在30秒内达到10次则报警。这个64字节是示例,实际值需要你根据抓包分析确定。
5.3 针对哥斯拉1.6的核心规则编写
规则3:检测URL中包含长Base64参数的可疑GET请求
alert http $EXTERNAL_NET any -> $HOME_NET any ( \ msg:"ET WEB_SHELL Possible Godzilla (哥斯拉) Encrypted Payload in URL"; \ flow:established,to_server; \ http.method; content:"GET"; \ http.uri; pcre:"/\/[^?]*(\?[^=]*=([A-Za-z0-9+\/=]{50,})){1,3}/"; \ classtype:web-application-attack; \ sid:20240004; rev:1;)这条规则检查GET请求的URI中,是否包含1到3个参数,且参数值是长度超过50的类Base64字符串。
规则4:检测POST请求中携带长加密数据的表单
alert http $EXTERNAL_NET any -> $HOME_NET any ( \ msg:"ET WEB_SHELL Possible Godzilla Encrypted Payload in POST Form"; \ flow:established,to_server; \ http.method; content:"POST"; \ http.content_type; content:"application/x-www-form-urlencoded"; nocase; \ http.request_body; pcre:"/^([^=&]*=[A-Za-z0-9+\/=]{50,}&?)+$/"; \ classtype:web-application-attack; \ sid:20240005; rev:1;)这条规则检查application/x-www-form-urlencoded格式的POST请求体,是否由一个或多个key=长Base64值的键值对构成。
5.4 规则优化与误报消除实践
直接使用上述规则可能会产生误报,例如某些文件上传接口也可能使用octet-stream,某些API可能传输Base64编码的图片。因此,优化至关重要:
白名单机制:在Suricata配置中,使用
pass规则为已知的正常业务IP、URL路径放行,让检测规则不处理这些流量。pass http 192.168.1.100 any -> any any (msg:"Whitelist - Normal API"; http.uri; content:"/api/upload"; sid:1000001;)使用
flowbit:flowbit允许规则之间共享状态。例如,可以先设置一条规则检测“可疑的初始化包”,设置一个flowbit。后续的规则只有在flowbit被设置后才检查,实现多步逻辑判断,提高准确性。精细化阈值(Thresholding):如上例所示,利用
threshold关键字,避免因单次匹配或低频访问产生警报,要求在一定时间内达到一定频次。结合目标端口:将规则限制在非标准Web端口(如除了80,443之外的端口),或者针对特定的服务器IP,可以减少大量无关流量的干扰。
6. Suricata部署、调优与联动分析
6.1 部署模式与配置要点
Suricata通常以网桥模式或旁路镜像模式部署。
- 网桥模式:部署在网关位置,直接处理转发流量。性能要求高,配置复杂。
- 旁路镜像模式(推荐用于分析):将核心交换机的流量镜像到Suricata服务器的一个网卡上。此模式不影响业务,是流量分析最常见的部署方式。
关键配置项(/etc/suricata/suricata.yaml):
vars.address-groups: 正确定义HOME_NET(你的内部网络段)和EXTERNAL_NET(!$HOME_NET)。af-packet或pf-ring接口配置:根据你的网卡和模式配置抓包接口,调整buffer-size,cluster-id等参数以优化性能。outputs.eve-log: 启用EVE JSON日志,这是与SIEM(如Elastic Stack)集成的标准格式。default-rule-path和rule-files: 指向你存放自定义规则(如上述冰蝎、哥斯拉规则)的目录和文件。
6.2 性能调优与规则管理
- 规则集:不要启用所有Emerging Threats(ET)或Snort规则,应根据业务需要选择性启用。过多的规则会严重影响性能。
- 多线程:确保
detect-engine部分的cpu-affinity配置正确,让Suricata充分利用多核CPU。 - 测试规则性能:使用
suricata -c suricata.yaml -r <pcap文件>测试规则对历史流量的匹配情况,并使用--engine-analysis参数查看各规则的性能消耗。 - 规则更新:建立自定义规则的版本管理机制。将规则放入单独的
.rules文件(如local-web-shell.rules),并在主配置中引用。
6.3 与Wireshark及SIEM的联动
Suricata产生的警报需要进一步调查,这时Wireshark就派上用场了。
- Suricata的EVE日志中,每条警报都包含时间戳、五元组(源IP、源端口、目的IP、目的端口、协议)以及触发规则的
sid。 - 当收到一条关于可能WebShell的警报时,立即在Wireshark中打开同时段捕获的完整流量文件(或从网络全流量存储系统中提取对应时间段的PCAP)。
- 在Wireshark中使用过滤器,精确匹配警报中的五元组信息,例如:
ip.src == 10.0.0.1 and ip.dst == 192.168.1.100 and tcp.port == 443 - 定位到该流后,进行完整的TCP流追踪,重现整个会话过程。结合我们之前分析的特征(请求/响应模式、包长度、Base64痕迹等),进行人工研判,确认是否为真正的WebShell活动。
- 将研判结果反馈,如果是误报,则优化Suricata规则(如添加白名单、调整阈值);如果是真实攻击,则立即启动应急响应流程。
可以将Suricata的EVE日志接入Elastic Stack(ELK)或Splunk等SIEM平台。通过Kibana或Splunk的仪表板,你可以可视化警报趋势、TOP攻击源、TOP目标等,实现态势感知。
7. 实战演练:从告警到确认的全过程
假设Suricata告警触发了一条sid:20240002(疑似冰蝎)的规则。我们来进行一次完整的调查演练。
7.1 告警信息解读
在SIEM或Suricata日志中,我们看到:
{ "timestamp": "2023-10-27T14:15:30.123456Z", "src_ip": "203.0.113.5", "src_port": 54321, "dest_ip": "192.168.1.50", "dest_port": 443, "proto": "TCP", "alert": { "signature": "ET WEB_SHELL Possible Behinder Traffic - Octet-Stream with Short Request", "signature_id": 20240002, "category": "Web Application Attack" } }7.2 使用Wireshark进行深度调查
- 定位数据包:在Wireshark中,使用过滤器
ip.addr == 192.168.1.50 and ip.addr == 203.0.113.5 and tcp.port == 443,并设置时间范围在告警时间前后几分钟。 - 分析TCP流:找到告警对应的数据包,追踪其TCP流。你可能会看到一个类似如下的模式:
- 客户端 -> 服务器:一个HTTP POST请求,
Content-Type: application/octet-stream,Body长度约350字节,显示为乱码但仔细观察可见Base64字符集。 - 服务器 -> 客户端:一个HTTP 200响应,Body长度约15000字节,同样显示为乱码。
- 在几十秒内,这种“短请求、长响应”的模式重复了数次。
- 客户端 -> 服务器:一个HTTP POST请求,
- 验证特征:
- 检查
User-Agent,可能不是常见的浏览器。 - 统计该TCP流中所有客户端请求包的长度,发现它们非常接近(如348, 352, 349字节)。
- 检查服务器响应包的长度,它们变化很大(从几KB到几十KB)。
- 将TCP流内容以ASCII形式导出,搜索
eval、base64_decode等关键词是徒劳的(因为加密),但可以搜索=号(Base64填充字符)的出现频率,可能会异常高。
- 检查
7.3 行为关联与研判
仅凭一个会话,可能还不足以100%确定。我们需要关联其他信息:
- 检查目标服务器(192.168.1.50):它是否是一个Web服务器?其上是否运行了可能接受文件上传的应用?
- 检查源IP(203.0.113.5):该IP是否来自已知的恶意IP情报库?其历史连接行为如何?
- 查看同一源IP的其他连接:该攻击者是否还尝试连接了其他端口或其他服务器?
- 查看同一目标服务器的其他异常连接:是否有其他IP也以类似模式连接该服务器?
如果以上关联分析都指向恶意行为(如目标服务器是台简单的测试服务器、源IP无业务关联、存在扫描行为等),那么就可以基本确认这是一次冰蝎WebShell的上线或操作行为。
7.4 应急响应建议
一旦确认,应立即:
- 隔离:通过网络ACL或主机防火墙隔离受害服务器(192.168.1.50)。
- 取证:保存完整的PCAP流量、Suricata日志,并在服务器上查找WebShell文件(结合文件修改时间、可疑的PHP/JSP文件等)。
- 清除与加固:清除WebShell,检查并修复漏洞(如文件上传漏洞、命令注入漏洞),修改相关凭证。
- 规则优化:如果本次检测准确,可以考虑将相关特征(如特定的源IP、更精确的包长度范围)加入到Suricata规则中,或降低阈值以提高未来检测的灵敏度。
8. 进阶技巧、局限性与演进思考
8.1 使用JA3/JA3S指纹检测恶意TLS
如果冰蝎或哥斯拉使用HTTPS,我们可以利用TLS握手中的JA3/JA3S指纹进行检测。JA3指纹基于客户端Hello包中的字段生成,可以标识客户端软件。某些恶意软件的TLS实现具有独特的JA3指纹。Suricata可以通过ja3.hash关键字来匹配这些指纹。你需要先获取冰蝎/哥斯拉客户端的JA3指纹(在测试环境中抓取TLS握手包,用在线工具或脚本计算),然后编写规则:
alert tls $EXTERNAL_NET any -> $HOME_NET any ( \ msg:"ET MALWARE Possible Behinder/Godzilla Client JA3 Fingerprint"; \ ja3.hash; content:"a1b2c3d4e5f67890a1b2c3d4e5f67890"; \ classtype:malware-cnc; \ sid:20240006; rev:1;)8.2 机器学习与异常检测的引入
基于规则的检测(Signature-based)有其局限性,无法检测未知变种或高度伪装的流量。可以引入异常检测(Anomaly-based)作为补充:
- 统计模型:为每个服务器建立正常的流量基线(如请求大小分布、响应大小分布、请求速率、访问时间等)。当出现显著偏离基线的行为(如深夜突发大量短连接、响应数据量异常增大)时告警。
- 机器学习:使用无监督学习算法(如Isolation Forest, One-Class SVM)对网络流量的元数据(五元组、包数量、字节数、持续时间等)进行建模,找出“离群点”。这些离群点可能就是加密WebShell或其他恶意活动。
8.3 方法的局限性
必须清醒认识到本方法的局限性:
- 不是银弹:高水平的攻击者可以模拟正常流量的所有元数据特征,使基于上下文和行为的检测失效。
- 加密即王道:如果攻击者使用完全标准的TLS库和证书,且通信行为模仿正常API,仅靠网络流量检测将极其困难。
- 误报与漏报的平衡:过于严格的规则会产生误报,增加运营负担;过于宽松的规则会导致漏报。需要持续调优。
- 需要全流量:旁路检测需要镜像流量,对存储和计算资源有一定要求。
因此,加密WebShell的检测必须是一个多层次、立体化的工程:
- 网络层:本文的Suricata+Wireshark方法。
- 主机层:部署HIDS监控Web目录的文件变化、异常进程链、可疑网络连接。
- 应用层:在Web服务器或应用中间件中植入检测模块,在代码执行前解密或分析请求(如有密钥)。
- 日志层:集中分析Web访问日志、系统日志,寻找异常模式。
将各层告警进行关联分析(SOAR),才能构建起有效的防御体系。网络流量分析作为其中关键且客观的一环,其价值在于能够提供攻击者无法完全抹除的通信证据链,是高级威胁狩猎中不可或缺的能力。