Solar應急響應團隊丨AI 正在改寫漏洞戰爭:從管家婆 211 端口 RCE 看自動化勒索攻擊鏈


    中國產業經濟信息網   時間:2026-07-10





      一個沒有開放數據庫端口的內網,一個密碼足夠復雜的數據庫賬號,一臺沒有任何Web漏洞的服務器——卻在一夜之間被勒索病毒加密了全部文件。

      更詭異的是,所有日志干干凈凈,沒有任何入侵痕跡。仿佛黑客是“隔空取物”。

      這不是電影情節。過去幾個月,Solar應急響應團隊連續處置了多起.weax(Weaxor家族)和.sorry(Tellyouthepass家族)勒索事件。受害者有一個驚人的共同點:他們都部署了“管家婆”系列管理軟件。

      經過深度逆向分析與靶場驗證,我們最終把入口鎖定在一個被絕大多數運維忽視的211端口上——一個無需任何口令、無需加密狗、無需客戶端即可觸發的未授權遠程代碼執行(RCE)漏洞。

    1783585733102042.png

      一、線索匯聚:兩起案例指向同一個入口

      案例A:Tellyouthepass家族(加密后綴.sorry)

      第一起案例是一家制造業公司被.sorry加密。在其磁盤鏡像里提取到了服務端程序包,解壓后發現關鍵文件ScktSrvr.exe(680960字節)。這臺機器對公網開放的端口里,211端口(TCP)處于監聽狀態且加密發生后仍存活,而1433(SQL Server)并未對公網放行。

      案例B:Weaxor家族(加密后綴.weax)

      第二起案例的SQL Server默認追蹤日志(log_*.trc)中有一條鐵證級記錄:

    1783585762878015.png

      攻擊者在加密前一天,用sa身份開啟了OLE Automation Procedures(執行OS命令的前置動作)。但問題是:sa是怎么被拿到的?1433又沒開。

      共同點收斂

      兩起案例并排對比,線索全部指向同一個東西:那個開著的211端口。它不是Web端口、不是數據庫端口,而是管家婆客戶端連服務端用的應用層socket端口。在1433不暴露的前提下,唯一能讓sa在本地被執行的路徑,就是經211端口——借管家婆應用自身的sa連接,繞過數據庫端口的封堵。

      二、211端口的真身:Delphi MIDAS Socket Server

      管家婆是典型的C/S兩層半架構。客戶端(GraspNet.EXE)并不直接連數據庫,而是先連到服務端的“中間件”scktsrvr.exe,它再轉交給業務程序GraspSvr.exe,業務程序最終以sa身份連接SQL Server。

      完整的數據流路徑:

    1783585775363487.png

      scktsrvr.exe來自Borland/Delphi技術體系,正式名稱叫Borland Socket Server,是MIDAS/DataSnap架構中專門搬運數據的socket傳輸層程序。它用的是MIDAS私有二進制協議(不是HTTP),這決定了兩個致命后果:

      ●它不是Web漏洞。WAF、Web日志、URL審計統統看不到它——它根本不在Web管道里。

      ●它默認不產生登錄日志。連接建立階段沒有應用層認證,握手成功也不寫登錄記錄。攻擊者全程在日志里留不下痕跡。

      這就完美解釋了之前的悖論:受害者環境沒有痕跡,不是因為沒被打,是因為這條管道壓根不記日志。

      三、逆向分析:從零認證到任意方法調用

      3.1 握手階段:沒有任何認證

      我們將靶機上的scktsrvr.exe(版本7.0.4.453)放入IDA Pro進行逆向。

      scktsrvr的運行參數讀自注冊表 HKLM\SOFTWARE\WOW6432Node\Borland\Socket Server。Delphi的Socket Server設計上支持一個叫InterceptGUID的“鑒權攔截器”——如果配置了這個GUID,每條連接都會先經過COM攔截器做認證。

      經查證:InterceptGUID為空。意味著沒有任何鑒權攔截器被插入連接流程。任何人TCP連上211,都能直接進入MIDAS協議層。這是整個漏洞的根。

      3.2 協議主循環:分發器 sub_48B820

      握手成功后,連接進入解釋器主循環。地址0x48B820的函數讀取1字節action,按switch分發:

    1783585811817498.png

      3.3 方法調用入口:Invoke解釋器 sub_48C050

      action=2進入方法調用解釋器(0x48C050),它連續讀取6個“變體(Variant)”,然后直接調用AppServer的IDispatch::Invoke——COM里的通用方法調用接口:

    1783585832915673.png

      關鍵發現:從“握手成功”到“IDispatch::Invoke被調用”之間,沒有任何權限校驗——沒有“未登錄返回錯誤”、沒有“權限不足”、沒有黑名單。握手能過,AppServer暴露的任意方法都可被自由調用。

      3.4 變體的網絡編碼格式

      變體讀取器(0x48A89C)揭示了數據在網絡上的編碼方式:

    1783585844561407.png

      值得注意的是,變體類型大小表word_491354只有20個有效條目(type 0-19),type≥0x14時會越界讀到指針碎片,這是個真實的內存安全缺陷代碼模式(后文會討論其可利用性)。

      四、MITM抓包:拿到協議的“地面真相”

      逆向告訴我們“協議的零件長什么樣”,但沒告訴我們“零件怎么組裝成完整數據包”。我們在IDA里推斷的包頭格式反復失敗——服務器總是返回Invalid variant type。

      最穩的辦法:搭建中間人(MITM),讓真實的管家婆客戶端從中間過一遍,把真實數據包字節抓下來對照。

      抓包方案

    1783585859611155.png

      客戶端登錄一次,我們抓到了880條消息的完整雙向字節流。第一條客戶端握手包(92字節)揭示了包結構:

    1783585888813860.png

      關鍵糾錯:動作類型在簽名里,不在載荷里

      繼續分析后續消息:

    1783585902907934.png

      這就是我們之前反復踩坑的原因——數據包的“動作類型”藏在簽名的第一個字節里,而不是載荷內部。差一個字節的位置,卡了很久。抓包一對照,豁然開朗。

      還原出的完整方法調用序列

      這條序列給了最后兩塊拼圖:方法名→dispid是動態查的(ACT3),所以跨版本通用;真正執行SQL的是OpenSQL + AS_GetRecords這一對組合。

    1783585913280955.png

      五、構造PoC:從無憑據握手到SYSTEM

      5.1 無憑據握手

      按還原出的字節布局構造握手包,直接建立連接——無需任何憑據。

      5.2 必須先初始化會話

      握手成功后直接發OpenSQL會收到“Provider not exported”錯誤。對照抓包序列才明白:必須先調ConnectDb注冊客戶端,再調ChangeDb選擇賬套。

      這里有一個讓攻擊“零先驗知識”的關鍵點:

      ChangeDb選的賬套名“hherpmaster”是管家婆的默認系統主賬套,每套管家婆裝好就有、名字固定。攻擊者不需要事先知道受害者的業務賬套叫什么。而且xp_cmdshell是SQL Server服務器級功能,不依賴具體業務賬套。

      如果攻擊者還想精準打擊某個業務賬套,甚至可以連上后直接 select name from master.sys.databases 把所有賬套列出來——實測一條SQL就能枚舉完畢。

      5.3 執行任意SQL → OS命令

    1783585934833034.png

      會話初始化完成后,攻擊鏈和真實客戶端一致:

      AS_GetRecords一旦觸發,GraspSvr就以sa身份將SQL送入SQL Server;xp_cmdshell把命令交給操作系統。在我們靶機上,SQL Server服務以LocalSystem運行,攻擊者獲得的是NT AUTHORITY\SYSTEM權限——Windows用戶態最高權限。

      注意:并非所有部署的SQL服務都是LocalSystem,不同安裝方式可能使用更低權限的服務賬戶(如NETWORK SERVICE、NT SERVICE\MSSQLSERVER),此時OS命令權限會相應降低。但“未授權以sa執行任意SQL”這個核心漏洞不受影響。

      六、落地驗證與取證

      我們在靶場上完成了兩項物證級驗證:

      物證一:OS命令執行 + SYSTEM權限確認

      經xp_cmdshell在靶機C:\寫下標記文件,經驗證文件所有者為NT AUTHORITY\SYSTEM。攻擊者由此可裝勒索、停服務、清日志,橫向移動到其它主機則通常還需進一步竊取/復用憑據(非一步到位)。

      物證二:未授權DDL執行(持久表)

      經同一條無憑據鏈路執行DDL:

    1783585953674674.png

      表持久存在于數據庫中,是“未授權→sa任意SQL”的鐵證。最終在客戶授權下進行實網測試,全流程閉環確認。

      回溯悖論的完整解釋

      到這里,最初的悖論徹底解開:

      ●不產生登錄日志:MIDAS握手無認證、不記錄“誰連進來了”

      ●不觸發登錄失敗告警:根本沒用口令,沒有“失敗”可言

      ●不經過Web:WAF / Web日志完全看不到

      ●借用應用自身的sa連接:1433沒開也無所謂,命令是從應用內部發出去的

      ●唯一痕跡只在SQL默認trace里(且默認trace并非所有部署都保留/被檢查)

      所以受害者環境看起來沒有痕跡——不是沒被打,是這條管道天生不留常規腳印。

      七、緩沖區溢出:有缺陷代碼,但被異常機制中和

      除了應用層RCE,我們還調查了協議解析層是否存在內存破壞漏洞。

      受害者日志中的崩潰證據

      案例A受害者的Application.evtx中有30條ScktSrvr.exe的AppCrash記錄(兩組不同WER哈希)。崩潰點0x4041d9經反匯編確認落在Delphi運行時的SEH鏈代碼(mov fs:[0], eax),這是SEH鏈被破壞的強簽名——棧溢出覆蓋SEH后,異常處理二次崩潰的典型落點。

      嚴格來講,要坐實“可控SEH覆蓋”還需要崩潰轉儲來觀察被覆蓋的SEH記錄;目前僅有崩潰日志,未取得dump,故此處為“高度可疑的棧/SEH破壞”。

      管家婆7.0上的實測結論

      變體讀取器的default分支存在確鑿的棧溢出代碼模式:

    1783585983260016.png

      但在7.0上實測:發type 0x14(各種長度payload),服務器全部優雅返回“Invalid variant type”,進程PID不變。原因是Delphi在用到被破壞的返回地址之前,就先拋了EVariantError,被外層分發器的SEH兜住。內存寫確實發生,但崩不出來、控不了執行流。

      誠實結論:真正被勒索利用的是“未授權MIDAS→SQL→RCE”的應用層路徑,不是緩沖區溢出。但11.0版本(案例A)的崩潰記錄表明更高版本可能存在可利用的內存破壞——有待后續驗證。

      八、這不是一個產品的問題,而是一類漏洞

      研究過程中有兩個發現讓我們意識到問題的廣度:

      同源架構

      案例A的XXXServer.rar中也有ScktSrvr.exe(版本11.0.2804.9245,產品名“CodeGear Socket Server”),和管家婆同源。其業務程序XXXServerZz.exe實現了標準的Delphi IAppServer接口(含標準類型庫GUID {1AEFCC20-...}、AS_Execute、AS_GetProviderNames,以及關鍵屬性poAllowCommandText),攻擊路徑是AS_Execute(provider, CommandText=任意SQL)直接執行。底層入口完全一樣:211端口、scktsrvr、無認證。

      網段掃描驗證

      對靶機所在網段做211端口掃描,一次發現4臺不同應用開放211。用我們的工具去連,全部返回:

    1783586005681987.png

      說明它們是別的Delphi MIDAS應用(不同CLSID),管家婆的“鑰匙”開不了它們的鎖。但攻擊者手里有一本“CLSID字典”——逆向多種應用客戶端提取各自AppServer的CLSID,掃描器先用04 da探針確認“這是MIDAS服務”,再逐個試字典中的CLSID,命中后套對應方法集攻擊。

      結論:任何“Delphi MIDAS socket應用 + scktsrvr無認證 + AppServer有SQL/命令執行能力”的組合都中招。管家婆只是暴露量最大的一類。

    1783586023307606.png

      九、AI驅動的漏洞武器化:一個嚴肅的假設

      截至本文發布時,Weaxor和Tellyouthepass的攻擊目標正在快速擴展。此前兩個家族主要利用護網期間的1day和Nday漏洞,但近期態勢明顯變化——開始將矛頭指向管家婆物聯通、管家婆ERP等更多產品線,且基本都是以0day漏洞作為突破口。這種攻擊面的快速轉移和武器化速度,與以往的攻擊模式形成了強烈反差。

      管家婆系列軟件在互聯網上可直接下載安裝包,任何人都能輕易獲取目標程序。從公開下載到漏洞被武器化投入實戰,周期被壓縮得極短。

      嚴肅假設:勒索組織可能正在借助AI輔助進行自動化漏洞審計,大幅縮短了從“發現漏洞”到“勒索變現”的時間線。這不再是傳統的“漏洞挖掘→分析利用→傳播攻擊”線性流程,而可能演變成AI驅動的批量審計、快速武器化、精準投放的閉環模式。

      十、防御建議(按優先級)

      P0 - 立即執行:收斂暴露面

      ●211端口禁止對公網開放。安全組/防火墻僅放行業務必需的可信IP。

      ●這是性價比最高的一步——漏洞再嚴重,連不上就打不了。

      ●缺點:一旦客戶端IP有變化,需要再加白新的客戶端IP。

      P1 - 應用層加固:堵住協議層漏洞

      ●為scktsrvr配置InterceptGUID鑒權攔截器(若產品支持),或在211前置VPN/反向代理做強制認證。

      ●管家婆官方已在內部發布修復版本的scktsrvr.exe,請聯系廠商獲取。

      ●收緊數據庫權限:禁用或嚴格限制xp_cmdshell、Ole Automation Procedures。

      ●AppServer不應以sa連庫,改用最小權限賬號——即使被未授權調用,也執行不了OS命令。

      P2 - 監控補盲:讓“隱身通道”可見

      ●在211流量上部署協議級監測,識別04 da / 04 db MIDAS握手、異常ACT3/Invoke調用。傳統Web/登錄日志對它無效。

      ●SQL默認trace/擴展事件重點監控:sp_configure變更、sp_OACreate調用、xp_cmdshell執行。

      P3 - 恢復前必做:防止二次打擊

      ●一旦被加密,恢復前務必清除所有持久化后門:

      ●- 計劃任務 / Windows服務 / 注冊表Run鍵

      ●- WMI事件訂閱 / 啟動文件夾

      ●- System32目錄下的可疑exe

      ●封堵211端口后再恢復業務。否則恢復即等于重新把靶子立起來——攻擊者可二次、三次再來。

      寫在最后

      在我們處置的案例中,沒有一家企業的運維人員知道211端口意味著什么。他們做了該做的一切——復雜密碼、關閉數據庫端口、部署防火墻——但還是被“隔空”打穿了。

      安全的敵人不是疏忽,是盲區。

      如果你的公司或者你客戶的公司在用管家婆,或者在用任何基于Delphi開發的C/S架構軟件,請把這篇文章轉給負責安全和運維的同事。封一個端口,5分鐘的操作,可能避免一次讓公司停擺數周的勒索事件。

      — — — — — — — — — — — — — — —

      本文基于思而聽安全 | Solar應急響應團隊

      多起實戰案例與逆向研究

      所有結論經靶場驗證,技術細節供安全同行復測參考,完整PoC不公開發布

      關注思而聽,獲取更多一線安全情報與防御指南


      轉自:中國財富網

      【版權及免責聲明】凡本網所屬版權作品,轉載時須獲得授權并注明來源“中國產業經濟信息網”,違者本網將保留追究其相關法律責任的權力。凡轉載文章及企業宣傳資訊,僅代表作者個人觀點,不代表本網觀點和立場。版權事宜請聯系:010-65363056。

    延伸閱讀

    ?

    版權所有:中國產業經濟信息網京ICP備11041399號-2京公網安備11010502035964

    www.色五月.com