免杀原理(php)

news2024/11/18 4:40:31

免杀原理

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.coloradmin.cn/o/1253143.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Vulnhub靶机】Jarbas--Jenkins

文章目录 信息收集主机发现端口扫描目录爆破 漏洞探测whatwebhash-identifierwhatweb 文档说明&#xff1a;https://www.vulnhub.com/entry/jarbas-1,232/ 靶机下载&#xff1a;Download (Mirror): 信息收集 主机发现 扫描C段 sudo nmap -sn 10.9.75.0/24端口扫描 sudo nma…

通过视频文件地址截取图像生成图片保存为封面图

安装 RPM Fusion 软件库 FFmpeg并不包含在 CentOS 官方软件库中&#xff0c;需要使用第三方软件库安装。可以使用 RPM Fusion 软件库来获取 FFmpeg。 首先&#xff0c;使用以下命令安装 RPM Fusion 软件库&#xff1a; sudo yum install epel-release -y sudo rpm -Uvh https…

BTC 复兴:Ordinals 带来创新活力,BitVM 与 BitStream 相继问世

除了备受瞩目的 ETF&#xff0c;今年 Bitcoin 生态迎来全新的发展活力和机遇。Ordinals 协议的横空出世&#xff0c;以此为基础诞生的 BRC20 协议给整个比特币生态带去了一波新的能量&#xff0c;迎来铭文热度高涨。而诸如 BitVM、BitStream 等新技术甫一问世&#xff0c;便引发…

vulnhub6

靶机地址&#xff1a;https://download.vulnhub.com/evilbox/EvilBox---One.ova 准备工作 可以先安装 kali 的字典: sudo apt install seclists ​ 或者直接输入 seclists​&#xff0c;系统会问你是否安装&#xff0c;输入 y 即可自动安装 733 x 3751414 x 723 ​ 默认路…

引用、动态内存分配、函数、结构体

引用 定义和初始化 **数据类型 &引用名 目标名;**引用和目标共用同一片空间&#xff08;相当于对一片空间取别名&#xff09;。 引用的底层实现&#xff1a;数据类型 * const p&#xff1b; ------> 常指针 int const *p; -----> 修饰 *p const int *p; ----->…

解决github无法访问的办法

方法/步骤 1.问题描述&#xff1a;能联网但不能访问github.com 2.找到hosts文件。地址&#xff1a;C:\Windows\System32\drivers\etc &#xff08;一般是在这的&#xff09; 3.不要直接在这修改hosts文件&#xff0c;需要将hosts文件复制粘贴到桌面&#xff08;或其它地方自…

Oracle 中的操作符

1.union:对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;同时进行默认规则的排序&#xff1b; SELECT * FROM emp WHERE sal < 1500 UNION SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000 order by 1 2.union All&#xff1a;对两个结果集进行并集操…

Innux(特殊位与权限)

特殊位与权限 目录&#xff1a; 1. SUID 2. SGID 3. SBIT 4. 文件系统属性chattr权限 5. 管理员权限sudo 1. SUID 1.1 什么是SUID SUID只对二进制可执行文件才有效&#xff08;文件必须具备x权限&#xff09; 执行者对该程序有 x 权限 当前程序拥有SUID时&#xff0…

nova组件简介

目录 组件关系图 controller节点 openstack-nova-api.service: openstack-nova-conductor.service: openstack-nova-consoleauth.service: openstack-nova-novncproxy.service: openstack-nova-scheduler.service: openstack-nova-conductor.service详解 作用和功能&…

4.25每日一题(通过被积函数和积分区域(不等式)选正确的坐标系求二重积分)

一、正确画出积分区域&#xff1b;通过积分区域和被积函数选择方法 二、如何根据被积函数和积分区域正确选择通过极坐标还是根据直角坐标方程计算&#xff1a; &#xff08;1&#xff09;适合极坐标的积分区域&#xff1a;圆或者部分圆 &#xff08;2&#xff09;适合极坐标的…

续新的SSL证书

一、重新申请证书并下载证书&#xff1a; https://www.ename.net/ 二、IIS中在【服务器证书】中删除旧的证书&#xff0c;导入新的证书&#xff1b; 三、在站点的绑定选择新证书&#xff1b;

万字解析设计模式之责任链模式、状态模式

目录 一、责任链模式 1.1概述 1.2结构 1.3实现 1.4 优缺点 1.5应用场景 1.6源码解析 二、状态模式 2.1概述 2.2结构 2.3实现 2.4优缺点 2.5应用场景 三、责任链模式实验 任务描述 实现方式 编程要求 测试说明 四、状态模式实验 任务描述 实现方式 编程要…

2001-2022年上市公-供应链话语权测算数据(原始数据+处理代码Stata do文档+结果)

2001-2022年上市公-供应链话语权测算数据&#xff08;原始数据处理代码Stata do文档结果&#xff09; 1、时间&#xff1a;2001-2022年 2、指标&#xff1a;企业代码、股票代码、年份、股票简称、上市公司前五大供应商的采购额之和占企业当年总采购额的比例、上市公司前五大客…

林业无人机如何提升巡山护林效率?

在郁郁森林之上&#xff0c;一架无人机正盘旋在上空时刻观察着林区的情况。凭借复亚智能的全自动巡检系统&#xff0c;无人机巡山护林的巡视范围和反馈实时性得到了显著提升。 一、林业无人机&#xff1a;科技赋能森林防火 秋季林区时常发生火灾&#xff0c;林业无人机在森林防…

关于自动化测试的误区,你屡清楚了吗?

自动化测试作为软件测试的一种技术手段&#xff0c;时常被大家讨论。本人在自动化技术方面有过略有小成&#xff0c;今天聊一聊关于自动化的一些误区&#xff0c;以帮助新手能正确的了解和认识自动化一些概念。 测试的行为本质是什么&#xff1f; 为什么先从这个概念开始谈起&…

Codesys 数据结构:1.2.4 扩展数据类型之联合体(UNION) 类型详解

Codesys代码代写&#xff0c;程序开发&#xff0c;软件定制&#xff0c;bug修改&#xff0c;问题咨询&#xff1a; T宝搜索店铺【林磊教育】 定义&声明 联合体就是不同类型的变量占用同一个内存的数据结构&#xff1b; 其声明语法如下 TYPE <联合体名字>:UNION<…

【Linux】驱动程序同步和异步通知方式

一、应用程序APP&#xff0c;访问驱动程序/dev/input/enent1流程&#xff1a; 假设用户程序直接访问 /dev/input/event0 设备节点&#xff0c;或者使用 tslib 访问设备节点&#xff0c;数据的流程如下&#xff1a; APP 发起读操作&#xff0c;若无数据则休眠&#xff1b;用户操…

拯救者windows11系统经常出现wifi图标消失断网解决思路

项目场景&#xff1a; 最近刚买回来一台联想拯救者电脑&#xff0c;但是&#xff0c;在使用过程中总是会出现wifi图标突然消失的情况&#xff0c;而且多次重启电脑或者关机电脑也没有用。也不知道是电脑的原因还是系统的原因 问题描述 1.图标正常显示情况&#xff1a; 2.图标异…

创新研报|企业如何在不确定时期突破至新高度?

报告下载地址&#xff1a; 创新研报&#xff5c;BCG 2023最创新企业研究-在不确定时期跃升新高度 创新从未如此重要&#xff0c;领先的企业创新者正在证明这一切。BCG&#xff08;于2005年首次发布年度创新报告&#xff0c;其中列出了全球创新高管最钦佩的50家企业&#xf…

knime 中没有column expressions,怎么下载

knime 中没有column expressions&#xff0c;怎么下载 1、打开view&#xff0c;然后找到knime hub&#xff0c;column expression 2、往里面拖动&#xff0c;就可以安装了 3、然后会出现重启&#xff0c;搜索就可以出现啦