ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Digital Forensic Challenge 2019 MOI300 문제 풀이
    $ 포렌식 $/$ 포렌식 문제 풀이 $ 2020. 1. 17. 20:00

     

    위의 사진에서는 풀이해야하는 항목들만 나와있지만 Desciption을 확인해 보면 제공된 증거는 무선 라우터의 SPI 플래시 메모리의 물리적 덤프 파일이라고 합니다. 

     

    풀이해야하는 내용은 다음과 같습니다.

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

    ▪ 부트로더, 커널 및 파일 시스템.

    2) 부트로더 기본주소를 찾으십시오.

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

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

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

    6) 무선 라우터에 등록된 WoL(Wake on LAN) 목록

     

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

    먼저 간단한 구조를 확인 하기 위해서 binwalk 를 이용하면 쉽게 확인이 가능합니다.

     

    bootloader 는 U-Boot이고 버전은 1.1.3 version 입니다.

    kernel image는 'uImage'가 사용됬다는 것을 알 수 있으며 OS 부터 CPU 등등 여러 데이터가 적혀 있습니다.

    마지막으로 파일 시스템은 Squashfs 파일 시스템을 사용하고 있습니다.

     

    위의 파일들을 정리하면 아래와 같이 나타낼 수 있습니다.

     

    2) 부트로더 기본주소를 찾으십시오.

    부트로더의 기본주소인 Base Address 를 구하는 것이 문제입니다.

    IDA 프로그램을 이용해서 해당 파일을 마운트 할 수 있기 때문에 먼저 어떤 Architecture를 사용하는지 확인해 보겠습니다.

     

    MIPEL Architecture를 사용하는 것을 파악했고, IDA에서 File Load할때 process type을 MIPSEL로 지정하고 Bootloader를 올리면 됩니다.

     

    그리고 나면 아래와 같은 memory address를 설정해주는데 먼저 아무것도 입력하지않은 Base Address : 0x0 으로 확인해 보겠습니다.

     

    초기화면을 확인해 보면 아래와 같습니다.

     

    C 를 입력하면 Function이 출력됩니다.

     

    sub_B64를 확인해 보면 아래와 같습니다.

     

    함수 내에 0xB78을 확인해 보면 li $sp, 0x89001F00 인것을 확인 할 수 있는데, 이는 0X89001F00을 $sp(스택포인터)에 옮긴다 라는 뜻으로 주소값을  넣는 다는 것을 알 수 있는데 아래와 같이 Base Address 값을 다시 설정해서 디버깅을 해보면 아래와 같이 바뀐것을 확인 할 수 있습니다.

     

     

    이제 값이 함수로 표현된 것을 확인 하실 수 있습니다.

     

    Base Address : 0x89001000

     

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

    부팅을 위한 방법으로는 2가지가 있습니다.

    1. Bootloader, Kernel, FileSystem 덤프 이미지를 직접컴파일을 통해서 부팅 하는 방법.

    2. Qemu 에뮬레이터에 같은 버전의 Kernel, Bootloader를 적용한 후 FileSystem Mount하는 방법.

     

    부팅 명령줄 인터페이스에 접근하기 위해서는 Qemu 와 같은 에뮬레이터를 이용해서 주어진 데이터인 'moi300.bin'파일을 부팅 시키는 방법이 있습니다. (2번째 방법)

    에뮬레이터를 이용해서 부팅 시키기 위해서는 여러 옵션 및 환경을 설정해야 하는데 그중 Architecture의 종류를 제시해 줘야 합니다.

    Architecture의 종류는 binwalk 에서 나오는데 -A 옵션을 주고 확인해 볼수 있습니다.

     

    해당 파일은 CPU로 MIPS 를 사용 합니다.

    그리고 해당 파일에서 파일시스템인 Squashfs 파일 시스템을 extract 할 수 있습니다.

    https://github.com/rampageX/firmware-mod-kit <- 해당 주소에 존재하는 extract-firmware.sh 를 이용해서 가능합니다.

     

    필요한 패키지를 먼저 설치해 보겠습니다.

     

    패키지 설치 후에 fmk를 clone해보겠습니다.

     

    그리고 이제 extract-firmware.sh 를 실행해 보겠습니다.

     

    fmk 라는 폴더가 하나 생성 됬습니다.

    fmk 폴더를 확인해 보면 아래와 같이 폴더들을 확인할 수 있습니다.

     

    image_parts , logs , rootfs 라는 폴더들이 존재 합니다.

    1. image_parts : header.img 와 rootfs.img 가 존재하는데 이는 bootloader file과 filesystem file 입니다.

    2. logs : binwalk.log 와 config.log 가 존재하는데 이름 그대로 binwalk result file 과 target_firmware.bin 의 정보가 적혀있습니다.

    3. rootfs : target_firmware.bin 에 존재하는 FileSystem 파일을 마운트 한 데이터가 들어있습니다.

     

    rootfs 폴더에서 에뮬레이터를 동작시키기 위한 옵션및 환경 설정을 확인 할 수 있습니다.

     

    32-bit 부터 MIPS 등등 위와 같이 찾아 보실수 있습니다.

     

    이제 Boot menu에서 'Enter Boot Command Line interface'를 선택하면 진입이 가능합니다.

     

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

    이제 직접 Qemu를 이용해서 MIPSEL 버전의 Kernel을 로드해서 플래시 덤프 파일시스템을 로드하여 분석해 보겠습니다.

     

    binwalk 로 추출이 가능하지만 앞서 fmk를 이용해서 Squashfs 파일을 추출했습니다.

     

    이번엔 MIPSEL 버전의 Kernel 다운로드!

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

     

    vmlinux-3.2.0-4-4kc-malta 와 debian_wheezy_mipsel_standard.qcow2 를 다운로드 받아보겠습니다.

     

    qemu 에뮬레이터 설치 후에 MIPSEL 환경의 Kernel과 initrds 위의 링크에서 다운 받고 qemu를 구동해 보겠습니다.

     

    mipsel 폴더에 있는 start.sh 에 아래와 같은 코드를 입력하겠습니다.

     

    실행된 에뮬레이터에 Squashfs 파일을 복사후 chroot 명령을 이용해서 실행해 줍니다.

     

    위와 같이 command 창이 출력이 되었으니 httpd 웹서버를 실행을 해보겠습니다.

    httpd 폴더에 192.168.0.1이라는 폴더가 있었고, 해당 경로에 m_login.cgi 파일이 있는 것을 알 수 있습니다.

     

    localhost:9000/sess/login_session.cgi 에 접속을 해보면 아래와 같이 ipTIME 공유기 로그인 화면이 출력이 됩니다.

     

    강제로 sess라는 폴더명을 생성 했고, login_session.cgi 파일에서 attacker라는 의심되는 Login ID를 확인 할 수 있었습니다.

    이번에는 localhost:9000/m_login.cgi?logout=1의 경로로 들어가 보면 모바일 환경에서 접근 가능한 페이지가 출력이 됩니다.

     

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

    /default/etc 폴더에서 iconfig.cfg 파일을 확인해 보겠습니다.

     

    login과 password 가 적혀 있습니다.

    login : attacker

    password : @attacker!m0i300#pass

     

    localhost:9000/m_login.cgi?logout=1에서 login과 password를 입력해 보면 로그인이 됩니다.

     

    6) 무선 라우터에 등록된 WoL(Wake on LAN) 목록

    WOL 기능을 확인 할 수 있는 /expertconf/wol/iux.cgi 에 접속을 해보면 아래와 같이 출력을 합니다.

     

    또한 앞서 확인한 /default/etc 경로에 있는 iconfig.cfg를 확인해 보면 remote pc 키워드를 기준으로 MAC 주소와 PC 설명이 기록 되어 있는 것을 알수 있습니다.

     

    1. PC Name : attacker_notebook , Mac Address : 24:F5:AA:CA:11:78

    2. PC Name : attacker_desktop , Mac Address : 24:F5:AA:D1:09:F1

    댓글

Designed by Tistory.