iptime 펌웨어 카빙과 qemu를 사용한 파일 시스템 분석 환경 설정

mj·2023년 7월 10일
1
post-thumbnail

파일 다운로드 링크 : http://download.iptime.co.kr/online_upgrade/a1004v_kr_12_024.bin

1. 환경

  • OS : ubuntu 20.04.6 LTS
  • 하이퍼바이저 : vmware workstation pro 16

2. 패키지 설치

2.1. qemu 설치

sudo apt install qemu-user-static

qemu 설치 할 때, 단순히 “우분투 qemu 설치” 라고만 검색 후, qemu 패키지를 설치했었는데, 계속 파일을 찾을 수 없다는 에러 발생

찾아보다가 위 패키지 설치 “qemu 다른 아키택처 실행” 키워드로 검색 후, 해당 사이트 참고(https://my-repo.tistory.com/13) 및 위 패키지 설치

2.2 binwalk 설치

sudo apt install binwalk

3. binwalk 분석

3.1. binwalk로 내장 파일 확인

binwalk a1004v_kr_12_024.bin

  • uImage header
  • LZMA
  • Squashfs 파일 시스템

3.2. binwalk 이용 파일 추출

binwalk -e a1004v_kr_12_024.bin

3.3. 추출된 파일 설명

1. file : 40.7z

  • 저 파일은 그냥 해당 추출 디렉터리에 있는 모든 파일을 압축한 백업 파일 느낌입니다.
  • 실제로 binwalk -e 40.7z 해서 내용 확인해보면 파일 용량하고 타입이 동일해요
  • binwalk -e 40.7z 실행 결과 보면 이름은 달라졌는데 위 사진과 용량이 동일한 것을 볼 수 있음 ⇒ 40.7z 파일은 신경 쓸 필요 없음

2. file : 168D13.squashfs

  • squshfs 파일 시스템 파일

  • 이것도 binwalk -e 168D13.squashfs 로 결과 확인해보면 그냥 위 사진에 있는 squashfs-root 파일이 압축되어 있습니다.
  • 이것도 40.7z 파일과 비슷하게 파일시스템 백업 파일 느낌 ⇒ 이것도 신경 쓸 필요 없음

3. file : 40

  • 리눅스 커널 파일
  • 아키텍처 확인할 때 이 파일로 확인해야 됨. ⇒ 그럼 MIPSEL 이 나옴
binwalk -A 40
  • 이것도 binwalk -e 40 하면 파일 추출되는데, xz compressed data 파일 형식이어서 알아서 분석하시기 바랍니다…. (참고로 이건 binwalk -e 옵션으로 추출 안됨. 따로 xz 압축파일 압축해제 하는거 찾아봐야될 듯. 저도 처음보는거여서 잘 몰라요)

4. 결론

위 상태에서 더 이상 binwalk -e 할 필요는 없음

아래 세가지만 하면 됨

  • binwalk -A 40 명령어를 통해 사용 아키텍처 확인
  • squashfs-root 디렉터리 분석
  • 커널 파일(40 파일 분석)

4. bin/sh 구동

4.1. 디렉터리 이동 및 확인

  • 디렉터리 이동
cd squashfs-root/
  • 디렉터리 확인
ls -al

4.2. qemu 파일 복사

1. qemu 파일 확인

ls -al /usr/bin/qemu-*

2. qemu 파일 복사

  • 아래와 같은 형식의 파일을 현재 디렉터리로 복사
qemu-[아키텍처]-static
  • 아까 binwalk -A 명령어로 확인한 아키텍처가 MIPSEL 이었으므로 아래와 같이 파일을 복사한다.
cp /usr/bin/qemu-mipsel-static ./

3. bin/sh 구동

  • 아래와 같은 명령어로 chroot 와 현재 디렉터리로 복사한 qemu-mipsel-static 파일로 bin/sh을 구동
sudo chroot [루트로 설정할 경로] [실행할 바이너리] [인자]
sudo chroot [로트로 설정할 경로] qemu-mipsel-static [현재 위치에서 실행할 바이너리]
sudo chroot . ./qemu-mipsel-static bin/sh

  • 주의할 점!!!! : 뒤에 bin/sh 적을 때, 호스트의 /bin/sh 이 아님!! 현재 디렉터리에 존재하는 bin 디렉터리의 sh 파일을 실행시키는 것이므로 아래와 같은 경로로 적어야 됨
    • bin/sh
    • ./bin/sh
profile
사는게 쉽지가 않네요

2개의 댓글

comment-user-thumbnail
2023년 7월 10일

잘 봤습니다 ^^

1개의 답글