[ 정보보안 프로젝트 ] 공유기 펌웨어 환경 구축
이번 글에서는 정보보안 프로젝트를 진행하는 과정에서 공유기에 존재하는 원데이 취약점을 분석하고 구현하기 위해 펌웨어의 환경을 구축하고 CGI 환경을 구현해보도록 하겠습니다.
[ 이 글은 Ubuntu 18.04 LTS를 기준으로 작성되었습니다 ]
이번 실습에서는 iptime t24000 공유기의 펌웨어 사용되었습니다.
펌웨어 종류에 따라서 환경 구축 방법이 달라질 수 있습니다. 이점 참고 바랍니다!
기본 환경 구성
$ sudo apt-get update
환경 구축 과정에서 설치해야 하는 파일이 존재하므로 따로 폴더를 만들어서 진행하시는 것을 추전 드립니다.
$ mkdir iptime_t24000
$ cd iptime_t24000
iptime 펌웨어는 지금 보이는 url에서 설치하실 수 있습니다. 이 글에서 사용된 iptime t24000을 사용하실 분은 아래 명령어를 통해 설치하실 수 있습니다.
http://iptime.com/iptime/?page_id=126
$ wget http://download.iptime.co.kr/online_upgrade/t24000_kr_9_988.bin
Binwalk 설치 & 펌웨어 추출
우리는 binwalk를 사용하여 펌웨어를 간단하게 분석하고 추출할 예정입니다.
우선 다음 명령어를 입력하여 binwalk를 설치해주세요!
$ sudo apt-get install binwalk
다음 명령어를 입력하여 펌웨어의 아키텍처를 식별하도록 하겠습니다.
$ binwalk -A t24000_kr_9_988.bin
명령어를 입력한 결과 t24000 공유기의 펌웨어는 ARM 아키텍쳐를 사용하고 있는 것을 알 수 있습니다.
현재 binwalk -A의 결과가 ARM이냐 MIPS냐에 따라서 다음 환경 구축이 달라집니다.
그다음 과정으로 펌웨어 내부에 알려진 파일 타입을 추출해주는 binwalk -e 옵션을 사용하여
설치한 펌웨어의 파일 시스템을 추출하도록 하겠습니다.
$ binwalk -e t24000_kr_9_988.bin
위 명령어를 입력하면 _t24000_kr_9_988.bin.extracted 폴더가 생긴 것을 확인할 수 있습니다.
_t24000_kr_9_988.bin.extracted 내부 파일을 확인해보면 squashfs-root라는 폴더가 존재하는 것을 확인할 수 있습니다.
squashfs-root 폴더는 저희가 추출한 파일 시스템으로 지금 추출한 파일을 활용해서 환경을 구축할 예정입니다.
가상 환경을 구축하고 파일 시스템을 올리기 위해 먼저 압축을 해두도록 하겠습니다.
$ cd _t24000_kr_9_988.bin.extracted
$ tar -cvf squashfs-root.tar squashfs-root
squashfs-root.tar 파일을 iptime_t24000 폴더로 옮겨줍니다.
$ mv squashfs-root.tar ../squashfs-root.tar
$ cd ../
QEMU 설치
QEMU란?
Qemu는 PC 환경을 위한 프로세스 에뮬레이터로 하나의 가상 컴퓨터를 구축해 주는 소프트웨어입니다. vmware, Xen, Virtualbox와 같은 가상화 소프트웨어 중 하나로 보시면 됩니다. 우리는 ARM이나 MIPS 기반의 공유기 펌웨어를 실행시키기 위해서 QEMU를 사용하도록 하겠습니다.
$ sudo apt-get install qemu
Kernel & Image 다운로드
아래 URL에서 커널과 이미지를 다운로드할 수 있습니다.
자신이 분석하는 환경에 맞는 파일을 다운로드하여 사용하시면 되겠습니다.
지금 이 글에서 사용하는 환경을 그대로 따라오시는 분들은 아래 명령어를 통해 다운로드하시면 됩니다.
https://people.debian.org/~aurel32/qemu/
$ wget https://people.debian.org/~aurel32/qemu/armel/vmlinuz-3.2.0-4-versatile
$ wget https://people.debian.org/~aurel32/qemu/armel/initrd.img-3.2.0-4-versatile
$ wget https://people.debian.org/~aurel32/qemu/armel/debian_wheezy_armel_standard.qcow2
QEMU 실행
위 사진처럼 QEMU를 실행시킬 수 있다고 합니다. 위 사진에 있는 명령어에 -redir tcp 옵션을 추가해서 SSH를 위한 22번과 CGI를 위한 80번 포트를 각각 2022, 2080 포트로 포트포워딩 시켜주도록 하겠습니다.
다음 명령어를 실행시켜 QEMU를 실행시킬 수 있습니다.
qemu-system-arm -M versatilepb -kernel vmlinuz-3.2.0-4-versatile -initrd initrd.img-3.2.0-4-versatile -hda debian_wheezy_armel_standard.qcow2 -append "root=/dev/sda1" -redir tcp:2080::80 -redir tcp:2022::22
실행이 완료되면 다음 사진과 같은 로그인 화면을 확인할 수 있습니다.
[ 초기 로그인 ]
아이디 : root
비밀번호 : root
새로운 터미널을 열고 다음 명령어를 입력해 SSH로 접속해보도록 하겠습니다.
$ sudo ssh -p 2022 root@localhost
위 사진과 같이 ssh를 통해 접속할 수 있는 것을 확인하였습니다. 이제 우리는 아까 만들어둔 squashfs-root.tar 파일을
가상 머신 안으로 옮겨주는 작업을 해야합니다. 다음 명령어를 통해 파일을 가상머신 안으로 옮겨주겠습니다.
$ sudo scp -P 2022 squashfs-root.tar root@localhost:/root
파일을 업로드한 후 SSH로 접속해보면 다음과 같이 파일이 파일이 올라간 것을 확인할 수 있습니다.
그다음으로 tar로 압축한 파일을 풀어줍니다.
$ tar xvf squashfs-root.tar
CHROOT 설정
cd squashfs-root/
cp -r default/* ./tmp/
압축을 푼 squashfs-root 폴더로 이동하고 default 안에 있는 파일을 tmp 폴더로 복사해줍니다.
다음으로 해당 디렉터리를 root로 인식하기 위해 chroot 명령어를 사용하여 바꿔준 이후 웹페이지를 통한 접속을 위해
cgibin의 파일들을 아래와 같이 복사해줍니다. 이 과정이 없으면 404가 나타난다 ㅠㅠ
$ chroot ./ ./bin/sh
$ mkdir -p /home/httpd/192.168.0.1/sess-bin
$ cp -r cgibin/* /home/httpd/192.168.0.1/sess-bin/
$ mkdir -p /bin/login-cgi
$ cp -r cgibin/* /bin/login-cgi
vi /dev/null
:wq!
/dev/null을 vi로 열고 바로 저장시켜준다.
관리자 페이지 접속
$ ./sbin/httpd
지금까지 모두 잘 따라왔다면 localhost:2080으로 접속하면 관리자 페이지에 접속할 수 있다.
ID : admin
Password : admin
'Project > 정보보안 프로젝트' 카테고리의 다른 글
[ 정보보안 프로젝트 ] 펌웨어 추출하는 방법 (포트미러링) (1) | 2021.12.18 |
---|---|
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 콘솔 접속 (0) | 2021.11.27 |
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 하드웨어 분석 (0) | 2021.11.07 |
[ 정보보안 프로젝트 ] CVE 분석 및 1 - Day 취약점 구현 (0) | 2021.10.16 |
[ 정보보안 프로젝트 ] 주제 선정 및 계획 (0) | 2021.10.16 |
댓글
이 글 공유하기
다른 글
-
[ 정보보안 프로젝트 ] 펌웨어 추출하는 방법 (포트미러링)
[ 정보보안 프로젝트 ] 펌웨어 추출하는 방법 (포트미러링)
2021.12.18 -
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 콘솔 접속
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 콘솔 접속
2021.11.27 -
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 하드웨어 분석
[ 정보보안 프로젝트 ] Tapo C200 IP camera - 하드웨어 분석
2021.11.07 -
[ 정보보안 프로젝트 ] CVE 분석 및 1 - Day 취약점 구현
[ 정보보안 프로젝트 ] CVE 분석 및 1 - Day 취약점 구현
2021.10.16