今晚开什么生肖和特马

史無前例:微軟SQL Server被黑客組織安上了后門skip-2.0

2019-10-23 91630人圍觀 ,發現 10 個不明物體 資訊

安全公司ESET發布報告,說明了微軟SQL Server (MSSQL)被黑客組織Winnti Group安后門的研究結果。奇安信代碼衛士翻譯如下,供各位參考。

ESET 一段時間以來都在追蹤 Winnti Group 的攻擊活動情況。Winnti Group 至少活躍于2012年并發動了多起高級別的針對視頻游戲和軟件行業的供應鏈攻擊。最近,我們發現了針對微軟 SQL (MSSQL) 的后門,可導致攻擊者在受攻陷的組織機構內站穩腳跟。該后門和 Winnti Group 在2019年10月使用過的另外一款工具 PortReuse 后門之間存在很多相似之處,如使用了同樣的自定義數據包和 VMProtected 啟動器,這也是我們為什么認為該后門是 Winnti Group 安的原因所在。

今年年初,我們收到了作者開發的新后門 skip-2.0 的樣本,它也是 Winnti Group 武器庫的一部分。該后門針對的是 MSSQL Server 11 和12,可使攻擊者通過使用一個魔力密碼隱秘地連接至任何 MSSQL 賬戶,同時自動將這些連接對日志隱藏不可見。這類后門可導致攻擊者隱秘地復制、修改或刪除數據庫內容。例如,該后門可用于操縱游戲幣獲取金錢利益。該黑客組織曾被指操縱游戲幣數據庫。就我們所知,skip-2.0是首個公開記錄的MSSQL Server后門。注意,即使MSSQL Server 11 和12 并非最新版本(分別發布于2012年和2014年),但根據 Censys 的數據可看出,這兩個版本是最常用的版本。

最近,我們發布一份白皮書(見文末地址),說明了 Winnti Group 的武器庫,其中暴露了此前從未公開過的一個后門 PortReuse。該后門使用的打包程序和ESET 公司在2019年3月在受攻陷視頻游戲中內嵌的 payload 使用的打包程序一樣。VMProtected 啟動器釋放 PortReuse 后門,還被用于啟動最新的 ShadowPad 版本。在當時的上下文,我們找到了一款被開發人員命名為 skip.2-0 的新工具。它使用了相同的 VMProtected 啟動器和 Winnti Group 的自定義打包程序并與該黑客組織工具集的其它樣本之間存在很多相似之處。這也讓我們認為 skip-2.0 屬于該工具集。

本文主要討論這個MSSQL Server 后門的技術詳情和功能,同時說明 skip.2-0 和 Winnti Group 已知的武器庫之間存在的技術相似之處,特別是與 PortReuse 后門和 ShadowPad之間存在的相似之處。

VMProtected 啟動器

我們是在查找VMProtected 啟動器時發現的 skip-2.0,它的payload 通常要么是 PortReuse 要么是 ShadowPad。 

嵌入式payload 

和加密的PortReuse 和 ShadowPad payload 一樣,skip-2.0 也內嵌在 VMProtected 啟動器的疊加層上,如下圖1所示:

1.png

加密

該Payload 加密和其它VMProtected 啟動器中使用的加密機制一樣,都是RC5加密算法,由 VolumeID 派生的 key 和字符串[email protected]!rCto R$組成。 

持久性

在PortReuse 和 ShadowPad 案例中,啟動器很可能通過利用被安裝在 C:\Windows\System32\TSVIPSrv.DLL  的一個 DLL 劫持漏洞實現持久性。結果,標準的 Windows SessionEnv 服務在系統啟動時加載 DLL。

Winnti Group 的自定義打包程序

解密之后,內嵌的payload 實際上就是Winnti Group 的自定義打包程序。該打包程序用于打包 PortReuse 后門以及內嵌在受攻陷視頻游戲中的 payload。

打包程序配置 

該打包程序配置包含打包二進制的解密密鑰以及其原始文件名稱、大小以及執行類型(EXE 或 DLL)。該 payload 的打包程序配置如下表1所示:

2.png

從打包程序配置可看出,該 payload 被稱為 Inner-Loader。Inner-Loader 是該黑客組織武器庫中一款注入器的名稱,用于將 PortReuses 后門注入到偵聽某個特定端口的進程中。除了具有相同的名稱外,通過分析這個 payload 得出,它是 Inner-Loader 注入器的另外一個變體。

Inner-Loader注入器

這個Inner-Loader 的變體并沒有查找偵聽某個特定端口的進程(如注入 PortResuse 后門時的情況那樣),而是查找 MSSQL Server 的一個常規進程名稱 sqlserv.exe。如找到,則 Inner-Loader 將 payload 注入此進程中。而該 payload 也與自定義打包程序打包。Payload 的打包程序配置如下表2:

3.png

這個被注入的payload 的原始文件名稱是skip-2.0.dll。

Skip-2.0

由Inner-Loader 注入并啟動后,skip-2.0首先檢查它是否在sqlserv.exe進程中執行,如是,則檢索由 sqlserv.exe 加載的sqllang.dll的處理程序。之后繼續查找并從該 DLL 中鉤出多個函數。如下圖2說明的是skip-2.0 的攻陷鏈。

4.png

鉤sqllang.dll 

Skip-2.0 使用的鉤子程序和 NetAgent 使用的非常相似。NetAgent 是安裝網絡鉤子的PortReuse模塊。這個鉤子庫基于多個開源鉤子框架所使用的 disorm 開源反匯編程序。具體而言,反匯編庫用于正確地計算被鉤的指令的大小。如下圖3所示,NetAgent和skip-2.0 所使用的鉤子程序幾乎是一樣的。

5.jpg

這是其中一處顯著的不同之處:skip-2.0的鉤子函數提取鉤子的地址并安裝為一個參數,而對于 NetAgent 而言,鉤子安裝的地址是硬編碼的。產生不同的原因在于,skip-2.0必須鉤出 sqllang.dll 中的多個函數才能正常運行,而 NetAgent 只是針對單個函數。 要定位每個被鉤的sqllang.dll函數,skip-2.0 首先通過解析 PE 頭部信息馬上檢索被加載到內存中的 DLL 的大小(其真實大小)。之后需要在sqllang.dll中匹配的字節數組被初始化,如下圖4所示。一旦找到第一個匹配該字節的地址,該鉤子就會使用圖3所示的程序。

6.png

隨后,成功的鉤子安裝就會以明文形式記錄在位于硬編碼路徑C:\Windows\Temp\TS_2CE1.tmp上的一個日志文件中,如下圖5所示。

7.png

如果未找到目標函數,則鉤子安裝程序將使用一組不同的字節模式搜索后備函數。

使用匹配字節序列而非使用靜態偏移量以定位目標函數的地址,加上使用備用字節序列,可使 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

第一個函數(CPwdPolicyManager::ValidatePwdForLogin)最耐人尋味,它的作用是驗證既定用戶的密碼。該函數的鉤子檢查用戶提供的密碼是否和魔力密碼匹配,如不匹配,則原始函數不會被調用且鉤子返回0,使得即使在未提供正確密碼的情況下也能進行連接。然后設置一個全局標志,接受負責事件日志的其它鉤子函數檢查。對應的反匯編程序如圖6所示。在設置全局標志的情況下,鉤子日志函數將在不調用其相應的原始函數的情況下靜默返回,因此該動作不會被記錄。如提供的是其它密碼,則會調用原始函數。

8.png

從硬編碼密碼來看,ESET 在此前發現的 SSH 后門中也使用了類似的后門技術。區別在于,skip-2.0 被安裝在內存中,而SSH 后門中,sshd可執行文件在執行前遭修改。 另外,CSECAuthenticate::AuthenticateLoginIdentity會被從鉤子代碼中調用但鉤子總是返回0。如果使用了魔力密碼登錄,則鉤子ReportLoginSucess和IssueLoginSuccessReport不會調用原始函數。同樣的行為也適用于FEExecuteLogonTriggers。其它的日志函數如XeSqlPkg::sql_statement_completed::Publish或XeSqlPkg::sql_batch_completed::Publish也會在用戶使用魔力密碼登錄的情況下被禁用。多個審計事件也會遭禁用,包括SecAuditPkg::audit_event::Publish、XeSqlPkg::login::Publish和XeSqlPkg::ual_instrument_called::Publish。 

這一系列鉤子使攻擊者不僅能夠通過使用一個特殊的密碼在受害者 MSSQL Server 11 和12上獲得持久性。為了查看某個特定的sqllang.dll版本是否遭 skip-2.0 攻擊(即匹配字節模式),我們創建了一個 YARA 規則(具體見文末 GitHub 地址)。

和 Winnti Group 的關聯

我們看到 skip-2.0 和 Winnti Group 武器庫其它工具之間的很多相似指出。Skip-2.0后門的 VMProtected 啟動器、自定義打包程序、Inner-Laoder 注入器和鉤子框架都是 Winnti Group 已知工具集的一部分。因此我們認為 skip-2.0 是Winnti Group 工具集的一部分。

結論

Skip-2.0后門是Winnti Group 武器庫的一部分,和該組織已知的工具集之間存在很多相似之處,可使攻擊者在 MSSQL Server 上實現持久性。鑒于安裝這些鉤子需要具備管理員權限,因此必須在已遭攻陷的 MSSQL Server 上安裝 skip-2.0 才能實現持久性和隱秘性。

妥協指標(IoCs)

9.png

MITREATT&CK 技術

10.png

ESET 此前發布的Winnti Goup 武器庫白皮書 URL: https://www.welivesecurity.com/wp-content/uploads/2019/10/ESET_Winnti.pdf  

YARA 規則的GitHubURL: https://github.com/eset/malware-ioc/tree/master/winnti_group 
原文鏈接 https://www.welivesecurity.com/2019/10/21/winnti-group-skip2-0-microsoft-sql-server-backdoor/

*本文作者:奇安信代碼衛士,轉載請注明來自FreeBuf.COM

這些評論亮了

  • test222 回復
    沒看懂? 是實現mssql安裝后門 還是mssql官方被植入了后門 差距很大
    )26( 亮了
  • 藍貓跳大 回復
    你們給你們公司領導匯報的時候也是這樣和稀泥??
    )14( 亮了
  • :?: 誤導性標題,對不明真相的廣大人民群眾造成不必要的恐慌,擾亂社會治安。
    )6( 亮了
發表評論

已有 10 條評論

取消
Loading...

特別推薦

推薦關注

活動預告

填寫個人信息

姓名
電話
郵箱
公司
行業
職位
css.php 今晚开什么生肖和特马 北京十一选五开奖一 金来源配资 球探竞彩比分直播 希恩配资 快乐10分走势图 哈尔滨麻将幺是什么 今日竞彩足球比分预测汇总 竟彩 广东快乐十分开奖查 今天 球探手机比分网足球即时比分手机版 cba1112总决赛比分 体彩宁夏11选五5开奖结果 微乐河北麻将官方网址 迅盈排球比分直播 股票行情分析软件 同花顺 22选5开奖结果走