您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何進行Sumap網絡測繪探測C&C遠控在野情況分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
在日漸激烈的網絡對抗中,伴隨滲透手段的更新換代,遠控為了滿足需求隨之發展,種類繁多,常見的遠控有:Cobalt Strike、Metasploit Framework、Empire、PoshC2、Pupy等。
在常見的遠控中,Cobalt Strike是熟知的滲透測試利器,功能十分強大,可擴展性強,從前期載荷生成、誘餌捆綁、釣魚攻擊到載荷植入目標成功后的持續控制、后滲透階段都可以很好支持,幾乎覆蓋攻擊鏈的各個階段。并且支持多種上線方式,以及多種豐富的配置可以達到非常好的隱蔽效果。CS teamserver團隊服務器又可以使眾多CS客戶端連上它,以進行團隊協作。Metasploit Framework能夠提供眾多漏洞利用,這兩款遠控功能強大且容易上手,因此也是廣大redteamer的必備武器。
C&C作為全球范圍紅隊的基礎設施,長期部署在世界各個角落,如何通過探測C&C服務器成為了一個問題。傳統的流量規則只能對小范圍的C2設施進行識別,有一定的局限性。對于全網的資產識別,通過網絡測繪來進行掃描識別C2會不會更全面呢?
互聯網在高速發展的今天,傳統的網絡安全大多面向局部安全未曾考慮整體全網環境下的網絡安全,這樣也造成了近年來攻擊者頻繁面向全網展開攻擊。數億的物聯網設備安全問題被大范圍的暴露出來。同時攻擊者在面向全網攻擊既包括傳統攻擊方式WEB攻擊,緩沖區溢出攻擊,數據庫攻擊。同時也涵蓋新型的針對物聯網設備和工控設備層面的攻擊也越發頻繁。Sumap網絡空間測繪擁有快速資產探測能力,以及資產監測能力,資產漏洞管理能力形成了一套基于全球網絡空間資產安全整體安全解決方案。
在日常滲透測試中,Metasploit是常用的一款工具安全漏洞利用工具,它擁有最新的公開漏洞利用、后滲透利用模塊等,它集成了各個平臺常見的漏洞,擁有各種操作系統的shellcode,同時可以作為C&C維持目標權限。Meterpreter作為meatasploit框架的一個擴展模塊,meterpreter是metasploit框架中的一個擴展模塊,作為溢出成功以后的攻擊載荷使用,攻擊載荷在溢出攻擊成功以后給我們返回一個控制通道,使用它作為攻擊載荷能夠獲得目標系統的一個meterpretershell的鏈接。meterpretershell作為滲透模塊有很多有用的功能,比如添加一個用戶、隱藏一些東西、打開shell、得到用戶密碼、上傳下載遠程主機的文件、運行cmd.exe、捕捉屏幕、得到遠程控制權、捕獲按鍵信息、清除應用程序、顯示遠程主機的系統信息、顯示遠程機器的網絡接口和IP地址等信息。
開始對msf的reverse_http進行分析,在msf的metasploit-framework/lib/msf/core/handler/reverse_http.rb#83中
OptString.new('HttpUnknownRequestResponse',
'The returned HTML response body when the handler receives a request that is not from a payload',
default: '<html><body><h2>It works!</h2></body></html>'
)
通過分析特征,發現模仿的是apache的初始頁面
https://raw.githubusercontent.com/apache/httpd/5f32ea94af5f1e7ea68d6fca58f0ac2478cc18c5/docs/docroot/index.html
但實際測試,apache的初始頁面請求為:
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 45
而msf的apche頁面為:
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 44
兩者相比較Content-Length并不相同,相比apache原始頁面多了\n。
在sumap平臺中可以直接搜索
tags:"MSF http"
全球分布:
截止發稿前探測到msf reverse_http(s)全網有682臺,同時sumap支持reverse_tcp連接查詢。
直接搜索:
tags:"Metasploit Rex httpd"
探測到全網有8,048臺
在Cobalt Strike的攻擊框架中,payload是執行攻擊的內容,payload拆分為:payload stage和payload stager。stager是一個小程序,通常是手工優化的匯編指令,用于下載stage、把它注入內存中運行。stage則就是包含了很多功能的代碼塊,用于接受和執行我們控制端的任務并返回結果。stager通過各種方式(如http、dns、tcp等)下載stage并注入內存運行這個過程稱為Payload Staging。Cobalt strike也提供了傳統的方式,打包成一個完整的exe、dll,上傳運行與teamserver回連通訊,這種是Payload Stageless,生成Stageless的客戶端可以在Attack->Package->Windows Executeable(s)下生成。
通過官網的文檔,因為如果開啟了 staging(分階段),任何人都能連到你的服務器上,請求一個payload、并分析它的內容,從而可以從你的 payload 配置中獲取信息。
所以可以通過構造,傳入滿足要求的uri就能夠下載cs的beacon,在
`/src/main/java/cloudstrike/WebServer.java`
中可以看到uri的check規則。
所以只需要構造根據4位的數字和大小字母組合滿足求和取模等于92(93)即可
import random
def generate_checksum(input):
trial = ""
total = 0
while total != input:
total = 0
trial = ''.join(random.sample("abcdefghhijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",4))
for i in range(4):
total = (total + ord(trial[i:i+1]))% 256
return trialif __name__ == '__main__':
uri_x86 = generate_checksum(92)
uri_x64 = generate_checksum(93)
print(uri_x64)
print(uri_x86)
這里的邏輯做了一個判斷,直接訪問返回一個404 Not Found
但是帶有滿足條件的校驗碼訪問會直接下載beacon的stage文件。
拿到stage文件后,需要異或解密,這里我參考https://sysopfb.github.io/malware,/cobaltstrike/2020/03/24/beacon-in-azure.html改寫了一下python3的腳本
import sys
import structfilename = sys.argv[1]
data = open(filename, 'rb').read()
t = bytearray(data[0x45:])
(a,b) = struct.unpack_from('<II', t)
key = a
t2 = t[8:]
out = ""
with open(filename+'_decoded', 'wb') as f:
for i in range(len(t2)//4):
temp = struct.unpack_from('<I', t2[i*4:])[0]
temp ^= key
out = struct.pack('<I', temp)
print(out)
key ^= temp
f.write(out)
得到解密后的文件然后再使用網上公開的腳本對配置文件進行解析https://github.com/Sentinel-One/CobaltStrikeParser
在這個腳本里cs3.x異或的0x69,cs4.x異或的0x2e,查看我手中的4.1版本
cs3.x版本和cs4.x版本的異或字節不一致,但是都可以解密出來,說明解密算法并沒有改變,那么勢必可以通過改變密鑰來bypass獲取配置信息,其實這種情況只需要爆破256位就能解決了(for x in range(1, 0xff)
),對于掃stager我更建議是在不需要stager的時候在Manage Web Server里kill掉stager和stager64,需要的時候直接在listeners里edit。
Sumap根據此特征已經集成到搜索語法中,可以通過搜索tags:"CS Beacon"
直接搜索到相關數據。
中國地區相關數據不參與統計
2.Cobalt Strike server
空格bug存在與Cobalt Strike發布3.13之前的版本,Cobalt Strike的 "Team Server" Web服務器是基于NanoHTTPD,這是一個用Java編寫的開源Web服務器。但是,此Web服務器無意中在其所有HTTP響應中返回了多余的空白符,可以通過這個空格進行識別
snort規則:/^HTTP/1.1 200 OK \r\nContent-Type: [^\r\n]{0,100}\r\nDate: [^\r\n]{0,100} GMT\r\n(Content-Length: \d+\r\n)\r\n
,老版本的Cobalt Strike網絡服務器的所有HTTP響應中都有空格,通過snort規則可以拋磚引玉,既然所有HTTP響應都有空格,那么可以通過訪問Cobalt Strike的web端口,檢測返回頭就能識別Cobalt Strike了。
Cobalt Strike在3.13版本的時候修復了“異常空格bug”的同時也修改了默認返回的http頭,將date頭提前了,稍作修改為3.13及以后版本的特征。
Sumap根據此特征已經集成到搜索語法中,可以通過搜索tags:"CS teamserver"
直接搜索到相關數據。
全球數據分布
取出在Sumap平臺搜索的ip數據,在安恒威脅情報中心平臺驗證
msf
Cobalt Strike
通過Sumap網絡空間測繪平臺C&C數據驗證,在威脅情報平臺也有相應的情報和標記。
對全網的C&C數據進行分析,境外C&C數據占大多數。根據數據時間戳分析,近幾年Cobalt Strike使用率越來越高,主要分布在美國和俄羅斯地區。
上述內容就是如何進行Sumap網絡測繪探測C&C遠控在野情況分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。