JTAG

Digital Forensic Wikipedia
둘러보기로 가기 검색하러 가기

JTAG(Joint Test Action Group)은 IC 레벨에서 인쇄 회로 기판(PCB)상에 연결을 검증하는 방법으로 IEEE 1149.1 표준으로 명시되어 있다. 전통적인 회로 내 검사(In-Circuit Test) 방식을 사용하므로 복잡하지 않고 많은 공간을 차지하지도 않는다. 원래는 IC를 생산 후 양품인지 불량품인지를 테스트하기 위한 용도로 개발되었으며 이후 기능이 확장되어 개발 시 디버깅을 위한 용도로 사용되고 있다. 임베디드 시스템 프로그램은 개발자가 어떤 부분에서 문제가 발생하는지를 알아내기가 매우 어렵다. 이러한 어려움을 해결하기 위해 PCB에 표준화된 로직과 테스트를 위한 핀을 내장하도록 한 것이 JTAG이다. JTAG은 아래 그림과 같은 구조를 가지고 있다. Internal Core Logic은 칩 자체 본래의 기능을 구현한 것이며 JTAG은 TAP(Test Access Port) 컨트롤러에 의해 Internal Core Logic을 제어한다. JTAG은 기본적으로 nTRST, TMS, TDI, TDO, TCK의 기본 신호로 구성되어 있으며 디버깅 목적으로 nSRST, VTref, EDBGRQ, DBGACK 등의 신호를 이용할 수 있다. JTAG은 산업 표준으로써 모든 임베디드 기기에 적용할 수 있다. 따라서 입출력 핀을 알 수 있다면 쉽게 데이터 수집을 할 수 있다. 그러나 JTAG을 이용한 방법을 사용할 수 있으면, 임베디드 기기에 내장되어 있는 펌웨어가 노출될 위험이 있기 때문에 대부분의 제조사는 제품을 출시할 때 JTAG 인터페이스를 차단하거나 숨기므로 보편적으로 사용할 수는 없다.

JTAG Pin의 종류
JTAG Pin 역 할
nTRST Test Reset
TMS Test Mode Select
TDI Test Data In
TDO Test Data Out
TCK Test Clock
RTCK Return Test Clock
nSRST(=nRESET) Chip Reset
VTref Target의 기준전압을 입력 받ㄷ는데 사용
EDBGRQ,DBGACK 외부 Trigger Signal을 사용


수집 절차[편집]

JTAG 포트를 통한 데이터 수집의 절차는 아래와 같다.

JTAG 포트를 통한 데이터 수집


  • 1. 디바이스 배터리 분리

타겟 디바이스 PCB에 JTAG의 통신을 위한 포트를 확인하기 위해서는 우선 배터리를 분리하여 제조사, 제품명, 제품번호, 인증번호 등의 디바이스 기본정보를 확인한다.

  • 2. 디바이스 케이스 분리

배터리를 분리하여 디바이스 기본정보를 확인한 다음 케이스를 분해하여 디바이스의 칩 정보와 메모리 정보 등을 확인한다.

  • 3. JTAG 포트 핀맵 확인

JTAG 포트와 디바이스 PCB 기판과 연결되는 지도를 핀맵이라고 하고, 핀맵을 분석하는 것이 JTAG 통신을 이용한 디바이스 분석의 핵심이다. 케이스를 분해하여 디바이스 칩 정보와 메모리 정보 등을 확인한 후 JTAG 포트를 통한 통신을 위해 필요한 기본 신호 TDI, TDO, TCK, TMS, TRST, Vcc, GND 등의 핀맵을 확인한다.

  • 4. JTAG 각 포트 연결

JTAG를 이용하여 SRAM과 플래시 메모리 부분까지 데이터를 추출하는 방법은 디바이스 PCB에 JTAG 통신을 위한 포트를 찾아 JTAG 핀맵과 연결함으로써 통신을 위한 인터페이스가 구성된다.

JTAG 연결 모습 (갤럭시 S2 LTE)


  • 5. 디버깅 장비 연결

JTAG을 이용하기 위해서는 디바이스를 Trace32와 같은 JTAG 에뮬레이터에 연결하고 에뮬레이터를 다시 PC에 연결하여 사용한다. 에뮬레이터에 연결된 PC에서 JTAG 인터페이스로 메모리를 읽는 명령을 전송함으로써 연결된 시스템의 Internal Core Logic을 제어하여 메모리를 읽을 수 있다.

JTAG 포트 연결선과 Trace32 장비 연결


  • 6. cmm 파일 실행

디바이스를 Trace32와 연결하고 다시 PC에 연결한 후, 연결된 PC상에서 Trace32 PowerView 소프트웨어를 실행한다. PowerView에서 디바이스와 통신을 위해 System.up 상태로 만든 다음 해당 cmm (command macro file) 파일 실행을 통해 플래시 메모리 데이터 이미지를 추출한다.

Trace32 PowerView


스마트기기에 미치는 영향[편집]

JTAG을 통한 데이터 수집은 플래시 메모리 내부 데이터의 무결성을 유지하며 데이터를 수집할 수 있는 방법으로 잘 알려져 있다. 하지만 최신 스마트 기기(삼성 갤럭시 S3이후 출시 된 스마트 기기)의 경우 JTAG 포트가 존재하지 않는 등의 한계점이 존재하며, 스마트기기에 전원을 연결한 뒤 수집해야하기 때문에 사용자의 숙련도에 따라서 JTAG 연결 시 스마트기기가 부팅되면서 플래시 메모리 내부 사용자 데이터가 존재하는 파티션이 마운트 될 수 있다. 이 때 해당 파티션의 파일 시스템의 메타데이터 정보가 변경될 수 있다는 단점이 존재하며 JTAG 포트를 통한 데이터 수집은 너무 많은 시간이 소요된다는 단점도 있다. 또한, 스마트 기기의 JTAG 포트를 찾기 위해 기판을 제거하면서 스마트 기기에 물리적인 충격이 발생할 수 있다.