본문 바로가기
IOT hacking

[Iot]Make Me Hack 유투브 강의 번역 정리(1,2강)

by m_.9m 2022. 8. 2.

1. Identifying Components - Hardware Hacking Tutorial

1.1 목차


  1. 하드웨어 및 소프트웨어 정보 수집
  2. 제조사 파악, ODM(생산 방식), 장치 열기, 구성요소 식별, Uart, Jtag 인터페이스 위치하기, 펌웨어 추출, 루트 파일 시스템 얻기
  3. 필요한 경우 흥미로운 바이너리를 실행하고 리버스 엔지니어링할 에뮬레이션 환경 구축
  4. 장치 작동 방식 분석
  5. 장치 해킹, 펌웨어 수정

1.2 정보 수집의 첫단계

Step 1. 정보 검색

어떤 장치를 가지고 개조할 것인지 이해하는 것. 오리지널 디자인 제조사가 어디인지 파악해야한다.


가. 라벨 확인: 모델명, 라우터의 SSID, Wi-Fi 기본 비밀번호, LAN MAC 주소 또는 이더넷 MAC 주소, 장치 일련번호

나. 생산 날짜: 170210 /일련번호: 005623

다. 해당 기기의 초기 비밀번호를 알아낼 수 있다.

라. 장치의 사용 설명서를 찾는다.

마. 해당 기기에 대한 FSS CC ID를 확인.

Gemtek WVRTM-127ACN

 

Gemtek WVRTM-127ACN - TechInfoDepot

abgn+ac Indoor WiFi RouterPlatformBrand • Model • Rev Gemtek WVRTM-127ACN FCC ID IC ID Type wireless router, CPEWireless class AC1200CPU1 Flash1 Chip ESMT F59L1G81LA-25TFlash1 Size 128 MiB134,217,728 B 1,048,576 Kib 131,072 KiB 1,024 Mib 0.125 GiB

en.techinfodepot.shoutwiki.com

*미국 FCC에서 판매되는 각 장치에 부여된 ID는 Federal Communication Commission이며, 무선 방출 규칙을 준수한다는 것을 증명. 링크를 통해 장치 외관 라벨 확인,

바. 무선 방출 테스트의 테스트 보고서 웹사이트에서 system-on-a-chipi를 찾을 수 있따. 이는 모든 EPROM 칩의 이름과 양을 볼 수 있고, ROM 칩의 이름과 양을 볼 수 있다. 연관 링크.

https://github.com/digiampietro/hacking-gemtek

Step 2. 정보 수집 사이트

오픈 소스 라우터 전용 사이트 openwrt.

Welcome to the OpenWrt Project

 

Welcome to the OpenWrt Project

Welcome to the OpenWrt Project The OpenWrt Project is a Linux operating system targeting embedded devices. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management. This frees you from the

openwrt.org

이 장치에 오픈 라이트 소프트웨어를 설치하는 방법에 대한 많은 정보, 인터페이스의 위치와 JTAG 위치, 메인보드의 라우터 사진 등이 있다.

Step 3. 장치 분해

장치를 여는 과정엔 특정 나사를 사용할 수도 있고 접착제를 사용하는 경우도 있다. 산업용 등급일 경우 정말 어려울 수 있다.

어려운 장치를 열 때 참고 영상 >> Mike Anderson, Embedded Linux Conference 2018

슬라이드:

https://elinux.org/images/c/c5/Introd...

동영상:

https://www.youtube.com/watch?v=7v7Ua...

무선 주파수를 보호하기 위해 금속 차폐를 사용해 포트를 손상시키지 않고 제거하는 것이 어렵거나 보드가 하나 뿐이라 보드를 손상시킬 수 없다면 장치 식별을 할 수 없을 것이다. 또한 종종 회로에 있는 부품 번호를 읽을 수 없을 때 부품을 청소하거나, 분필을 사용 이용해 부품번호를 식별할 수도 있습니다.부품 번호를 읽을 수 있다면 우리는 인터넷을 통해 데이터 시트 등의 많은 정보를 획득할 것이다. 특이한 중국 장치의 경우 바이두와 같은 검색엔진에서 정보를 찾는 경우도 있다.

중국 검색 엔진:https://www.baidu.com

 

시스템 온어 칩은 자기 mt6이다. 칩은 MIPS CPU 듀얼 코어 CPU를 기반으로 하는 칩이다. RAM은 Wimble 칩이다. 기술 tech deport web 에서 발견한 것과 다른 점이 있다. 이 마더보드에 이 핸들 구성 요소가 없는 것이 일반적이지만 이 경우 칩에서 VCC 접지를 식별하기 쉽고 참조용으로 사용할 수 있기 때문에 유용하게 사용할 수 있다. 마더보드에서 전압을 측정해야 할 경우 NAND 플래시 장치가 메가바이트 NAND 플래시 장치임을 확인할 수 있으며 인터넷에서 이 정보를 검색했을 때 tech deport web에서 발견한 내용을 확인할 수 있었다.

시스템 온 칩 Mediatek MT7621AT 데이터시트:

http://www.t-firefly.com/download/Fir...

RAM 128Mb Winbond W971GG6SB 데이터시트:

https://media.digikey.com/pdf/Data...

74HC164 데이터시트:

https://assets.nexperia.com/documents...

NAND 플래시 메모리 F59L1G81LA 데이터시트:

https://www.esmt.com.tw/upload/pdf/ES...

 

 

2. UART interface 찾기


1.1 개념

[UART]

: Universal Asynchronous Receiver Transmitter

Word 인터페이스 찾기 = 필수적인 일.

⇒ 이를 통해 터미널 에뮬레이터를 C에 부착하고 부팅 사이클 동안 직렬 콘솔에 인쇄된 정보를 확인할 수 있다.

<파악 가능한 정보>

가. 어떤 종류와 버전의 부트 롤러를 사용하는지

나. 명령 집합 아키텍처의 버전 정보

다. RAM 다른 주변 장치에 대한 정보

라. 업데이트 사이클 내 콘솔 창 등등

1.2 핀 구별

부트로더와 상호작용하거나 운영체제로부터 로그인 프롬프트를 얻는 콘솔과 상호작용하는 것이 가능, 또한 표준 시리얼을 가지고 있는 전문 장비에 로컬로 로그인하는 것 또한 가능하다.

<RS-232 Serial Communication Standard>

가. 개념: 직렬 데이터 교환을 가능하게 하기 위해 컴퓨터와 주변 장치를 연결하기 위한 표준 통신 프로토콜입니다.

나. 표준 커넥터(25핀) 또는 9핀 커넥터를 사용한다.

다. 논리적으로 각 핀의 전압 레벨 표준화

0은 논리적으로 3볼트와 15볼트 사이

1은 -15볼트와 -3볼트 사이

라. 일부 드라이버 칩은 TTL 로직 레벨을 변환하는데 사용되며, 여기서 0 volt는 0이며 1은 VCC 로직 레벨에 있다.

우리가 관심 있는 장치의 두 번째 인터페이스는 개발 단계에서 사용되며 종종 또한 포함된다.

o 테스트 목적으로 사용되지만 외부 커넥터가 없으며 또한 레벨을 rs- 표준 레벨로 구동할 드라이버 칩이 없으므로 0이 0V이고 1이 VCC인 내부 로직 레벨을 갖습니다. 이 경우 인터페이스에 TTL 트랜지스터를 사용하여 장치의 인터페이스에 대한 트랜지스터 레벨 로직을 EV도 사용합니다.

<UART with TTL levels>

일반적으로 접지된 Rx와 TX만 있는 핀의 최소 개수와 때로는 VCC 핀이 전압 기준입니다.

-검색이 되거나 명시되어 있는 경우

가. Search on Intertnet 으로 이미 타인이 발견한 word intertface가 있는지 조사. 때때로 PCB 라벨이 명시되어있는 경우도 있다. (IN=RX, OUT=TX)

나. 데이터 칩을 식별 가능할 경우 데이터 시트를 보거나 PCB traces를 따른다.

-구별할 수 없는 경우

가. 잠재적인 후보를 찾아라.

후보들은 보통 3, 4피트 또는 4핀입니다. 보통 Groud, RX, TX, (VCC)

TX 핀은 일반적으로 풀업 저항기이며 RX 핀은 풀업 저항기거나 입력 인피던스일 수 있다.

나. JTAGulator를 사용

=핀을 자동으로 식별해주는 툴

다. 오실로스코프 사용으로 TX 식별 가능

0와 VCC사이에서 진동할 것이다.

Step 1. 측정 과정

  • 저항 측정(R gnd): 전원을 끈 상태에서 금속 그리드에 검은색 멀티미터 프로브를 부착하고 다른핀으로 저항을 측정
  • 저항 측정(R vcc): VCC에 검은색 멀티미터 프로브를 부착하고 다른핀으로 저항을 측정
  • 전압 측정(V): 전원을 켜고 진행, 검은색 프로브를 접지에 연결하고 다른 핀으로 측정

전압이 낮으면 멀티미터가 수백 밀리초 동안 평균 측정을 수행하므로 부트 온 핀 동안 동일한 측정을 수행할 경우 TX 핀이 .volt와 낮은 전압 사이에서 진동 함. 이 경우 핀이 진동하지 않고 약 3.3volt로 유지되는 것을 볼 수 있습니다. 즉, 핀이 TX 핀과 핀일 가능성이 높다.

Step 2. PC에 연결

만약 TTL 직렬 어댑터를 보드에 연결 할 때 volt가 다르면 직렬 어댑터를 손상시킬 수 있다. 5volt와 3.3volt 중에 선택해야한디. RX와 TX를 바꿔서 연결해주고, VCC는 필요하지 않기 때문에 연결하지 않는다.

[터미널 명령어]

  • lsusb
  • USB 장치 및 장치를 확인하는 경로
  • ls -lart /dev*대부분의 장치 파일은 /dev에 있으며 파일이 ttyUSB0인 경우 장치에 접근 시 root 또는 dialout 그룹에 속해야한다.
  • 모든 장치 파일과 최신 파일 목록

Step 3. baud rate 파악

시리얼 인터페이스의 속도: 논리 분석기나 오실로스코프를 통해 파악할 수 있다. 이보다 더 쉬운 방법은 흔한 baud rate를 임의로 입력하는 것이다.

만약 이 설정이 잘못되면 이상한 문자열이나 아무것도 없는 창을 보게된다.

Step 4. JTAGulator

24개의 프로그래밍 가능한 핀은 JTAG나 후보 핀에 연결할 수 있다. 이 툴은 핀을 자동으로 식별해 로직을 스캔하고 serial 인터페이스 속도를 발견한다. 우리는 USB로 jtagulator을 연결해 putty로 소통할 것이다.

인터넷에서 찾은 링크로 PCB 도면을 도식화하고 보드를 너 스스로 구축할 수 있다. 이에 앞서 USB에 연결하고 전원을 켜 putty로 소통해본다. H를 입력하면 세가지 유형의 명령어를 볼 수 있다.

  • 채널을 입력이나 출력으로 쓰기위해 조정가능한 목표전압: 1.2V~3.3V
  • 접지 포트를 식별 가능
  • JTAG 인터페이스 핀 식별

(1) 기기에 전원을 공급하고 jtagulator 접지를 기기 보드 접지에 연결한다.

(2) 터미널에 진입해 H 입력 후 V를 눌러 3.3으로 전압 volt를 맞춰준다.

(3) U > H > U > 내용 입력 > 자동 스캔 완료(TX, RX, 속도)