Just a Blog

[펌웨어 해킹] (Youtube) 펌웨어 리버싱 소개 동영상 - Introduction to Firmware Reversing 본문

IT, Computer

[펌웨어 해킹] (Youtube) 펌웨어 리버싱 소개 동영상 - Introduction to Firmware Reversing

wehong 2021. 8. 1. 10:08

동영상 링크: https://www.youtube.com/watch?v=GIU4yJn2-2A

설명요약 링크: http://1585security.com/Firmware-Reversing-1/

17.3.9 동영상

 

1. 타겟 하드웨어

D-Link DCS-932L 웹 캠.

 

2. 목표

펌웨어 안에 포함되어 있는 시스템 내부 파일 시스템을 확인.

펌웨어 리버싱을 이용한 공격자(attacker)의 공격 방법은 다음과 같은 것일 것이므로, 이것이 리버스 엔지니어링의 첫 단계. 나중에 이런 것 까지도 가능할 수 있음.

 

3. 제조사 웹페이지에서 펌웨어 다운로드

웹 캠, 인터넷 공유기 등의 하드웨어는 사용자가 펌웨어 업그레이드를 수동으로 할 수 있도록 지원하기 위해 웹페이지에 펌웨어 바이너리 파일을 공개하는 경우가 많음.

 

4. 펌웨어 압축해제 및 확인

다운 받은 펌웨어의 압축을 푸니, 설명서로 보이는 PDF 파일과 펌웨어로 보이는 바이너리(.bin) 파일이 있음.

'file' 명령어로 바이너리 파일을 확인하니 'data'라고 확인됨.

'head' 명령어로 파일의 앞부분을 텍스트로 읽어보니 역시 사람이 읽을 수 없는 내용의 일반 바이너리라는 것을 알 수 있음.

 

5. 바이너리에서 읽을 수 있는 텍스트(readable text)를 찾아 봄

'strings' 명령어로 바이너리에서 읽을 수 있는 텍스트를 찾아 봄. API 정보 등이 들어 있을 수 있음. 'U-Boot' 등의 단어를 통해 펌웨어 관련 바이너리라는 점과 부트로더의 종류를 짐작해 볼 수 있음.

 

6. binwalk로 바이너리 분석

binwalk에서 바이너리를 확인하니 10개의 파일이 인식됨. 106352에 부트로더인 U-Boot 1.1.3이 포함된 것이 보임. 327680에서 리눅스 커널 이미지 헤더(uImage header, LZMA 압축)가 보임. 327744에서는 LZMA 압축 포맷인 데이터가 보이고 이것에 주목.

 

7. 데이터 파일을 별도로 복사

'dd' 명령어로 바이너리 데이터의 특정 영역을 별도의 파일로 추출함. 바이너리의 327744 이전 데이터를 스킵하고 이후 바이너리 데이터를 파일(kernel.lzma)로 복사(블럭사이즈(bs)는 1).

만들어진 파일을 'file' 명령어로 확인하니 LZMA 압축 파일로 확인됨. 'unlzma' 명령어로 LZMA 압축 해제. 압축이 풀린 파일명은 'kernel'이 됨.

'file' 명령어로 'kernel' 파일을 확인하면 data로 확인됨.

 

8. 데이터 확인

'binwalk' 명령어로 'kernel' 파일을 확인하면 안에 많은 파일 정보(유닉스 파일 path 등)가 확인됨.

앞부분(3145804)에 리눅스 커널 버전이 '2.6.21'로 나옴. 오래된 버전이고 이 버전에 대한 취약점 정보가 공개되어 있을 수 있으므로, 이 자체로도 중요 정보가 될 수 있음.

마지막 부분(4038656)에는 LZMA 압축되어 있는 데이터가 있음을 확인할 수 있음.

 

9. 안의 데이터를 압축해제

'dd' 명령으로 마지막 부분의 LZMA 압축 데이터를 별도의 파일(mystery.lzma)로 만듦.  LZMA 압축을 풀고 'file' 명령으로 정보를 살펴보면 'cpio archive'라는 것을 알 수 있음. 많은 제조사들이 파일 시스템을 cpio 아카이브로 만들고 있기 때문에 파일 시스템일 것으로 강력하게 추측됨.

 

10. cpio 아카이브에서 파일시스템 추출

아카이브를 풀 디렉토리를 생성하고 진입.

'cpio' 명령어를 이용해(-idm: 압축을 푸는데 필요시 디렉토리를 생성하고 타임스탬프는 유지, --no-absolute-filenames: 현재 시스템에 덮어쓰지 않도록 절대경로 사용하지 말 것) 아카이브 압축해제. 

압축해제된 내용을 보니 리눅스 파일 시스템으로 확인됨.

 

11. 파일 시스템 내용 확인

파일 시스템 안을 확인해서 취약점 등을 찾음. 

 

 

Comments