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

来源:脚本之家  责任编辑:小易  

近期,阿里云云安全中心基于全新的深度威胁检测功能,监测到云上部分用户的 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持久化内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

您可能感兴趣的文章:SQLSERVER对加密的存储过程、视图、触发器进行解密(推荐)SQLSERVER加密解密函数(非对称密钥 证书加密 对称密钥)使用方法代码SQL Server储过程加密和解密原理深入分析存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)

  • 本文相关:
  • 将表里的数据批量生成insert语句的存储过程 增强版
  • mssql2005,2008导出数据字典实现方法
  • sql server 数据库分离与附加(图文教程)
  • sql查询入门(上篇) 推荐收藏
  • sql查看所有表大小的方法
  • sql server 文件和文件组
  • sql server提示"选定的用户拥有对象,所以无法除去该用户”
  • sql server查询前n条记录的常用方法小结
  • 在sqlserver中如何使用cte解决复杂查询问题
  • sqlserver实现类似oracle的before触发器示例
  • SQL语句解密
  • 在线求MD5 SQL密码解密大神们帮帮忙
  • 求魔域SQL数据库解密方法
  • SQL存储过程 解密 ,请说明具体方法,代码我也有
  • 求解sql server2005 解密函数,是自定义的加密函数。
  • sql prompt怎么解密存储
  • SQL存储过程可以解密吗?
  • SQL数据和EXCEL解密.不是解密函数和存储过程.请详细描述解...
  • sql数据库Password加密解密?
  • SQL SERVER 存储过程解密工具v6.0注册码
  • MS SQL DES数据加密 解密,急求各位大虾帮帮小弟!
  • vb+sql2000数据库加密解密
  • SQl用户加密,怎么解密,求高手
  • SQL SERVER 2005数据表解密
  • SQL SERVER 2005 存储过程解密的详细过程。
  • SQLSERVER加密解密函数(非对称密钥 证书加密 对称密钥)使...
  • c# sqlserver 数据加密解密
  • Discuz! X2 论坛的加密md5如何解密? 有数据库sql文件。
  • 问题解决集锦 数据加解密全集
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页sqlserver对加密的存储过程、视图、触发器进行解密(推荐)sqlserver加密解密函数(非对称密钥 证书加密 对称密钥)使用方法代码sql server储过程加密和解密原理深入分析存储过程解密(破解函数,过程,触发器,视图.仅限于sqlserver2000)将表里的数据批量生成insert语句的存储过程 增强版mssql2005,2008导出数据字典实现方法sql server 数据库分离与附加(图文教程)sql查询入门(上篇) 推荐收藏sql查看所有表大小的方法sql server 文件和文件组sql server提示"选定的用户拥有对象,所以无法除去该用户”sql server查询前n条记录的常用方法小结在sqlserver中如何使用cte解决复杂查询问题sqlserver实现类似oracle的before触发器示例sql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据win7系统安装sqlserver2000的详细sql重复记录查询的几种方法sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些sqlserver自动增长列引起的问题解决方法mssql 2005/2008 日志压缩清理方法小结sql中将datetime转换成字符串的方法(convcentos8安装sqlserver2019的过程快速实现sql server数据库恢复备份delete from 表名与truncate table 表名区access 数据类型与 ms sql 数据类型的相应sql中where变量is null条件导致全表扫描问详解sql中group by的用法sql server存储过程的基础说明
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved