首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

Winnti黑客组织MSSQL后门分析

2019-12-25

一段时间以来,ESET的研究人员一直在盯梢Winnti的活动,该安排从2012年起就开端活泼,并针对视频游戏和软件职业供应链进行进犯。最近,发现了一个曾经未经记载的后门,其方针是Microsoft SQL。这个后门与PortReuse后门有多处类似之处,PortReuse是Winnti Group运用的另一个东西,于2019年10月初次记载。

本年检测到了一个新后门的样本,skip-2.0,作者是winnti安排成员。这个后门程序以MSSQL服务器11和12为方针,进犯者能够运用magic暗码衔接到任何MSSQL帐户,一起主动将这些衔接隐藏在日志中。后门答应进犯者仿制、修正或删去数据库内容,能够用来操作游戏中的钱银以获取经济利益。据了解,skip-2.0是第一个揭露记载的mssql服务器后门。

本文即将点介绍mssql服务器后门的技能细节和功用,以及skip.2-0与winnti已知武器库的技能类似性。

咱们在查找vmprotected发动程序时找到了skip-2.0,其有用负载通常是portreuse或shadowpad。

与加密的portreuse和shadowpad有用负载相同,skip-2.0嵌入到vmprotected发动程序中,如图1所示:

有用负载加密与其他vmprotected发动程序中运用的相同。它是RC5加密的,密钥来自volumeID和字符串f@ukd!RCTO R$。

与portreuse和shadowpad的相同,发动程序可能会经过运用dll绑架而持续存在,办法是将其装置在c:\windows\system32 svipsrv.dll。这将导致规范Windows SessionEnv服务在体系发动时加载DLL。

一旦解密,嵌入的有用负载实际上是winnti group的自定义打包程序。这个打包器与咱们在 白皮书 中记载的代码是相同的。它被用来打包portreuse后门以及嵌入在受损视频游戏中的负载。

打包程序装备包含打包二进制文件的解密密钥及其原始文件名、巨细和履行类型。有用载荷装备如表1所示。

打包器装备能够看出,有用负载称为内部装载器。内部加载程序是一个注入器的称号,它是winnti集团的武库的一部分,用于将portreuse后门注入监听特定端口的进程。

这是一种内部加载程序的变体,不是像注入portreuse后门时那样寻觅监听特定端口的进程,而是寻觅名为sqlserv.exe的进程,这是mssql server的惯例进程名。假如找到,则内部加载程序会将有用负载注入此进程。此有用负载还与自定义打包程序打包在一起,该有用负载的打包程序装备如表2所示。

此注入负载的原始文件名为skip-2.0.dll。

在被内部加载程序注入并发动之后,skip-2.0首要查看它是否在sqlserv.exe进程中履行,假如是,则检索sqllang.dll的句柄,该句柄由sqlserv.exe加载。然后持续从该dll中查找并挂接多个函数。图2描绘了skip-2.0的运转进程。

skip-2.0运用的hook进程与netagent十分类似,netagent是担任装置网络hook的portreuse模块。这个hook库根据distorm开源反汇编程序,该反汇编程序由多个开源挂接结构运用。需求一个反汇编库来正确核算要hook的指令的巨细。鄙人图中能够看到,NetAgent和Skip-2.0运用的hook进程简直相同。

图3Hex-Rays output comparison between the NetAgent and skip-2.0 hooking procedures

有一个明显的差异便是skip-2.0中的hooking函数即将装置的钩子的地址作为参数,而关于netagent,要装置的钩子的地址是硬编码的。这是由于skip-2.0有必要hooksqllang.dll中的多个函数才干正常运转,而netagent只针对一个函数。

要定位hook的每个sqllang.dll函数,skip-2.0首要经过解析pe头来检索加载到内存中的dll的巨细。然后初始化sqllang.dll中要匹配的字节数组,如图4所示。一旦找到与字节数组匹配的第一个匹配项的地址,就会运用图3所示的进程装置钩子。

然后,钩子装置成功后会在cleartext中记载,该文件坐落硬编码途径c:\ windows emp s\u 2ce1.tmp中,如图5所示。

假如找不到方针函数,钩子装置程序将查找具有不同字节形式集的回退函数。

经过匹配字节序列来定位方针函数的地址,而不是运用静态偏移量,再加上运用字节的回退序列,skip-2.0能够更灵敏地习惯mssql更新,并可针对多个sqllang.dll更新。

skip-2.0的方针函数与身份验证和事情日志记载相关。方针功用包含:

CPwdPolicyManager::ValidatePwdForLogin
CSECAuthenticate::AuthenticateLoginIdentity
ReportLoginSuccess
IssueLoginSuccessReport
FExecuteLogonTriggers
XeSqlPkg::sql_statement_completed::Publish
XeSqlPkg::sql_batch_completed::Publish
SecAuditPkg::audit_event::Publish
XeSqlPkg::login::Publish
XeSqlPkg::ual_instrument_called::Publish

其间最风趣的函数是第一个函数,它担任验证为给定用户供给的暗码。

此函数的钩子查看用户供给的暗码是否与magic暗码匹配;假如是,则不会调用原始函数,钩子将回来0,然后答应衔接。然后设置一个大局标志,该标志将由担任事情日志记载的其他hook函数进行查看。相应的反编译进程如图6所示。在设置此大局标志的情况下,hook的日志记载函数将静默回来,而不调用其对应的原始函数,因而不会记载操作。

假如运用magic暗码登录,reportloginsaccess和issueloginsuccessreport挂钩将不会调用原始函数。相同的行为也适用于feexecutelogontriggers。其他日志记载功用,如xesqlpkg::sql_completed::publish或xesqlpkg::sql_batch_completed::publish,在用户运用魔法暗码登录的情况下也将被禁用。还禁用了多个审阅事情,包含secauditpkg::audit_event::publish、xesqlpkg::login::publish和xesqlpkg::uau instrument_called::publish。

这一系列hook不只答应进犯者经过特别暗码在受害者的mssql服务器中取得耐久操控,并且运用该暗码时禁用了多个日志,因而无法检测到进犯者。

研究人员对多个MSSQL Server版别测试了Skip-2.0,发现能够运用MSSQL Server 11和12的暗码成功登录。为了查看skip-2.0是否针对特定的sqllang.dll版别,创建了一个yara规矩,该规矩能够在 github 库中找到。

skip-2.0和来自winnti的其他东西有许多类似之处。vmprotected发动程序、自定义打包程序、内部加载程序和hook结构是winnti东西集的一部分。

skip-2.0后门是winnti的东西集之一,它与该安排已知的东西集有许多类似之处,并答应进犯者在mssql服务器上完成耐久操控。装置钩子需求管理权限,所以有必要在现已被攻陷的mssql服务器上运用skip-2.0来完成耐久操控和荫蔽。

*参阅来历: welivesecurity ,由Kriston编译,转载请注明来自FreeBuf.COM

热门文章

随机推荐

推荐文章