您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“SGN是一款什么工具”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學習一下“SGN是一款什么工具”這篇文章吧。
SGN是一款功能強大的多模式(多態(tài))二進制編碼工具,廣大滲透測試人員可以在SGN的幫助下,輕松生成靜態(tài)且不可檢測的二進制Payload。SGN可以使用反饋循環(huán)來對給定的二進制指令進行編碼,這種方式類似于LSFR。
針對網(wǎng)絡(luò)安全社區(qū)來說,原始版本的SGN編碼器一開始被認為是最好的Shellcode編碼器,直到現(xiàn)在其實也是。但多年以來,安全研究人員發(fā)現(xiàn)了靜態(tài)檢測編碼器的幾個Bug(相關(guān)內(nèi)容可以參考FireEye的文章)。因此,社區(qū)不斷地在對SGN進行改進,以期實現(xiàn)更好的編碼功能。
當前版本的SGN實現(xiàn)了以下改進:
1、64位支持,可正確編碼x64 Shellcode。
2、更小型的解碼器Stub,LFSR密鑰降低為1個字節(jié)。
3、使用偽隨機模式的編碼器Stub,解碼器Stub也使用了偽隨機模式編碼。
4、解碼器Stub混淆,添加了隨即垃圾指令生成器。
5、安全注冊選項,不會影響寄存器。
該工具需要的依賴組件為keystone和capstone庫,安裝這兩個庫的方法如下:
OS | 安裝命令 |
Ubuntu/Debian | sudo apt-get install libcapstone-dev |
Arch Linux | sudo pacman -S capstone keystone |
Mac | brew install keystone capstone |
Fedora | sudo yum install keystone capstone |
undefined
go get github.com/egebalci/sgn
“-h”選項可以直接查看工具的幫助信息,如果你想要查看編碼過程的詳細數(shù)據(jù),可以使用“-v”選項來開啟verbose模式。
警告!SGN包目前仍處于開發(fā)階段,主要重心在性能提升上,大多數(shù)功能可能會因為版本不同而有區(qū)別。
package main import ( "encoding/hex" "fmt" "io/ioutil" sgn "github.com/egebalci/sgn/lib" ) func main() { // First open some file file, err := ioutil.ReadFile("myfile.bin") if err != nil { // check error fmt.Println(err) return } // Create a new SGN encoder encoder := sgn.NewEncoder() // Set the proper architecture encoder.SetArchitecture(64) // Encode the binary encodedBinary, err := encoder.Encode(file) if err != nil { fmt.Println(err) return } // Print out the hex dump of the encoded binary fmt.Println(hex.Dump(encodedBinary)) }
下圖顯示的是SGN編碼器的基本執(zhí)行流程,但是請記住,在每次迭代中,垃圾指令、解碼器和模式解碼器的大小、位置和順序都會發(fā)生變化。
LFSR本身在概率空間方面的功能是非常強大,下圖顯示了LFSR的特征多項式的伴隨矩陣,并將種子表示為列向量,k步后寄存器在Fibonacci配置中的狀態(tài)。
以上是“SGN是一款什么工具”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。