解密新型SQL Server无文件持久化恶意程序的问题

Querida ·
更新时间:2024-11-15
· 1860 次阅读

近期,阿里云云安全中心基于全新的深度威胁检测功能,监测到云上部分用户的 SQL Server 数据库内部隐藏着一种新型的持久化后门程序。

攻击者利用弱口令不严谨配置,以非常简单的攻击方法进入数据库,即可植入该后门,更致命的是,该后门高度隐蔽和持久化控制的特性,让发现和清除变得困难。

威 胁 特 点

植入简单

利用数据库弱密码或不严谨配置,攻击者只需简单的弱口令利用,即可轻松登录进用户的数据库植入该后门程序;

高度隐蔽

该后门完全隐藏在SQL Server数据库进程内部,无文件落地、无额外进程,运维管理人员很难定位到后门真正所在;

持久化控制

该恶意后门持续不断地向云主机内部植入挖矿病毒等其他恶意程序,使管理员陷入病毒杀不完、怀疑有漏洞的困境;

查杀困难

简单的弱口令漏洞修复和已有恶意文件查杀根本无法实现对恶意程序来源的清除,即使重启数据库服务、甚至重启云主机,由于真正的隐藏后门没有完全清除,还是会有病毒源源不断的被植入主机。

攻 击 流 程

攻击者利用某些应用程序供应商的数据库默认密码及不严谨配置入侵SQL Server数据库;

在登入数据库后,创建SQL Server代理作业周期性执行SQL语句调用恶意的用户自定义函数;

用一种特殊的方式将恶意代码以CLR程序集的形式加载进数据库,实现通过用户自定义函数调用恶意的CLR程序集;

已创建的SQL Server代理作业自动周期性的调用恶意CLR程序集,实现恶意代码持久化。

威 胁 分 析

传统的持久化技术、恶意代码加载方式早已被所有主机安全产品列为重点监控范围,很容易被发现并清除掉:

利用操作系统内置的计划任务、系统服务、自启动项等方式进行持久化;

直接在磁盘上放置恶意程序文件; 

 利用系统内置的工具程序加载恶意代码到内存中执行。

不同的是,此次新型恶意程序将两种SQL Server内置功能巧妙结合用于恶意软件持久化,实现了在无文件落地、无额外进程的情况下保持对云主机的持久化控制,将恶意活动完全隐藏在用户正常业务所需要的SQL Server数据库进程内部。

那么,这一恶意程序是怎么做到的呢?

利用代理作业实现无异常周期性循环执行

SQL Server代理作业原本的用途是方便用户进行数据库运维,通过设置执行计划和执行步骤来实现周期性的执行脚本程序或SQL语句。以往会利用此功能的攻击者或恶意软件会直接用代理作业执行一段恶意命令或恶意脚本,极易被运维管理员发现。

但是该后门的实施者,在创建代理作业后,仅执行了一句很短的SQL语句,将后门隐藏在另一个用户自定义函数SqlManagement背后,隐蔽性很强。

作业名称 :

syspolicy_sqlmanagement_history

执行计划名称 :

schedule_sqlmanagement

执行步骤名称 :

sqlmanagement

执行步骤内容 :

select dbo.SqlManagement(0)

利用CLR程序集实现高隐蔽性

代理作业中的SQL语句要执行的恶意的用户自定义函数SqlManagement,背后对应的是一个CLR程序集 Microsft.SqlServer.Management。该功能原本用途是方便高级数据库管理员扩展数据库功能,攻击者利用该技术可以实现在SQL中调用自定义的恶意C#程序。

以往植入新的CLR程序集需要先将恶意程序写入磁盘,很容易被杀毒软件发现,攻击者使用了一种特殊的写入方式,直接使用SQL写入C#程序的16进制流,将程序加载到数据库中。结合SQL Server 代理作业功能,即可实现在数据库进程内部持久化周期执行恶意的C#程序。

使用SQL将C#恶意程序直接载入数据库示例:

CREATE ASSEMBLY [Microsft.SqlServer.Management] AUTHORIZATION [dbo] FROM CREATE ASSEMBLY [Microsft.SqlServer.Management] AUTHORIZATION [dbo] FROM 0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000 E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000 504500004C010300777C565F0000000000000000E00022200B013000001E00000006000000000000 (后续省略)

还原出的反编译的CLR程序集进行分析,发现核心功能是从用户自定义函数 SqlManagement 开始,最终调用至SendAndReceiveFromServerBuffer 函数从vihansoft.ir周期性下载恶意程序并执行,执行流程全部隐藏在SQL Server应用内,安全运维人员难以发现。

恶意后门检测与清理

阿里云安全中心用户,只需进行简单配置,即可实现对新型SQLServer无文件持久化恶意程序的深度检测、发现、溯源和清理。

1.云环境深度威胁检测技术

针对云上主流应用进行深度检测,尤其是针对Microsoft SQL Server等常见应用,云安全中心可以深入应用内部,在不打扰应用运行的情况下,对潜在的风险项进行扫描,无感发现无文件、无额外进程的高度隐蔽恶意程序,识别该后门的恶意域名。

2.自动化威胁溯源

云安全中心后台系统基于多种主机进程行为分析,通过异构数据关联、图引擎计算、恶意行为模式聚类等方式,层层推进还原出原始触发点或根据聚类分析结果进行推理还原,自动化追溯威胁源头。

3.一点检测全网联动防御

威胁源头信息共享在全网的“检测模式”类威胁情报网络中,只要在一台主机上确认该后门特征,其他主机在扫描时也能快速识别该后门程序。同时发现该后门曾经植入的后续其他恶意文件。

4.一键深度清理

针对此类特殊后门,云安全中心支持一键清理,可以深入到SQL Server应用内部,精准处理掉该后门程序。

拓展安全建议

此次发现的新型持久化恶意程序,攻击者主要针对云上SQL Server服务发动攻击,除了常规的弱口令爆破外,入侵者还会尝试某些应用服务供应商的数据库初始化口令。

用户不单单需要关注自身管理数据库服务是否存在弱口令,还需警惕应用服务供应商的默认口令被入侵,做好日常安全基线检查与安全加固,防患于未然。

到此这篇关于解密新型SQL Server无文件持久化恶意程序的文章就介绍到这了,更多相关解密SQL Server持久化内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!



SQL Server SQL 程序 持久化

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章