温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SGN是一款什么工具

发布时间:2021-12-27 14:25:09 来源:亿速云 阅读:297 作者:小新 栏目:数据安全

这篇文章主要为大家展示了“SGN是一款什么工具”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SGN是一款什么工具”这篇文章吧。

SGN

SGN是一款功能强大的多模式(多态)二进制编码工具,广大渗透测试人员可以在SGN的帮助下,轻松生成静态且不可检测的二进制Payload。SGN可以使用反馈循环来对给定的二进制指令进行编码,这种方式类似于LSFR

工具特性

针对网络安全社区来说,原始版本的SGN编码器一开始被认为是最好的Shellcode编码器,直到现在其实也是。但多年以来,安全研究人员发现了静态检测编码器的几个Bug(相关内容可以参考FireEye的文章)。因此,社区不断地在对SGN进行改进,以期实现更好的编码功能。

当前版本的SGN实现了以下改进:

1、64位支持,可正确编码x64 Shellcode。

2、更小型的解码器Stub,LFSR密钥降低为1个字节。

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”选项可以直接查看工具的帮助信息,如果你想要查看编码过程的详细数据,可以使用“-v”选项来开启verbose模式。SGN是一款什么工具

以代码库的形式使用

警告!SGN包目前仍处于开发阶段,主要重心在性能提升上,大多数功能可能会因为版本不同而有区别。

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编码器的基本执行流程,但是请记住,在每次迭代中,垃圾指令、解码器和模式解码器的大小、位置和顺序都会发生变化。SGN是一款什么工具

LFSR本身在概率空间方面的功能是非常强大,下图显示了LFSR的特征多项式的伴随矩阵,并将种子表示为列向量,k步后寄存器在Fibonacci配置中的状态。SGN是一款什么工具

以上是“SGN是一款什么工具”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI