iptime공유기 펌웨어 분석 - [1]
by St1tch펌웨어 분석을 공부하기 위해 제일 만만한 iptime공유기의 펌웨어를 분석해 보기로 했다.
우선 지금 사용중인 공유기의 정보이다.
모델은 iptime의 N604R이며 펌웨어 버전은 8.88이다.
펌웨어 비교분석을 하기위해 iptime홈페이지에가서 최신버전을 보니 무려 9.91.2까지 나왔다 ;;
일단 8_88펌웨어를 다운받은 후 분석 하였다.
펌웨어를 binwalk로 살펴보았다.
binwalk는 파일의 시그니처를 이용하여 어떤 data가 들어있는지 확인을 할 수 있는 도구이다.
LZMA 압축데이터3개와 Squashfl파일시스템으로 구성되어 있었다.
Firmware Mod Kit을 이용하여 펌웨어내에서 각종 파일을 추출했다.
FMK는 펌웨어를 빌드하거나 추출하는 등 다양한 기능이 있는 분석툴이다.
추출한 디렉토리를 보면 image_parts, logs, rootfs디렉토리가 있다.
image_parts는 커널 이미지나 파일시스템 이미지 등이 들어있고,
logs에는 각종 추출할 때 기록된 로그들이 있고,
rootfs는 펌웨어 루트파일시스템을 추출한 결과들이 들어있다.
image_parts를 살펴보면 header.img와 rootfs.img두개의 이미지 파일이 생성되어있다.
header.img에는 부트로더, 커널등이 있고 , rootfs에는 파일 시스템 등이 있다.
이 이미지들이 펌웨어의 어디에 위치해있는지, 어떤 opcode로 구성되있는지 binwalk의 엔트로피 분석기능을 통해 살펴보았다.
binwalk에서 -A는 opcode를 search해주고, -B는 signature를 search, -E는 엔트로피 분석기능이다.
binwalk -BE 결과(시그니처)
binwalk -AE결과(opcode)
엔트로피 분석 결과 LZMA로 압축된 데이터들의 offset들의 opcode는 mips로 나온다.
따라서 부트로더, 커널 등이 mips로 되어있음을 알 수 있다.
우선 여기까지가 펌웨어에 대한 기본정보들을 모은 것이다.
이제 rootfs , 즉 루트파일시스템에 접근하여 어떤식으로 구성되어있는지 살펴보았다.
rootfs를 추출하는 것은
펌웨어에서 dd명령어로 img파일을 추출한 뒤 마운트 시켜도 되지만
fmk에서 extract하면 알아서 친절하게 rootfs를 추출해준다.
루트파일시스템안에 추출된 디렉토리들이다.
만약 해커에 의해 악의적으로 수정된 펌웨어 였으면 뭐라도 보고 분석해볼 껀떡지가 있을텐데,
그냥 정상적인 펌웨어라 무엇을 봐야할지 잘 모르겠다.
그래서 그냥 이것저것 무슨 정보들이 있는지 살펴보았다.
위와같이 default의 하위폴더를 돌아다니면 공유기의 여러 설정과 정보들을 다 볼 수 있다.
앞으로 펌웨어의 어느 부분이 패치 되었는지, cve를 참고해서 취약점이 무엇이였는지 더 공부해볼만 한것 같다.
UART와 JTAG을 이용해 펌웨어를 디버깅하면 재밌겠다는 생각도 든다.
블로그의 정보
튜기's blogg(st1tch)
St1tch