반응형
반응형
반응형

대구정보보안컨퍼런스에서 했던 해킹대회 본선 문제풀이이다.

 

대회를 한지 벌써 1달이 지나가는데.. 풀이를 블로그에 안 올렸었다는 것을 지금 알았다.

 

근데 한 문제 밖에 풀이가 없다 ㅇㅅㅇ

 

게다가 풀이도 간단

 

 

 

 

 

 

 

 

 

팀명: 스틸리언입사예정명단.tar.gz

 

 

 

 

 

 

 

 

 

 

 

안드로이드 apk가 주어진 문제였다.

 

 

푸는 과정은 이러했다. 정석대로 풀면 된다. (오히려 문제 지문 + 힌트로 인해 혼란스러웠었음.)

 

apk파일에서 classes.dex 파일 추출

-> dex2jar을 이용해 jar로 바꾸기

-> jd-gui로 열어서 소스 확인하기

-> 암호화된 파일 찾기

-> 복호화 (AES)

 

 

 

 

 

apk파일을 압축을 풀어보면 classes.dex라는 파일이 있다.

 

해당 파일을 dex2jar을 이용해서 jar로 바꿔준다.

 

바꾼 jar 파일을 jd-gui.exe로 연다.

 

 

 

 

 

 

 

힌트 전부 무시.

 

어떤 작업들을 하는지 확인하기 위해서

 

startService(new Intent(this, RecordManager.class));

 

에 있는 RecordManager.class 로 이동

 

 

 

 

 

filez()함수를 보면 FL46.3gp 가 보이며, 플래그와 연관되어 있는 부분임을 알 수 있다.

 

 

ERROR라는 이름을 가진 파일을 열어서, 바이트를 가져와서, 디코딩을 해서, FL46.3gp에 저장한다.

 

디코딩/복호화에 decodeFile()함수를 사용하였으며, 1번째 인자에 key를 2번째 인자에 바이트 배열이 들어감을 알 수 있고, 암복호화방식은 AES/ECB/PKCS5Padding 를 사용하였음을 확인할 수 있다.

 

따라서 복호화에 사용될 키는 "ABABACADAEAFADAD" 이다.

 

 

 

 

 

복호화에 아래 사이트를 사용했다.

https://www.devglan.com/online-tools/aes-encryption-decryption

 

Online Tool for AES Encryption and Decryption

AES encryption and decryption online tool for free.It is an aes calculator that performs aes encryption and decryption of image, text and .txt file in ECB and CBC mode with 128, 192,256 bit. The output can be base64 or Hex encoded.

www.devglan.com

 

 

 

복호화할 데이터를 base64형태로 받게 했다.

 

 

 

 

 

 

ERROR파일은 apk파일 내에 asset 폴더 안에 있었다.

ERROR파일 내용을 hex값으로 긁어서 아래 사이트에서 base64로 변환했다.

 

https://www.branah.com/ascii-converter

 

ASCII Converter - Hex, decimal, binary, base64, and ASCII converter

Convert ASCII characters to their hex, decimal and binary representations and vice versa. In addition, base64 encode/decode binary data. The converter happens automatically.

www.branah.com

hex란에서 Remove 0x를 체크한뒤에 붙여넣고,  ASCII란에서 Remove spaces로 공백제거

그 다음 base64란에서 값 복사후 복호화 사이트에 붙여넣기.

 

 

 

 

Key란에 ABABACADAEAFADAD 입력.

 

 

복호화.

 

 

base64문자열이 나오게 된다. 이를 다시 위 사이트에서 ascii로 바꿔주면 flag가 나온다.

 

Lifeis4longle55oninhumili7y

반응형
반응형

처음 포렌식과 미슥만 풀 생각으로 시작했다. 근데 대부분 문제가 예선 300점짜리가 나왔고... (솔버0 미슥 300 리벤지!)

점수판이 1000 1000 1000 0 0 0 0 0 0 0 ...이 되버리는 사태가..

거의 대회 마지막까지도 점수판이 1000 0 0 0 0 0 ... 이어서 막판에 힌트가 터져나왔는데, 웹과 포너블만 힌트가 나오고 내가 풀던 포렌식은 힌트가 3개뿐...(그 중 2개는 아는거) 그래서 각 문제에서 솔버가 나온 것이다.

 

 

이번 포렌식 문제의 경우, 포렌식 + 리버싱 + 크립토가 아닌가 싶다.

 

이미지파일 분석해서 바이러스를 찾고, 바이러스 분석해서 암호화된 파일 복호화하기.

이렇게 과정이 2가지인데, 힌트 1번과 2번은 과정1에 대한 것이었고, 힌트 3번은 과정2에 대한 것이었다.

 

과정1의 경우 작년 예선 포렌식100을 풀었었다면 쉽게 풀 수 있다.

 

 

 

 

문제 내용은 대강 이렇다.

스피어 피싱을 당해서 바이러스을 실행시켰고, 그로 인해 파일이 암호화되었다. 바이러스를 찾고 암호화된 파일을 복호화하자!

 

스피어 피싱은 이메일을 통해 이루어진다고 한다. 그래서 이메일 관련 해서 분석을 해보면 된다.

하지만 난 바닥부터 차근차근 해보았다. (사실 처음에 스피어피싱을 제대로 보지 않아서..)

 

 

 

 

일단 \Users\Doctuments에 있는 hwp문서들이 .apworegin 확장자명으로 암호화되어있는 것을 확인한다.

엑세스된 시각은 오전 4:43:04(UTC) = 오후 1:43:04(KST)이다.

 

 

그리고 바이러스 프로그램이 실행되었을테니 프리패치파일을 확인했다.

\Windows\Prefetch

 

폴더 채로 추출해서 내 로컬 프리패치 폴더와 바꿔치기 해서 분석툴로 분석했다.

 

 

비슷한 시간대를 위주로 살펴보면, photoshopsetup.exe이 바이러스파일임을 알 수 있다.

그러나 해당 프로그램의 경로가 나와있지 않는다. 그래서 NTFS log를 분석했다.

 

NTFS Log Tracker을 사용했다. 필요한 파일들의 위치는 아래 블로그를 참고하자.

https://infosecguide.tistory.com/110

 

 

 

파일명으로 검색을 했다.

파일명이 변경되고 실행되고 삭제됨을 알 수 있다. 삭제되었는데 휴지통에서도 찾을 수는 없었다.

파일명이 변경되기 이전을 살펴보았다.

 

 

 

크롬으로 다운로드 되었다.

그래서 크롬 방문기록과 다운로드 기록을 확인하였는데, 해당 파일은 찾을 수 없었다.

여기서 문제를 다시 읽고, 스피어 피싱 = 메일임을 확인했다. 방문기록에 eM Client가 있음을 확인했고, 작년 예선에서 풀어보았기 때문에 해당 프로그램이 이메일 프로그램임을 알고 있었다. 먼저 내 컴퓨터에 eM Client를 설치하고, Appdata\Loaming\ 에 있는 eM Client 파일을 통채로 복사해서 내 컴에 그대로 덮어주고 프로그램을 실행하면 메일 내용을 확인 할 수 있다.

 

 

메일 내용에서 pdf첨부파일을 구할 수 있고, 열어보면 다운로드 링크를 준다.

다운로드 링크를 통해 photoshopsetup.exe을 다운로드 받을 수 있다.

 

 

여기까지 바이러스를 찾는 과정.

다음은 암호화된 파일을 복호화해야한다. 제공된 힌트 3번째 = "파일은 AES로 암호화되었다."

 

 

플래그 형식이 바이러스명_바이러스가 다운로드 된 시각_바이러스를 보낸사람의 이메일 아이디

뭐 이런거면 풀었는데.. 너무 쉽나?

반응형

+ Recent posts