펌웨어 분석

ZLP042·2023년 9월 5일

2022년 12월 13일 공개된 a604r_ml_12_162.bin 파일을 가지고 분석을 시도했다.

-A 옵션으로 아키텍처도 분석해봤는데, 사실 이게 무슨 뜻인지를 잘 모르겠다.

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
898           0x382           MIPS instructions, function epilogue
1074          0x432           MIPS instructions, function epilogue
2386          0x952           MIPS instructions, function epilogue
2458          0x99A           MIPS instructions, function epilogue
2766          0xACE           MIPS instructions, function epilogue
3078          0xC06           MIPS instructions, function epilogue
3242          0xCAA           MIPS instructions, function epilogue
3370          0xD2A           MIPS instructions, function epilogue
3978          0xF8A           MIPS instructions, function epilogue
4084          0xFF4           MIPSEL instructions, function epilogue
4316          0x10DC          MIPSEL instructions, function epilogue
4646          0x1226          MIPS instructions, function epilogue
5250          0x1482          MIPS instructions, function epilogue
7554          0x1D82          MIPS instructions, function epilogue
7634          0x1DD2          MIPS instructions, function epilogue
7742          0x1E3E          MIPS instructions, function epilogue
7846          0x1EA6          MIPS instructions, function epilogue
8198          0x2006          MIPS instructions, function epilogue
8982          0x2316          MIPS instructions, function epilogue
9858          0x2682          MIPS instructions, function epilogue
10958         0x2ACE          MIPS instructions, function epilogue
12074         0x2F2A          MIPS instructions, function epilogue
15078         0x3AE6          MIPS instructions, function epilogue
15206         0x3B66          MIPS instructions, function epilogue
15322         0x3BDA          MIPS instructions, function epilogue
15426         0x3C42          MIPS instructions, function epilogue
15966         0x3E5E          MIPS instructions, function epilogue
16318         0x3FBE          MIPS instructions, function epilogue
16362         0x3FEA          MIPS instructions, function epilogue
16618         0x40EA          MIPS instructions, function epilogue
16818         0x41B2          MIPS instructions, function epilogue
17142         0x42F6          MIPS instructions, function epilogue
18082         0x46A2          MIPS instructions, function epilogue
18534         0x4866          MIPS instructions, function epilogue
23450         0x5B9A          MIPS instructions, function epilogue
24742         0x60A6          MIPS instructions, function epilogue
24866         0x6122          MIPS instructions, function epilogue
25030         0x61C6          MIPS instructions, function epilogue
25186         0x6262          MIPS instructions, function epilogue
25342         0x62FE          MIPS instructions, function epilogue
25466         0x637A          MIPS instructions, function epilogue
25590         0x63F6          MIPS instructions, function epilogue
25650         0x6432          MIPS instructions, function epilogue
25706         0x646A          MIPS instructions, function epilogue
28212         0x6E34          MIPSEL instructions, function epilogue
28512         0x6F60          MIPSEL instructions, function epilogue
28804         0x7084          MIPSEL instructions, function epilogue
29520         0x7350          MIPSEL instructions, function epilogue
29572         0x7384          MIPSEL instructions, function epilogue
29844         0x7494          MIPSEL instructions, function epilogue
263156        0x403F4         MIPSEL instructions, function epilogue
263240        0x40448         MIPSEL instructions, function epilogue
263584        0x405A0         MIPSEL instructions, function epilogue
263832        0x40698         MIPSEL instructions, function epilogue
264536        0x40958         MIPSEL instructions, function epilogue
265824        0x40E60         MIPSEL instructions, function epilogue
265868        0x40E8C         MIPSEL instructions, function epilogue
266144        0x40FA0         MIPSEL instructions, function epilogue
268108        0x4174C         MIPSEL instructions, function epilogue
270832        0x421F0         MIPSEL instructions, function epilogue
375148        0x5B96C         ARM instructions, function prologue

-e 옵션으로는 펌웨어 파일 추출이 가능했는데

이렇게 한개의 폴더가 나왔고, 열어보니, 아래와 같은 파일들이 있었다.

.squashfs 확장자가 뭔지 궁금해서 찾아보니, SquashFS는 리눅스 운영체제에서 사용되는 읽기 전용 파일시스템이라고 한다. 아마 _a604r_ml_12_162.bin.extracted 폴더에는 언팩된 SquashFS 파일시스템을 볼 수 있었던 듯.

squashfs-root-0 폴더에는 아무것도 없었고, squashfs-root 폴더에는 아래와 같은 파일들이 있었다.

뭔가 이게 좀 중요해보인다.

그리고 firmware-mod-kit를 통해서도 펌웨어 파일을 추출해봤는데, 아래처럼 입력하면 된다. 우분투 20.04인가 이상부터는 이전이랑 좀 달라졌다고 한다.

$ sudo apt-get install git build-essential zlib1g-dev liblzma-dev python3-magic autoconf python-is-python3
$ git clone https://github.com/rampageX/firmware-mod-kit.git
$ cd firmware-mod-kit
$ ./extract-firmware.sh firm.fd.bin

이렇게 추출된 결과를 보면, 폴더 3개가 나오는데, image_parts는 그냥 뭐 진짜 시스템 이미지같은거 있는거같고, logs에는 로그 파일들 들어가는거 같고, rootfs에는 아래와 같은 파일이 있다.

아까 squashfs-root 폴더에 있던거랑 유사해보인다.

0개의 댓글