一、工具介紹
Platypus 是一款支持多會話的交互式反向 Shell 管理器。在實際的滲透測試中,為了解決 Netcat/Socat 等工具在文件傳輸、多會話管理方面的不足,該工具在多會話管理的基礎上增加了在滲透測試中能更好發揮作用的功能(如:交互式 Shell、文件操作、隧道等),并且使用 TLS/SSL 協議進行通信,它可以利用證書和密鑰對通信進行加密,確保數據傳輸的隱蔽性。
二、工具原理分析
Platypus工具包括兩種類型的監聽器:TCP監聽器和Termite監聽器。TCP監聽器使用nc
shell,默認監聽端口為13338,而Termite監聽器默認監聽端口為13339,并通過HTTP協議下載并執行木馬,后續木馬使用TLS協議用于加密回連。相比TCP監聽器,Termite監聽器通過TLS協議加密通信,具有更高的安全性和隱蔽性。
終端通過HTTP協議與Termite監聽器建立通信連接,并將木馬文件下載到路徑/termite/[ip:port]下。在木馬成功上線后,與Platypus服務器上的Termite監聽器建立TLS連接,按固定格式依次執行一系列命令,收集終端的系統信息、用戶信息、Python版本、網絡接口等數據。信息收集完畢也意味著木馬上線完成,攻擊者如需執行進一步的操作,系統將轉為交互式shell模式進行命令執行。流程見下圖。
圖 1工具原理圖
在木馬上線時,EstablishPTY 方法用于建立交互式 Shell,如圖 2 所示。該方法通過 Python 啟動交互式 Shell,并禁用歷史命令記錄,從而降低取證風險。確保攻擊者能夠在受害者系統上順暢地執行命令,同時提升攻擊的隱蔽性和可用性。
圖 2 EstablishPTY方法
在使用 TCP 監聽器時,可以觀察到每次命令執行時,Platypus 服務器會按照固定格式發送命令:echo + 8 字節隨機字符串(tokenA) + ; + 默認命令 + ; + echo + 8 字節隨機字符串(tokenB)。終端接收到 Platypus 服務器發送的命令后,會提取 tokenA 和 tokenB,然后執行命令,并將命令執行結果以固定格式返回:tokenA + 命令執行結果 + tokenB。命令執行的回顯可以通過唯一標識符(tokenA 和 tokenB)進行區分。
圖 3 命令執行結果
通過觀察TCP模式的通信數據可以輔助分析TLS模式下的行為特征:TCP明文流量中交互式shell發送的命令是逐字節發送的,且每次發送單字節內容后,服務端會返回同樣的內容,依次交替直到完成一個命令。
圖 4 明文流量分析
使用TLS協議加密后,流量中的明文命令和結果被轉換為加密數據。雖然需要解密才能還原內容,但這種特殊的命令執行方式在加密后的數據包中也能發現對應的長度變化和模式。從下圖可以看到請求和響應的數據包長度為68字節時,對應TCP模式下Platypus服務器逐字節下發命令的過程,后續267和355字節的返回包對應命令執行并返回相應結果。
圖 5 加密流量分析
三、工具檢測
我們通過行為分析的檢測方法,實現了對Platypus C2工具TLS通信的有效檢測。
圖6:Platypus檢出結果
四、總結
利用Platypus工具的木馬進行C&C通信,攻擊者可以利用TLS將通信內容加密從而規避傳統明文流量設備的檢測,但是基于人工智能、流行為特征檢測的加密威脅智能檢測系統能夠檢測此類加密通信行為。如今,越來越多的攻擊者采用加密通信的C2工具,以提升攻擊的隱蔽性。觀成科技安全研究團隊持續追蹤這些C2工具的最新動態,積極研究和更新針對加密流量的檢測技術。