蟻劍的小tip
STATEMENT
聲明
由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測及文章作者不為此承擔任何責任。
雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。
前言
蟻劍的小tip:
在某次hvv中,看到大佬在連接木馬的時候,使用了編碼器繞過waf,所以學習一波這個知識點。
調試過程
蟻劍抓包分析

設置代理
以default和base64為例,蟻劍burp代理看一下各自數據包。

測試測試
下面使用dvwa網站測試一下

點擊測試連接使用bp進行攔截

對內容進行解碼、整理

執行結果如下

看到如下信息
1.輸出了當前腳本的目錄
2.判斷了操作系統
3.獲取了當前用戶信息
4.在輸出首尾加上了隨機的字符串
asenc函數,這個函數是對傳輸數據或者說執行結果進行編碼/加密的函數
雙擊連接
測試連接成功后即可保存數據再雙擊連接一句話木馬。這里我們分析這個步驟發送的數據包。
這里需要注意的是分析數據包的過程中要把緩存清空,否則有部分數據包會分析不到。
第一個數據包

和測試連接的包一樣
第二個數據包

返回的是目錄,對代碼進行解碼


所以這個數據包是得到了當前路徑下的文件和文件夾,以及對應的修改時間、大小和權限。
這個路徑是用一個參數(我這里是0x5e7e045021ad4)傳遞的,所以修改參數可以得到對應路徑的內容。
但是這里這個參數也是隨機的,每次訪問都不一樣。
文件夾以/結尾,文件以后綴結尾。
還有很多操作,比如打開文件夾,打開文件,修改文件,下載文件,刪除文件,上次文件,打開終端,都有對應不同的源碼,有興趣可以自己抓包嘗試。
自定義編碼器
蟻劍編碼器這個概念類似于msfvenom中的encoder,將攻擊載荷加密或者編碼實現免殺,繞過一些防御手段,例如waf、防火墻等等。
default編碼如下,直接將payload傳輸過去。

base編碼

對內容進行url解碼,然后base64解碼,如下

_0x0a43d6b6c37e3_參數的內容和default的是一樣的,進行的操作只是用_0x0a43d6b6c37e3_這個隨機數代替這串base64編碼后的payload,如此實現一個流量的混淆視聽。
查看一下蟻劍官方編碼部分的源碼。


shell所有傳遞的參數都是在data列表中的,需要執行的代碼在 data[''] 中,
Buffer.from(data['_']).toString('base64') 將data[‘’]中的代碼讀取并進行base64編碼,
然后下面的 data[pwd] 以參數的形式傳遞到服務器將data[‘_’]中的代碼在服務器端解碼并執行,所以shell仍舊可以是 “”。
雖然data[‘_’]中的代碼都是base64編碼了,但是data[pwd] 是作為參數傳遞的,
所以這里在流量中 data[pwd] 仍是明文傳輸,可以看到請求參數的最后一個變量是‘v=eval(base64_decode(%24_POST%5B_0xad20764d61ddd%5D))%3B_’,這顯然是過不了WAF的。
簡單的修改一下編碼器,將明文傳輸的v參數放棄。
我們可以對其進行改造。
構造隨機字符串+傳輸數據base64的效果,只要被抓取的流量無法被直接正常分析就可以了

編碼器選擇我們設置的,觀察流量,內容的前面13位是我們隨機生成的字符串,后面才是我們真正傳過去的內容


弄好蟻劍端的加密,還需要設置自己木馬的格式,配合蟻劍,此時上傳的木馬應該是這種格式的了,這只是一個demo,正常情況下還需要免殺(現在一般都需要配合類的析構函數去實現一下)