freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Sekiryu:一款针对Ghidra Headless模式的综合性安全工具
2023-10-19 17:06:17


关于Sekiryu

Sekiryu是一款针对Ghidra Headless模式的综合性安全工具,该工具旨在简化Ghidra在以Headless模式下运行时的相关任务执行,并以自动化的形式实现这一任务。该工具提供了一系列可以在Ghidra内部执行的脚本,支持用户在分析代码库的同时执行漏洞检测、使用ChatGPT进行伪代码注释以及使用数据可视化的方法声称安全报告。除此之外,该工具还允许广大研究人员根据需求加载和保存自己的脚本,并于脚本的内置API进行交互。

功能介绍

1、Headless模式自动化任务:

2、脚本代码库/管理:

3、灵活的输入选项:

可用脚本

1、基于模式识别实现的漏洞检测脚本:利用工具的脚本来识别正在分析的代码库中是否存在潜在的安全漏洞;

2、SemGrep漏洞搜索脚本:工具支持使用简单的规则和SemGrep来检测C/C++伪代码中的漏洞;

3、自动伪代码生成脚本:在Ghidra的Headless模式下自动生成伪代码,此功能有助于理解和记录代码逻辑,而无需手动干预;

4、使用ChatGPT进行伪代码注释:通过利用ChatGPT为伪代码片段生成人类可读的注释以增强代码库的可读性,有助于记录和解释代码逻辑;

5、报告生成和数据可视化:生成具有数据可视化功能的综合报告,以有效地总结和呈现分析结果。该工具包提供了数据可视化功能,以帮助我们识别代码库中的模式、依赖项和异常;

工具要求

在使用该项目之前,我们还需要提前安装并配置好下列工具组件:

1、Ghidra

2、Java

3、BinExport(可选)

4、SemGrep(可选)

工具安装

在安装好上述工具组件之后,由于该工具基于Python开发,因此我们还需要在本地设备上安装并配置好Python环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/20urc3/Sekiryu.git

然后切换到项目目录中,使用pip工具和项目提供的requirements.txt文件安装该工具所需的其他依赖组件:

cd Sekiryu

pip install -r requirements.txt

或者直接使用pip工具来安装:

pip install sekiryu

工具使用

我们可以直接运行下列命令并将要分析的代码文件作为参数提供给Sekiryu即可:

sekiryu [-F FILE][OPTIONS]

需要注意的是,使用Ghidra来进行二进制代码分析相对来说速度会比较慢,因此具体的分析所需时间得根据设备性能来定。

API使用

“server.py”脚本的功能就是允许工具脚本与Ghidra和主机系统交互,我们可以根据自己的需求自定义扩展和开发脚本代码,并将其加载或保存到脚本文件夹中,以使用已知的函数来与Ghidra进行交互。

首先,用户必须在自己的脚本中导入xmlrpc,并按照下列方式调用函数:

proxy.send_data

函数介绍

send_data():允许用户向服务器发送数据,数据为字典;

recv_data():允许用户从服务器接收数据,数据为字典;

request_GPT():允许用户通过ChatGPT API发送字符串数据;

使用你自己的脚本

脚本存储在/modules/scripts目录中,我们可以直接将自己的脚本拷贝到此处。在ghidra_pilot.py文件中,我们可以找到下列负责运行Headless Ghidra脚本的函数代码:

def exec_headless(file, script):

"""

Execute the headless analysis of ghidra

"""

path = ghidra_path + 'analyzeHeadless'

# Setting variables

tmp_folder = "/tmp/out"

os.mkdir(tmp_folder)

cmd = ' ' + tmp_folder + ' TMP_DIR -import'+ ' '+ file + ' '+ "-postscript "+ script +" -deleteProject"

 

# Running ghidra with specified file and script

try:

p = subprocess.run([str(path + cmd)], shell=True, capture_output=True)

os.rmdir(tmp_folder)

 

except KeyError as e:

print(e)

os.rmdir(tmp_folder)

我们可以创建自己的脚本,然后在ghidra_pilot.py文件中添加一个函数即可:

def yourfunction(file):

try:

# Setting script

script = "modules/scripts/your_script.py"

 

# Start the exec_headless function in a new thread

thread = threading.Thread(target=exec_headless, args=(file, script))

thread.start()

thread.join()

except Exception as e:

print(str(e))

cli.py文件负责与命令行接口交互,允许我们以下列形式添加参数或命令:

analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Your Help Message", action="store_true")

工具使用演示

演示视频:【点我观看

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

Sekiryu:【GitHub传送门

参考资料

https://bushido-sec.com/

https://github.com/NationalSecurityAgency/ghidra

https://openjdk.org/projects/jdk/17/

https://github.com/google/binexport

https://semgrep.dev/docs/getting-started/

# 开源安全工具 # 自动化 # 脚本 # 代码分析 # Ghidra
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录