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

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

(0)

相关推荐

  • 存储过程解密(破解函数,过程,触发器,视图.仅限于SQLSERVER2000)

    复制代码 代码如下: create PROCEDURE sp_decrypt(@objectName varchar(50)) AS begin begin tran declare @objectname1 varchar(100),@orgvarbin varbinary(8000) declare @sql1 nvarchar(4000),@sql2 nvarchar(4000),@sql3 nvarchar(4000),@sql4 nvarchar(4000),@sql5 nvarcha

  • SQL Server储过程加密和解密原理深入分析

    开始: -------------------------------------------------------------------------------- 在网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的.后来自己根据实际的应用环境,编写了两个存储过程,一个加密存储过程(sp_EncryptObject),和一个解密存储过程(sp_EncryptObject),它们可以应用于S

  • SQLSERVER加密解密函数(非对称密钥 证书加密 对称密钥)使用方法代码

    ENCRYPTBYASYMKEY() --非对称密钥ENCRYPTBYCERT()   --证书加密ENCRYPTBYKEY()   --对称密钥ENCRYPTBYPASSPHRASE()  --通行短语(PassPhrase)加密 复制代码 代码如下: --SQLSERVER中的加密函数 2013-7-11ENCRYPTBYASYMKEY() --非对称密钥ENCRYPTBYCERT()   --证书加密ENCRYPTBYKEY()   --对称密钥ENCRYPTBYPASSPHRASE() 

  • SQLSERVER对加密的存储过程、视图、触发器进行解密(推荐)

    加密测试的存储过程 IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE TYPE='P' AND NAME='P_TEST') DROP PROCEDURE P_TEST GO CREATE PROCEDURE P_TEST(@USERNAME VARCHAR(20),@MSG VARCHAR(20) OUTPUT) WITH ENCRYPTION AS BEGIN IF(SELECT COUNT(1) FROM Custs WHERE NAME=@USERNAME

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

    近期,阿里云云安全中心基于全新的深度威胁检测功能,监测到云上部分用户的 SQL Server 数据库内部隐藏着一种新型的持久化后门程序. 攻击者利用弱口令不严谨配置,以非常简单的攻击方法进入数据库,即可植入该后门,更致命的是,该后门高度隐蔽和持久化控制的特性,让发现和清除变得困难. 威 胁 特 点 植入简单 利用数据库弱密码或不严谨配置,攻击者只需简单的弱口令利用,即可轻松登录进用户的数据库植入该后门程序; 高度隐蔽 该后门完全隐藏在SQL Server数据库进程内部,无文件落地.无额外进程,运

  • SQL Server 数据文件收缩和查看收缩进度的步骤

    目录 回收步骤: 1.查看日志文件大小[一般回收比较大的] 2.查看日志文件空间是否可回收[只有log_reuse_wait_desc是NOTHING状态才可回收] 3.回收日志文件空间 4.查看数据文件大小 5.收缩数据文件[按照经验,最好每5G循环收缩,如果影响业务,随时中断,不会回滚] 6.查看收缩进度[预估值] SQL Server在删除数据后,会重新利用这部分空间,所以如果不是空间紧张的情况下,可以不回收. 回收一般先回收日志文件,因为这个回收速度非常快,可以短时间内清理出一部分可用空

  • 使用SQL Server判断文件是否存在后再删除(详解)

    在SQL Server中可以使用系统内部存储过程xp_fileexist判断文件是否存在,如果存在再使用xp_cmdshell删除文件.xp_fileexist除了可以判断文件是否存在外,还可以判断文件夹是否存在,下面是下使用这两个的示例. 删除文件存储过程 ALTER proc [dbo].[delFile_P] ( @path nvarchar(200)) as declare @result int exec master.dbo.xp_fileexist @path,@result ou

  • SQL Server无日志恢复数据库(2种方法)

    SQL Server是一个关系数据库管理系统,应用很广泛,在进行SQL Server数据库操作的过程中难免会出现误删或者别的原因引起的日志损坏,又由于SQL Server数据库中数据的重要性,出现了以上的故障之后就必须对数据库中数据进行恢复.下文就为大家介绍一种恢复数据库日志文件的方法. 解决方法一 1.新建一个同名的数据库 2.再停掉sql server(注意不要分离数据库) 3.用原数据库的数据文件覆盖掉这个新建的数据库 4.再重启sql server 5.此时打开企业管理器时会出现置疑,先

  • SQL Server中的文件和文件组介绍

    文件和文件组简介 在SQL Server中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL Server通过管理逻辑上的文件组的方式来管理文件. SQL Server通过文件组对数据文件进行管理.我们看到的逻辑数据库由一个或者多个文件组构成. 结构图如下: 文件组管理着磁盘上的文件,文件中存放的就是SQL Server的实际数据. 为什么通过文件组来管理文件 从用户的角度来说,创建对象时需要指定存储文件组的只有三种数据对象:表,索引和大对象

  • 关于SQL注入中文件读写的方法总结

    前言 SQL注入有直接sql注入也有文件读写时的注入了我们这篇文章介绍的是SQL注入中的文件读写这一块的内容,具体的一起来看看. 一.MySQL 读文件 常见的读文件,可以用16进制代替字符串 select load_file('c:/boot.ini') select load_file(0x633a2f626f6f742e696e69) select load_file('//ecma.io/1.txt') # smb协议 select load_file('\\\\ecma.io\\1.t

  • SQL Server LocalDB 在 ASP.NET中的应用介绍

    我相信世界总是会向更好的方向发展,今年的维也纳新年音乐会没有往年的明星级指挥,但是它通过回归奥地利的本质,以更传统的聚合法则,让过往的艺术家们一代代创造的灿烂,在新的指挥手中,迸发出更深邃的音节.在此,也祝大家新年快乐.如同交响乐一样,构造软件系统不一定必须某个强大的明星驱动,我们站在历代ADO.NET的肩膀上,更好地回归到SQL Server的核心开发:SQL Server LocalDB 在 ASP.NET中的应用. 使用SQL Server LocalDB的优势: 快速部署完整的SQL S

  • SQL Server Native Client下载 SQL Server Native Client安装方法

    在安装 SQL Server 2008 或 SQL Server 工具时,将同时安装 Microsoft SQL Server Native Client 10.0.如果计算机上还安装了 SQL Server Native Client 的 SQL Server 2005 版本,则 SQL Server Native Client 10.0 将与早期版本并行安装. Microsoft SQL Server Native Client 10.0下载:http://www.jb51.net/data

  • SQL Server 2008网络协议深入理解

    SQL Server 2008支持四种协议,Shared Memory:TCP/IP:Named Pipes和Virtual Interface Adapter(VIA).代开SQL Server配置管理器之后,会显示一个配置SQL Server服务,SQL Server网络协议和SQL Native Client协议的节点.可以通过展开SQL Server 2008网络配置节点进行服务器协议的配置. Shared Memory:Shared Meory协议只能由本地连接使用,因为它是一个用于服

  • ASP.NET2.0 SQL Server数据库连接详解

    Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection. SqlConnection类的对象连接SQL Server数据库:OracleConnection 类的对象连接Oracle数据库: OleDbConnection类的对象连接支持OLE DB的数据库,如Access:而OdbcConnection类的对象连接任何支持ODBC的数据库.与数据库的所有通讯最终都是通过Connection对象来完

随机推荐