一
概 述
DeimosC2是一個開源的C&C框架,使用go語言編寫。該C2工具實現了多種協議通信方法,例如HTTPS、QUIC、TCP、DOH、PIVOTTCP等。DeimosC2創建的每個監聽器都有自己的RSA公鑰和私鑰對,用于加密隨機生成的AES會話密鑰,再用AES算法加密木馬與C2之間的通信,外層使用HTTPS等加密協議封裝,因此,即使HTTPS證書卸載后看到的C&C信息依然是加密的。
二
工具原理
DeimosC2工具生成的木馬啟動時會判斷是否在可運行時間內,若不在,則休眠至指定時間,木馬與C2通信數據使用了混合加密方式,AES加密數據,RSA加密AES密鑰。木馬在被控主機上運行后,會生成一個默認為36字節全零值的AgentKey,第一次連接后木馬會生成的UUID替換這個AgentKey作為受控端ID號,從而可以區分不同的受控主機。AES會話密鑰在每次木馬與C2通信時隨機產生,用于加密二者之間的通信信息。服務器在生成監聽器(木馬)時,會同時生成一對RSA公私鑰,并將公鑰寫入監聽器中,私鑰由服務端儲存,被控端使用RSA 公鑰加密 AES會話密鑰,服務器收到信息時使用RSA私鑰解密消息得到AES密鑰再解密得到數據。見下圖。

三
被控端通信分析
第一次啟動時,木馬啟動受害系統的shell來收集OS類型、當前用戶、IP地址、執行路徑等信息,見下圖。

網絡通信部分有個sendMsg函數,其作用是發送加密數據。首先,生成一個長度36字節默認全零值的AgentKey(連接成功后木馬會用UUID替換默認AgentKey)。接下來生成一個長度為32字節的隨機AES密鑰,并將AESKey拼接到AgentKey后面,用隨機數據填充到256字節長度,再使用內置的RSA公鑰加密,得到256字節的密文1:Enc(AgentKey+AESKey+Padding)。接著使用生成的AES密鑰加密要發送的數據,得到密文2:Enc(data),第一次上線時data為被控端的系統信息,心跳包中data為空json格式頭,如果獲取了命令,則data部分是命令執行的結果。最后,將Enc(data)拼接到Enc(AgentKey+AESKey+Padding)后面,使用HTTPS將加密后的消息發送給服務端。見下圖:

四
服務端通信分析
DeimosC2服務器創建監聽端口會生成一個Apache的默認Ubunt頁面,同時,服務端設置了TLS連接時的最低版本、證書頒發機構等,見下圖。

服務端的handleConnections函數用來處理HTTPS連接,服務端收到數據后會提取存儲的RSA私鑰,并用私鑰解密消息的前256字節,在從中提取前36字節的AgentKey,提取32字節的AESKey,使用AESKey解密256字節以后的data部分,見下圖。

五
流量分析
該工具HTTPS流量存在心跳的特征,雖然心跳時間是抖動的,但是心跳包的大小呈現一致性,且該工具客戶端與主流瀏覽器產生的TLS限定域指紋也不相同,這些都會使該工具的通信行為被加密流量檢測設備發現。

六
產品檢測
觀成瞰云(ENS)-加密威脅智能檢測系統能夠對deimosc2工具產生的HTTPS流量進行檢測。

七
總 結
利用deimosc2工具進行C&C通信,攻擊者可以將通信內容加密從而規避傳統明文流量設備的檢測,但是基于人工智能、流行為特征和TLS限定域指紋檢測的加密威脅智能檢測系統能夠檢測此類加密通信行為。目前越來越多的攻擊者利用加密通信的方式隱蔽攻擊行為,觀成科技安全研究團隊會持續跟蹤和研究各類加密通信惡意工具。
信息安全與通信保密雜志社
一顆小胡椒
安全牛
信息安全與通信保密雜志社
穿過叢林
CNCERT國家工程研究中心
聚銘網絡
信息安全與通信保密雜志社
CNCERT國家工程研究中心
一顆小胡椒
看雪學苑