Sekiryu:一款针对Ghidra Headless模式的综合性安全工具

admin 2023年11月23日22:39:38评论11 views字数 2531阅读8分26秒阅读模式

Sekiryu:一款针对Ghidra Headless模式的综合性安全工具

 关于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脚本的函数代码:

 

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:https://github.com/20urc3/Sekiryu

Sekiryu:一款针对Ghidra Headless模式的综合性安全工具

原文始发于微信公众号(FreeBuf):Sekiryu:一款针对Ghidra Headless模式的综合性安全工具

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月23日22:39:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Sekiryu:一款针对Ghidra Headless模式的综合性安全工具https://cn-sec.com/archives/2234099.html

发表评论

匿名网友 填写信息