---
# System prepended metadata

title: 'HITCON Badge 2019 秘辛: MCU ARM TrustZone challenges / 李倫銓、張元、黃偉峻'
tags: [HITCONCMT, HITCON, HITCONCMT2019]

---

HITCON Badge 2019 秘辛: MCU ARM TrustZone challenges / 李倫銓、張元、黃偉峻
===

MCU：M2351 From Nucoton
- Cortex_M23
    - trustzone
    - low cost and low power
    



彩燈=第二關，公佈家解法就不發獎品囉
### 硬體安全重要應用2 = 零件防盜、原廠價值
汽車破解鑰匙、汽車改裝，可能每個零件都綁 ID？成本高，但避免山寨品，增加產品原廠價值

現有的車子並沒辦法達到，因為現在都會有自行定義的認證+Protocol，所以兩條線的電影只存在舊的時代。

做好加密，對於銷售、產品價值都是有幫助的。


軟體安全的最後防線：
簽章+驗證Key

加密的 key 放在哪裡？
建議包起來，然後從底層丟，一個包一個。
(上層) app > driver/api > os/firmware > hardware (底層)

不用在單一層做加密，因為有機會把記憶dump出來，如果做加密或驗證，那麼難度就變高了。


### TrustZone 概念
目的：有效保軟體層，拉存放成本拉高。
(1) 外接硬體模組
(2) 直接...
> :point_up: 求投影片 [color=red]

:::info
Call for HITCON Badge 2020
> [name=alan@hitcon.org]
:::

工商：ctftime.org/event/811

MCU ARM Challenge
---

### Intro

:::info

Source Code & Challenge [RELEASE](https://github.com/yuawn/HITCON-badge-2019)
:::

#### Trustzone 
    - secure env separation
    - normal world (non-secure world)
        - ui, app, etc
    - Secure world - tee
- Hardware Architecture
    - NS bit in register
- Software Implementation
    - tee os
        - TEEGRIS - Samsung
        - trusty - Google
        - OP-TEE - Open Source
    - TA (Trusted App)

#### HitconBadge
- Non-secure
    - led
    - simple cli
    - snake
- Secure
    - lock record
    - key, token
    - cryptom

24 LEDs

(1) 貪食蛇 50 分

(2) 玩到 26374847 ，
    _nsc_ 代表無法從trust zone存取

(3) strcpy() 塞入很長的長長長長長長字元
    Payload：alias aaaaaaaaaaaaaa\x0c\ab0\xce\cfa hello
    Send "aaaaaaaaaaaaaa\x0c\ab0\xce\cfa"
    
    Overwriting Pwned_NS() 
    0x100538d8   + 1 (thumb)
    沒 + 1 無效。
    
    

### exploitation


### make TrustZone great again


### Github
https://github.com/yuawn/HITCON-badge-2019

## Step 2
### Secure Code
### info Command
    >> info
        逆向之後，有個UID跟硬體的system ticket
    >> setname
    >> setname %p%p%p%p%p%p%p%p%p%p%p%p%p%p%p%p%p%p%p%p%p... 


    算好數量 + %p 
    >> setname %c%c%c%c%c%c%c%c%c%c%c%c%c%c%c...%pAAAA
    
    >>setname %c%c%c%c%c%c%pAAAA => char*
    
    無限次去改setname，無次去查詢info，然後，建議寫個程式去跑，講師是跑 25mins啦…
    
    其實找 MCU：M2351Z1AAAE
    找文件都有，可以進一步去看，然後多試試。
    
    Reversing Secure Region Binary
    
## 最後一個關卡
。isPwned()
。`return flag== 0xfaceb00c;`

藏在這裡，去做覆寫。
nsc_unlock() :unlock …
遇到不是合法的字元，機會中止掉。


| 4 byte     | 1 byte   | tokensize |
| ---------- | -------- | --------- |
| token size | checksum | token     |

而且還有做絕對值檢查：abs() 或是 -num... 

int a = 0x80000000,b;
b = abs(a);

2 的補數運算，-4748324748
做個NOT +1 ，就變成自己原本的樣子…


>> 有PoC

unpack_request() 中再做一次。

>> Write Flash
... 這題目心機好重哦 Q"Q

透過ROP去做，可以Contorl flow





###### tags: `HITCONCMT2019`,`HITCONCMT`,`HITCON`