
1. 项目概述从端口扫描到流量分析的思维跃迁在安全攻防的日常工作中很多朋友尤其是刚入行的兄弟一提到Webshell检测第一反应可能就是打开Nmap、Masscan对着目标服务器一顿端口扫描试图找出那些“不寻常”的开放端口。或者在Web日志里大海捞针寻找可疑的访问记录。这种方法不能说错但它更像是在“看门”只能知道“门”开没开却不知道“门”后面的人到底在干什么说了什么。端口扫描告诉你22、80、443端口开着但你能分辨出通过443端口HTTPS传输的究竟是正常的网页浏览数据还是一个经过加密伪装的冰蝎Webshell控制指令吗显然不能。这就是我们今天要聊的核心深度流量分析。别再只当个“看门人”了我们要学会当“窃听者”和“翻译官”。而Wireshark就是我们手中最强大的“窃听”与“翻译”工具。它不关心端口是否开放它关心的是流经网卡的所有原始数据包Packet的内容。无论是HTTP明文还是HTTPS密文在特定条件下可解密或是其他任何应用层协议Wireshark都能将其捕获并层层解析让我们得以窥见通信的本质。本次实战我们将聚焦于两款在攻防演练和实际渗透中“出镜率”极高的Webshell管理工具蚁剑AntSword和冰蝎Behinder。它们代表了两种典型流派蚁剑以其丰富的插件生态和相对“直白”的流量特征著称而冰蝎则以其强大的动态加密、流量伪装能力成为防守方眼中的“噩梦”。我们将手把手教你如何利用Wireshark捕获并分析它们的网络流量提炼出那些即便在加密环境下也可能暴露的“行为特征”和“指纹信息”。通过一个完整的实战案例你将不仅学会抓包操作更能理解攻击者的操作逻辑从而在防守端构建起更精准的检测规则。无论你是安全研究员、渗透测试工程师还是运维、安全运营SOC人员掌握这项技能都能让你对网络威胁的感知能力提升一个维度。2. 核心思路为什么传统检测方法会失效在深入实操之前我们必须先搞清楚为什么单纯依赖端口扫描、特征码匹配如Webshell查杀工具甚至一些简单的日志分析在面对蚁剑、尤其是冰蝎时会显得力不从心。理解攻击者的“隐身术”是我们找到其破绽的前提。2.1 蚁剑的流量特征与演变蚁剑早期版本的流量特征比较明显。它通常基于HTTP/HTTPS协议其请求体和响应体往往包含一些易于识别的特征字符串。例如使用默认的base64编码器时其发送的POST数据包中参数名可能是_0xdeadbeef这类看似随机的字符串但解码后其结构相对固定。响应体也常常包含蚁剑特定的成功或错误标识。这些静态特征很容易被部署在网络边界或主机上的WAF、IDS/IPS规则所捕获。然而蚁剑的强大之处在于其插件化和可扩展性。攻击者可以轻松更换编码器、添加自定义HTTP头、甚至使用加密插件来混淆流量。例如使用aes或rsa加密插件后通信内容在网络上传输时就是一段密文传统的基于明文特征匹配的规则立即失效。这时防守方如果还只盯着请求体里有没有eval(或system(这些字符串就完全失去了视野。2.2 冰蝎的“降维打击”动态加密与协议伪装如果说蚁剑的加密是可选的“升级”那么冰蝎从设计之初就将动态加密和流量伪装作为核心能力实现了“降维打击”。其核心机制在于动态密钥协商冰蝎的客户端与服务端即Webshell在初次通信时会通过一个看似正常的HTTP请求如获取一个图片、css文件来交换一个密钥。这个密钥是动态生成的每次连接都可能不同。全程加密通信之后所有的指令和数据传输都使用该密钥进行强加密如AES。你在Wireshark中看到的HTTPS流量外层是网站本身的TLS加密内层是冰蝎自己的应用层加密相当于“双重加密”。流量模仿与伪装冰蝎的通信报文长度、间隔、甚至HTTP头部字段都刻意模仿浏览器与网站的正常交互力求在统计特征上和普通流量无差异。这就导致了一个严峻的现实你无法通过解密HTTPS除非你有服务器私钥来看到冰蝎的明文而即使你解密了HTTPS看到的也只是另一层密文。传统的基于内容特征的检测方法在此完全失灵。防守方面对的是一团看似完全正常实则暗藏玄机的加密数据流。2.3 我们的分析思路跳出“内容”关注“行为”与“元数据”既然内容看不清我们就必须转换视角。攻击者无论如何隐藏其操作目的和产生的网络行为模式是无法完全消除的。我们的分析思路从“内容特征检测”转向“行为特征分析”协议层分析虽然内容是加密的但TCP/IP协议栈的元信息是公开的。例如连接持续时间、数据包大小分布、收发节奏、TCP窗口变化等。应用层元数据分析HTTP/HTTPS请求的URL路径、方法GET/POST、User-Agent、Cookie、Content-Type等头部信息即使内容加密这些头部也可能存在异常或固定模式。交互模式分析一次完整的Webshell操作通常包含“连接测试 - 发送指令 - 返回结果”的多次交互。这种“一问一答”、且应答包通常较大的模式与普通网页浏览一次请求拉取大量静态资源或API调用结构固定存在差异。密钥交换阶段的捕捉这是冰蝎最脆弱的环节。最初的密钥协商请求虽然也经过设计但因其特殊性如特定的URI、参数名可能留下比后续加密通信更多的蛛丝马迹。解密分析针对蚁剑或弱加密配置如果可能例如在测试环境或捕获到弱加密流量直接解密应用层数据进行明文指令分析。Wireshark正是进行上述多层次分析的绝佳平台。它不仅能展示数据包内容更能通过强大的统计工具、过滤器和协议解析器帮助我们勾勒出流量的“行为画像”。3. 实战环境搭建与Wireshark配置要点“工欲善其事必先利其器”。在开始抓包分析前一个贴近真实的实验环境和对Wireshark的正确配置至关重要。这里我们不搞复杂的云服务器就在本地用虚拟机搭建一个简单的靶场。3.1 实验环境搭建我推荐一个最小化、可复现的沙箱环境攻击机Kali Linux虚拟机安装蚁剑、冰蝎客户端。IP:192.168.1.100靶机Windows 10 / Ubuntu虚拟机安装Web服务器IP:192.168.1.200在Web根目录如/var/www/html/或C:\phpstudy\www\上传一个简单的PHP Webshell用于蚁剑和一个JSP Webshell用于冰蝎。蚁剑Webshell示例antsword.php:?php eval($_POST[cmd]);?冰蝎Webshell示例behinder.jsp需从冰蝎官方仓库获取其本质是一个编译后的Java类具有很强的混淆和加密能力。网络模式将两台虚拟机设置为“桥接模式”或连接到同一个“Host-Only”虚拟网络确保它们在同一网段且攻击机可以访问靶机的Web服务。注意所有操作请在授权的测试环境或个人实验环境中进行。在生产环境或未授权的网络中进行抓包和分析可能违反法律或公司政策。3.2 Wireshark关键配置与抓包技巧安装Wireshark后直接抓取所有流量会带来大量噪音。我们需要精准捕获。选择正确的网卡启动Wireshark在接口列表中选择你的虚拟机宿主物理网卡如“Wi-Fi”或“以太网”或者虚拟网卡如“VMware Network Adapter VMnet8”这取决于你的网络拓扑。最简单的方法是看哪个接口在你启动靶机Web服务后有持续的数据包跳动。使用捕获过滤器Capture Filter初步降噪 在开始捕获前在捕获过滤器中输入host 192.168.1.200这样Wireshark只会捕获与靶机IP相关的流量极大减少干扰。这是抓包前最重要的一个步骤。开始捕获并触发流量 点击“开始捕获”按钮。然后从攻击机Kali使用蚁剑和冰蝎分别连接对应的Webshell执行一些典型操作如连接测试查看当前目录ls或dir读取一个文件cat或type执行一个whoami命令停止捕获并保存 操作完成后回到Wireshark点击停止。立即将捕获到的数据包保存为一个文件如webshell_traffic.pcapng以便后续反复分析。3.3 必备的Wireshark显示过滤器Display Filter捕获到的数据包可能仍有不少。Wireshark的显示过滤器是我们从海量数据中提炼黄金信息的神器。以下是一些针对本次分析的必备过滤器http只看HTTP流量冰蝎可能用HTTPS所以这个不总是有效。tls查看TLS/SSL握手及加密数据流信息。ip.addr 192.168.1.100 ip.addr 192.168.1.200精确只看攻击机和靶机之间的对话。tcp.stream eq 编号追踪一个完整的TCP流。在某个数据包上右键 - “追踪流” - “TCP流”Wireshark会自动生成这个过滤器并高亮显示该会话的所有包。这是分析单次交互最常用的功能http.request.uri contains “behinder.jsp”过滤出请求了冰蝎Webshell的流量。http.request.method “POST”Webshell指令大多通过POST传递过滤出POST请求有助于聚焦。掌握这些基础配置和过滤器你就拥有了一个强大的流量显微镜。接下来我们把它对准第一个目标蚁剑。4. 蚁剑流量深度解析与特征提取我们将蚁剑的流量分为“未加密”和“使用加密插件”两种场景来分析。你会发现即使使用了加密其行为模式仍有迹可循。4.1 场景一默认或基础编码下的明文流量分析使用默认的base64编码器连接我们上传的antsword.php。在Wireshark中应用过滤器ip.addr 192.168.1.200 http。连接阶段你会看到一个POST请求发送到/antsword.php。查看其HTTP流右键 - 追踪流 - HTTP流。请求体特征参数可能像_0xabc123Y21k...Y21k是cmd的base64编码。解码后其结构通常为一段序列化的JSON或特定格式的字符串包含了操作类型“action”: “command”、指令“cmd”: “whoami”等信息。即使参数名随机化这种keybase64encoded_value的结构本身就是一个可疑点。响应体特征PHP Webshell执行后返回的数据也会被蚁剑客户端编码。在明文下你可能会在响应中看到命令执行结果同样被包裹在蚁剑特定的包装器中。操作阶段执行ls -la命令。行为模式观察TCP流。这通常是一个简短的POST请求携带指令紧接着一个较大的POST或HTTP响应返回目录列表结果。这种“短请求、长响应”的模式在交互式命令执行中非常典型与上传文件长请求、下载文件多个包的模式不同。内容特征如果未加密响应中可能直接包含drwxr-xr-x这样的Linux目录列表信息这是非常强的直接证据。实操心得对于明文蚁剑防守方可以轻松在WAF或IDS中部署规则检测请求体中是否包含eval(、base64_decode(等PHP危险函数特征即使被base64编码解码后也能看到或者检测响应体中异常的、包含系统信息的输出。4.2 场景二使用AES等加密插件后的流量分析在蚁剑中切换为aes加密插件重新连接。再次抓包分析。直观变化最明显的变化是请求体和响应体变成了一串毫无规律的十六进制字符串人类不可读。传统的基于字符串特征的检测规则立刻失效。行为与元数据特征分析固定结构残留尽管内容加密但HTTP包的基本结构不变。观察发现每次请求的Content-Length长度可能呈现某种规律例如由于加密和填充长度总是某个固定值的倍数。加密后的数据其字节的熵值随机性会非常高这本身也可以作为一个检测点普通表单提交的熵值较低。交互节奏“一问一答”的节奏依然存在。通过统计一段时间内客户端与特定URI/antsword.php的POST请求频率和响应大小可以建立行为基线。如果发现对一个不起眼的PHP文件突然出现了高频、规律的POST交互这本身就是重大异常。URL与头部信息攻击者可能会修改User-Agent来模仿浏览器但Cookie字段可能为空或为固定值。而正常用户的Web访问通常带有丰富的Cookie和Referer等信息。解密尝试如果可能如果在测试环境中你知道蚁剑使用的AES密钥和IV初始化向量理论上可以在Wireshark中解密。Wireshark支持在TLS协议中设置密钥文件来解密HTTPS但对于这种应用层自定义加密需要更复杂的操作或自定义脚本。一个更简单的方法是在靶机上同时运行tcpdump抓包并记录日志将网络流量与Webshell脚本接收到的原始POST数据解密前进行比对分析从而在另一侧获取明文。特征提炼表蚁剑流量即使加密后的可疑点检测维度可疑特征分析说明HTTP请求对非常见、新上传的.php/.jsp文件发起POST请求高可疑起点请求体Content-Type: application/x-www-form-urlencoded但body是长字符串熵值高不像普通表单提交请求体参数名异常如_0x开头长字符串或唯一参数非典型参数命名交互模式固定URI上出现规律性的“短请求-长响应”循环类似命令行交互会话特征会话持续时间长但HTTP请求数相对较少流量突发区别于Web浏览的持续加载客户端行为User-Agent可能为默认或伪造缺乏完整浏览器指纹可结合其他威胁情报通过以上分析我们认识到对于蚁剑防守方需要从简单的“内容匹配”升级到“行为建模”和“元数据关联分析”。接下来我们挑战更大的Boss冰蝎。5. 冰蝎流量解密与深度行为剖析冰蝎的设计使其天生对抗内容检测。我们的分析必须更加深入协议层和行为层。5.1 捕获并观察冰蝎的密钥交换过程这是整个冰蝎通信链中最值得关注的一环。用冰蝎客户端连接behinder.jsp抓取最初的几个数据包。第一次请求GET请求冰蝎客户端会首先发送一个GET请求到Webshell。这个请求看起来可能像在请求一个静态资源。查看这个请求的URI和参数。特征点URI可能包含特定路径或参数如?idxxxx这个id值可能有一定规律。冰蝎的服务端会从这个请求中提取信息用于生成动态密钥。防守方可以将近期新出现的、带有特定参数模式的GET请求列为监控重点。服务端响应服务端会返回一个看似正常的内容如一张图片的二进制数据或一段JavaScript代码。但这段数据中隐藏了密钥协商所需的信息。在Wireshark中你可以看到这个响应的Content-Type可能是image/gif或application/javascript但实际数据可能不符合该格式的正常结构。5.2 分析加密通信阶段的行为特征密钥交换完成后后续所有通信都变为加密的POST请求。流量外观在Wireshark中你看到的是标准的TLS/SSL加密流量如果网站是HTTPS或加密的HTTP数据。除了知道有数据在传输内容完全不可读。转向行为与统计特征分析数据包长度分布使用Wireshark的“统计” - “分组长度”功能。冰蝎的指令通常较短而命令执行结果如dir、type一个大文件可能很长。这可能导致数据包长度分布出现两个峰值一个在较小尺寸区间指令一个在较大尺寸区间结果。这与浏览网页时长度分布更分散的特征不同。请求间隔攻击者的操作是间歇性的。在Wireshark的“统计” - “对话”中查看TCP或HTTP对话观察两个主机之间数据包的收发时间序列。你会看到明显的“静默-突发-静默”模式突发对应一次命令执行。而正常用户浏览网页流量爆发通常发生在页面加载初期随后是长时间的静默阅读时间。TCP窗口与吞吐量冰蝎在传输大文件如上/下载时会试图最大化利用带宽TCP窗口会动态调整呈现高速、稳定的数据传输流。而普通网页浏览的流量则受限于渲染速度更“碎”更“不规则”。5.3 利用Wireshark高级功能进行会话重构与异常检测端点统计与对话矩阵在“统计” - “端点”中找出与靶机IP通信最频繁的少数几个外部IP。在“统计” - “对话”中查看这些IP对之间的流量大小、数据包数量比例。冰蝎连接通常表现为“少量连接但单个连接持续时间长、总数据量可能大”。IO Graphs输入输出图这是一个非常强大的可视化工具。你可以为冰蝎的流量通过IP和端口过滤创建一条曲线同时为靶机的正常Web流量如80端口的其他请求创建另一条曲线进行对比。观察两者的流量模式、速率和并发连接数的差异。专家信息Wireshark的“分析” - “专家信息”会提示网络中的异常如大量的TCP重传、零窗口、重复ACK等。虽然冰蝎本身不直接引起这些但通过它传输大量数据时如果网络条件不佳可能会间接导致这些现象增多。冰蝎流量分析的核心要点放弃解密内容的幻想专注于通信的“节奏”、“体态”和“关系”。就像一个侦探虽然听不清房间里的人在密谋什么但可以通过观察谁频繁进出房间、每次进去多久、出来时带了多大体积的包裹来推断里面正在发生不寻常的事情。6. 实战案例从混杂流量中定位Webshell活动假设你是一名安全运营中心SOC的分析师收到告警称内网一台Web服务器192.168.2.10流量异常。你拿到了一段该服务器出口镜像的流量包suspicious.pcapng。现在我们模拟如何从中揪出潜在的Webshell。步骤一快速概览与过滤用Wireshark打开数据包首先在“统计” - “协议分级”中查看主要协议分布。如果HTTP/HTTPS占比异常高则重点关注。应用显示过滤器ip.src 192.168.2.10 or ip.dst 192.168.2.10将视野聚焦于该服务器。步骤二寻找可疑的HTTP会话在过滤后的视图中查找HTTP请求可输入http过滤但注意会漏掉HTTPS。关注POST请求。在数据包列表栏右键点击表头添加“URI”列。快速浏览URI寻找可疑的、非常见的、或看起来像是随机字符串的文件名如wp-content/uploads/temp/alfj3.php。对可疑的POST请求右键 - “追踪流” - “HTTP流”。观察请求和响应。案例发现A发现一个对/images/logo.png的POST请求。这极其反常因为logo.png是静态图片通常只用GET请求。追踪流发现请求体是乱码响应体也是乱码但很长。这符合冰蝎伪装成静态资源请求的特征。标记此会话。步骤三分析加密HTTPS/TLS流量对于HTTPS流量我们无法直接看内容。使用过滤器tls and (ip.addr 192.168.2.10)。查看TLS握手包Client Hello, Server Hello。注意观察“服务器名称指示SNI”字段看是否访问了可疑域名。但更多信息在加密层之下。转向行为分析选择一个与服务器持续通信的外部IP假设是106.xx.xx.xx。使用过滤器ip.addr 192.168.2.10 and ip.addr 106.xx.xx.xx。统计这个对话的数据包数量、字节数、持续时间。如果发现这个对话的持续时间长达数小时但数据包总数只有几十个且流量呈明显的“请求-响应-静默”的周期性脉冲这非常可疑。绘制这个对话的IO图。你会看到一条平坦的基线上间隔性地出现尖峰。这与交互式Webshell操作的模式高度吻合。步骤四关联分析与结论将步骤二发现的异常HTTP会话伪装成图片的POST和步骤三发现的异常长连接HTTPS会话进行时间关联。发现它们几乎同时开始且源IP相同。检查该源IP106.xx.xx.xx的其他行为。发现其在攻击前还对服务器进行过目录扫描大量404状态的GET请求。综合判断IP106.xx.xx.xx极有可能是攻击者。其先进行扫描发现并上传了Webshell可能是冰蝎然后通过HTTPS长连接进行加密控制。而那个异常的HTTP POST tologo.png很可能是冰蝎的密钥交换请求或另一个蚁剑类的Webshell。通过这个案例你可以看到即使没有解密任何一条有效载荷我们依然通过流量元数据、协议行为、时间序列和关联分析成功地定位了高级威胁的踪迹。这正是深度流量分析的价值所在。7. 构建基于流量的Webshell检测策略与防御思考分析是为了更好的防御。基于以上的分析实践我们可以从防守方角度构建多层递进的检测策略。7.1 网络层检测策略基础特征检测针对低版本或未加密Webshell部署WAF/IDS规则检测HTTP请求体中是否存在已知的Webshell特征码、危险函数如eval,system,assert或特定工具蚁剑、菜刀的静态指纹。对于Base64等编码需要支持解码后检测。检测异常URI访问监控对非常见路径、临时目录、图片目录下的脚本文件.php,.jsp,.aspx的访问特别是POST请求。行为异常检测对抗加密Webshell的关键建立主机流量基线为每台服务器建立正常的流量模型包括访问的URI模式、请求方法比例GET/POST、请求大小分布、响应大小分布、会话持续时间、访问频率等。检测偏离基线行为使用SIEM或网络流量分析NTA工具检测异常。例如对某个URI的POST请求频率突然飙升。出现“短连接、长数据”或“长连接、间歇性突发数据”的异常会话模式。服务器在非工作时间产生大量对外或对内的特定流量。检测密钥交换行为监控那些对静态资源如图片、CSS、JS发起的、携带特定参数的GET请求尤其是新出现的、参数值有规律的请求。加密流量分析ETA虽然不能解密但可以分析TLS握手信息如JA3/JA3S指纹、证书异常、加密套件选择等。攻击者工具使用的TLS库可能与普通浏览器不同会留下指纹。分析加密流量的元特征包长序列、到达时间间隔、流持续时间、字节分布等使用机器学习模型来识别恶意加密流量的“节奏”。7.2 主机层与日志协同Web日志深度分析网络流量分析要结合Web服务器如Nginx、Apache的访问日志和错误日志。网络侧发现的可疑IP和会话时间可以在Web日志中搜索对应的记录查看完整的请求URL、User-Agent等进行交叉验证。文件监控与完整性校验使用HIDS主机入侵检测系统监控Web目录下文件的创建、修改行为。特别是对脚本文件的非管理操作。进程与网络连接关联在服务器上检测由Web服务器进程如php-fpm,java发起的异常外联网络连接或子进程执行。7.3 给防御者的实操建议最小化原则Web服务器只开放必要的端口80/443并严格限制Web目录的执行权限。部署WAF正确配置WAF不仅启用默认规则集更要根据业务自定义规则封堵那些针对你所用框架和CMS的特定攻击路径。日志集中与全量留存确保所有服务器、网络设备的日志都能集中收集并保留足够长的时间。流量包PCAP在发生安全事件时是宝贵的取证材料但全量存储成本高可以考虑在关键网络边界留存特定时间段如7天的全流量。定期进行攻防演练在测试环境主动使用蚁剑、冰蝎等工具进行攻击捕获流量分析自己在现有防护体系下能发现什么、遗漏什么不断优化检测规则和策略。保持工具更新Wireshark、Suricata、Zeek等流量分析工具和IDS规则库需要定期更新以识别新的攻击手法和工具变种。从“只扫端口”到“深度分析流量”这不仅是技术的升级更是安全思维的转变。它要求我们从被动的特征匹配转向主动的行为理解和异常发现。这个过程充满挑战但也正是安全工作的魅力所在——永远在与最聪明的攻击者进行博弈。掌握Wireshark理解流量背后的故事你就能在这场博弈中多拥有一双穿透迷雾的眼睛。