AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Havoc遠控源碼剖析(協議篇)

來源: 責編: 時間:2023-09-28 10:09:09 365觀看
導讀近期閱讀了一款開源遠控Havoc的源碼,留下了一些筆記,干脆發出來一起學習一下,這個遠控據說使用了很多高端免殺技術,比如Ekko,Ziliean,FOLIAGE睡眠混淆,返回地址欺騙,Indirect SysCall,Etw Patch,堆加密等等。前言FullSessionG

近期閱讀了一款開源遠控Havoc的源碼,留下了一些筆記,干脆發出來一起學習一下,這個遠控據說使用了很多高端免殺技術,比如Ekko,Ziliean,FOLIAGE睡眠混淆,返回地址欺騙,Indirect SysCall,Etw Patch,堆加密等等。b5928資訊網——每日最新資訊28at.com

前言

Pasted image 20230906161038.pngb5928資訊網——每日最新資訊28at.com

話不多說,直接進入主題,遠控提供了HTTP(S)、SMB的Agent,SMB是內網中繼直連用的,直接來看HTTP(S)方面的代碼。。b5928資訊網——每日最新資訊28at.com

握手前校驗

首先只有POST請求會被處理,其他請求都是直接跳fake404頁面。b5928資訊網——每日最新資訊28at.com

h.GinEngine.POST("/*endpoint", h.request)h.GinEngine.GET("/*endpoint", h.fake404)

request里首先是對請求的header頭進行判斷,不符合直接跳fake404。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906160945.pngb5928資訊網——每日最新資訊28at.com

具體的Header頭定義在havoc.yaotl中。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906160453.pngb5928資訊網——每日最新資訊28at.com

然后是檢查url、ua,同樣是不符合跳fake404,默認配置的url是這樣子的。b5928資訊網——每日最新資訊28at.com

Uris = [    "/funny_cat.gif",    "/index.php",    "/test.txt",    "/helloworld.js"]

Pasted image 20230906161244.pngb5928資訊網——每日最新資訊28at.com

數據包的處理

經過一連串的判斷后,來到parseAgentRequest函數,開始對Body內容進行判斷。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906161529.pngb5928資訊網——每日最新資訊28at.com

在ParseHeader中,最終是返回Header結構。b5928資訊網——每日最新資訊28at.com

type Header struct {	Size       int	MagicValue int	AgentID    int	Data       *parser.Parser}

Pasted image 20230906162130.pngb5928資訊網——每日最新資訊28at.com

NewParser時,試圖將body內容賦值給Parser結構的buffer中,至于bigEndian默認是true。b5928資訊網——每日最新資訊28at.com

type Parser struct {	buffer    []byte	bigEndian bool}

這里似乎將數據包分為了三種情況:b5928資訊網——每日最新資訊28at.com

p.Length()小于4的情況下,直接丟棄該包,返回空的Response;b5928資訊網——每日最新資訊28at.com

p.Length()等于4的情況下,直接將所有data復制到Header.Data中;b5928資訊網——每日最新資訊28at.com

p.Length()大于4的情況下,將從末尾分別切出Size、MagicValue、AgentID,各為4個字節;b5928資訊網——每日最新資訊28at.com

所以一個正常數據包的結構大致應該如下所示。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906172119.pngb5928資訊網——每日最新資訊28at.com

然后如果切出的MagicValue等于DEMON_MAGIC_VALUE,也就是0xDEADBEEF。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906170312.pngb5928資訊網——每日最新資訊28at.com

意味著是普通Deomon,否則是第三方Agent...等會,它是不是忘了什么?加解密呢?這不是白給么,建議做blueteam的小伙伴加一下流量規則。b5928資訊網——每日最新資訊28at.com

Agent注冊

繼續跟進到DemonAgent,進來直接查AgentID;b5928資訊網——每日最新資訊28at.com

if Teamserver.AgentExist(Header.AgentID){	...}else{	...}

函數內容是迭代Teamserver中所有的Agent,true的話就是已經存在,先看false情況,也就是注冊的功能。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906171621.pngb5928資訊網——每日最新資訊28at.com

再次切掉一個CommandID,如果CommandID等于agent.DEMON_INIT也就是99,就意味著是注冊包,然后切掉RequestID丟掉,進入注冊流程。b5928資訊網——每日最新資訊28at.com

Agent = agent.ParseDemonRegisterRequest(Header.AgentID, Header.Data, ExternalIP)if Agent == nil {    return Response, false}go Agent.BackgroundUpdateLastCallbackUI(Teamserver)

接著從末尾切出AESKey和AESIv,并調用Parser.DecryptBuffer對Parser.buffer進行解密,解密完的結果放回buffer里。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906204004.pngb5928資訊網——每日最新資訊28at.com

所以數據包具體應該是這樣的。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906204313.pngb5928資訊網——每日最新資訊28at.com

至于解密出來的buffer,據官方說法如下。b5928資訊網——每日最新資訊28at.com

[ Agent ID     ] 4 bytes <-- this is needed to check if we successfully decrypted the data			[ Host Name    ] size + bytes			[ User Name    ] size + bytes			[ Domain       ] size + bytes			[ IP Address   ] 16 bytes?			[ Process Name ] size + bytes			[ Process ID   ] 4 bytes			[ Parent  PID  ] 4 bytes			[ Process Arch ] 4 bytes			[ Elevated     ] 4 bytes			[ Base Address ] 8 bytes			[ OS Info      ] ( 5 * 4 ) bytes			[ OS Arch      ] 4 bytes			..... more

如果注冊成功,將返回這個Agent的AgentID。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906205319.pngb5928資訊網——每日最新資訊28at.com

心跳包

回到AgentExist,如果已經注冊,進入心跳包流程。b5928資訊網——每日最新資訊28at.com

/* get our agent instance based on the agent id */Agent = Teamserver.AgentInstance(Header.AgentID)Agent.UpdateLastCallback(Teamserver)

先根據ID查出對象,更新心跳時間,同樣切出Command和RequestID。b5928資訊網——每日最新資訊28at.com

Command = uint32(Header.Data.ParseInt32())RequestID = uint32(Header.Data.ParseInt32())

這里有點小混亂,劃分了第一次post的包和重連的包,如果是第一次提交,先進行解密(小聲叨叨:那重連的包不用解密了?)b5928資訊網——每日最新資訊28at.com

Pasted image 20230906210103.pngb5928資訊網——每日最新資訊28at.com

然后判斷命令,是任務回顯還是GET_JOB。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906210153.pngb5928資訊網——每日最新資訊28at.com

如果是GET_JOB,就從Agent.GetQueuedJobs()拿任務,又分別對COMMAND_PIVOT、COMMAND_SOCKET、COMMAND_FS、COMMAND_MEM_FILE額外追加了一些參數,尤其是COMMADN_PIVOT內,如果是DEMON_PIVOT_SMB_COMMAND另外特殊處理。另外三個還沒有開發完畢,是空著的。b5928資訊網——每日最新資訊28at.com

Pasted image 20230906211059.pngb5928資訊網——每日最新資訊28at.com

沒有細看,大意是對內網SMB Agent進行Socks代理時的特殊處理。b5928資訊網——每日最新資訊28at.com

小結

算了,通訊協議這部分大概就看到這里了,總結一下,其通訊協議整體來說是不那么可靠的。b5928資訊網——每日最新資訊28at.com

CobaltStrike、Sliver常用的基本RSA+AES模式都沒有實現到,甚至AES密鑰同加密包一同發送。這個水準屬于是有點讓人失望了,希望在Agent端能夠讓人改觀。b5928資訊網——每日最新資訊28at.com

本文作者:t43, 轉載請注明來自FreeBuf.COMb5928資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-11886-0.htmlHavoc遠控源碼剖析(協議篇)

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 50 種 ES6 模塊,面試被問麻了

下一篇: 消息隊列技術選型:這七種消息場景一定要考慮!

標簽:
  • 熱門焦點
  • Rust中的高吞吐量流處理

    作者 | Noz編譯 | 王瑞平本篇文章主要介紹了Rust中流處理的概念、方法和優化。作者不僅介紹了流處理的基本概念以及Rust中常用的流處理庫,還使用這些庫實現了一個流處理程序
  • 為什么你不應該使用Div作為可點擊元素

    按鈕是為任何網絡應用程序提供交互性的最常見方式。但我們經常傾向于使用其他HTML元素,如 div span 等作為 clickable 元素。但通過這樣做,我們錯過了許多內置瀏覽器的功能。
  • 重估百度丨“晚熟”的百度云,能等到春天嗎?

    &copy;自象限原創作者|程心排版|王喻可2016年7月13日,百度云計算戰略發布會在北京舉行,宣告著百度智能云的正式啟程。彼時的會場座無虛席,甚至排隊排到了門外,在場的所有人幾乎都
  • 中國家電海外掘金正當時|出海專題

    作者|吳南南編輯|胡展嘉運營|陳佳慧出品|零態LT(ID:LingTai_LT)2023年,出海市場戰況空前,中國創業者在海外紛紛摩拳擦掌,以期能夠把中國的商業模式、創業理念、戰略打法輸出海外,他們依
  • 阿里瓴羊One推出背后,零售企業迎數字化新解

    作者:劉曠近年來隨著數字經濟的高速發展,各式各樣的SaaS應用服務更是層出不窮,但本質上SaaS大多局限于單一業務流層面,對用戶核心關切的增長問題等則沒有提供更好的解法。在Saa
  • 小米公益基金會捐贈2500萬元馳援北京、河北暴雨救災

    8月2日消息,今日小米科技創始人雷軍在其微博上發布消息稱,小米公益基金會宣布捐贈2500萬元馳援北京、河北暴雨救災。攜手抗災,京冀安康!以下為公告原文
  • 疑似小米14外觀設計圖曝光:后置相機模組變化不大

    下半年的大幕已經開啟,而誰將成為下半年手機圈的主角就成為了大家關注的焦點,其中被傳有望拿下新一代驍龍8 Gen3旗艦芯片的小米14系列更是備受大家矚
  • iQOO Neo8 Pro評測:旗艦雙芯加持 最強性能游戲旗艦

    【Techweb評測】去年10月,iQOO推出了一款Neo7手機,該機搭載了聯發科天璣9000+,配備獨顯芯片Pro+,帶來了同價位段最佳的游戲體驗,一經上市便受到了諸多用
  • 榮耀Magic4 至臻版 首創智慧隱私通話 強勁影音系統

    2022年第一季度臨近尾聲,在該季度內,許多品牌陸續發布自己的最新產品,讓大家從全新的角度來了解當今的手機技術。手機是電子設備中,更新迭代十分迅速的一款產品,基
Top