-
-
[原创]UDS协议安全CTF挑战分析
-
发表于: 6小时前 162
-
挑战来源:052K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6$3M7$3g2U0i4K6u0W2j5X3I4G2j5$3E0Z5j5i4u0T1L8%4u0Q4x3X3g2A6L8#2)9J5c8R3`.`.Challeng website:d5bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3M7X3!0$3K9h3&6Y4i4K6u0V1k6%4u0G2N6h3&6V1M7#2)9J5k6h3u0D9L8$3y4C8K9r3q4J5j5X3!0J5i4K6u0W2K9h3!0Q4x3V1j5`.
由于官方的在线似乎要$79,我是用yichen师傅的docker版本:71bK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6&6K9h3y4Z5k6h3^5I4x3e0g2Q4x3V1k6g2c8q4y4o6g2p5j5`.
使用ip link查到CAN interface为vcan0
题目:Retrieve the VIN of the simulation using UDS.
需要使用22UDS服务读取VIN码(VIN码:车辆识别码,俗称车架号,由17位字符(字母+数字)组成,每辆车独一无二)0xF190代表VIN码请求,22为SID(服务号),F190为DID(数据标识符)VIN比较长,所以需要一次请求,多帧响应,使用流控帧(FC)和连续帧(CF)
第一条7df#0322f190:发送一个UDS请求:读取VIN(DID=F190)
CAN ID:7DF(功能地址:广播给所有ECU)数据部分:03 22 F1 90(ISO-TP单帧结构:[PCI][DATA...]) 03是什么? PCL(Protocol Control Information)是相当于发送数据协议的指示 0x03 = 单帧 + 长度三字节(高4位0表示单帧,低四位3表示后面有3字节数据) 22 F1 90是什么? 22:服务号(ReadDataByIdentifier),F1 90:DID(VIN)
第二条:7E0#3000000000000000:这是ISO-TP Flow Control帧(FC)
7E0:ECU接收ID(Request ID)
FC结构:[PCI][BlockSize][STmin]...
PCL:
完整流程:

接收到:
10 1C:(第一帧、高四位=1),1C:总长度 = 1C = 28字节去除UDS响应头62 F1 9021 42:去除21,(序号为1)

描述:需要理解 UDS 安全访问机制,完成 seed-key 交换,通过安全访问 Level1 后读取 DID:C1C2
UDS安全访问机制就是SecurityAccess,SID = 0x27,作用是:在执行敏感诊断操作前,先让测试仪“解锁ECU”
典型的敏感操作包括:刷写固件、写入数据、清除故障码、执行例程、控制ECU行为等
这不是一个账号密码,而是一个挑战-响应机制流程如下:
27:SecurityAccess 服务67:0x27的正响应,0x27 + 0x40 = 0x67
seed为ECU返回给tester的随机数,例如67 01 A1 B2 C3 D4seed = A1 B2 C3 D4
key是测试仪根据seed计算出来的结果,然后发回给ECU,如果匹配则解锁成功
响应情况:
若key成功:
若key失败:
不同安全等级对应不同权限。(由具体厂商定义)
例如:
要完成这个题目,通过安全访问 Level1
所以需要发送指令27 01,加上ISO-TP单帧长度字节:7E0#022701

与key(0xdeadbeef)异或之后得到ed482096,然后发送即可收到成功响应
然后就可以去获取标识符C1C2对应内容
拿到第一帧:10 1E表示首帧,1E表示总长度30字节下一步发送流控帧 FC,让ECU继续发送后续连续帧cansend vcan0 7E0#3000000000000000
注意这里的30 00 00 00 00 00 00 00
现在进行逐字节解析:第一个30:Flow Control(FC)这不是普通数据,而是流控控制消息30 00 00 的格式是:

描述: 需要切换到编程会话,并使用更复杂的密钥算法,通过安全访问 Level3 后读取 DID:C1C2
切换到编程会话:7E0#021002
02:ISO-TP单帧长度,表示后面有2个字节10:UDS服务号,0x10 = DiagnosticSessionControl(诊断会话控制),相当于切换会话02:子功能,0x02 = Programming Session(编程会话)
[培训]《冰与火的战歌:Windows内核攻防实战》!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。