Uiseong Park zairo

Write-up

2017 CCE Quals

2017 CCE 예선 Write-up
Team. RebForPwn(zairo, keybreak ,choiys, twogirls)

Red Team – 1

Overview

Analysis

해당 문제에서 주어진 이미지를 다운받고 실행한다. 부팅시 ESC키를 입력하게 되면 아래와 같이 부팅 설정을 변경할 수 있는 GRUB로 접속하게 된다.

GRUB 접속 화면에서 Advanced options for Ubuntu 메뉴에 접속하면 위과 같이 recovery mode로 부팅할 수 있는 메뉴가 표시된다. 해당 메뉴를 선택하여 recovery mode로 접속한다.

Recovery Menu에서 root 메뉴를 선택하면 별도의 패스워드 인증 없이 root의 계정으로 접속 가능하다.

패스워드 크랙을 위해 nc 명령어를 이용하여 /etc/shadow 파일을 전송 한다.

/etc/shadow 파일 전송 이후 hashcat을 이용하여 hics 계정 패스워드 해쉬를 크랙한다. 비밀번호는 9자리 이상이며 숫자 및 특수문자 포함이 조건이므로 패스워드 앞자리가 hics로 시작되고 가장 끝자리가 특수문자일 확률이 가장 높다. 따라서 hics[숫자 4글자][특수문자 1글자] 포맷으로 hashcat을 이용하여 패스워드를 크랙하였다.

Flag: hics1234!


Red Team – 2

Overview

Analysis

위와 같이 sqlconnect 바이너리를 살펴보면 사용자로부터 Password를 입력 받고 이를 encrypt한 다음 특정 값과 비교하여 다를 경우 wrong password!!를 출력하고, 같을 경우 종료된다.

ltrace 명령어를 통해 sqlconnect 실행 함수를 추적하였다. 해당 루틴은 사용자가 입력한 값을 암호화하여 특정 값과 비교하기 전에 특정 값을 셋팅하는 값임을 알 수 있다.

a부터 차례로 알파벳을 한 글자씩 입력하면서 암호화된 값을 비교하였다. 첫 글자로 h를 입력하였을 때 비교 구문의 첫 글자가 같은 것을 알아내었다. 따라서 flag의 첫 글자는 h 임을 알 수 있다. 해당 루틴을 반복하여 실행하였고 최종적으로 flaghawaiianchocolate 임을 알 수 있다.

hawaiianchocolate를 입력하였을 때, 정상적으로 프로그램이 종료되는 것을 확인할 수 있다.

Flag: hawaiianchocolate


Red Team – 3

Overview

Analysis

해당 문제에서는 groupware_hics_2017.apk를 분석하여 해당 앱 내에서 flag를 찾는 문제이다. 먼저 해당 apk를 추출한 후 dex2jar을 이용하여 apkjar 파일로 변환한다.

이후 jadx-gui를 사용하여 jar 파일을 살펴볼 수 있다. loadNsClass 부분을 살펴보면 악성코드에서 주로 사용하는 dexload하는 패킹기법을 통해 실제 실행되는 dex를 은닉하고 있다는 것을 알 수 있다. 관련내용은 https://programist.tistory.com/category/Analysis/Android 에서
찾을 수 있었고 해당 루틴을 살펴보면 apk 내부의 ds 파일을 AES decrypt 하여 w.zip에 저장한다는 것을 확인할 수 있다. 따라서 에뮬레이터에서 레이스컨디션 공격 기법을 이용하여 apk를 실행한 후 w.zip을 삭제하기 전에 w.zip을 이동시키면 해당 파일을 가져올 수 있다.

따라서 위와 같이 python으로 adb를 이용하여 w.zipa.zip으로 이동시키는 레이스 컨디션 스크립트를 작성하여 실행한 후 apk를 실행하였다.

성공적으로 w.zipa.zip으로 변경되어 추출된 것을 확인할 수 있다. 이후 adb pull 명령어를 이용하여 해당 파일을 가져올 수 있다.

또한, 위와 같이 a.zip 내부에는 classes.dex 파일이 존재하는 것을 확인할 수 있다.

상세한 분석을 위해 위와 같이 해당 dex 파일을 dex2jar을 이용하여 jar로 변환한다.

jadx-gui를 통해 위와 같이 classes.jar 파일의 소스코드를 확인할 수 있다. 소스코드를 살펴보면 FLAG가 포함되어 있는 것을 확인할 수 있다.

Flag: 93165260A701DDE54264


Red Team – 5

Overview

Analysis

해당 문제에서는 groupware_hics_2017.apk를 내부에 존재하는 weblog.db를 분석하여 flag를 찾아야한다. 하지만 apk에 암호가 설정되어 있어 weblog.db를 압축해제 할 수 없다.
http://erteam.nprotect.com/448 링크를 확인하고 악성코드의 zip format header 조작을 이용하여 apk 압축해제를 할 수 없도록 암호화 기능이 동작하도록 설정되어 있는 경우가 있다는 것을 알게 되었다. 즉, zip format header를 조작하여 암호화 기능이 해제되도록 설정하면 해당 파일을 압축 해제할 수 있다.

APKGeneral Purpose Bit Flag를 확인해보면 09 08로 암호화 되어있는 것으로 설정되어 있다. 따라서 해당 부분을 08 08로 수정하면 암호가 해제되어 출력될 것이다.

General Purpose Bit Flag08 08로 수정 하면 위와 같이 암호 표시(*)가 제거된 것을 확인할 수 있다. 다른 파일 또한 모두 General Purpose Bit Flag08 08로 수정하면 해당 apk의 압축을 해제할 수 있다.

Replace All을 통해 모든 파일의 Genaral Purpose Bit Flag를 변환하여 압축해제가 가능하도록 하였다.

이후 SQLite Deleted Record Recovery 프로그램을 실행하여 weblog.db의 삭제된 record를 확인하였다.

삭제된 record 부분에서 FLAG를 발견할 수 있었다.

Flag: 99BAD02247F3EAE83C76AA3FE371B715


Red Team – 6

Overview

Analysis

Wireshark를 이용하여 해당 패킷을 살펴보면 암호화된 ippassword가 패킷 내부에 저장되어 있는 것을 확인할 수 있다.

자바스크립트 파일 등 세부적인 분석을 위해 위와 같이 Wireshark를 이용해 HTTP object file을 모두 export 한다.

IP는 패킷을 살펴보았을 때 내부 아이피인 192.x.x.x 로 추정되므로 위와 같이 bruteforce 스크립트를 작성하여 실행하였다. 아이피는 192.168.31.37임을 알 수 있다.

Password도 마찬가지로 bruteforce script를 작성하여 실행하였다. 첫번째 글자와 두 번째 글자가 r$ 임을 알 수 있다.

bruteforce script를 작성하여 실행하였다. 세번째 글자와 네 번째 글자가 ac 임을 알 수 있다.

bruteforce script를 작성하여 실행하였다. 다섯번째 글자와 여섯번째 글자가 ub 임을 알 수 있다.

bruteforce script를 작성하여 실행하였다. 일곱번째 글자와 여덟번째 글자가 3r 임을 알 수 있다.

bruteforce script를 작성하여 실행하였다. 아홉번째 글자와 열번째 글자가 00 임을 알 수 있다.

bruteforce script를 작성하여 실행하였다. 열한번째 글자가 t 임을 알 수 있다.

Flag: 192.168.31.37,r$acub3r00t

Written by Team. RebForPwn

이 블로그의 글은 개인적인 학습을 목적으로 작성된 내용이므로 사실과 다르거나 잘못 기재된 내용이 있을 수 있습니다. 올바르지 않은 내용이나 수정해야 할 사항이 있다면 park.uiseong@gmail.com으로 연락주시면 감사하겠습니다.