Forensics/DFC

[2019 DFC] 2019 디지털포렌식 챌린지 - MOI 300

pental 2020. 4. 5. 21:01

2020 DFC를 대비하기 위해서 2019 DFC 를 풀어보도록 하겠습니다.

(2019 DFC는 고3이라,, 참가하지 못했었습니다.)

바로 시작하도록 하겠습니다.


Image 1. Questions

Questions This challenge is to find an answer to below questions.

1)   Identify a structure of the dump file.

       Bootloader, kernel and file system.

2)   Find a bootloader base address.

3)   Identify a method for enter boot command line interface.

4)   Describe a menu of boot command line interface.

5)   Figure out a web manager username and a password of suspect’s wireless router.

6)   List WoL (Wake on LAN) registered in the wireless router


문제는 총 6문제로

1. 덤프 파일의 구조를 확인한다.
-> 부트로더, 커널 및 파일 시스템

2. 부트로더의 기본주소를 찾아라.

3. 부팅 명령줄 인터페이스 입력 방법 식별.

4. 부팅 명령줄 인터페이스 메뉴 설명.

5. 웹 관리자 사용자 이름과 의심스러운 무선 라우터의 암호를 파악.

6. 무선 라우터에 등록된 WOL 목록 입니다.


먼저 주어진 파일은 다음과 같은 속성을 지니고 있습니다.

Image 2. moi300.bin

총 4,194,304 Byte로 이뤄져 있으며 해쉬값은 아래와 같습니다.

CRC32 2402AD86
MD5 7C90B7B0B325079A02E967DAB1B3617C
SHA-1 04BF0B9BA568D476CDE489855D734C0C39354A25

[ 사용환경 ]

Ubuntu Server 16.04 x64

Windows 10 Pro


[ 사용 프로그램 ]

VMware Workstation 15 Pro (15.5.1 build-10518445)

Binwalk

IDA Pro (v6.8.150423)


[1. 덤프파일의 구조를 확인한다.]

먼저 덤프파일의 구조를 확인하기 위해서 Binwalk 프로그램을 통해서 확인한다.

# apt-get install binwalk -y

binwalk를 먼저 설치해준다. 설치 후 아래와 같은 커맨드를 통해서 분석해준다.

# binwalk moi300.bin

Image 3. Binwalk Analyze

root@ubuntu:/home/pental# binwalk moi300.bin 

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
79184         0x13550         U-Boot version string, "U-Boot 1.1.3 (Oct 29 2015 - 11:46:48)"
262144        0x40000         uImage header, header size: 64 bytes, header CRC: 0xD7655020, created: 2018-09-11 03:13:01, image size: 3503150 bytes, Data Address: 0x80000000, Entry Point: 0x8000C120, data CRC: 0xB8DD98D, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "wr-m0i300"
262208        0x40040         LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 4119344 bytes
1606766       0x18846E        Squashfs filesystem, little endian, version 4.0, compression:xz, size: 2154436 bytes, 1348 inodes, blocksize: 131072 bytes, created: 2019-05-29 01:50:08

Binwalk의 분석결과에 따르면 운영체제는 Linux를 사용하며 CPU는 MIPS, image type 는 OS Kernel Image를 사용중이다.

Bootloader은 U-Boot를 사용하고있으며, 1.1.3 버전을 사용중입니다.

1번 문제의 정답을 정리해 보면 아래와 같습니다.

BootLoader U-Boot (1.1.3)
Kernel uImage
File System squashfs

[ 2. 부트로더의 기본주소를 찾아라. ]

필자는 IDA를 통해서 기본 주소를 찾아보도록 하겠습니다.

Image 4. IDA - Load moi300.bin

Processor type는 MIPS로 선택을 해줍니다. 그 이유는 1번 문제에서 CPU는 MIPS를 사용중인것을 확인할 수 있기 때문입니다.

Image 5. sub_B64

sub_B64 함수를 들어가 보면 li $sp, 0x89001F00 을 확인 할 수 있습니다.

부트로더의 기본주소는 0x89001F00 입니다.


3. 부팅 명령줄 인터페이스 입력 방법 식별. ]

기본적으로 부팅을 하기 위해서는 애뮬레이터를 통해서 Mount후 실행을 합니다.

필자는 Qemu 애뮬레이터를 통해서 moi300.bin 을 탑재해서 실행해 보도록 하겠습니다.

https://github.com/rampageX/firmware-mod-kit

 

rampageX/firmware-mod-kit

Automatically exported from code.google.com/p/firmware-mod-kit - rampageX/firmware-mod-kit

github.com

먼저 firmware의 탑재를 위한 도구를 다운 받습니다.

git clone https://github.com/rampageX/firmware-mod-kit firmware
./extract-firmware.sh moi300.bin

오류 발생시 아래 패키지 설치

# apt-get install build-essential zlib1g-dev liblzma-dev

Image 6. Extract Firmware - moi300.bin

fmk 폴더에 성공적으로 추출이 완료가 되었습니다.

fmk 폴더 안에는 총 286개의 폴더와 1068개의 파일이 존재합니다.

tree.txt
0.07MB


[ 4. 부팅 명령줄 인터페이스 메뉴 설명. ]

직역이 되어 있어서 문제가 한글로 된것이 이상하지만, 그냥 쉽게 말하면 애뮬레이터를 통해서 실행해라 뭐 이런말이다.

부팅을 하기 위해서는 MIPS의 커널이 필요합니다.

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

 

Index of /~aurel32/qemu/mipsel

 

people.debian.org

커널은 위 사이트에서 다운로드가 가능합니다.

wget https://people.debian.org/~aurel32/qemu/mipsel/vmlinux-3.2.0-4-4kc-malta
wget https://people.debian.org/~aurel32/qemu/mipsel/debian_wheezy_mipsel_standard.qcow2

우분투에서 그냥 위 커맨드로 다운해주면 됩니다. (필자는 칼리리눅스를 사용하였습니다.)

Qemu를 설치합니다.

# apt-get install qemu

https://johyungen.tistory.com/292?category=789046(이 블로그를 참고했습니다)

 

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

* 준비물 1. 공유기 펌웨어 2. kali (ubuntu 등) * 펌웨어에서 파일시스템 추출 펌웨어에서 파일시스템 추출 과정은 생략하겠다. 아래는 binwalk 툴을 이용하여 필자가 추출한 파일시스템(squashfs-root) 이다. *..

johyungen.tistory.com

 

먼저 이 파일을 받아줍니다. (아래 링크 참고)

http://sourceforge.net/project/showfiles.php?group_id=26089

브릿지를 구축하기 위해서 위 파일을 받아줍니다.

# apt-get install uml-utilities bridge-utils
# apt-get install autoconf
# tar -xvzf bridge-utils-1.5.tar.gz
# cd bridge-utils-1.5
# autoconf
# ./configure
# make && make install

위 커맨드를 통해서 설치를 해주고 아래 커맨드를 입력해서 네트워크망을 구축합니다..

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를 실행하기 위해서 아래와 같이 입력해줍니다.

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

Image Qemu Run

실행이 되고 있습니다.


[ 5. 웹 관리자 사용자 이름과 의심스러운 무선 라우터의 암호를 파악. ]

파일을 확인하는 방법은 매우 많지만, 필자은 Binwalk 를 사용해서 펌웨어에서 파일들을 추출했습니다.

# binwalk -e moi300.bin 

위 커맨드를 입력해주면, 아래 사진과 같이 파일들이 추출이 가능해집니다.

Image Binwalk - moi300.bin

그 후 아래 경로에서 의심스러운 아이디와 비밀번호가 파악이 가능합니다.

/squashfs-root/default/etc/iconfig.cfg

Image iconfig.cfg File

해당 경로에서 펌웨어서 등록된 ID와 Password를 확인할 수 있습니다.

ID attacker
Password @attacker!m0i300#pass

6. 무선 라우터에 등록된 WOL 목록

Wol이 등록된 것에 대해서도 5번에 설명한 경로에서 파악이 가능합니다.

/squashfs-root/default/etc/iconfig.cfg

Image WOL Find

remotepc~ 부분에서 WOL이 등록된것을 확인할 수 있습니다.

WOL Register Name WOL Register MAC
attacker_notebook 24:F5:AA:CA:11:78
attacker_desktop 24:F5:AA:D1:09:F1

감사합니다. 추가적인 질문이나 문의는 댓글에 남겨주시면 감사하겠습니다!