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
'학부_대학원 > 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 |