蓝队的自我修养之如何从流量中检测 WebShell

HW期间,为防范钓鱼,即日起FreeBuf将取消投稿文章的一切外部链接。给您带来的不便,敬请谅解~

背景

众所周知,攻防演练过程中,攻击队入侵企业网站时,通常要通过各种方式获取
webshell,从而获得企业网站的控制权,然后方便实施之后的入侵行为。在冰蝎、哥斯拉这类加密型 webshell
工具出现之前,中国菜刀、蚁剑这类工具常被攻击队使用,与菜刀和蚁剑不同,冰蝎和哥斯拉使用加密隧道传输数据,不易被安全设备发现,同时,无文件内存
webshell 的兴起,给检测带来了更大的压力。因此,对这类加密型 webshell 和无文件内存 webshell 的检测是非常有必要的。

难点

当前,这类加密型 webshell 检测存在以下难点:

  • 使用加密隧道传输数据,无明文通讯特征。
  • 内存 webshell 无文件落地。

目标

通过攻防演练的实践,总结一套关于加密 webshell 和内存 webshell 的检测方法,分析和总结该类 webshell
通讯特征,通过流量及时准确的发现主机失情况,及时处理。

方法论

当出现一个新型 webshell 工具时,我们可以通过如下几个方面总结相关特征,从而实现相关检测。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gU51vZR1-1690253770826)(https://image.3001.net/images/20210415/1618476773_6077fee545770197c26ed.png!small)]

  • webshell 样本:分析 webshell 的执行逻辑,提取 webshell 执行过程中必须存在的函数、参数,对该类 webshell 实现上传、写入的检测。
  • 通讯过程中必存在参数:分析 webshell 服务端和客户端,提取因实现问题而在交互过程中必须存在的参数。
  • 加密算法特征:分析该 webshell 通讯过程中的加密方法,获取该加密方法生成的密文所在集合。
  • 工具本身 bug:因为工具是人力开发的,难以避免会存在一些 bug,这些 bug 可以成为识别该类工具的特征。
  • 与正常业务不符:分析通讯过程中,该 webshell 和正常业务的不同,可以粗略的筛选出可能异常的通讯。

案例

我们将从以上方法论总结的几种方法,举例说明如何提取特征。

上传样本

可以通过对上传的样本进行检测,从而发现威胁。我们可以通过分析这类 webshell 工具的源码,提取生成的 webshell
的特征,从而实现检测。以下以哥斯拉为例,可以看到其生成 webshell 时导入一个模板,根据模板生成相应的
webshell,所以我们总结生成模板的特征,即可对这类上传行为进行准确的检测。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DFVr0PiN-1690253770828)(https://image.3001.net/images/20210415/1618476848_6077ff30472273f894fb0.png!small)]

通讯过程中必存在参数

在冰蝎 3.0 的服务端,是通过如下代码读取 post 请求。

request.getReader().readLine()

代码的意思是,直接读取 post 请求中 body 的内容。所以请求的 http 中,content-type 一定为 application/octet-
stream。否则就会出现非预期 http 编码的情况。这类特征属于通讯过程中必存在参数,可以通过这类特征的组合,对相关 webshell
通讯进行检测(这里仅做举例,这类检测肯定为多特征结合)。

加密方法存在的一些弱特征

冰蝎通讯时,会建立加密通讯隧道,主要请求体和返回体内容有如下三种情况:

请求体加密方式

|

返回体加密方式

—|—

AES 后 Base64

|

AES 后 Base64

AES 后 Base64

|

AES

AES

|

AES

对于 AES 后 Base64 加密,其加密后所有值落在 [a-zA-Z0-9+=],很容易通过正则去覆盖。

对于 AES 加密,其加密后的值无 Base64 中相关特征,但是,可以明显看出,密文内容中不可见字符明显增多。可以通过不可见字符进行检测,从而覆盖对
AES 这类加密后的请求体或返回体的识别。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6q42e5qa-1690253770829)(https://image.3001.net/images/20210415/1618476909_6077ff6ddf9a003397c38.png!small)]

这类仅为一些弱特征,仅举例说明,需要多特征组合,才能实现准确的检测。

工具本身的 bu g

这类工具都是人力开发的,难免存在一些 bug,我们可以通过找到这些 bug,从而在流量中识别出该类工具。如在冰蝎某一版本中,php 相关 webshell
通讯在一个 http 请求报文中存在两个 PHPSESSID,这属于工具的 bug,可以通过该 bug 以及其他一些特征,识别出该工具。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JEr24a2s-1690253770831)(https://image.3001.net/images/20210415/1618476948_6077ff941fb0b89b52a1e.png!small)]

与正常业务不符

对于无文件内存 webshell,攻击者为了隐藏攻击行为,将注入 webshell 的路径选为静态文件路径,如 jpg、ico、png
等,但这样就会存在一些异于正常的行为,如请求静态文件返回内容不同、带请求体请求静态文件等。以下为一个冰蝎内存 webshell 的示例。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JTUyPr4O-1690253770832)(https://image.3001.net/images/20210415/1618477367_60780137eaf514d725942.png!small)]

总结

在本文中,我们总结了从流量中寻找加密型 webshell 和无文件内存 webshell 的特征方法,分别是:

  • webshell 样本
  • 通讯过程中必存在参数
  • 加密方法特征
  • 工具本身的 bug
  • 与正常业务不符

在实战测试中,通过上述几点,对加密型 webshell 和无文件内存 webshell
的通讯流量进行分析,总结相关弱特征和强特征,多种特征结合,可以准确识别这类 webshell 的通讯过程,及时处置和发现失陷主机。

正常业务不符

在实战测试中,通过上述几点,对加密型 webshell 和无文件内存 webshell
的通讯流量进行分析,总结相关弱特征和强特征,多种特征结合,可以准确识别这类 webshell 的通讯过程,及时处置和发现失陷主机。

网络安全工程师(白帽子)企业级学习路线

第一阶段:安全基础(入门)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2uzMWp2N-1690253770832)(https://picd.zhimg.com/80/v2-4f9b78990c8004842766b3e478b185b8_720w.png?source=d16d100b)]

第二阶段:Web渗透(初级网安工程师)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8lk45pKI-1690253770833)(https://picd.zhimg.com/80/v2-977cbb066f1236207ceff161b22edd0d_720w.png?source=d16d100b)]

第三阶段:进阶部分(中级网络安全工程师)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dsVPzDlC-1690253770834)(https://picd.zhimg.com/80/v2-43f03949b09dcf75169640b7ede64fa2_720w.png?source=d16d100b)]

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资源分享

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tqV7A1JN-1690253770835)(C:\Users\Administrator\Desktop\网络安全资料图\微信截图_20230201105953.png)]

蓝队的自我修养之如何从流量中检测 WebShell_第1张图片

你可能感兴趣的:(数据库,安全,web安全)