Weitere ähnliche Inhalte Ähnlich wie katagaitaictf7_hw_ysk (20) Kürzlich hochgeladen (10) katagaitaictf7_hw_ysk2. 準備 - hardware
[SECCON CTF 2014 online] Programing 400 - The Golden Gate
http://bit.ly/2kynVKb
[Nuit du Hack 2013] misc400 - OMG, electronics ...
http://bit.ly/2kDMwwW
ICのデータシート
4555、4042、4520
2716 EEPROM
Python2/3が動く環境(講義は2前提で説明します)
2
4. 自己紹介
ysk (@y_sk256)
学生時代
電子回路、装置開発などのHW開発
装置制御、画像処理などのSW開発
社会人
ソフトウェア開発管理というSE業務。最近障害対応が収まった
IoT絡みのセキュリティ研究調査というやりがいのあるお仕事
趣味
IoT周りの解析
Arduino,ドローン,車,…
機械学習
CTF: katagaitai
主な担当はfor, ppc, misc(hw★ココ),稀にrev
最近控え気味
電波や信号を発するもの
4
5. 本講義について
非専門家なので
資料や説明に間違いがあるかもしれません。ご指摘ください
HWの説明としてレベルは高く無いです。復習にもどうぞ
本講義の運営について
演習などは進み具合をみつつスピードを調整します。
質問は挙手または、休み時間にお願いします。
途中入退出自由です。周りに迷惑をかけないようお願いします
資料について
そのうち公開予定です
資料や講義風景のSNS等への投稿はご遠慮ください。
問題文/画像/資料は各CTF、Wikipedia、企業の物を引用している箇
所があります。著作権はそれぞれの団体又は組織に帰属します。
5
6. 目次
はじめに
ITセキュリティとHW
電子部品の紹介
問題:[SECCON CTF 2014 online] The Golden Gate
回路図の紹介
問題: [Nuit du Hack 2013] misc400 - OMG, electronics
マイコン系問題のさわり
さいごに
6
8. HWの分類
HWの分類 (独断と偏見)
IoT(つながるHW)
昔からユビキタスなどとして存在
大きな違いは、昔数十万円した機器が数百~数千円になったこと
スマホ,センサー類,…
独自ネットワーク(Internet以外)につながるHW
工場系
PLC制御、産業用ロボット,…
インフラ(SCADA,…)
ガス,電気,電話網,交通機関,…
クルマ(CAN,LIN,…)
家電・電子機器
エアコン,防犯機器,…
防衛システム(JTIDS,Link11/22/16)
人工衛星(テレメトリ通信)
つながらないHW達
旧来の家電,機械,…
8
9. ITセキュリティとHW
ITセキュリティに見るHWの例
CTFでの出題
Misc
電子機器の写真から回路図を起こして解析
回路図からSWに起こして解析
マイコンと回路図を解析(一部Revと被る)
広義の意味では、電気・音声信号の解析,…(一部Forと被る)
カンファレンスに見るHW(Defcon)
リアル電子回路バッチ
Hardware Village:電子機器,回路
(Lockpicking Village:鍵開け)
9
11. 電子部品1
電源:電力を供給するもの。
VCC/GNDと書かれることが多い(VCCは旧規格)
配線:電子部品を電気的に接続するもの
右図は複数配線の省略表記。同じ番号のみが接続されている
高集積の電子基板だと両面2層や3層に配線が組まれている
高周波はノイズやパーツ間の距離の影響を受けやすい
コネクタ:電気的な接続/取り外しを確実に行うもの
雄をピン、雌をジャックという
放熱フィン:機器の熱を空気に逃がす金属
整流回路や大電力を扱う部品に取り付けて使う
スイッチ(SW):電気の接続/非接続を行う入力装置
接触式SWはチャタリングが発生するため対策が必要
11
12. 電子部品2
抵抗(R):電圧や電流の調整に使う[Ω]
抵抗
半固定抵抗
カラーコードや数字で識別される。
コンデンサ(C):高周波を通しやすく、直流を遮断する[F]
セラミックコンデンサー
電解コンデンサー
可変コンデンサー
過電流を流すと破裂する(どらやき)
コイル(L):直流を通しやすく、高周波を遮断する[H]
コイル
トランス(T):電磁誘導による電気的な絶縁や昇圧/降圧を行う
12
17. [SECCON CTF 2014 online] Programing 400
- The Golden Gate
We've found an encoder board along with cipher text. Please help us to decrypt it.
The cipher text: BQDykmgZ0I6SaQnq4o/iEONudetXdPJdpl1UVSlU69o
ZOtvqnHfinOpcEfIjXy9okkVpsuw2kpKS==
17
⇒回路をリバースエンジニアリングして暗号文を復号すれば良い
Download from GitHub. http://bit.ly/2kynVKb
21. とは
とはNAND
NANDとは Y = ! (A & B) の信号を出す論理回路である
TTLレベルの論理回路では+5VがHigh(1), 0VがLow(0)となる
ICの足の見方
表の切り欠きから反時計回りにピン番号が振られている
これらのピンの機能をピンアサインと呼ぶことがある
右下と左上がGND,VCC(+電源)となる場合がよくある(?)
21
23. 方向性
写真を見やすく加工する(済)
裏表が一致するようにリサイズ、回転、鏡面反転、を行う
人によってはGIMPなどで重ねると見やすいかも
回路の類似性検証
基盤裏面を見ると繰り返しパターンがある
とはいえ配線が細かいところ違うので正確に写経する必要がある
入出力部位の抵抗は接続先に注目
タクトスイッチやLED周りの抵抗は電流調整用でセット
タクトスイッチの抵抗はプルUP/DOWN抵抗の可能性大
OFFの時にHighになるのがプルUP抵抗 ⇒ 論理式のNotと同意
暗号化回路の問題なので
可逆性がある論理回路が期待される ⇒ XORがあるハズ
(おまけ)電源電圧が気になる方へ
このタイプのIC達は普通は5V(TTLレベル)駆動
基盤実装の小さいタイプだと普通は3.3V
23
36. 論理回路2
フリップフロップ(Flip-Flop)
値を保持する回路
種類が複数ある。RS/JK/D/T型等
D型フリップフロップ
入力がD, C(Clock), 出力がQ
CがClock UP(Low->High)になった時のDの値をQが出力する。Q=D,
Q=!D
次のClock UPが来るまでQは値を保持する
入力P(Porlality:極性)がある場合Clock UPではなくDownで評価される
記憶装置
EEPROM
LCD
バックライトの上に液晶を配置し、電源のON/OFFで光の透過性を
制御して文字や図を表現する出力装置。
電子工作でよく出てくるもの
文字列(1文字を5*7ドットで表現など)を表示するもの
画像を表示するもの
36
D Q
C Q
38. [Nuit du Hack 2013] misc400 - OTP38
OMG, electronics ...
Found some information about what seems to be an OTP. And a webpage asking for a
valid token. The design draft we retrieved looks terrible, they must have got it fixed,
yet the algorithm should be similar.
OTPの入力画面が無いので、今回は2013/1/19 13:00:00 GMT +0100の値を求める
⇒回路をリバースエンジニアリングしてOTPを予測すれば良い
Download from GitHub. http://bit.ly/2kDMwwW
20min
40. 方向性
回路図が複雑
ブロック化(分割)して設計しているはず⇒分割して解析
知らないICは型番+「データシート」でググる
解析後にプログラムに変換しておく
HW One Time Password(OTP)の問題
OTPは他要素認証(MFA)の一つ
固有のシードを元に定期的にトークンが算出される
考えられる解き方
TestReportにマッチするようなシードを総当たりで調べ、任意時刻
の値を算出する⇒多分これ
回路自体にバグがある⇒CTFとしては難問で可能性低(?)
(おまけ)電源が無いから動かないのでは?
省略されていますが本来は記載されます。大抵5V
この問題では をGNDとしている
40
44. ①-1
RC発振回路
抵抗とコンデンサがある唯一アナログっぽい個所
RC発振回路の一種、ICによるマルチバイブレータ
矩形波を出力する
コメントよりこの発振回路はf = 1/4Hzに調整済み
(余談)f = 0.455/(C1 * (R1+R2)) ※マルチバイブレータの計算式
(余談) R2 = 0.455/(f*C1)–R1 = 452KΩくらいに調整済み
44
RC発振回路
1/4Hz
ck
p
c
b
46. ①-3
キー選定器(仮称)
前回の結果(a)を受けて次のトークン生成に使用するキー(b)を生成する
この回路特有のブラックボックス回路
c[0]-c[2]は先ほどのIC 4520により周期的(8秒毎)に0~7がセットされる
Input: a(32bit), c(3bit), Output b(4bit) = a[c*4]~a[c*4+3]
回路図中にはFile: selector.schと別の回路図があることを示唆している
ロジックが書いてあるので回路図はなくても問題ない
46
キー選定器(仮称)
ck
p
c
b
47. ①プログラム
①-1
ckを1bit反転させるだけ。矩形波を表現
1/4Hzなので1反転(半周期)に2秒かかる計算
①-2
クロックck=1(Clock UP)した時に、カウンターp
がインクリメントされる
さらにpの2bit目がインクリメントされたときに
カウンターcがインクリメントされる
①-3
現在のトークンから、カウンターcで指定され
る4bitをbに格納する
47
48. ②-1
キーとカウンターのXOR
回路記号よりXOR
b2 = b(キー) ^ c(カウンター)
トークンシード取得
EEPROM(IC 2716)から指定
されたアドレスのデータ
(トークンシード)を取得する
アドレス指定は4bit
トークンシードは8bit
データシートを確認
48
キーとカウンターのXOR
b
1/8Hz
トークンシード
16秒間隔4bit
カウンター
c
p2
p3
b2
a
d
p
c
49. ②-2
タイミング信号
回路記号よりNotとAND
1/32HzがONの間は1/8Hz矩
形波が出力される。
NotがあるのでU1A/U1Bは32
秒間隔で交互に出力1/8Hz矩
形波を出す
デコーダ
2bitで指定される番号のピン
に出力する。
例: c=0,1 ⇒ d=0,0,1,0
49
1/8Hz
デコーダ
タイミング信号
16秒毎に4秒間隔
矩形波/0V出力が
切り替わる
16秒間隔で4秒間
隔矩形波が来る
b
c
p2
p3
d
b2
a
p
c
55. ④
トークンシード結合
D型フリップフロッ
プ(IC 4042)による
データ保持機構
16秒毎トークンシー
ドXORのデータをデ
コーダが指定したフ
リップフリップフ
ロップ(赤枠)に記録す
る
左上>左下>右上>
右下の順に格納され
る。128秒間隔。
0~31bitに対応
全て出力はビット反
転している
55
トークンシード結合
16秒毎トークン
シードXOR
16秒間隔デ
コーダ出力
128秒間隔32bit
トークンシード
b4
a3
d
58. ⑤
トークン算出
回路記号よりXOR
32bitのトークンシード
と32bitデータ(前回トー
クン)をXORしてトーク
ンを求める
1bitローテートしている
OTP表示
数字を表示する7セグ
LEDでOTPを表示する
32bit Big-endianと書かれ
ているので、16進数8文
字となる。
58
OTP表示
トークン算出
128秒間隔32bit
トークンシード
32bitデータ
(前回トークン)
128秒間隔32bit
トークン a5
b4
~token
60. ⑥
トークン保持
D型フリップフロップ(IC 4042)により、32bit
トークンを保持する
クロックより256秒に1回保存される
60
トークン保持
32bitトークン
128秒間隔32bit
トークン
128秒周期矩形波 token
~token
66. 答えを求める
ここでは「2013/1/19 13:00:00 GMT+0100」を求めてみる
起点「2013-01-18 14.05 GMT+0100」からの経過時間は82500秒
=約322回転後(256秒周期)
時刻ズレも考慮して322回転後周辺のOTPを取得する
CTF当日はWeb画面にOTPを投げてゴール
66
68. PICの解析 (さわりだけ
PIC のファームウェアを入手したときの解析
プロテクトがかかっていなければ吸い出せる
gpdasmで逆アセンブリ(正確に逆アセンブリできない場合がある)
http://www.dinceraydin.com/pic/djdasm/djdasm.htmlで逆アセンブリ
68
;Generated by PICDIS18, Claudiu Chiculita, 2003. http://www.ac.ugal.ro/staff/ckiku/software
;Select your processor
LIST P=18F252 ; modify this
#include "p18f252.inc" ; and this
ORG 0
rrcf 0,W
DE 8Ah ;WARNING: unknown instruction!
incf EECON1,W
nop
sublw 14h
swapf 7,W,BANKED
DE 8Ch ;WARNING: unknown instruction!
retlw 14h
DE 8Dh ;WARNING: unknown instruction!
retlw 8Dh
retlw 8Dh
rrcf 1Fh,W
decf 8Dh,W,BANKED
sublw 0Dh
decf 16h,f,BANKED
DE 84h ;WARNING: unknown instruction!
DE 18Dh ;WARNING: unknown instruction!
xorlw 8Dh
69. Arduinoの解析 (さわりだけ
Arduino のファームウェアを入手したときの解析
ArduinoはAVRというワンチップマイコンやIntelのチップを用
いたものが存在する
target.hexファイルを入手しバイナリファイルtarget.binへ変換
逆アセンブリをかける
avr-objdump.exe -S target.bin
Arduinoをインストールしているとobjdumpが入ってくる
C:¥Users¥[USER_ID]¥AppData¥Local¥Arduino15¥packages¥ardui
no¥tools¥avr-gcc¥4.9.2-atmel3.5.3-arduino2¥bin¥avr-objdump.exe
C:¥Users¥[USER_ID]¥AppData¥Local¥Arduino15¥packages¥Intel¥
tools¥arc-elf32¥1.6.9+1.0.1¥bin¥arc-elf32-objdump.exe
69
70. Arduinoの解析(例)70
40034140: 276f 003f clri 0
40034144: 200a 0f80 4003 4000 mov r0,0x40034000
4003414c: 206b 0940 sr r0,[int_vector_base]
40034150: 240a 3f80 a801 1fbc mov sp,0xa8011fbc
40034158: 204a 0800 mov r0,0x20
4003415c: 206b 0440 sr r0,[che_mode]
40034160: 2020 0f80 4003 4448 j 0x40034448
40034168: 2069 0040 flag 0x1
4003416c: 264a 7000 mov 0,0
40034170: 264a 7000 mov 0,0
40034174: 264a 7000 mov 0,0
40034178: 2020 0f80 4003 4168 j 0x40034168
40034180: 264a 7000 mov 0,0
40034184: 240a 3f80 a801 17bc mov sp,0xa80117bc
4003418c: 20aa 0290 lr r0,[1034]
40034190: 2042 0400 sub r0,r0,0x10
40034194: 210a 0f80 a800 e000 mov r1,0xa800e000
4003419c: 2115 0000 add2 r0,r1,r0
400341a0: 1000 0001 ld r1,[r0]
400341a4: 7960 jl_s.d [r1]
400341a6: 264a 7000 mov 0,0
400341aa: 246f 003f rtie
400341ae: 78e0 nop_s
400341b0: 2005 0043 or r3,r0,r1
400341b4: bb1e asl_s r3,r3,0x1e
400341b6: 4500 mov_s r5,r0
400341b8: 0b4d 00a5 brhs.d.nt r3,r2,0x40034204
400341bc: 2242 8043 sub.f r3,r2,0x1
400341c0: 8180 ld_s r12,[r1,0]
400341c2: 2b42 80fc asr.f lp_count,r3,0x3
400341c6: 0b11 00b6 bbit0.d.nt r3,0x2,0x400341d4
400341ca: bac1 bmsk_s r2,r2,0x1
400341cc: 1d04 0310 st.ab r12,[r5,4]
400341d0: 1104 020c ld.aw r12,[r1,4]
400341d4: 20e8 026f lppnz 0x400341e6
400341d8: 432c ld_s r3,[r1,0x4]
400341da: 1d04 0310 st.ab r12,[r5,4]
72. 回路問題のポイント
電子部品を調査する
マイコンの有無
AVR,PIC,…
通信ポート/チップの有無
MAX232,FTDI,Ether,…
記憶媒体の有無
SD,EEPROM,RAM,ROM,…
入出力の関係を調べる
スイッチ、LED、LCD等
道具で解析する
各プロトコルの通信ケーブルを使う
RS232C,SPI,CAN,…
電気信号を直接見る
テスター,オシロスコープ,スペアナ,ロジックアナライザー
その他信号を投げる
GPIO,A/Dコンバータ,シグナルジェネレータ,…
72