前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Gallia:一款针对汽车安全的可扩展渗透测试框架

Gallia:一款针对汽车安全的可扩展渗透测试框架

作者头像
FB客服
发布2023-03-30 19:18:29
8660
发布2023-03-30 19:18:29
举报
文章被收录于专栏:FreeBufFreeBuf

 关于Gallia 

Gallia是一款专注于汽车安全的可扩展渗透测试框架,该工具可以对整辆汽车执行渗透测试,而且甚至可以还可以单独对车辆ECU进行测试。目前,Gallia主要针对的是UDS接口,并利用了模块化的设计分别实现了日志记录和归档功能。作为一个通用接口,日志记录功能实现了可重复的测试,并支持后续处理任务。

 工具架构 

下图显示的是Gallia的内部模块以及运行机制:

 工具依赖 

Linux>= 5.10 Python>= 3.9 poetry (可选,用于开发) dumpcap (可选,WireShark组件)

Python依赖组件可以在项目的pyproject.toml文件中查看。

 扫描模式 

常规的UDS扫描通常包含下列步骤:

1、在相关设备上搜索ECU:发现扫描; 2、在找到的ECU上搜索UDS服务:服务扫描; 3、在发现的UDS服务中搜索UDS标识符:标识符扫描; 4、针对其他特定服务的扫描:例如内存扫描、模糊测试等;

 发现扫描 

发现扫描特定于底层传输,如DoIPISO-TP。这个想法是制定一个有效的UDS Payload。正常工作的Payload是1001,这也是DiagnosticSessionControl服务所要求的。该请求可以让ECU修改DefaultSession。DiagnosticSessionControl服务和DefaultSession是始终可用的,因此这个Payload是最佳选择。除此之外,1003这个Payload也可以使用,因为很多ECU在启用ExtendedDiagnosticsSession(会话ID为0x03)时会提供声音反馈。

ECU的寻址由底层传输协议提供,大多数情况下有两个地址:测试器地址和ECU地址。发现扫描的基本思想是使用固定的测试器地址将有效的UDS Payload发送到所有有效的ECU地址。当收到有效应答时,说明找到了ECU。

服务扫描

服务扫描在UDS协议级别运行,UDS提供了几个称为服务的节点。每个服务都有一个标识符和一个特定的参数列表,扫描过程是使用固定Payload去请求所有可能的服务。Payload不必是特定的;它可以是空的,也可以是全零。一些ECU在接收到无效Payload时可能表现得不是很稳定。

为了识别可用的服务,工具使用了反向匹配机制。根据UDS标准,当请求未实现的服务时,ECU会使用错误代码serviceNotSupported或serviceNotSupportedInActiveSession进行回复。因此,每个以不同错误代码响应的服务都被认为是可用的。

标识符扫描

标识符扫描在UDS协议级别运行,更具体地说,它在特定UDS服务的级别上运行。大多数UDS服务需要标识符作为输入参数。比如说,ReadDataByIdentifier服务需要为请求的资源输入数据标识符。为了找出特定服务的可用标识符,工具引入了标识符扫描。

为了识别可用的数据标识符,工具使用了反向匹配机制。根据UDS标准,当请求未实现的服务时,ECU将使用错误代码serviceNotSupported或serviceNotSupportedInActiveSession进行回复。如果ECU响应serviceNotSupported、serviceNotSupportedInActiveSession、subFunctionNotSupported、subFunctionNotSupportedInActiveSession或requestOutOfRange中的任何一个,则认为标识符不可用。

一些服务(如RoutineControl)也提供了一个子功能,可以使用相同的技术发现子函数参数,但反向匹配的错误代码不同。为了发现可用的子功能,以下错误代码表示该子功能不可用:serviceNotSupported、serviceNotSupportedInActiveSession、subFunctionNotSupported或subFunctionNotSupportedInActiveSession。

每个以不同错误代码响应的标识符或子功能都被视为可用。

 工具安装 

Arch Linux

代码语言:javascript
复制
paru -S gallia

手动安装

代码语言:javascript
复制
pip install gallia

 工具使用 

代码语言:javascript
复制
$ gallia simple-dtc --target "isotp://can0?src_addr=0x123&dst_addr=0x312&tx_padding=0xaa&rx_padding=0xaa" read

项目地址

https://github.com/Fraunhofer-AISEC/gallia

详细文档

https://fraunhofer-aisec.github.io/gallia/

参考资料

https://www.iso.org/standard/72439.html

https://fraunhofer-aisec.github.io/gallia

https://www.secforcars.de/

https://www.iso.org/standard/74785.html

https://www.iso.org/standard/66574.html

精彩推荐

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  关于Gallia 
  •  工具架构 
  •  工具依赖 
  •  扫描模式 
    •  发现扫描 
      • 服务扫描
        • 标识符扫描
        •  工具安装 
          • Arch Linux
            • 手动安装
            •  工具使用 
            • 项目地址
            • 参考资料
            相关产品与服务
            网站渗透测试
            网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档