IoT 장비 펌웨어 분석 팁
by St1tch취약점 찾으면서 팁 같은거 생각날 때 마다 적을예정 ㅇㅅㅇ.
1.
FMK로는 추출이 안되는 펌웨어들도 많기 때문에 그럴때는, 적당히 binwalk를 이용하면 쉽게 파일시스템을 추출할 수 있다. ㅇㅅㅇ
https://github.com/ReFirmLabs/binwalk
요기서 binwalk 를 설치하면 된다.
git으로 설치 시, 의존되는 패키지가 완벽히 설치되지 않아 apt-get install binwalk를 한번 해주는게 좋다.
sudo apt-get install lzma cpio zlib1g-dev liblzma-dev python-magic mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsprogs cramfsswap squashfs-tools sleuthkit default-jdk lzop srecord
위의 패키지들을 설치한 다음,
binwalk -Me target.bin
명령어를 이용해서 파일시스템을 추출할 수 있다.
(cramfsprogs는 18.04이후로는 apt-get으로 설치를 할 수 없다. 여기서 deb받아서 직접 설치해주면 된다.)
2.
펌웨어가 여러 아키텍쳐로 제공되는 경우 arm계열을 제공하는지 찾아보면 분석할 시간이 줄어든다.
iptime 같은 경우에는 분석할 때, mips로 되있는 펌웨어들이 많지만 모델이 하도 많아서 arm계열 펌웨어도 존재한다.
하지만 기능적으로는 거의 똑같기 때문에 분석할 때는 arm, mips계열을 같이 받아서 분석하면 편하다(arm은 헥스레이가 가능하기때문이지 ㅇ0ㅇ)
3.
qemu로 가상환경을 구축해서 동적 디버깅을 해도 되지만, qemu-?-static 을 사용하면, 아주 편하게 cgi 에 인자를 줄 수도있고, ida에 attach 시켜서 분석할 수 있다.
모두 다 되지는 않지만 iptime 같은 경우에는 가능했고, wevo 같은 경우에는 잘 되지 않았다. ㅇㅅㅇ...;;;
+ 생각날 때 마다 추가예정 '-' ~;m
블로그의 정보
튜기's blogg(st1tch)
St1tch