kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

DFIR/Challenge

디지털포렌식 with CTF - [NETWORK] chapter01_4

까마기 2020. 1. 19. 11:28
반응형
당신의 친구 Joey는 당신의 도움이 필요한 데이터가 있는 USB 키를 남겼다. 데이터는 서비스 제공 업체로부터 ‘보안 파일 형태’로 방화벽 로그를 받아와 데이터가 보호되어 있거나 난독화 되어있을 것이라고 생각된다.
 
 
# gunzip garbagefile.pcapng.gz
 
pcap파일 확인 및 분석
 
  • UDP 통신이 이루어진 것을 확인
 
png 파일에서 tftp 패킷데이터를 추출
# tshark -r garbagefile.pcapng -Y "udp" -T fields -e data | tr -d '\n' | xxd -r -p > data
 
사이트에서 tftp.py를 내려받는다. (tftp 패킷 데이터를 조합하는 python 코드)
-> tftp-out 폴더를 생성후 아래 명령을 실행
 
 
binwalk 명령어를 통해 account-data.bin 파일을 확인한 결과 zilb과 bzip2파일 등이 포함되어 있는 것을 알 수 있다.
/home/tftp-out/account-data.bin
 
00 00 4E DF - 파일 크기
00 00 2E 77 - 파일의 위치 추측
 
account-data.bin에서 실제 데이터가 위치한 주소를 확인
 
xxd 명령어를 이용하여 zlib 파일 추출
-s : 위치
-l : 길이 (10진수)
# xxd -s11895 -l20191 -p account-data.bin | xxd -r -p > out.zlib
 
추출된 zlib 파일을 압축 해제하여 text파일이 base64로 인코딩 되어 있는 것을 확인
  • zlib-flate 명령어를 우분투에서 사용하기 위해 패키지 설치를 진행
  • # apt-get install qpdf -y
  • # zlib-flate -uncompress <out.zlib> unzip.bin
 
 
 
 
decode 파일을 hex editor로 확인해보면, png 파일로 의심할 수 있는 시그니처를 확인할 수 있음
 
 
  • PNG파일의 올바른 시그니처
헤더 : 89 50 4E 47
푸터 : 49 45 4E 44 AE 42 60 82
 
xor-strings.py 파이썬 코드와 난독화된 값과 올바른 값을 통해 xor 하여 키 값을 찾아보자.
# python xor-string.py 89504E47 89506030
 
 
xor연산의 키 값이 0000002e77 인것을 확인하였으며, xor 키 값을 가지고 파일을 복호화 시키면, 난독화 되기 전의 파일로 복원할 수 있게된다. 
 복호화 된 파일을 얻기 위해 복호화 코드를 파이썬으로 작성하여 파일을 복호화 해보자.
 
xor.py
 
 
복원된 PNG 파일을 host로 복사
 
png 파일 확인
 
반응형