我的编程空间,编程开发者的网络收藏夹
学习永远不晚

第11章 WebShell检测

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

第11章 WebShell检测

        WebShell就是以ASP、PHP、JSP或者CGI等网页文件形式存在的一种命令执行环境,也可以将其成为一种网页后门。黑客在入侵了一个网站后,通常会将ASP或者PHP后门文件与网站服务器Web目录下正常的网页文件混在一起,然后就可以使用浏览器来访问ASP或者PHP后门,得到一个命令执行环境,以达到控制网站服务器的目的。顾名思义,“Web”的含义是需要服务器提供Web服务,“Shell”的含义是取得对服务器某种程度的操作权限。WebShell常常被入侵者利用,通过网站服务端口对网站服务器获取某种程度的操作权限。

          在攻击链模型中,整个攻击过程分为以下几个步骤。

        (1)Reconnaissance,踩点

        (2)Weaponization,组装

        (3)Delivery,投送

        (4)Exploitation,攻击

        (5)Installation,植入

        (6)C2,控制

        (7)Actions,行动

        在针对网站的攻击中,通常是利用上传漏洞,上传WebShell,然后通过WebShell进一步控制Web服务器,对应攻击链模型的Install和C2环节。

        常见的WebShell检测方法主要有以下几种:

       (1)静态检测,通过匹配特征码、特征值、危险操作函数来查找WebShell的方法。只能查找已知的WebShell,并且误报率、漏报率会比较高,但是如果规则完善,可以减低误报率,但是漏报率必定会有所提高。

       (2)动态检测,检测执行时刻表现出来的特征,比如数据库操作、敏感文件读取等。

       (3)语法检测,根据PHP语言扫描编译的实现方式,进行剥离代码和注释,通过分析变量、函数、字符串、语言结构的方式,来实现关键危险函数的捕捉。这样可以完美解决漏报的情况。但误报上,仍存在问题。

        (4)统计学检测,通过信息熵、最长单词、重合指数、压缩比等进行检测。

        本章主要以常见的WebShell数据集为例介绍WebShell的检测技术,介绍WebShell使用的数据集以及对应的特征提取方法,介绍使用的算法以及对应的验证结果,包括朴素贝叶斯算法和深度学习算法之MLP、CNN。

11.1 数据集

        数据集包含WebShell样本2616个,开源软件PHP文件9035个。WebShell数据来自互联网上常见的WebShell样本,数据来自GitHub上相关项目,为了演示方便,全部使用了基于PHP的WebShell样本。

        白样本主要使用常见的基于PHP开发的开源软件,主要包括以下几种。

11.1.1 WordPress

11.1.2 PHPCMS

11.1.3 phpMyAdmin

11.1.4 Smarty

11.1.5 Yii

11.2 特征提取

11.2.1 词袋和TF-IDF模型

        我们使用最常见的词袋和TF-IDF模型提取文本特征。

        把一个PHP文件作为一个完整的字符串处理,定义函数load_one_file加载文件到一个字符串变量中返回,文件中的回车换行需要过滤掉:

def load_file(file_path):    t = ""    with open(file_path, encoding='utf-8') as f:        for line in f:            line = line.strip('\r')            line = line.strip('\n')            t += line    return t

        由于开源软件中包含大量图片、JavaScript等文件,所以遍历目录时需要排除非PHP文件。另外开源软件的目录结构相对复杂,不像前面章节的垃圾邮件、骚扰短信等是平面目录结构,所以需要递归访问指定目录并加载指定文件类型:

def load_files_re(directory):    files_list = []    g = os.walk(dir)    for path, d, fileList in g:        for filename in fileList:            if filename.endswith('.php') or filename.endswith('.txt'):                filepath = os.path.join(path, filename)                try:                    print("Load %s" % filepath)                    t = load_file(filepath)                    files_list.append(t)                except:                    print("failed:", filepath)    return files_list

        加载搜集到的WebShell样本,并统计样本个数,将WebShell样本标记为1:

 # 加载搜集到的WebShell样本 webShell_files_list = load_files_re(webShell_dir) # 将WebShell样本标记为1 y1 = [1] * len(webShell_files_list) # 统计样本个数 black_count = len(webShell_files_list)

        CountVectorizer()函数只考虑每个单词出现的频率;然后构成一个特征矩阵,每一行表示一个训练文本的词频统计结果。其思想是,先根据所有训练文本,不考虑其出现顺序,只将训练文本中每个出现过的词汇单独视为一列特征,构成一个词汇表(vocabulary list),该方法又称为词袋法(Bag of Words)。

11.2.2 opcode和N-Gram模型

11.2.3 opcode调用序列模型

11.3 模型训练与验证

11.3.1 朴素贝叶斯算法

11.3.2 深度学习算法之MLP

11.3.3 深度学习算法之CNN

  

来源地址:https://blog.csdn.net/lieslyang/article/details/127210370

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

第11章 WebShell检测

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

第3章章节测试

1,静态路由较之动态路由有哪2项优点?A 配置不容易出错B 更安全,因为路由器不会通告路由C 扩从网络时通常不会出现问题D 没有计算开销2,下列哪一项是对网络收敛的最佳描述?A 路由器从网络一端向另一端共享管理配置更改所需的时间。B 网络中
2023-01-31

第一章 简单测试代码

1.1  测试函数 下面是一个简单的函数,它接受名和姓,并返回整洁的姓名:  name_function.pydef get_formatted_name(first,last): """Generate a neatly forma
2023-01-31

Python for Informatics 第11章 正则表达式(一)

正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器
2022-06-04

Python for Informatics 第11章之正则表达式(四)

注:以下文章原文来自于Dr Charles Severance 的 《Python for Informatics》11.3 组合查询和抽取如果我们想以“X-”字符串开头的行中找到数字,就像下面两行字符串:X-DSPAM-Confidenc
2022-06-04

Python for Informatics 第11章之正则表达式(二)

注:以下文章原文来自于Dr Charles Severance 的 《Python for Informatics》11.1 正则表达式的字符匹配我们可以用许多其它的特殊字符创建更加强大的正则表达式。最常用的特殊符号是可匹配任何字符的句号(
2022-06-04

这是我的第一篇测试文章

思路:坐标型动态规划,找到规律一切就都迎刃而解了。话不多说,一图胜千言。![fig1]根据上面可以直接得到状态转移方程,fi代表的是以该位置为正方形的右下角则最大正方形的边长。时间复杂度O(N M),空间复杂度O(N M)这题唯一的缺点
2023-01-31

Redis | 第11章 服务器的复制《Redis设计与实现》

目录前言1. 旧版复制功能的实现1.1 同步与命令传播1.2 旧版复制功能的缺陷2. 新版复制功能的实现2.1 部分重同步的实现原理3. PSYNC 命令的实现4. 复制的详细步骤4.1 设置主服务器的地址和端口4.2 建立套接字连接4.3 发送 PING 命
Redis | 第11章 服务器的复制《Redis设计与实现》
2020-11-24

网站上传漏洞扫描与检测以及webshell解决办法是什么

网站上传漏洞扫描与检测以及webshell解决办法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前段时间我们SINE安全收到客户的渗透测试服务委托,在这之
2023-06-03

ubuntu检测不到第二个屏幕如何解决

如果Ubuntu无法检测到第二个屏幕,可以尝试以下解决方法:1. 检查硬件连接:确保第二个屏幕正确连接到计算机,并确保所有连接线都牢固插入。尝试重新插拔连接线,确保连接良好。2. 打开显示设置:点击屏幕右上角的设置图标,选择“显示设置”。在
2023-09-09

增加了CPU检测功能GCC 11为较新的Intel系列

编程学习网:今天更新的英特尔处理器检测功能已合并到GCC 11/Git中,适用于Airmont,Tremont,Comet Lake,Ice Lake和Tiger Lake系列。
增加了CPU检测功能GCC 11为较新的Intel系列
2024-04-23

win7检测不到第二个显示器如何解决

这篇文章主要介绍“win7检测不到第二个显示器如何解决”,在日常操作中,相信很多人在win7检测不到第二个显示器如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win7检测不到第二个显示器如何解决”的疑
2023-03-14

win7检测不到第二个显示器怎么解决

win7检测不到第二个显示器解决方法:1、打开控制面板并选择硬件和声音;2、点击设备打印机中的设备管理器;3、在设备管理器中通过监视器来查看是否有第二部显示器连接;4、回到桌面,右击鼠标,选择屏幕分辨率;5、点击右下角的高级设置;6、在高级
2023-07-10

软考信息安全工程师考试知识点填空检测(11)

  信息安全工程师是软考中级考试科目之一,为方便考生对所学知识点的检测,编程学习网小编为考生带来软考信息安全工程师考试知识点填空检测的内容,本文为软考信息安全工程师考试知识点填空检测(11)。  为方便软考考生对信息安全工程师考试知识点的检测,编程学习网小编为考生带来软考信息安全工程师考试知识点填空检测的内容(完整版可在本文的
软考信息安全工程师考试知识点填空检测(11)
2024-04-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录