前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Sekiryu:一款针对Ghidra Headless模式的综合性安全工具

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

作者头像
FB客服
发布2023-11-24 13:48:05
2890
发布2023-11-24 13:48:05
举报
文章被收录于专栏:FreeBufFreeBuf

关于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环境。

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

代码语言:javascript
复制


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

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

代码语言:javascript
复制


cd Sekiryu

pip install -r requirements.txt

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

代码语言:javascript
复制


pip install sekiryu

工具使用

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

代码语言:javascript
复制


sekiryu [-F FILE][OPTIONS]

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

API使用

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

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

代码语言:javascript
复制


proxy.send_data

函数介绍

send_data():允许用户向服务器发送数据,数据为字典; recv_data():允许用户从服务器接收数据,数据为字典; request_GPT():允许用户通过ChatGPT API发送字符串数据;

使用你自己的脚本

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

代码语言:javascript
复制


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文件中添加一个函数即可:

代码语言:javascript
复制


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文件负责与命令行接口交互,允许我们以下列形式添加参数或命令:

代码语言:javascript
复制
代码语言:javascript
复制
analysis_parser.add_argument('[-ShortCMD]', '[--LongCMD]', help="Your Help Message", action="store_true")
代码语言:javascript
复制

工具使用演示

演示视频:

https://bushido-sec.com/wp-content/uploads/2023/06/SekiryuV2RElease-SemGrep.mp4

许可证协议

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

项目地址

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于Sekiryu
  • 功能介绍
  • 可用脚本
  • 工具要求
  • 工具安装
  • 工具使用
  • API使用
    • 函数介绍
      • 使用你自己的脚本
      • 工具使用演示
      • 许可证协议
      • 项目地址
      相关产品与服务
      脆弱性检测服务
      脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档