Self-Improvement

QEMU, 펌웨어을 통한 공유기 구현 2(MIPS) 본문

Firmware

QEMU, 펌웨어을 통한 공유기 구현 2(MIPS)

JoGeun 2019. 1. 3. 16:07

* 준비물

1. 공유기 펌웨어

2. kali (ubuntu 등)

 

* 펌웨어에서 파일시스템 추출

펌웨어에서 파일시스템 추출 과정은 생략하겠다.

아래는 binwalk 툴을 이용하여 필자가 추출한 파일시스템(squashfs-root) 이다.

 

* 펌웨어 아키텍처 확인 (MIPS)

 

* 명령어, 파일 설치

qemu 명령어를 설치해준다.

#apt-get -y install qemu-system-mips64

 

가상 환경에 필요한 파일들을 아래의 링크에서 다운받아 준다.

https://people.debian.org/~aurel32/qemu/mips/

 

이때 다운받아야 할 파일(커널 등)과 명령어들이 해당 페이지의 하단에 친절하게 쓰여져 있다.

알맞은 파일을 wget 명령어를 통해 다운로드 받아준다.

#wget https://people.debian.org/~aurel32/qemu/mips/debian_wheezy_mips_standard.qcow2

#wget https://people.debian.org/~aurel32/qemu/mips/vmlinux-3.2.0-4-5kc-malta

그러면 아래의 사진처럼 두개의 파일이 다운로드가 되었을 것이다.

 

* 가상환경 접근 방법

이제는 qemu-system-mips64 명령어를 통해 가상환경을 구현해준다. 이때 가상환경에 접근하는 방법은 2가지가 있다.

1. 가상환경에 ip를 부여한다.

2. redirect로 접근을 한다. (1번으로 하고 400 bed request가 되면 2번으로 수행한다)

 

여기서는 1번 가상환경에 ip를 부여하겠다. 아래의 명령어를 수행한다.

brctl addbr br0

ip addr flush dev eth0

brctl addif br0 eth0

tunctl -t tap0 -u `whoami`

brctl addif br0 tap0

ifconfig eth0 up

ifconfig tap0 up

ifconfig br0 up

brctl show

dhclient -v br0

 

* 가상환경 실행

#

qemu-system-mips64 -M malta -kernel vmlinux-3.2.0-4-5kc-malta -hda debian_wheezy_mips_standard.qcow2 -append "root=/dev/sda1 console=tty0" -net tap,ifname=tap0 -net nic

 

그러면 가상환경이 실행되면서 부트로그가 출력이 되어진다. qemu 가상환경에서 빠져나오는 키는 ctrl+alt+g 이다.

※ 새로운 창이 아닌 터미널모드로 실행을 할 수 있지만 여기선 새로운 창으로 구현을 한다.

기다리다 보면 로그인 화면이 나오는데 이때 root/root로 로그인을 해주면 된다.

 

로그인 후엔 할당받은 IP 확인과 외부와 통신이 되는지 확인해 준다.

 

* 공유기 파일시스템 전송 및 설정

이제는 공유기의 펌웨어를 해당 가상환경으로 옮겨주기 위해 여기서는 scp 명령어를 사용한다.(다른 방법도 무수히 존재한다)

먼저 처음에 봤던 squashfs-root 폴더를 압축을 해준다.

#tar cvf squashfs-root.tar squashfs-root

 

scp 명령어로 가상환경에 전송해준다.

#scp squashfs-root.tar root@192.168.123.21:/root

 

이제는 qemu 가상환경에서 전달받은 파일시스템을 풀어준다.

#tar xvf squashfs-root.tar

압축을 풀면 아래와 같이 파일시스템들을 확인할 수 있다.

 

이제는 chroot을 통해 root 경로를 파일시스템으로 재조정 해준다.

#chroot . ./bin/sh

 

default 폴더에 있는 폴더들을 /tmp 폴더로 복사해준다.

#cp -r /default/* /tmp/

 

sess-bin 폴더를 하나 생성해주고 cgibin에 있는 cgi 파일들을 복사해준다.

#mkdir /home/httpd/192.168.0.1/sess-bin

#cp -r cgibin/* /home/httpd/192.168.0.1/sess-bin

#cp -r cgibin/* /bin/login-cgi

 

* 웹 실행 및 확인

이제는 웹을 실행 해준다~!!

#/sbin/httpd

 

그리고 kali에서 가상환경의 IP 웹 서비스로 접근을 해주면 성공~~

#firefox 192.168.123.21 &

※ 로그인 화면에 제품 이름과 번호가 떠서 하얀색으로 칠했습니다. 이해 바랍니다.