Hardware Reverse Engineering
최근의 시큐리티 필드에서는 하드웨어 리버스 엔지니어링의 중요성이 점점 커지고 있습니다. 이러한 시점에서 소프트웨어 리버스 엔지니어가 하드웨어 리버스 엔지니어링의 세계에 진입하기 위해서는 가파른 러닝 커브가 존재합니다.
하드웨어 리버스 엔지니어링만의 특징으로 인해 진입 장벽이 존재하는데, 초기 하드웨어 리버스 엔지니어링에 입문하기 위해서는 이러한 장벽을 넘게 도와 줄 수 있는 가이드가 필요합니다. 이 클래스는 그러한 가이드가 될수 있도록 기획되었으며, 단지 초중급 정도의 내용이 아닌 고급 테크닉들을 다수 포함하고 있습니다.
트레이닝 기본 정보
Name | Details |
---|---|
Code | 199 |
Title | Hardware Reverse Engineering |
Level | 5 |
Prerequisites | 기본적인 납땜 기술, 회로에 대한 이해 |
Days | 5 |
Price | 550만원 (부가세 포함) |
Part 1. Hardware Reverse Engineering Basic Skills
하드웨어 해킹을 위해서 꼭 필요한 기본 스킬을 가르치는 것을 목표로 합니다. 먼저 soldering과 desoldering 스킬은 하드웨어 해킹을 위해서는 피해갈 수 없는 영역입니다.
Soldering을 단지 테크닉의 영역으로 보기 보다는 먼저 이론적인 배경을 소개하고, 그 이론적인 배경에 입각해서 어떠한 다양한 테크닉들을 사용해서 초보적인 soldering 테크닉에서부터, 고급의 SMD soldering까지 마스터할 수 있는지에 대해 논의하고 실습합니다. 실제 practice board를 사용하여, soldering 스킬을 높일 수 있도록 합니다. Soldering이 감으로 하는 것이 아닌 정확하게 수립된 방법론에 따른 절차적인 과정임을 이해하고 실행할 수 있도록 합니다.
리버스 엔지니어링의 특성상 soldering만큼 desoldering 테크닉도 중요합니다. Desoldering은 이미 PCB 등에 장착된 칩이나 부품을 분리하여 추가적인 리버스 엔지니어링을 하기 위한 초기 단계입니다. Desoldering의 방법은 파괴적인 방법, 비파과적인 방법 등 여러가지 접근법이 있습니다. 이 과정에서는 비 파과적으로 해당 타겟 컴퍼넌트와 보드를 파괴하지 않는 방법을 제시하고 연구할 예정입니다. 어떠한 온도와 시간을 세팅하여 타겟 컴퍼넌트를 분리할지에 대해서 실험과 실습이 있을 예정입니다. 또한 이렇게 desoldering 된 컴퍼넌트를 일정한 작업후 다시 해당 PCB에 부착하는 과정도 실습할 예정입니다.
Desoldering 과정 예제
Part 2. Hardware Reverse Engineering Basic Concepts
베이직한 스킬셋이 담보된 상태에서 두번째 electronic circuit의 기본 개념과 그 컴퍼넌트들의 기본적인 역할과 board에서 각 컴퍼넌트들끼리 통신하는 방법에 대해서 알아 봅니다.
기본적으로 PCB위의 여러 컴퍼넌트들은 전류의 흐름에 의해서 동작하게 되는데, 단순한 연결이 아닌 복잡한 데이타와 명령의 흐름은 조금더 높은 수준의 프로토콜에 의해서 이뤄지게 됩니다. UART와 같은 가장 단순한 형태의 프로토콜에서 부터 SPI나 I2C등의 실제로 많이 보게 될 여러 프로토콜 들에 대해서 실습과 이론 정리를 통해서 습득할 수 있는 기회를 가질 예정입니다. 이러한 상대적으로 간단한 프로토콜 이외에 실제 하드웨어 리버스 엔지니어링에서 많이 접하게 될 NAND Flash 메모리의 입출력과 제어를 위해서 사용되는 프로토콜에 대한 이론적인 배경과 실습을 병행할 예정입니다.
이 과정에서 그러한 프로토콜을 리버스 엔지니어링해 볼 수 잇는 여러 툴들 (로직 어날라이저)에 대해서 알아 보고 그 사용법을 알아 보고 실제 프로토콜들을 리버스 엔지니어링하는 과정을 가질 예정입니다. 원래 서킷 디버깅을 위해서 개발되었지만, 근래에 리버스 엔지니어링을 위해 각광 받고 있는 JTAG 인터페이스와 실제 리버스 엔지니어링에 적용하는 기초적인 과정을 거칠 예정입니다.
Part 3. Reverse Engineering Target Device
파트 1과 2에서의 기본적인 이론과 실습으로 쌓은 지식을 기초로 하여, 실제로 현실에서 사용되는 디바이스에 대한 리버스 엔지니어링을 시작합니다. 이 디바이스는 메디칼 디바이스로서 실제로 오랫동안 판매되어 왔고, 사용되어온 디바이습니다. 본인의 여러 디바이스 리버스 엔지니어링 경험에 비추어 보면 이 디바이스의 리버스 엔지니어링 난이도는 중상급 이상으로 판단됩니다.’
먼전 간단하게 UART 억세스를 찾아내는 것으로 시작하고, UART 억세스의 장점과 한계를 알아 봅니다. 흔히들 UART를 찾으면 하드웨어 해킹이 거의 성공했다고 여기는 경우가 많지만 그렇지 않은 여러 이유들을 알아 봅니다.
그 이후 실제로 해당 디바이스에 대한 완전한 통제권을 가지기 위해서는 사실 JTAG 억세스를 가지는 것이 중요합니다. 많은 경우 상용으로 판매되는 소비자용 제품의 경우에는 이러한 JTAG 억세스가 원활하지 않게 숨겨 놓거나 제거해 놓는 경우가 많습니다. 이렇게 숨겨진 JTAG을 찾아 낼 수 있는 여러가지 접근법들에 대해서 알아 보고, 각 방법의 장단점에 대해서 논의해 봅니다.
세번째로 JTAG 억세스가 불가능한 경우를 상정해서 최종적인 방법인 Flash 메모리 분리와 펌웨어 추출에 대한 방법을 알아 봅니다. 수천만원에 달하는 상용 Flash 메모리 리더가 존재하지만 사실 $10 ~ $20에 불과한 FT2232H 기반의 보드를 통해서 bit-banging 기법을 이용하여 실제 NAND 플래쉬 메모리의 컨텐츠는 쉽게 추출이 가능합니다. 이러한 방법론과 접근법에 대한 이론적인 배경과 실습을 병행할 예정입니다. 또한 SPI 기반의 EEPROM 메모리 추출에 대해서도 논의할 예정입니다.
Part 4. Reverse Engineering Firmware
파트 3의 여러 방법을 통해서 해당 기기에 대한 콘솔 억세스와 펌웨어 억세스를 달성하고 나면 해당 기기의 파일 시스템에 억세스하는 과정이 남습니다. 이 파트를 통해서 여러 접근법에 대해서 배웁니다.
추출된 펌웨어 파일에 대해서는 여러 가지 방법론을 통해서 파싱과 파일 시스템 추출이 가능합니다. 하지만, 여러 벤더들과 각각의 기기들은 여러 개발 상황에 따라서 상이한 플래쉬 메모리 레이아웃을 가진다거나 특이한 형태의 부트로더와 파일 시스템을 가지는 경우가 생깁니다. 이러한 많은 다른 경우를 상정하여 어떻게 부트로더로부터 커널 이미지와 파일 시스템을 체계적으로 추출해 내고 다시 프로그램해 넣을 수 있는지에 대한 주제를 다룹니다.
플래쉬 메모리의 raw한 포맷과 ECC 등의 개념을 배우고 binwalk등의 기본적인 툴 사용법에서부터 DumpFlash와 같은 한단계 더 높은 수준의 분석을 제공하는 툴에 대해서 학습합니다. 또한 이렇게 추출한 커널과 파일 시스템 이미지에 대한 기본적인 리버스 엔지니어링 기법에 대해서 배웁니다. 또한 이러한 펌웨어에 대한 수정을 가하고 다시 재프로그램하여 해당 디바이스에 입력하는 방법에 대해서도 학습니다.
제공 기기 설명
다음과 같은 디바이스들이 실습에 사용되며, 모두 실습자들에게 실습 종료 후 제공됩니다.
Soldering Iron: TS100
TS100은 최근 몇년간 미국의 하드웨어 해커들 사이에서 나름대로 인기를 끌고 있는 중국제 soldering iron입니다. Hakko와 TS100 사이에서 많은 고민을 했지만, 실질적으로 기본적인 컴퍼넌트들의 soldering이나 SMD soldering에서 조차도 퍼포먼스 차이가 크지 않았고, 극대화된 휴대성의 장점을 지니고 있어서 이 장비로 결정하게 되었습니다.
TS100 실제 사용 모습을 보여주는 영상 – 문제 없이 모든 SMD 작업이 가능함
Portable Rework Solder Station
전통적으로 Rework Solder Station은 858D와 같이 조금은 부피가 있는 장비들이 대세를 이루어 왔습니다. 하지만, 최근 들어 새로운 개념의 휴대가 가능한 형태의 장비들이 출현하고 있습니다
858D는 이러한 rework station 중에서도 부피가 작은 측면에 속합니다.
다음 제품은 최근 유행하고 있는 휴대용 desoldering 장비의 사용 영상입니다. 해당 장비에 대한 테스트를 거친 결과 실제 SMD desoldering 등에 있어서 문제가 없다는 판단을 했고, 휴대성과 편리성의 측면에서 장점이 있다고 판단해서 해당 장비를 선정하게 되었습니다. 물론 장시간 여러 컴퍼넌트들에 대해서 많은 desoldering을 진행한다면 전용 기기 형태의 장비를 가지는 것이 유리할 것으로 보입니다. 하지만, 하드웨어 리버스 엔지니어링의 대부분의 작업이 특정 컴퍼넌트에 대해 일시적인 desoldering이나 soldering 작업이 주를 이루는 특성이 있으므로 이러한 휴대용 장비가 그 목적을 충분히 제공한다고 보여집니다.
휴대용 hot air gun의 사용 모습
Logic Analyzer
Saleae 제품과 다른 중국산 제품들 사이에서 많은 비교를 진행하였습니다. 결과적으로 Saleae 제품은 명성과 사후 서비스에서 장점을 가지고 있지만, 가격대비 장비들의 성능이 받쳐주지 않는 면을 가지고 있었고, 하드웨어 리버스 엔지니어링에 있어서 극단의 Logic Analyzer 성능이 대부분 불필요하다는 점을 들어 중국산 제품 중에서 오픈소스 펌웨어와 프로그램을 가지고 있는 DSLogic Plus 제품으로 결정하게 되었습니다. 실제적인 성능면에서는 일반 작업자들이 느끼기는 힘들고, 오픈소스로 코드가 github.com에 공개 되어 있다라는 점 또한 크게 작용했습니다.
DSLogic Plus에 대한 리뷰 – 부정적인 면도 부각되어 있지만, 결과적으로 긍정적인 의견
FT2232H 보드
FT2232H는 bit-banging을 위해서 가장 애용되는 칩셋 중의 하나입니다. Bit-banging 은 한마디로 하드웨어를 제어하기 위해서 다른 하드웨어 컴퍼넌트가 아닌 소프트웨어적으로 시그널을 보내서 해당 컴퍼넌트를 컨트롤하는 것을 의미합니다. 다음 영상에서 보는 것과 같이 bit-banging은 SPI와 같은 비교적 단순한 프로토콜 신호를 생성하고 컴퍼넌트들을 컨트롤하기 위해서 사용될 수도 있습니다.
이 실습에서는 SPI보다는 훨씬 복잡한 NAND Flash 메모리 제어를 위해서 bit-banging을 어떻게 사용할 수 있는지에 대해서 논의할 예정입니다. FT2232H의 내부 동작 원리와 bit-banging의 개념 학습과 더불어 bit-banging을 통해서 다른 하드웨어 칩들에 대해서 어떻게 컨트롤할 수 있을지에 대한 좋은 응용 아이디어를 제공할 것으로 보입니다.
Segger J-Link
Segger J-Link는 인더스트리에서 크게 인기를 끌고 있는 JTAG 에뮬레이션 제품입니다. 중국산 저가 JTAG 에뮬레이터들이 범람하지만, 초중급자가 하드웨어 해킹에 입문하기 위해서는 하드웨어 장비 자체의 문제를 최소화하는 것이 바람직하다고 생각하여 해당 장비를 선택하게 되었습니다. 중국산 클론에 비해서 정품의 경우 최신 펌웨어와 프로그램을 사용할 수 있어서 여러 기능들이 굉장히 안정적으로 작동하는 것을 확인할 수 있었습니다.
J-Link EDU 에 대한 언박싱 영상
Micrscope – AD106S
Microscope는 사실 실제 현장에서 사용할 수 있는 정도의 제품은 $200 대 내외에서 형성 되었던 것이 사실입니다. 최근 들어 $100 이하로도 간단하게 사용하기에 문제 없는 제품들이 많이 제공되고 있습니다. 고가의 광학 현미경의 경우 실제 작업에서 굉장한 선명도와 함께 작업 공간 확보에 유리한 측면을 가지고 있습니다. 그 동안 디지탈 현미경의 경우 이 두가지 측면에서 많이 밀려 왔지만, Andonstar의 AD106S 제품의 경우 이러한 여러 제약 사항들을 어느 정도 극복한 것으로 보입니다. 실제로 사용에 있어서도 작업 공간 확보나 영상의 딜레이 최소화 등의 측면에서 굉장한 장점을 보여주었습니다.
AD106S 리뷰
전체 제공 장비 리스트
High Level Analysis Tools
Item | Product |
---|---|
Logic Analyzer | DSLogic Plus |
J-Link Emulator | SEGGER J-Link EDU - JTAG/SWD Debugger |
FT2232H Breakout Board | USB 2.0 FT2232HL FT2232H MINI FT4232H UM232H Core Development Learning Board |
USB-To-TTL | Norcross |
Multimeter | ANENG AN8008 |
Soldering/Desoldering Tools
Item | Product |
---|---|
Portable Soldering Iron | TS100 |
Portable Solder Iron Power Supply | Excellway® 9-24V 3A 72W |
Portable Rework Solder Station | YIHUA 8858 |
Microscope | AD106S |
Soldering Accessaries
Item | Product |
---|---|
Fume Extractor | 220V/110V FA-400 Solder iron Smoke Absorber or Soldering Iron Exhaust Fan with LED Lighting |
Tweezers | GOOI TS - 15 1mm 45° Curved Tweezers High Precision Rhinestone Tweezers |
Solder | Pro’skit 9S002 Silver Tin Pen With 2% Silver Solder Wire for SMD PCB Repair Work |
Solder Paste | MECHANIC XG-Z40 10cc Syringe Solder Paste Flux Paste Sn63/Pb37 25-45um |
Flux | Kester-186 Pen With Rosin flux FPC PCB Plate Welding Repair |
Solder Wick | 3mm Desoldering Braid Solder Remover Wick Wire |
Helping Hands | NEWACALOX Magnetic |
Soldering Practice Training Board | Gikfun |
Silicone Mat | DANIU 34x23cm Heat Resistant Silicone Pad Desk Mat |
Cabling Accessaries
Basic Exercise Sample
Item | Product |
---|---|
ESP32 DevKit | ESP32 Development Board - ESP32 DEVKIT V1 (www.doit.am) |
Target device – medical device
실습의 타겟이 되는 디바이스는 라우터나 기타 리버싱이 상대적으로 쉬운 디바이스가 아닙니다. 적어도 중상급 이상의 하드웨어 리버스 엔지니어링 경험이 있어야 리버싱이 가능한 디바이스로서 여러가지 챌린지들을 줄 디바이스입니다. 해당 디바이스를 리버스 엔지니어링하면서 하드웨어 리버싱을 하면서 겪게 될 여러가지 상황들을 상정하여 어떻게 접근하고 해결해야 하는지에 대한 여러가지 아이디어와 방법론을 제공할 예정입니다.
결론
Hardware Reverse Engineering 코스는 하드웨어 리버스 엔지니어링에 대해서 전혀 모르는 사람들도 중급 이상의 지식을 습득할 수 있도록 설계 되어 있습니다. 소프트웨어 리버스 엔지니어링에서 하드웨어 리버스 엔지니어링으로 진입하는데에 있어서 가장 큰 장벽이 적절한 장비의 선택과 사용법입니다. 하다못해 soldering iron을 몇도에 넣고 어떠한 납을 사용해야 하는지에 대해서도 일일이 찾아 보고 확인해 보는 과정을 거쳐야 합니다.
이 코스를 통해서 이러한 작업을 실제로 다년간 진행해 본 트레이너들의 가이드를 통해서 해당 지식을 빠른 시간에 습득할 수 있도록 도와 줍니다. 또한 실습에 사용되는 장비는 그대로 참가자들에게 지급되어 실제 업무에 있어서도 바로 장비들을 적용할 수 있도록 할 예정입니다.