盾etectorasedn郑瀚

2. 识别PHP TAG代码区域

0x1: 需要处理的情况

0x2: Code Example

3. MD5 HASH匹配

和传统的AV杀毒一样,使用MD5 HASH精确匹配会面临免杀、绕过的风险,但是在大规模集群环境下,基于大数据得出的AV HASH库就会发挥出相对较好的效果

0x1: 可持续化运维方式

4. 一句话WEBSHELL匹配

在实际的入侵攻防中我们会发现,由于批量工具以及攻击payload常常呈现变形程度梯度上升的趋势,简单形式的一句话占比较高,即

因此,我们可以在检测流程中,增加对一句话小文件的快速匹配,即

0x1: Code Example

5. 字符串+正则规则匹配

0x1: Rule

0x2: Code Example

6. SSDEEP模糊化HASH匹配大马

对于大马来说,使用特征字符串、ssdeep模糊化hash进行聚类分析,能得到较好的效果,并同时得到当前待检测样本的恶意webshell家族分类

0x1: 匹配方案

0x2: Code Example

Relevant Link:

7. PH7(An Embedded Implementation of PHP (C Library))

PH7 is a in-process software C library which implements a highly-efficient embeddable bytecode compiler and a virtual machine for the PHP programming language. In other words, PH7 is a PHP engine which allow the host application to compile and execute PHP scripts in-process PH7是一个进程中的开发包(SDK),实现了高效的嵌入式的字节码编译器和一个PHP编程语言的虚拟机。换一种说法: PH7是一个轻量级的PHP引擎,可让你的C/C++应用程序直接编译并执行PHP脚本,需要注意的是,PH7并不是一个词法/语法优化器,它并不能对脚本文件进行预处理(拼接、参数传递回溯、函数调研回溯),而是直接进行了编译中间代码,并模拟动态执行PH7 implements most of the constructs introduced by the PHP 5.3 release such as heredoc, nowdoc, gotos, classes, anonymous functions, closures and so on and introduces very powerful extensions to the PHP programming language such as:

As an embedded interpreter, it allows multiple interpreter states to coexist in the same program, without any interference between them. Programmatically, foreign functions in C/C++ can be added and values can be defined in the PHP environment. Being a quite small program, it is easy to comprehend, get to grips with, and use.

0x1: Test Example Code: How To Use PH7

0x2: PH7 Engine

0x3: Compiled PHP program

static sxi32 ProcessScript

PH7_CompileScript(pVm,&(*pScript),iFlags);

static sxi32 PH7_CompilePHP

compile编译完成之后,PHP代码就被PH7编译为了中间代码opcode,这些opcode以字节码的形式保存在内存中

0x4: dynamic execute preparerc = PH7_VmMakeReady(pVm);

0x5: 动态执行

ph7_vm_exec(pVm, 0)

rc = PH7_VmByteCodeExec(&(*pVm));

VmByteCodeExec(&(*pVm),(VmInstr *)SySetBasePtr(pVm->pByteContainer),pVm->aOps,-1,&pVm->sExec,0,FALSE);PHP Opcode是一种类似于汇编的中间语言,每个语句块都由多个"状态"成员组成(汇编特征),PH7根据这些状态进行相应的"跳转",即动态执行opcode

Relevant Link:

8. 基于危险函数Hook的恶意污点数据追踪:WEBSHELL检测

需要注意的是,PHP、Zend和PH7对大小写敏感问题的处理存在差异

需要对PH7的词法解析compile过程做一些hack处理,使之匹配Zend的函数调用大小写不敏感特性

0x1: Hook方案

0x2: 外部参数污点打标

PH7_PRIVATE sxi32 PH7_HashmapCreateSuper(ph7_vm *pVm)这里负责创建$_POST、$_GET等全局变量并插入到$_GLOBAL超全局数组中,我们需要在初始化的同时,往$_POST、$_GET等全局变量中插入魔法键值

0x3: 数组元素取值污点(伪造数据)标记

0x4: eval函数污点分析

从webshell变形执行的本质来看,instructions eval($_Payload)是它的本质形态,在大多数情况下,webshell都需要从外部变量($_POST、$_GET..)中获取指定的键值,即获取Payload或,通过指令管道得以执行,不管eval中的payload经过了怎样的变形,在vm_builtin_eval函数中看到的永远都是最后的原始形态,这也是动态沙箱检测相比于静态特征检测最大的优势基于这种理论,我们对vm_builtin_eval敏感函数进行参数检测,如果在其中找到了魔法数键值,说明当前变量是外部传入的变量,则判定为恶意行为

0x5: 需要解决的变形场景

除了最基本的在eval函数中进行污点标记分析,PHP中还有例如动态执行、preg_replace /e、callback等方式可以作为WEBSHELL构造方式执行代码,接下来逐case分析

1. 已识别

2. 未识别

0x6: 危险函数污点分析

1. assert

assert是一个断言函数,它同时具有代码执行的能力,对于assert这个函数,我们要分情况讨论

code

2. system: PH7不支持此词法3. exec: PH7不支持此词法3. passthru: PH7不支持此词法4. shell_exec: PH7不支持此词法5. proc_open: PH7不支持此词法6. popen: PH7不支持此词法

这些命令执行函数的利用只有两种方式

0x6: 动态函数执行污点分析

PHP的动态函数执行属于极其非常规的编码方式,一旦出现,则可以认为是高危WEBSHELL行为,在WEBSHELL变形中,动态函数执行有以下几种

对于第一种情况,我们需要在PH7的"函数执行"流程中进行Hook,在"case PH7_OP_CALL"中,用于动态执行的函数已经被PH7翻译为了最终的函数名字符串,如果是通过外部参数传入的,则此时就是被污点打标的字符串

0x7: require、require_once、include、include_once文件流引入污点分析(LFI)

WEBSHELL的一种变形方式是使用外部输入文件流作为Payload的输入,即俗称的LFI漏洞,当include的参数来自外部参数,则判定为恶意,需要Hook的点包括

code

0x8: 系统输出缓存污点分析

ob_start()会把自己接收到的字符串当作一个"回调函数callback_func",并将接下来的缓冲区输入,当作这个"回调函数"的参数对于ob_start()、 ob_end_flush()的污点分析,需要分几种情况讨论

针对第二种情况,我们在ob_start进行敏感函数检测

0x9: 通过eval注册的匿名动态函数污点分析

这种情况比较特殊,见下面的例子

整个执行流程大致如下

在这个过程中,lambda匿名函数通过eval注册的过程中,如果传入的函数逻辑是: eval($_POST[1]);,PH7会对$_POST进行污点标记,从而使WEBSHELL暴露出污点特征

0x10: 序列化、反序列化特性污点检测

PHP的内核是基于C/C++实现的,在PHP中声明一个类,本质上是声明了C++的类,它同样遵循继承、多态的原则。需要明白的是,PHP中声明的类,默认都包含有构造函数、析构函数,在调用serialize、unserialize的时候,PHP Zend会自动调用对应的构造/析构函数需要特别注意的是,PH7内核对于json_encode/erialize、json_decode/unserialize采用了相同的函数是实现翻译执行,但是json_encode/json_decode却不能被用于webshell变形,所以我们在进行Hook的时候需要对这种情况进行过滤

0x11: PHP的本地变量注册函数污点检测

PHP支持将字符串(可以是外部传入参数)解析成多个变量,这让WEBSHELL有能力将外部传入的参数转化为本地命名空间中的变量,常见的实现这一目的的方式有

1. parse_str: PH7不支持此语法

2. foreach(..) { $$key = $value; }: PH7不支持此语法

需要注意的是,extract传入的是一整个数组(而不是某个具体的键值),对应于vm_builtin_extract中传入的是一整个hashmap,这样,我们针对键值的污点打标,在vm_builtin_extract中就无法直接看到,而是要等到对hashmap解析完毕后才能看到特征,由于受到解析流程的影响,用于打标的污点字符串受到了裁剪

0x12: 逻辑型WEBSHELL污点分析

沙箱的本质是按照待检测样本的逻辑,模拟Zend进行模拟执行,WEBSHELL为了规避沙箱的检测、并且隐藏自己不被管理员正常访问到,会对恶意WEBSHELL代码进行逻辑化处理(If条件判断)

对于逻辑型后门来说,判断进入哪个流支的控制开关(变量)常常是外部传入的参数,这样黑客才能通过传参控制是否进入WEBSHELL的流支,我们可以通过检测在if、while的条件表达式中,是否检测到污点标记(来自外部参数),以此来判断是否要进入流支的依据

0x13: PHP自定义函数call_user_func回调污点分析

Hook Code

0x14: VFS、网络、数据库等危险API进行stub处理为了防止模拟执行中,PH7执行了危险函数,对本机造成了实际影响(例如写文件、发起数据库连接),需要对PH7中这些敏感函数进行stub处理,当执行到这些危险函数的时候,直接忽略跳过

1. 文件操作

高危操作重放风险

0x15: 客户端沙箱性能控制

可能引起沙箱性能问题的API

如果黑客故意构造如下代码,可能会导致沙箱hang住,从而让其他的webshell都过沙箱检测

为此,需要对sleep进行stub处理,同时检测for循环的次数,当超过一定阈值的时候,强制跳出循环

9. 待解决的问题

0x1: ob_start误报

在实际的业务场景中,ob_start、ob_end_clean被用来做HTML页面缓存,所以会造成误报

0x2: incldue误报

从攻防角度来看,include $GPC变量可以导致LFI WEBSHELL

解决方案是对include的参数进行"全等匹配"(即不能有其他字符串),即只有: include $_POST['op']; 这种形式才可以认定为WEBSHELL

0x3: 外部GPC不可控参数污点误打标

VM沙箱检测的思想是对$_SERVER、$_POST、$_GET、$_REQUEST这些GPC的全部参数进行污点打标,然后在关键执行流进行Hook,检测是否发现污点标记,但是实际上,PHP中有一些GPC参数是外部不可控的,在进行污点打标的时候应该过滤掉这些参数

Relevant Link:

0x4: unserialize hook误报

在wordpress中普遍存在这种反序列化的代码案例,wordpress常常将用户配置信息序列化后保存在Cookie中,再通过客户端表单回传回来,所以如果直接通过检测unserialize调用参数中是否存在污点标记会导致大量误报,解决方案可能可以采取"多条正则匹配"技术,即对同一条规则设置多条正则,必须同时满足所有正则后方可认为命中此规则

0x5: 对运算符支持不全导致漏报

这个webshell同时使用了~和^运算符,但是ph7不支持^运算符的解析,导致检测失败

0x6: extract Hook导致误报

extract()常常在CMS中被用来进行外部参数自动化注册,但是也常常被WEBSHELL用俩进行参数隐藏,即将实际产生攻击的指令和payload都通过外部参数传入并通过extract本地注册,因此extract只是这种webshell触发攻击的一个必要不充分条件

本质上,extract这个函数是不应该加Hook点的

0x7: 借助编码、加密函数隐藏的大马SHELL

对于一句话变形来说,不管攻击者使用了何种变形隐藏方式,最终代码执行流都会到达VM Hook点,但是WEBSHELL对抗还有另一个问题就是大马,这类WEBSHELL并不会调用到一句话木马常用的函数,所以也不会被沙箱检测到

解决这种类型的大马的方案思路如下

0x8: 通过逻辑判断隐藏后门

黑客可以将畸形WEBSHELL放在例如IF条件语句中,如果VM沙箱不能预处理源代码的编译后汇编逻辑,使之进入所有流支,可能会导致漏报,但同时进入所有流支又可能带来性能损耗等原因

0x9: PHP的序列化、反序列化特性布置后门

这种WEBSHELL的检测难点在于误报和检测效果的权衡,引入例如wordpress在内的CMS会将序列化后的数据通过GPC方式传入,这个时候使用VM检测,就会在unserialize这个Hook点检测到污点标记,从而造成误报

0x10: 利用运算符进行编码转换隐藏的WEBSHELL

轻量级沙箱很难完全模仿PHP实现一个全集的运算符集和语法规约,这种WEBSHELL最好的方案是用多正则进行检测

0x11: filter_var、array_xx Hook导致误报

在正常的CMS代码中普遍存在这种接收外部参数,对其进行callback、filter等代码逻辑,解决方案如下

THE END
0.U550重卡550马力6X4国五牵引车(QCC4252D6543)】参数|对比联合卡车 U550重卡 550马力 6X4 国五 牵引车(QCC4252D654-3) 技术与报价咨询 所在省份北京市上海市天津市重庆市河北省山西省内蒙古辽宁省吉林省黑龙江省江苏省浙江省安徽省福建省江西省山东省河南省湖北省湖南省广东省广西海南省四川省贵州省云南省西藏陕西省甘肃省青海省宁夏新疆台湾省香港澳门钓鱼岛 jvzquC41yy}/eqnpcvxvet3qti5qtxiwev5ut~hm1995:h87a34ivvq
1.UQ5矿用地下自卸车UQ-5地下自卸车全车根据巷道特点选用国内知名重载汽车底盘,专业优化设计,承载力强,安全实用。 采用全密封湿式制动结构,不受外界泥沙及粉尘的影响,制动效果优于干式钳盘式制动,行车、驻车安全。 长头自卸车,重心低,安全可靠。 专用发动机,专用变速箱,动力强劲,爬坡能力强,环境适应性好。 本产品已获得国家《矿用产品安jvzq<84yyy4mv‚pe0eun1ywqfwiu1A80jvsm
2.U⁺550重卡550马力6X4牵引车(QCC4252D6543)配置参数发动机参数 发动机型号 联合动力YC6K1355-50 发动机品牌 联合动力 汽缸数 6缸 燃料种类 柴油 汽缸排列形式 直列 排量 12.939L 排放标准 国五 最大马力 550马力 最大输出功率 404kW 最大扭矩 2450N·m 最大扭矩转速 1100-1500rpm 额定转速 1900rpm 变速箱参数 变速箱型号 法士特12JSDX240TA jvzquC41rtuewly0o0972lmg0eun1v8913619B9arcxbo7mvon
3.6X2牵引车(上柴SC12E430Q5)(CQ4256HXDG334U)报价及图片参数变速箱:最大马力:430排放标准:国五发动机:上柴SC12E430Q5牵引总质量:40000驱动形式:6 X 2 参数询底价 参数配置 标配选配- 无 基本信息 车身长度: 6855mm 车身宽度: 2500mm 车身高度: 3923mm 公告型号: CQ4256HXDG334U 驱动形式: 6 X 2 轴距: 3285+1400mm 整车重量: 8800kg 最大总质量: 2jvzquC41yy}/{~sujwxfp7hqo1vsqmzev/?47B3jvor
4.楚飞CLQ5160GSS5LZ洒水车参数配置【优惠】楚飞CLQ5160GSS5LZ洒水车参数配置/技术参数对比。铁臂商城优惠多,机型全,在齐全的设备库中体验优惠的设备选购快感,并通过线上撮合、线下交易的O2O模式,为交易双方或多方提供交易信息,帮助工程机械企业实现整机产品销售及相关服务的第三方电子商务平台。 移动端入口: 侧面叉车 垃圾车 开槽机/灌缝机 随jvzquC41rtuewly0433tww3eqo5qtxIgvcom1=8:;:eqc{fogvks0|mvo
5.自动驾驶芯片:除了堆算力,核心IP软件栈等愈发重要进一步来看,通过Chiplet技术将CPU、GPU、FSD等多颗芯片集成在一颗SoC芯片内,将使得芯片通信延迟进一步缩短,有消息称特斯拉正与三星电子合作开发5nm芯片,实现自动驾驶和座舱SoC芯片集成。 而从英伟达、高通等业内巨头的动向来看,均已开始布局实现自动驾驶和座舱的跨域融合,如英伟达推出了DRIVE Concierge和DRIVE Chauffeur软件jvzquC41yy}/fxsiejkek7hqo1gsvrhng1=19@<;74776>9:83954
6.插孔式接近LJ***31PS9774U-3X4 PMC-530A PA1941-9XY3 永磁磁KYCX-1KYCX-10 G40-A20K进口报关 煤矿用液压泵站控制分站ZYB127-F 巨磁电阻接近开关SAS01-S技术参数说明: 真彩色无纸记录仪WSAT-TSRL1101-A XY194I-1X1 TGSG-02B SHQ5-100/4P- S322L PZ200V-5D1 jvzquC41yy}/eqnpc0io1ofpinkjsr473;633?8::0nuou
7.【联合卡车U⁺550重卡技术领先版550马力6X4国五牵引车联合卡车 U⁺550重卡 技术领先版 550马力 6X4 国五 牵引车(QCC4252D654-3) 车型综述参数配置实拍图片经销商文章 注:相同车型才能参与对比,例如:牵引车和牵引车,载货车和载货车 牵引车 牵引车 牵引车 厂商指导价:37.80万元购车咨询 基本信息 公告型号QCC4252D654-3 jvzquC41yy}/eqnpcvxvet3qti5qtxiwev5ut~hm1991;h87a34ivvq
8.U580重卡580马力6X4国五牵引车(QCC4252D6543)】参数|对比联合卡车 U580重卡 580马力 6X4 国五 牵引车(QCC4252D654-3) 技术与报价咨询 所在省份北京市上海市天津市重庆市河北省山西省内蒙古辽宁省吉林省黑龙江省江苏省浙江省安徽省福建省江西省山东省河南省湖北省湖南省广东省广西海南省四川省贵州省云南省西藏陕西省甘肃省青海省宁夏新疆台湾省香港澳门钓鱼岛 所在城市石家庄市唐山市秦皇 jvzquC41yy}/eqnpcvxvet3qti5qtxiwev5ut~hm19965h87a34ivvq
9.奥迪Q5L对比中国重汽VGVVGVU75PLUS谁入手性价比更高?那么今天我们要对比的两款车型分别为两个车的顶配车型2024款 奥迪Q5L 45 TFSI 臻选动感型 VS 2024款 VGV U75PLUS 2.0TGDI 贵宾版 7座。 二、从车型外观和参数配置维度来对比 2024款 奥迪Q5L 45 TFSI 臻选动感型 VS 2024款 VGV U75PLUS 2.0TGDI 贵宾版 7座 在级别上都是中型SUV。从外观上看,2024款 jvzquC41o0;9eqj0eqs0x|4843=:7>3jvor
10.安全生产事故调查报告范文(精选10篇)安全生产事故调查报告范文(精选10篇) 一、事故发生单位概况:工程负责人蒲远高;工程经理姚全波;技术负责人胡震(高级工程师);施工员左春梅。徐军;质检员毛顺荣。邓云;平安员王明。刘后勤;材料员姜华;造价员刘海英。jvzquC41yy}/fr~khctxgw3eqo5gcw|gp1€pppokgdgpfjt138;96:8:0jznn
11.松下XQB52Q520U报价参数图片论坛松下XQB52-Q520U 共3张图片>> 参考报价: ¥1848[北京 停产 2010-01-06] ¥1?48打开APP,去京东下单最高减500元 重要参数: 产品类别:波轮式 洗涤容量:5.2kg 控制方式:暂无数据 显示屏:暂无数据 洗净比:暂无数据 更多参数>> 商城本地优选商家加入对比jvzquC41fgzbku3|qn4dqv3ep1}buqjt1kteg>;;3:/uqyon
12.ZQHV气动V型切断球阀上海正丰阀门GDC-Q5、GDC-5电磁真空阀 上海标一阀门 GDQ-J(b)电、气动高真空挡板阀 (2)上海标一阀门 GDQ-J(b)电、气动高真空挡板阀 上海标一阀门 GDQ-J-A常闭型气动高真空挡板阀 上海标一阀门 GDQ-JS三通式气动高真空挡板阀 上海标一阀门 GDQ气动高真空挡板阀 (2)上海标一阀门 GDQ气动高真空挡板阀 上海标一阀门jvzquC41yy}/itjcp4dqv4uv4;4;A81rtuewlya33=24>;70jznn
13.昌邑小型沥青洒布车销售点「沥青洒布车」【主要技术参数】 产品商标 楚飞牌 公告批次 257 产品名称 沥青洒布车 产品型号 CLQ5070GLQ4型沥青洒布车 总质量(Kg) 7300 罐体容积(m3) 4.08 额定载质量(Kg) 3505,3570 外形尺寸(mm) 6400×1950×2500 整备质量(Kg) 3600 货厢尺寸(mm) ×× 额定载客(人) 准拖挂jvzquC41o0sbmnuqnq4dqv4rtqjve}2fgvgjn86228<88:<97:4ivvq
14.【选型】纳芯微电子三款车规级LDO助力汽车控制域器件设计,低静态某汽车客户在汽车控制域上,需求一颗国产车规级LDO,电压5V-25V,电流大于150mA,需要低功耗。给MCU供电作为方案二供评估,推荐给客户纳芯微电子的NSR31, NSR33, NSR35系列车规级LDO。 NSR31系列是150mA低电压线性稳压器,NSR33系列是300mA低电压线性稳压器, NSR35系列是500mA低电压线性稳压器,设计用于电池直接jvzquC41yy}/unpqto4dqv4pgyy06;<5:2:40qyon
15.电容式接近开关KQ5100型号: KQ5100品牌: IFM产地: 德国 索取资料及报价 型号: KQ5100 品牌: IFM 产地: 德国 产品别名: 电容式接近开关KQ-3120NFPKG 产品介绍 通过IO-Link 的便利参数设定 输出功能常开/常闭可编程 LED 可清晰明确地指示开关状态 通过安装转接头和电缆扎带轻松地进行安装 用于位置检测或液位监控 技术参数: 产品特征jvzq<84yyy4djnrfdu4dqv4ujq}22==9:35qtxiweve52;>20jznn
16.邦纳BANNER*一级代理BANNER*代理商美国邦纳BANNER光电传感器T30系列规格参数:1. T型外壳,镜头侧带M30的螺纹含EZ-BEAM style光学和电路2. 采用EZ-BEAM技术,可靠检测3. 热塑聚酯外壳性能优异,美国邦纳,可以在恶劣环境下可靠的工作4. 直角型热塑聚酯外壳,30mm带螺纹镜头5. 双指示灯,观察传感器状态极为方便jvzquC41yy}/eqjo394dqv4qhhksa|fng1jfvjnn1387:=<670nuou
17.图快讯中国重汽VGVU75新车型【快讯|中国重汽VGV U75新车型上市】日前,中国重汽VGV U75新增车型1.5T ZQ版上市,售价为11.99万元。新车采用V型鸟巢式呼吸前格栅设计,搭配LED鹰眼大灯,贯穿式腰线刻画出强烈的肌肉感。车身尺寸方面,新车长宽高分别为4806/1870/1691mm,轴距为2800mm。动力方面,新车将采用1.5T涡轮增压发动机,最大功率156马力,最大扭jvzquC41yy}/c~yqjqsf0lto0et0hjxvogytcpj1fgzbku434593;?3jvor
18.2022SCA新浪年度车评选入围车型集结号一汽-大众奥迪Q5L 官方指导价:39.68-48.70万元 车型级别:中型SUV 发动机/电机:2.0T 前纵置适时四驱 变速箱/电池:8速手自一体 最大功率/最大扭矩:140kW/320N·m(40T);185kW/370N·m(45T) 车身尺寸/轴距:4770/1893/1667mm 2907mm NEDC综合油耗/电车NEDC续航:7.2/7.5L/100km(40T/45T) jvzquC41cwzp0|npc0ipo7hp1pkxu8m{14633664/4?0fnyckn3jm‚foto€2;9:2553q57xjvor
19.礼品招标采购犯罪行为;是否在近一年内本企业或法定代表人有被纪检监察组织认定的违规向铁路企业人员送礼金、礼品和各种有价证券、支付凭证等行为;是否被行政主管部门责令停业、被暂停或取消投标资格;拟供项目是否被行政主管部门责令暂时停产或停止使用;是否被国铁集团暂停接受其参与各类项目采购活动,或暂停采购、使用其相应项目。 jvzquC41ycv/srfpnksb0lto1ipyz882335jpmjz0jznn