免杀原理(php)

免杀原理

0x01 前言

何为免杀,免杀就是一种逃脱杀毒软件查杀的方法,免杀的目的就是绕过“墙”,去执行危险的操作。那么如何绕过这堵“墙”,就是免杀的本质。有句俗话说得好“知己知彼,百战不殆”,想要用好免杀,就必须先了解对手,有何能耐,它的工作方式以及它是如何知道文件中含有恶意代码。

技术也存在双面性的,通过研究免杀技术,我们也可以去分析,黑客会用什么办法来绕过防护,进行恶意操作,从而对这堵无形的“墙”进行加固。

image-20231123202004979

0x02 杀毒原理

杀毒软件分类:

杀毒软件的种类非常多,例如,流量查杀、代码查杀、脚本查杀、二进制查杀,但是万变不离其宗,要么就是安装在本地、要么就是在网络中的云端,所以我认为杀毒软件应该分为两大类,本地杀软和云端杀软。

  • 本地杀软

    • 这类杀毒软件主要安装在用户的本地设备上,例如个人电脑、笔记本电脑或移动设备。它们的功能是检测、识别和清除本地设备上的恶意软件和病毒。

    • 本地杀毒软件通常提供实时保护功能,监控设备的文件、下载和执行过程,以防止恶意软件的感染和传播。用户可以通过更新病毒库等方式保持杀毒软件的检测能力。

    • 例如:

      • 360
      • QQ电脑管家
      • 火绒
  • 远程杀软

    • 这类杀毒软件工作在网络或云端,通过远程方式来检测和清除恶意软件。它们可能是云端杀毒引擎、网络防护设备或者云端服务。

    • 远程杀毒软件通常能够扫描网络流量、电子邮件附件、下载文件等,以及在云端检测和隔离潜在的恶意软件,从而保护多个设备免受病毒和恶意软件的侵害。这种类型的杀毒软件可以为企业和组织提供全面的网络安全保护。

    • 例如:

      • 阿里云盾
      • 360杀软云

杀毒软件基本原理

杀毒软件的工作原理是通过一系列技术手段识别、拦截和清除计算机系统中的恶意软件(病毒、木马、间谍软件等)。其工作原理主要包括以下几个方面:

  1. 病毒特征识别:
    • 杀毒软件会使用病毒数据库中的病毒特征码来识别已知的病毒。
    • 这些特征码是病毒样本的特定标识,杀毒软件通过扫描系统文件和程序,将它们的特征与数据库中的特征码进行比对,来检测潜在的威胁。
  2. 行为监控:
    • 杀毒软件会监控系统中程序的行为,例如监视其访问、修改文件的行为等。
    • 当程序的行为符合病毒或恶意软件的特征时,杀毒软件会进行警告或阻止。
  3. 启发式分析:
    • 对于未知的病毒,杀毒软件使用启发式分析技术。
    • 它会检查程序的行为、代码结构等特征,来判断其是否可能是病毒。这种方法并非依赖于已知的特征码,而是根据行为和代码模式进行判断。
  4. 沙箱技术:
    • 杀毒软件可能使用沙箱技术,将可疑程序隔离在一个虚拟的安全环境中运行,观察其行为,以防止其对真实系统的影响。
  5. 实时保护:
    • 杀毒软件提供实时保护功能,监控系统的实时文件访问,对正在执行的程序进行扫描,确保系统在运行时不受恶意软件的侵害。
  6. 定期扫描和更新:
    • 杀毒软件定期对系统进行全盘扫描,并且通过更新病毒数据库来识别新的病毒。定期更新是保持杀毒软件有效性的关键。

总的来说,杀毒软件通过识别已知病毒的特征码、监控系统行为、启发式分析未知程序、使用沙箱技术等多种手段,来保护计算机系统免受恶意软件的侵害。

0x03 免杀思路

在上述章节中,我们了解到杀软的基本工作原理,一般来说杀毒软件都会通过自己的特征库,来判断一个程序中是否含有恶意代码,又或者通过程序运行的行为来判断,那么我们绕过这堵“墙”的思路,就是让我编写的代码不能被,特征库匹配上,或运行的过程不能让杀软检测到恶意操作,所以在编写灭杀代码时,我们就需要思考三个问题。

  1. 我的代码中哪些段落或行为被特征库识别到?既定位关键点
  2. 分析为什么这串代码被识别为恶意代码? 既分析关键点
  3. 如何绕过杀软的特征库? 既混淆关键点

接下来我会使用PHP的一句话木马和D盾来验证我的思路。

第一步 定位关键点

写一个一句话webshell,进行测试。

<?php @eval($_GET['cmd']); ?>

使用D盾进行扫描,发现存在eval后门,为什么D盾能发现后门呢?难道是eval()?但是这么一棒子打死所有人真的对吗?既然eval()这么容易被利用,为什么php官方还不将他删除呢?

eval()用于执行字符串中的 PHP 代码。这个函数将传入的字符串当作 PHP 代码来解析和执行。它的存在就一定有价值,这个函数一般都用于动态的去生成php代码,有了这个函数就可以,去实现模板网页的动态操作。

现在我们怀疑eval()就是特征库查杀的关键点,那么我们尝试去掉里面的参数,看看D盾是否还会报错。

image-20231123224039420

去掉参数后,发现D盾没有在将eval()函数,当作一个后门。那么现在就可以确定,问题出现内部的参数,现在我们也完成了第一步,定位关键点

image-20231123225412501

第二步 分析关键点

现在我们要来分析,是不是在eval()函数内,只要存在参数就会报错!!

image-20231123225921548

和之前所说的一样,任何函数的存在,都有一定的价值,在此处我添加了一句php的输出代码,但是D盾并未查杀到后门,可以确定的是在eval()函数中存在参数,也不会认定未后门shell,继续分析是否在eval()中输入$GET[] 超全局变量,就会引起D盾的查杀。

image-20231123230632087

当在eval()输入$_GET[]超全局变量时,D盾判断该代码为后门了,此时也就完成了第二步分析关键点

第三步 混淆关键点

在得到关键点后,就要开始考虑如何绕过D盾的查杀,执行我们想要的命令,

首先 eval()$_GET[]只要结合就会判断为后门,我们是否可以使用变量函数序列化来进行绕过呢?我们一步一步测试。

使用变量去绕过失败:

image-20231123231529434

使用函数包裹住$_GET[]后发现,没有在直接报后门shell,此时为可疑eval,此时说明我们的操作是有效果的,只是还无法完全绕过D盾。

image-20231123231941596

使用类来绕过任然和函数一样,无法完全绕过D盾。

image-20231123232415872

最后通过序列化函数serialize()、解序列化函数unserialize()、字符串截取函数substr()成功绕过了D盾限制。

image-20231123235658794

0x04 总结

总结一下思路,首先要定位哪一行代码,会被杀软拦截,接着分析为什么会被拦截,最后根据现有线索去猜测拦截规则,从而绕过杀软拦截。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/206154.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

岩土工程监测新利器——振弦采集仪

岩土工程监测新利器——振弦采集仪 振弦采集仪是一种常用的岩土工程监测仪器&#xff0c;主要用于测量岩土体的振动和应变情况。它采用先进的数字信号处理技术&#xff0c;可以实时采集和处理振弦信号&#xff0c;快速准确地获取岩土体的振动和应变信息。 振弦采集仪具有以下优…

2016年五一杯数学建模B题能源总量控制下的城市工业企业协调发展问题解题全过程文档及程序

2016年五一杯数学建模 B题 能源总量控制下的城市工业企业协调发展问题 原题再现 能源是国民经济的重要物质基础,是工业企业发展的动力&#xff0c;但是过度的能源消耗&#xff0c;会破坏资源和环境&#xff0c;不利于经济的可持续发展。目前我国正处于经济转型的关键时期&…

QT网络协议知识体系(一)

//获取主机的名称和ip地址 //获取主机的所有信息

nodejs最新电商jd m端h5st 4.2签名算法4.2版本逆向,jd API接口,jd商品数据采集

前言&#xff1a; jd m端使用最新的h5st 4.2签名算法&#xff0c;与h5st 4.1版本有很大的不同。在这儿分析一下&#xff0c;供大家参考。 一、目标地址(Base64解码) aHR0cHM6Ly9zby5tLmpkLmNvbS93YXJlL3NlYXJjaC5hY3Rpb24/a2V5d29yZD0lRTklOTklQTQlRTYlQjklQkYlRTYlOUMlQkEmc2…

【电路笔记】-电阻串联

电阻串联 文章目录 电阻串联1、概述2、电阻串联3、串联电阻电压4、电阻串联示例15、分压电路6、电阻串联示例27、电阻串联的应用8、总结 当电阻器以菊花链方式连接在一条线上时&#xff0c;电阻器被称为串联连接&#xff0c;从而导致共同电流流过它们。 1、概述 各个电阻器可以…

实例成员函数指针 的 一个小细节

你提供的代码定义了一个名为a的类&#xff0c;并初始化了一个名为b的对象。代码还包括一个main函数。 让我们逐步解析这段代码&#xff1a; class a { public:int a::* * p; // 指向int成员指针的指针int a::* pp; // 指向int成员的指针int a::* a::* ppp; // …

【开源】基于Vue+SpringBoot的智能教学资源库系统

项目编号&#xff1a; S 050 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S050&#xff0c;文末获取源码。} 项目编号&#xff1a;S050&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课…

【迅搜03】全文检索、文档、倒排索引与分词

全文检索、文档、倒排索引与分词 今天还是概念性的内容&#xff0c;但是这些概念却是整个搜索引擎中最重要的概念。可以说&#xff0c;所有的搜索引擎就是实现了类似的概念才能称之为搜索引擎。而且今天的内容其实都是相关联的&#xff0c;所以不要以为标题上有四个名词就感觉好…

058-第三代软件开发-文件Model

第三代软件开发-文件Model 文章目录 第三代软件开发-文件Model项目介绍文件Model 关键字&#xff1a; Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff09;…

深度学习——Loss汇总

深度学习——Loss汇总 一、IOU Loss二、L1 Loss 一、IOU Loss 公式&#xff1a; 参考资料: 目标检测回归损失函数——IOU、GIOU、DIOU、CIOU、EIOU 二、L1 Loss 公式&#xff1a; 参考资料: PyTorch中的损失函数–L1Loss /L2Loss/SmoothL1Loss

Python-Django的“日志功能-日志模块(logging模块)-日志输出”的功能详解

01-综述 可以使用Python内置的logging模块来实现Django项目的日志记录。 所以与其说这篇文章在讲Django的“日志功能-日志模块-日志输出”&#xff0c;不如说是在讲Pthon的“日志功能-日志模块-日志输出”&#xff0c;即Python的logging模块。 下面用一个实例来进行讲解。 …

动态规划学习——等差子序列问题

目录 一&#xff0c;最长等差子序列 1.题目 2.题目接口 3.解题思路及其代码 二&#xff0c;等差序列的划分——子序列 1.题目 2.题目接口 3.解题思路及其代码 一&#xff0c;最长等差子序列 1.题目 给你一个整数数组 nums&#xff0c;返回 nums 中最长等差子序列的长度…

【实验】配置用户自动获取IPv6地址的案例

热门IT课程-试听视频文章浏览阅读49次。认证课程介绍&#xff1a;华为HCIA试听课程 &#xff1a; 华为HCIA试听课程&#xff1a;华为HCIA试听课程&#xff1a;华为HCIP试听课程&#xff1a;思科CCNA试听课程&#xff1a;思科CCNA试听课程&#xff1a;思科CCNA试听课程&#xff…

Open3D (C++) 计算两点云之间的最小距离

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 Open3D中ComputePointCloudDistance函数提供了计算从源点云到目标点云的距离的方法,计算点云的距离。也就…

【论文精读】HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face 前言Abstract1 Introduction2 Related Works3 HuggingGPT3.1 Task PlanningSpecification-based InstructionDemonstration-based Parsing 3.2 Model SelectionIn-context Task-model Assignment 3…

MybatisPlus改造逻辑删除有多方便

MybatisPlus的逻辑删除可以有效保留历史数据。之前没有用逻辑删除的项目&#xff0c;想改造成逻辑删除总共需要几步&#xff1f; 答案&#xff1a;4步搞定 一、修改pom.xml的MybatisPlus版本&#xff08;注意版本兼容性&#xff09; <properties>...<!--<mybatis-…

【C语言期末不挂科——指针进阶篇】【上】

C语言进阶篇【上】 文章目录 C语言进阶篇【上】字符指针数组指针数组传参和指针传参  数组传参  一级指针传参  二级指针传参 前言&#xff1a; 我们在指针初阶篇学习了&#xff1a; 1、指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块空间。 2、指…

tomcat-pass-getshell 弱口令 漏洞复现

tomcat-pass-getshell 弱口令 漏洞复现 名称: tomcat-pass-getshell 弱口令 描述: Tomcat是Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun 和其他一些公司及个人共同开发而成。 通过弱口令登…

基于GAN的多尺度门合并多模态MRI图像合成

Multi-Modal MRI Image Synthesis via GAN With Multi-Scale Gate Mergence 基于GAN的多尺度门合并多模态MRI图像合成背景贡献实验方法生成器gate mergence (GM) strategy&#xff08;门控融合策略&#xff09;判别器 损失函数Thinking 基于GAN的多尺度门合并多模态MRI图像合成…

notepad++ 插件JSONView安装

1&#xff0c;前提 开发过程中经常需要处理json格式语句&#xff0c;需要对json数据格式化处理&#xff0c;因为使用的是虚拟机内开发&#xff0c;所以没法连接外网&#xff0c;只能在本地电脑下载插件后&#xff0c;然后上传到虚拟机中&#xff0c;进行安装使用。 2&#xf…