webshell检测
蓝队的⾃我修养之如何从流量中检测 WebShell 2021-04-15 17:04:55 48659
HW期间,为防范钓鱼,即⽇起FreeBuf将取消投稿⽂章的⼀切外部链接。给您带来的不便,敬请谅解~
背景
众所周知,攻防演练过程中,攻击队⼊侵企业⽹站时,通常要通过各种⽅式获取 webshell,从⽽获得企业⽹站的控制权,然后⽅便实施之后的⼊侵⾏为。在冰蝎、哥斯拉这类加密型 webshell ⼯具出现之前,中国菜⼑、蚁剑这类⼯具常被攻击队使⽤,与菜⼑和蚁剑不同,冰蝎和哥斯拉使⽤加密隧道传输数据,不易被安全设备发现,同时,⽆⽂件内存 webshell 的兴起,给检测带来了更⼤的压⼒。因此,对这类加密型 webshell 和⽆⽂件内存 webshell 的检测是⾮常有必要的。
难点
当前,这类加密型 webshell 检测存在以下难点:
使⽤加密隧道传输数据,⽆明⽂通讯特征。内存 webshell ⽆⽂件落地。
⽬标
通过攻防演练的实践,总结⼀套关于加密 webshell 和内存 webshell 的检测⽅法,分析和总结该类 webshell 通讯特征,通过流量及时准确的发现主机失情况,及时处理。
⽅法论
当出现⼀个新型 webshell ⼯具时,我们可以通过如下⼏个⽅⾯总结相关特征,从⽽实现相关检测。
webshell 样本:分析 webshell 的执⾏逻辑,提取 webshell 执⾏过程中必须存在的函数、参数,对该类 webshell 实现上传、写⼊的检测。
通讯过程中必存在参数:分析 webshell 服务端和客户端,提取因实现问题⽽在交互过程中必须存在的参数。加密算法特征:分析该 webshell 通讯过程中的加密⽅法,获取该加密⽅法⽣成的密⽂所在集合。
⼯具本⾝ bug:因为⼯具是⼈⼒开发的,难以避免会存在⼀些 bug,这些 bug 可以成为识别该类⼯具的特征。与正常业务不符:分析通讯过程中,该 webshell 和正常业务的不同,可以粗略的筛选出可能异常的通讯。
案例
我们将从以上⽅法论总结的⼏种⽅法,举例说明如何提取特征。
上传样本
可以通过对上传的样本进⾏检测,从⽽发现威胁。我们可以通过分析这类 webshell ⼯具的源码,提取⽣成的 webshell 的特征,从⽽实现检测。以下以哥斯拉为例,可以看到其⽣成 webshell 时导⼊⼀个模板,根据模板⽣成相应的 webshell,所以我们总结⽣成模板的特征,即可对这类上传⾏为进⾏准确的检测。
通讯过程中必存在参数
在冰蝎 3.0 的服务端,是通过如下代码读取 post 请求。
request.getReader().readLine()
代码的意思是,直接读取 post 请求中 body 的内容。所以请求的 http 中,content-type ⼀定为 application/octet-stream。否则就会出现⾮预期 http 编码的情况。这类特征属于通讯过程中必存在参数,可以通过这类特征的组合,对相关 webshell 通讯进⾏检测(这⾥仅做举例,这类检测肯定为多特征结合)。
加密⽅法存在的⼀些弱特征
冰蝎通讯时,会建⽴加密通讯隧道,主要请求体和返回体内容有如下三种情况:请求体加密⽅式AES 后 Base64AES 后 Base64AES
返回体加密⽅式AES 后 Base64AESAES
对于 AES 后 Base64 加密,其加密后所有值落在 [a-zA-Z0-9+\\=],很容易通过正则去覆盖。
对于 AES 加密,其加密后的值⽆ Base64 中相关特征,但是,可以明显看出,密⽂内容中不可见字符明显增多。可以通过不可见字符进⾏检测,从⽽覆盖对 AES 这类加密后的请求体或返回体的识别。
这类仅为⼀些弱特征,仅举例说明,需要多特征组合,才能实现准确的检测。
⼯具本⾝的 bug
这类⼯具都是⼈⼒开发的,难免存在⼀些 bug,我们可以通过找到这些 bug,从⽽在流量中识别出该类⼯具。如在冰蝎某⼀版本中,php 相关 webshell 通讯在⼀个 http 请求报⽂中存在两个 PHPSESSID,这属于⼯具的 bug,可以通过该 bug 以及其他⼀些特征,识别出该⼯具。
与正常业务不符
对于⽆⽂件内存 webshell,攻击者为了隐藏攻击⾏为,将注⼊ webshell 的路径选为静态⽂件路径,如 jpg、ico、png 等,但这样就会存在⼀些异于正常的⾏为,如请求静态⽂件返回内容不同、带请求体请求静态⽂件等。以下为⼀个冰蝎内存 webshell 的⽰例。
总结
在本⽂中,我们总结了从流量中寻找加密型 webshell 和⽆⽂件内存 webshell 的特征⽅法,分别是:
webshell 样本
通讯过程中必存在参数加密⽅法特征⼯具本⾝的 bug与正常业务不符
在实战测试中,通过上述⼏点,对加密型 webshell 和⽆⽂件内存 webshell 的通讯流量进⾏分析,总结相关弱特征和强特征,多种特征结合,可以准确识别这类 webshell 的通讯过程,及时处置和发现失陷主机。
因篇幅问题不能全部显示,请点此查看更多更全内容