본문 바로가기

학부_대학원/Hardware Study

Firmware Analysis [1]

SMALL

Firmware

펌 웨어는 디바이스에서 동작하기 위한 모든 코드들의 집합, 모음으로 설명 할 수 있다.

그래서 보통 펌 웨어는 bootloader, kernel, file system 뿐만 아니라 디바이스를 작동시키기 위한 추가적인 자원들이 포함되어 있다.


공격자의 입장에서는 file system을 분석 함으로써 다양한 공격 백터를 찾을수 있고, bootloader의 하드웨어 취약점 등 다양한 방법으로 

리모트 쉘, 로컬 쉘을 획득할 수 있다.

또, 분석가[포렌식,악성코드 분석]는 firmware 전반적인 부분에서 어떠한 부분에서 위험이 발생했는지 확인할 수 있다.


[실습]

ARM 환경에 맞춰서 Bootloader, kernel file system을 이용하여서 이미지 만들기

bootloader 분석



Firmware의 분류 [ref. http://kkn1220.tistory.com/100]


복잡도에 따른 분류라고 되어있다. 이유는 모르겠으나.. 밴더사의 여러 개의 펌웨어를 보다보면 firmware의 구조 전반적인 부분이 모두

가지고 있는 firmware도 있다. 하지만 작동되는 몇개 밖에 되지 않는 펌 웨어 파일도 존재한다.

밴더사 들이 공개하기 싫어서 flash memory에 bootloader와 kerenl등을 넣어 놓고 작동하는 application만 바꾸는?것 같기도 하다.


Firmware 복잡도에 딸느 분류 방법

- Full-blown = Bootloader + kernel +libs + app

- Integrated = apps + OS-as-alib

- Partial updates(apps or libs or resources or support)


위와 같이 분류하지만 실제 메모리에는 firmware 전체 데이터가 존재 할 것이기 때문에 쉘을 획득해서 분석하거나

메모리를 덤프해서 분석


Firmware 획득

1. Online

가장 보편적이고 많이 사용하는 방식으로 벤더사나 포럼에서 펌 웨어를 다운 받는 방식

(개인적으로 생각하는) 장점

펌 웨어 획득하기 편하다.

(개인적으로 생각하는) 단점

침해가 발생하고 나서 분석에서는 쓸모 없다.

Full-blown 버전이 아닐 가능성이 있다.

2. Device

실제 동작하는 디바이스로 부터 펌 웨어를 획득하는 방법 --> 하드웨어 인터페이스를 이용해서

(개인적으로 생각하는) 장점

실제 동작하는 메모리로부터 긁어오기 때문에 Full-blown 버전 획득 가능

(개인적으로 생각하는) 단점

디바이스가 필요 --> 돈이 든다.

하드웨어 interface 지식이 필요

[실습]

UART Debugging -- 저항.. 맞춰야한다.. UART 탄다. 탔다..

JTAG Debugging


3. OTA(Over The Air)

OTA가 진행 될 때, 해당 데이터들을 스니핑 하는 방식이다.

*OTA : 시스템 상에서  무선 네트워크를 통한 소프트웨어/펌웨어 업데이트 기능을 말하는 용어

[실습]

ARP spoofing


4. Apps

디바이스와 연동되어 있는 여러 APP을 분석하여서 펌웨어를 다운받는 URL을 찾는 방법

[실습]

APK 분석


Firmware에서 사용되는 Filesystem/압축방식

펌 웨어에서 많이 사용되는 파일 시스템과 압축방식을 나열


파일 시스템

• SquashFS

• CramFS

• JFFS2

• YAFFS2

• ext2


압축 방식

•LZMA

•Gzip

•Zip

•Zlib

•ARJ



LIST

'학부_대학원 > Hardware Study' 카테고리의 다른 글

JTAG - 실습1  (0) 2017.06.10
JTAG - 이론 정리  (0) 2017.06.10
AVR 개발 - LED  (0) 2017.05.26
[빵판] Bread Board  (0) 2017.05.24
하드웨어 공부 시작~  (0) 2017.05.13