切换风格

默认晚霞 雪山 粉色心情 伦敦 花卉 绿野仙踪 加州 白云 星空 薰衣草 城市 简约黑色 简约米色 龙珠
回复 0

63

主题

91

帖子

1292

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1292
PHP安装云锁RASP探针[复制链接]
发表于 2025-3-31 11:50:56 | 显示全部楼层 |阅读模式
云锁在V3版本当中加入了RASP技术来防止未知攻击,支持java .net php,JAVA/NET官方已经给出了详细的说明,但是PHP却没有,经过博主一番使用下来,总结了以下内容:

RASP“Runtime application self-protection”应用运行时自我保护技术,是奇安信椒图云锁服务器安全管理系统(简称云锁)web攻击防护的核心组件之一,是构建在WEB语言解释器中的异常行为检测引擎。

RASP通过HOOK函数的方式,可以细粒度的监控应用脚本的行为及函数调用上下文信息,及时发现恶意代码和漏洞利用行为,缩小攻防信息不对称的时间差,有效降低未知安全威胁造成的破坏。
3101976771.jpg
实现原理如下:

Module init 埋钩子,HOOK全局函数/内部函数
1053995939.jpg
Hook内部函数:

判定webshell及利用工具,如菜刀/冰蝎/哥斯拉/cknife/weevely

文件包含类攻击

Hook全局函数:

命令执行、文件上传、任意文件读写、SSRF
38743097.png
为什么这里要提到这个呢?因为云锁的“高级防护”功能需要RASP的支持,如果对应的系统在开通高级防护后没有安装RASP插件,则”高级防护“的大部分功能会使失效状态。

版本要求
1.云锁公有云版需要V3.1.20.24及以上版本;
2.php版本>=5.2,<=7.4。

安装插件
linux安装
默认一键安装
云锁防护界面如果可以识别到php进程,可以直接一键安装,如图:
131642019.png
点击RASP图标,云锁会自动完成php语言RASP插件的加载,和php的重启,完成后即可使用。

手动安装
当你同时安装了多个版本的php时,云锁自动完成第一个php版本的RASP加载之后,就无法再从这里一键加载了,我们可以通过手动方式加载RASP插件,如果宝塔的php位置只有关闭端口选项,也可尝试手动加载。

1.先确认php是运行在安全模式下还是非安全模式(nts)下,还是安全模式下(ts),如果是宝塔面板就是nts;
2.拷贝php拓展插件到php拓展库目录。
云锁php.so存放位置:/usr/local/yunsuo_agent/php/,php拓展存放位置:php安装目录/lib/php/extensions/no-debug-non-zts-xxxx,复制到这里,请注意是nts还是ts;
3.编辑php配置文件,php安装目录/etc/php.ini
在“Module Settings”下输入如下配置:
  1. extension=****
复制代码
***替换为复制的那个.so的文件名
2871246462.png
4.保存后重启php,然后刷新云锁应用防护查看phpRASP插件按钮是否已经亮起(由灰色变为绿色)

Windows安装
IIS自动安装
当你的服务器使用IIS时,在安装IIS防护插件时,云锁会自动完成php插件的安装,但如果你的服务器中安装了多个版本的php时,只会加载最后安装的php插件,你可以在php.ini文件中搜索secmod,如果能搜索到“extension=php_secmod.dll”则说明使用该版本的php可以享受到RASP带来的保护,如果搜索不到就说明没有RASP,因此,本站推荐windows用户如无特殊需求,只安装一个php版本就行了,经过实测,RASP可以正常工作并防护常见木马和命令执行。

如果你是IIS用户,且PHP只安装了一个版本,缺无法搜索到“extension=php_secmod.dll”,在云锁应用防护里,将IIS防护插件卸载再重装即可安装RASP。

手动安装
如果你安装了多个php版本或者使用的apache,总之,就是php.ini里搜不到“extension=php_secmod.dll”的都可以尝试手动安装,安装方法:

1.首先你要确定自己的php是32位版本还是64位版本,可以到phpinfo中去查看,如果是32为版本,则插件存在于云锁安装根目录下,如果是64位版本则插件存在于云所安装目录的x64目录下,在相应位置找到secmod开头的dll文件,那就是了;云锁默认安装路径为C:/Program Files (x86)/YunSuo/YunSuoAgent;

2.确定php版本是安全线程版本(ts)还是非安全线程版本(nts),查看方法可自行百度,这里不再赘述,在插件存放位置找到对应版本的插件,如php5.6非安全线程版本对应的插件文件为“secmod_5.6.x_nts.dll”

3.将dll文件拷贝到php程序目录/ext/目录下并重命名为“php_secmod.dll”;

4.打开php.ini文件,搜索“Module Settings”,在下方输入
  1. extension=php_secmod.dll
复制代码
2935147386.png
4.保存php.ini文件并重启php,windows下不会再应用防护里显示,开通高级防护后,防护会实时生效。

开通高级防护
云锁RASP需要开启高级防护(150元/月),开启后,通过在脚本解释器中插入RASP探针,可以对应用系统的流量、上下文、行为进行持续监控,识别及防御已知及未知威胁。能有效防御SQL注入、命令执行、文件上传、任意文件读写、反序列化、Struts2等基于传统签名方式无法有效防护的0day应用漏洞,支持php 、.net、asp、java语言。
177713750.png
上述防护的详细解释如下:

防护项目        规则项
命令执行        禁止所有WEB请求执行命令
禁止通过反射执行命令
禁止通过反序列化执行命令
禁止通过表达式执行命令
禁止通过请求参数执行命令
禁止通过 Webshell 执行命令
禁止通过特定规则执行命令
任意文件读取        禁止通过反序列化读取文件
禁止通过表达式读取文件
禁止通过请求参数读取文件
禁止通过 Webshell 读取文件
禁止通过特定规则读取文件
任意文件写入        禁止通过反射写文件
禁止通过反序列化写文件
禁止通过表达式写文件
禁止通过请求参数写文件
禁止通过 Webshell 写文件
禁止通过特定规则写文件
任意文件上传        禁止通过 multipart/form-data 方式上传脚本文件
XXE外部实体加载        禁止外部实体加载
禁止 等异常协议加载外部实体
禁止通过反序列化加载外部实体
非法外连防护        禁止所有WEB请求发起外连
禁止通过反序列化发起外连
禁止通过表达式发起外连
禁止通过 Webshell 发起外连
禁止通过特定规则发起外连
SSRF 请求伪造防护        禁止伪造 http 请求
禁止伪造 gopher 请求
SQL注入漏洞防护        禁止 SQL 注入漏洞利用
如果安装RASP插件后,没有开通高级防护,当云锁检测到未知攻击后,将只报警不拦截,若开通高级防护后没有安装RASP插件,则防护无法生效,云锁RASP拦截到的攻击不会在云锁PC端上查询到,而是会在云中心生成事件报告,你需要登录到云锁云中心web端查看事件报告(查看报告需要开通事件管理,150元/月/账户)。

云锁防护模式
1.什么是RASP

RASP“Runtime application self-protection”应用运行时自我保护技术,是奇安信椒图云锁服务器安全管理系统(简称云锁)web攻击防护的核心组件之一,是构建在WEB语言解释器中的异常行为检测引擎。RASP通过HOOK函数的方式,可以细粒度的监控应用脚本的行为及函数调用上下文信息,及时发现恶意代码和漏洞利用行为,缩小攻防信息不对称的时间差,有效降低未知安全威胁造成的破坏。

2.云锁的RASP工作原理
821943338.jpg

通过上图我们可以看到云锁大致的工作流程,

①WEB攻击流量,首先经过⑥系统层监控及防护模块内置的防火墙模块后到达web中间件(IIS、apache、nginx、tomcat等)时会经过WAF探针模块的监控及过滤,通过防护规则(基于签名)可以有效的防御已知安全漏洞攻击,用户也可以自定义防护规则。

②WEB流量在中间件内部会被转发给语言解释器内部运行的WEB业务脚本文件,此时RASP探针模块开始工作,探针会对WEB流量以及③文件操作及数据库操作等行为进行监控,基于无签名的方式对已知及未知威胁进行监控及防护。同时⑥系统层监控及防护模块也会对WEB进程的危险行为进行监控及防御。

④⑤当RASP探针模块以及系统层监控及防护模块检测到异常脚本行为时,首先通过本地基于特征库的WebShell引擎进行检测,当本地引擎无法检出时,会将脚本文件上传到私有云中心上的WebShell检测沙箱进行检测,并根据检测结果及当前的防护模块的工作模式进行处置,防护模式下,会对WebShell文件进行自动隔离(可恢复)。

注:WebShell沙箱是基于脚本虚拟机的无签名Webshell检测技术,工作在云中心上,可以有效检测一句话木马,以及加密、变形的Webshell。

以上内容摘选自:https://mp.weixin.qq.com/s/Aq_qe-_AELLCGnc9qLOCxg

防护测试
怎么知道RASP是否已经工作了呢?很简单,直接将PHP大马上传到服务器上,并执行php木马,看一下会不会拦截就知道了,如下是本站所做的验证测试。

1.本次准备的php大马如下:
2849510161.png
php大马功能强大且完善,并且核心代码加密以躲避杀毒软件查杀,常规检测手段对已知木马有较好防护效果,但对未知的木马防护效果较差。

注:此木马云锁基础防护即可拦截,此处为验证RASP,我们关闭了基础防护引擎,此处仅为演示作用,高级防护与基础防护的工作原理完全不同。

“未知Webshell防护”为基于沙箱的防护以及污点追踪等方式进行防护,对于加密、变形的木马,云锁可以实现不依赖webshell引擎的动态实时防护,需要表现出恶意行为才会拦截,直接访问是不会拦截的,当云锁通过行为检测出是未知webshell时,会阻止运行并隔离木马文件,当此项被绕过后,其他的防护项可以尽量缓解恶意行为对服务器及网站带来的安全威胁,如SQL注入、命令执行等。

运行截图:
1527214737.png
3751140067.png

可以看在未开启“未知webshell防护”功能的情况下,该木马已成功运行。

在无防护手段的情况下,木马可以读取系统目录文件并进行读取、修改、删除,木马可以执行命令,反弹shell等进一步对服务器进行提权、植入二进制后门、挖矿程序、勒索病毒等。

一、测试云锁拦截命令执行
在命令执行时,云锁会在命令执行时拦截命令执行,请保持高级防护的“命令执行漏洞防护”为开启状态、
2647455089.png
3272663932.png
可见,当webshell尝试执行命令时,无论是低危命令还是高危命令,云锁都会将其拦截,保护服务器不被进一步入侵。

二、云锁拦截任意文件上传漏洞,当应用存在上传漏洞时,攻击者可以直接上传webshell文件到服务器,是非常危险的,云锁可以通过RASP获取到应用的流量及行为信息,在webshell上传时将其拦截,为保证防护效果,请保持云锁的“未知上传漏洞防护”为开启状态。
3677228134.png
从图中我们可以看到,当通过程序的上传上传php及其他可执行程序时,云锁会立刻阻断。

三、云锁依托云中心脚本沙盒以及动态污点追踪等技术可直接拦截大部分webshell执行并隔离文件,云锁的动态防御查杀率较好,根据测试,云锁对加密以及具备免杀的webshell有效拦截率在88%以上。
2683769960.png
拦截webshell执行会显示如下页面,并将webshell程序自动隔离:
2430829379.png
注:云锁的”高级防护“并不是万能的,有时也会被绕过,请勿有网站安全用云锁一锁了之的想法。

查看日志
如上面的示例,当云锁高级防护拦截时,日志会在云中心记录,不会再云锁客户端上查询到。

登录到云中心:https://console.yunsuo.qianxin.com,可以看到云锁已经生成事件日志,并自动回溯攻击过程。
4161393085.png
1083293321.png
同时,通过IOC可以看到攻击过程、判定为未知木马的原因、执行命令等情况:
621916270.png


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|不懂 ( 粤ICP备14042591号-1 )|网站地图

GMT+8, 2025-4-15 01:42 , Processed in 0.097560 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部