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

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

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

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

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

前言

FullSessionGraph.jpegFullSessionGraph.jpegArI28資訊網——每日最新資訊28at.com

先簡單說說它TeamServer端是用golang寫的,Agent端是C寫的,UI是C++基于QT的,具體使用還是很多BUG,但抱著學習的心態來看看。ArI28資訊網——每日最新資訊28at.com

目錄結構

首先想著看看這個C2協議這塊咋樣,于是讀讀TeamServer端的代碼,看看目錄結構,命名還是很清晰明了的。ArI28資訊網——每日最新資訊28at.com

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

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

握手前校驗

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

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

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

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

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

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

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

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

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

數據包的處理

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

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

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

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

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

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

type Parser struct {	buffer    []byte	bigEndian bool}

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

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

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

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

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

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

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

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

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

Agent注冊

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

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

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

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

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

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

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

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

至于解密出來的buffer,據官方說法如下。ArI28資訊網——每日最新資訊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。ArI28資訊網——每日最新資訊28at.com

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

心跳包

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

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

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

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

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

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

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

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

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

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

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

小結

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • 影音體驗是真的強 簡單聊聊iQOO Pad

    大公司的好處就是產品線豐富,非常細分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發布會上看到了iQOO的首款平板產品iQOO Pad。雖
  • 7月安卓手機性價比榜:努比亞+紅魔兩款新機入榜

    7月登場的新機有努比亞Z50S Pro和紅魔8S Pro,除了三星之外目前唯二的兩款搭載超頻版驍龍8Gen2處理器的產品,而且努比亞和紅魔也一貫有著不錯的性價比,所以在本次的性價比榜單
  • 十個可以手動編寫的 JavaScript 數組 API

    JavaScript 中有很多API,使用得當,會很方便,省力不少。 你知道它的原理嗎? 今天這篇文章,我們將對它們進行一次小總結。現在開始吧。1.forEach()forEach()用于遍歷數組接收一參
  • Flowable工作流引擎的科普與實踐

    一.引言當我們在日常工作和業務中需要進行各種審批流程時,可能會面臨一系列技術和業務上的挑戰。手動處理這些審批流程可能會導致開發成本的增加以及業務復雜度的上升。在這
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業用途。(幾小時前,swyy發現它已從LLaMA 2更名為Lla
  • 到手價3099元起!iQOO Neo8 Pro今日首銷:安卓性能最強旗艦

    5月23日,iQOO如期舉行了新品發布會,全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個版本,其中標準版搭載高通驍龍8+,而Pro版更
  • Android 14發布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發布了Androi
  • 中關村論壇11月25日開幕,15位諾獎級大咖將發表演講

    11月18日,記者從2022中關村論壇新聞發布會上獲悉,中關村論壇將于11月25至30日在京舉行。本屆中關村論壇由科學技術部、國家發展改革委、工業和信息化部、國務
Top