官網熱線:400-100-0298
      一個工控漏洞引發的思考-為國家安全鍛矛鑄盾

      首頁

      產品體系

      解決方案

      案例精選

      新聞動態

      關于我們

      聯系我們

      安全服務

      資源中心

      返回上一層

      網絡靶場(博智安全總部)

      工業互聯網安全(博智數智)

      數據安全(博智密安)

      電子取證(上海臻相)

      返回上一層

      特種

      能源

      政府及事業單位

      教育

      智能制造

      其他

      安全服務

      新聞動態

      新聞動態

      所有內容 公司新聞 行業動態 招標模板 戰略動態

      一個工控漏洞引發的思考

      時間:2022-01-14   訪問量:8262

      01概述


      AdvantechWebAccess(前稱BroadWin-WebAccess)是研華(Advantech)公司的一套基于瀏覽器架構的HMI/SCADA軟件。該軟件支持動態圖形顯示和實時數據控制,并提供遠程控制和管理自動化設備的功能,在工業領域有者廣泛的應用。

      AdvantechWebAccess軟件一直是漏洞挖掘者的最愛,ZDI的一篇報告中指出曾經一天內收到100個關于AdvantechWebAccess軟件漏洞的上報,ICS-CERT中亦有大量相關漏洞紕漏。最近關注了該軟件的CVE-2017-16720/ CNVD-2018-00670漏洞,有的地方描述該漏洞為路徑遍歷漏洞,有的描述為RCE漏洞,且給出了不同的評分。那么其到底是以什么漏洞?深入分析一下便可知曉。




      02初步分析

      很顯然ZDI對該漏洞做了更加詳細的紕漏,一眼看過去0x2711IOCTL?IOCTL是設備驅動程序中對設備的I/O通道進行管理的函數,難道這個漏洞與驅動有關?經過大量資料查閱,最終找到了相關解釋:



      原來是AdvantechWebAccess軟件中該服務的函數調用形式與Windows設備IO控制函數調用非常相似,故沿用了該叫法。從這段解釋中,同時也可以發現該服務默認運行于TCP4592端口,可基于RPC協議進行遠程訪問控制。納尼?和RPC扯上關系了?到底是一個什么洞?先搭環境跑PoC再說。


      03漏洞調試分析

      下載AdvantechWebAccess V.8.0(該漏洞在<=8.3.2中均存在)在Win7x64虛擬機中安裝,相應端口開放情況如下圖所示:


      既然漏洞與RPC協議相關,使用RpcView對該進程進行查看:



      選取webvrpcs.exe進程,可以很方便的獲取到RPC服務端口(TCP592)、接口的uuid和version信息。

      在https://www.exploit-db.com/exploits/44278獲取PoC代碼并執行,靶機中的Calc.exe成功運行,可發現存在RPC協議交互數據:








      對目標文件(webvrpcs.exe)進行IDA逆向查看,由于該服務(webvrpcs.exe)使用了RPC協議,啟用IDA插件mIDA提取代碼中的RPC接口并重建相關的IDL(Interface Definition Language)文件,在IDA中得到以下結果:


      對PoC代碼進行走讀,第一步為連接建立,三次RPC call中第三次需要用到第二次的返回的context handle,作為第三次call的參數,RPC協議正是利用這種模式在Server與Client之間建立穩定連接的:





      由此可以看到第一個Call似乎沒有太多用處(最后可以作驗證)。由于漏洞函數指向0×2711 IOCTL,且在Call的過程中使用的opcode為1,因此在mIDA的輸出中,首先選擇opcode 0×01,右擊Decompile,得到函數原型如下:




      可見該函數有5個參數,與最終傳入Call的stubdata相對應:4個數字型和一個string型參數。

      開啟IDA調試器,從sub_401260入手進行單步調試,發現從開始到最終calc.exe得到執行,整個過程中函數調用順序為:

      1、webvrpcs.exe:sub_401260

      2、webvrpcs.exe:sub_402c60

      3、webvrpcs.exe:sub_4046D0

      4、drawsrv.dll:DsDaqWebService

      5、drawsrv.dll:sub_100017B0

      對于第4個函數DsDaqWebService需要對drawsrv.dll進行檢查,可見EDX中保存了IOCTL的值,在IDA把代碼進行縮小,可發現有非常多的分支/跳轉,而EAX的值最終決定了函數的下一步跳轉到哪個分支:







      進過幾步跳轉,最終來到問題函數,查看偽代碼如下:





      函數sub_100017B0起了一個新進程,且帶有參數lpCommandLine,函數中調用了Windows API CreateProcessA,且將參數lpCommandLine直接傳入,對于函數CreateProcessA的詳細使用方式可查閱Windows API,同時結合Windows在系統中搜索文件的規則,該參數可以使用類似PoC中使用的形式

      command ="....windowssystem32calc.exe"

      同時亦可直接使用:

      command = "calc.exe"

      對上述想法進行驗證:首先注銷第一個RPC Call, 其次將Payload中的command換成如上所示,再次執行仍然可以成功彈出計算器。


      04總結

      從對漏洞整個分析以及PoC分析來看,此漏洞應定性為遠程代碼執行漏洞而非路徑遍歷漏洞,且漏洞具有非常大的危害,此前研華公司先后聲稱在V8.3、V8.3.1等版本中已經修補此漏洞,但實際漏洞均存在,當前最新版本的V8.4.0中漏洞已經得到修復。另外,從IDA分析中可以發現問題函數附近存在大量跳轉,這意味者漏洞的觸發可能存在多種方式(于是就是多個不同的CVE了),而從以往已公開的漏洞情況來看,有大量漏洞與本文分析的CVE-2017-16720相似的,小伙伴們,擼起袖子加油干,大量CVE等待收割。


      備案號碼:蘇ICP備12069441號
      網絡靶場(博智安全總部)

      博智安全教學實訓靶場

      博智安全比武競賽靶場

      博智安全紅藍對抗靶場

      博智安全試驗鑒定靶場

      博智安全應急處置靶場

      博智安全威脅誘捕系統

      博智安全自動化滲透攻擊系統

      工業互聯網安全(博智數智)

      博智工控防火墻

      博智工控主機衛士

      博智工控安全審計系統

      博智工業網絡蜜罐系統

      博智工控安全隔離網閘

      博智工控入侵檢測系統

      博智工控漏洞掃描系統

      博智工控漏洞挖掘平臺

      博智工業資產測繪與脆弱性評估系統

      博智安全配置核查系統

      博智工控信息安全風險評估系統

      博智工業安全管理平臺

      博智工控安全等級保護檢查工具箱

      博智工業互聯網安全應急處置工具箱

      博智安全態勢感知平臺

      數據安全(博智密安)

      博智微信保密檢查系統

      博智主機監控與審計系統

      博智計算機終端保密檢查系統

      博智身份鑒別系統

      博智惡意代碼輔助檢測系統

      博智專用運維管理系統

      博智存儲介質信息消除系統

      電子取證(上海臻相)

      臻相電子數據分析研判平臺

      臻相電勘寶電子數據智能勘查系統

      臻相電子證據固定工具

      臻相多通道硬盤復制系統

      電子數據取證工作站

      臻相電子書一體化取證桌

      臻相臨機密碼破解系統

      網絡靶場
      工業互聯網安全
      售后咨詢

      聯系我們

      公眾號
      TOP