반응형
반응형

show me the pcap

forensic

 

코로나사태로 인해 루돌프들 끼리 산타우체국에서 비밀리로 비대면 회의를 진행했다!
해당 회의 내용을 중간자 공격으로 PCAP형태로 가져왔으니 분석해보자!

 

 

pcap 파일 한 개가 주어진다.

 

Wireshark로 해당 파일을 열어보면 SSH, TLS 패킷들이 보이는데, 아래로 내려보면 756번부터 많은 RTP패킷들이 캡쳐된 것을 확인할 수 있다.

RTP는 실시간 전송 프로토콜로, 오디오와 비디오 정보의 실시간 전송을 하기위해 사용된다. 문제 지문에서 비대면 회의를 진행하였다고 했으므로, 해당 회의 내용이 RTP를 통해 진행된 것으로 볼 수 있다.

 

 

 

 

 

 

 

 

RTP 패킷의 담긴 내용을 확인해야 하는데, 해당 내용이 오디오형식이고 Wireshark에서 지원하는 코덱인 경우, Wireshark로 바로 확인할 수 있는 방법이 있다.

 

아무 RTP 패킷을 클릭하고 상단 메뉴에서 Telephony > RTP > Stream Analysis 를 클릭하고

Play Streams 버튼을 클릭하고 소스 선택 후 재생버튼을 누르면 된다.

 

그러나 여기에서는 비어있거나 지원하지 않는 코덱이라고 나온다.

 

따라서 해당 내용은 비디오인 것으로 추측해볼 수 있고, 다른 방법을 찾아보아야 했다.

 

 

 

 

 

 

 

 

 

여러가지를 검색하던 중에 블로그 글 하나를 찾을 수 있었다.

blog.itekako.com/technical/2017/03/07/rtp-stream-replay/

 

RTP stream replay

Company news, knowledge sharing, technology, best practices and more.

blog.itekako.com

캡쳐한 rtp 패킷을 목적지만 수정하여 다시 실시간으로 전송하여 내용을 확인하는 방식이다.

 

 

 

 

 

필요한 환경은 패킷을 보낼 리눅스 환경과 내용을 확인할 리눅스/윈도우 환경 2개이다.

 

 

먼저, 주어진 pcap파일에서 (이하 origin.pcap) rtp패킷만 추출한 pcap파일을 만들어야 한다.

1. Wireshark로 origin.pcap를 연다.

2. 상단 메뉴에서 Telephony > RTP > RTP Streams

3. 스트림 선택

4. Prepare Filter 클릭 후 창 닫기

5. 상단 메뉴에서 File > Export Specified Packets… > Export as > pcap

6. rtpstream.pcap로 저장

7. rtpstream.pcap를 패킷을 보낼 리눅스 환경으로 이동

 

 

 

 

 

rtpstream.pcap를 replay하기 위해서는 패킷의 목적지 ip와 mac 주소를 수정해 주어야 한다.

해당 과정은 아래 modify-pcap.sh로 수행한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env bash
# http://blog.itekako.com/technical/2017/03/07/rtp-stream-replay/
set -o errexit
set -o nounset
set -o errtrace
set -o pipefail
 
REPLAY_DST_IP="${1}"
IN_PCAP_FILE="${2}"
OUT_PCAP_FILE="${3:-rtp-for-replay.pcap}"
OUT_SDP_FILE="${4:-sdp}"
 
REPLAY_SRC_IP=$(ip route get "${REPLAY_DST_IP}" | sed --"s/.* src (\S*).*/\1/p")
REPLAY_SRC_DEV=$(ip route get "${REPLAY_DST_IP}" | sed --"s/.* dev (\S*).*/\1/p")
REPLAY_SRC_MAC=$(ip link show "${REPLAY_SRC_DEV}" | sed --"s/.*\/ether (\S*).*/\1/p")
if [ -"${REPLAY_SRC_MAC}" ]
then
  echo "Error reading source MAC address. Make sure that the destination IP does not belong to this machine".
fi
ping --1 -- "${REPLAY_DST_IP}" > /dev/null
ARP_PATH=$(which arp)
 
if [ -"${ARP_PATH}" ]
then
  ARP_CMD="${ARP_PATH}"
else
  ARP_CMD="sudo ${ARP_PATH}"
fi
REPLAY_DST_MAC=$(${ARP_CMD} -an -- "${REPLAY_DST_IP}" | sed --"s/.* at (\S*).*/\1/p")
 
read ORIG_SRC_IP ORIG_SRC_MAC ORIG_DST_IP ORIG_DST_MAC RTP_DST_PORT <<<$(\
    tshark -T fields -e ip.src -e eth.src -e ip.dst -e eth.dst -e udp.dstport -1 -"${IN_PCAP_FILE}")
 
tcprewrite \
    --fixcsum \
    --srcipmap=${ORIG_SRC_IP}/32:${REPLAY_SRC_IP}/32 \
    --enet-smac=${REPLAY_SRC_MAC} \
    --dstipmap=${ORIG_DST_IP}/32:${REPLAY_DST_IP}/32 \
    --enet-dmac=${REPLAY_DST_MAC} \
    --infile="${IN_PCAP_FILE}" \
    --outfile="${OUT_PCAP_FILE}"
 
echo "c=IN IP4 ${REPLAY_SRC_IP}
m=video ${RTP_DST_PORT} RTP/AVP 96
a=rtpmap:96 H264/90000" > "${OUT_SDP_FILE}"
 
echo "Copy file \"$(readlink -e ${OUT_SDP_FILE})\" to player machine, open it in player, then execute:"
echo "  sudo tcpreplay --intf1=${REPLAY_SRC_DEV} '${OUT_PCAP_FILE}'"
cs

 

위 스크립트 실행에 필요한 패키지를 설치해야 한다.

$ sudo apt-get install tcpreplay tshark net-tools

 

그리고 스크립트를 실행해 준다.

$ bash modify-pcap.sh <player machine ip> <input pcap file> [<output pcap file>] [<output sdp file>]
$ bash modify-pcap.sh 192.168.0.2 rtpstream.pcap

 

 

그러면 패킷을 받기 위한 정보가 담긴 sdp파일이 생성되고, 패킷을 replay하기 위한 명령어가 출력된다.

 

sdp파일은 패킷을 받을 환경으로 이동한다.

 

 

 

 

 

 

 

 

패킷을 받아 영상으로 보기 위해서는 아래 명령어를 사용하면 된다.

$ ffplay sdp

나는 윈도우 환경에서 진행하였기 때문에 ffplay.exe를 사용하였다. ffplay.exe는 ffmpeg.org/download.html에서 다운받을 수 있다.

 

ffplay sdp로 대기 중인 상태에서, 리눅스 환경에서

 

sudo tcpreplay --intf1=enp0s3 'rtp-for-replay.pcap'

(modify-pcap.sh을 실행하고 출력된 명령어)을 실행하면, 패킷이 전송되어 받을 수 있다.

 

 

 

 

 

 

 

 

 

ffplay.exe sdp를 실행하였을 때 나는 

 

 

이러한 오류가 발생하였다. 해당 오류는 -protocol_whitelist file,udp,rtp,crypto,data 옵션을 추가해주어 해결할 수 있었다.

 

 

 

 

 

 

첫 번째 시도에서 오류가 발생하였다.

blog.itekako.com/technical/2017/03/07/rtp-stream-replay/에서는 문제가 있을 때, sdp 파일에 추가적인 정보를 추가해주라고 되어 있다. 

 

 

 

sdp-fmtp-data.sh

1
2
3
4
5
6
set -o errexit
set -o nounset
IN_FILE="${1}"
echo "a=fmtp:96 $(tshark -E aggregator=';' -Y sdp.fmtp.parameter -T fields -e sdp.fmtp.parameter -r "${IN_FILE}")"
cs
$ bash sdp-fmtp-data.sh origin.pcap

 

 

출력 결과

a=fmtp:96 profile-level-id=1;config=000001B001000001B58913000001000000012000C48D8DC43D3C04871443000001B24C61766335372E3130372E313030

 

해당 내용을 sdp 다음 행에 추가해주었다.

 

그러나 여전히 오류가 발생하였다.

 

sdp

c=IN IP4 10.0.2.15
m=video 58898 RTP/AVP 96
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=1;config=000001B001000001B58913000001000000012000C48D8DC43D3C04871443000001B24C61766335372E3130372E313030

 

sdp에 내용이 부족하거나 잘 못 설정된 것 같아, origin.pcap 파일을 다시 살펴보았다.

 

rtp 패킷들이 전송되기 전 부분인 749번 패킷에서 메타데이터를 확인할 수 있었다.

해당 내용에 따라 코덱 정보를 H264에서 MP4V-ES로 수정하고 시도하였더니 플래그를 얻을 수 있었다.

 

 

반응형

'CTF Write Up' 카테고리의 다른 글

The Cyber Grabs CTF 0x02 write up  (0) 2021.01.17
0xL4ugh CTF write up  (0) 2021.01.16
CyberTalents Digital Forensics CTF write up  (0) 2020.11.29
제 2회 TeamH4C CTF 2020 Write-up  (0) 2020.10.13
CCE2020 Quals Write-up  (0) 2020.09.26
반응형

 

Toolkit basic 25 General Information

Is a computer forensics distribution that installs all necessary tools on Ubuntu to perform a detailed digital forensic and incident response examination.

 

 

google search.

 

 

Little Story Boy basic 25 Digital Forensics

stylesuxx.github.io/steganography/

extract LSB data

 

you can use zsteg.

 

 

Light easy 50 Digital Forensics

Just get the flag

file : light

 

tool name : HxD

This file has png header signature. Therefore It is PNG file, and it has also png footer signature.

 

 

tool name : HxD

After PNG footer signature, there are some binary strings.

I could guess that binary is ascii code, because it starts 01~~.

 

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

easy.

 

 

 

Meta Header easy 50 Digital Forensics

Can You help us to extract the metal from Exchangeable header

 

file : metal.jpg

 

image description is strange.

 

hmm

 

next!

 

 

 

volatility easy 50 Digital Forensics

welcome to volatility 101, you have to know when you start analyzing a memory dump you have to look to processes and files on desktop.

profile = WinXPSP2x86

 

 

 

프로세스 특이사항은 이정도.

 

 

/Desktop/flag/

 

 

나오는게 없다. R-studio로 분석해봐야 할 거 같다.

 

 

another memdumpfile in Desktop dir.

 

There are 3 files which has 0 byte size in flag dir.

The file name seems like 'key'.

 

compare with look_to_clipboard.txt and filename.

k.08462 -> 20

e.22743 -> 8

y.08981 -> 40

 

 

이 다음은 mem을 추출해봐야 할거 같다.

filescan
dumpfiles

 

?

아 easy 맞냐고

 

Dega hard 200 Digital Forensics

Dega Company has been attacked and some data have been exfiltrated, Help them to know what exactly has been leaked.

 

pcap

base64로 인코딩된 문자열이 많던데

 

last human hard 200 Digital Forensics

This Stream is so weird, looking something hidden here!!

 

sonic visualizer - failed

audio lsb - failed

 

-롸업-

0xmohammed.github.io/2020/11/29/Last-Human-Writeup.html

 

'Last human' writeup CyberTalents DF CTF - 0xMohammed

Description This Stream is so weird, looking something hidden here!! Diffculity: Hard Walkthrough Challange is a wave file with high pitched noise, After examining file with usual tools (binwalk, exiftool, strings,..etc) we found nothing so we should dig d

0xmohammed.github.io

 

 

Xmen medium 100 Digital Forensics

cyber Criminal is hiding information in the below file .can you capture the flag ?. Note: Flag format flag{XXXXXXX}

 

더보기

00000000: 504b 0304 0a00 0900 0000 e52b 944d d66f PK.........+.M.o

00000010: ef86 2300 0000 1700 0000 0a00 1c00 7365 ..#...........se

00000020: 6372 6574 2e74 7874 5554 0900 036d 6f1b cret.txtUT...mo.

00000030: 5c6d 6f1b 5c75 780b 0001 0400 0000 0004 \mo.\ux.........

00000040: 0000 0000 89ed 4cbb 8ba3 91b4 8e10 d9e5 ......L.........

00000050: ab2e 196e 20f4 37df fbe5 096c ed4e 8d0a ...n .7....l.N..

00000060: e056 e98c 26b1 a450 4b07 08d6 6fef 8623 .V..&..PK...o..#

00000070: 0000 0017 0000 0050 4b01 021e 030a 0009 .......PK.......

00000080: 0000 00e5 2b94 4dd6 6fef 8623 0000 0017 ....+.M.o..#....

00000090: 0000 000a 0018 0000 0000 0001 0000 00a4 ................

000000a0: 8100 0000 0073 6563 7265 742e 7478 7455 .....secret.txtU

000000b0: 5405 0003 6d6f 1b5c 7578 0b00 0104 0000 T...mo.\ux......

000000c0: 0000 0400 0000 0050 4b05 0600 0000 0001 .......PK.......

000000d0: 0001 0050 0000 0077 0000 0000 00 ...P...w.....

xxd -r garbage garbage.zip

 

password brute-force 1to5 char - failed

lock bit change - failed

 

 

----풀이보고 내용추가----

dictionary attack으로 패스워드는 hacker_crackdown가 됨.;;

 

Habibamod  medium 100 Digital Forensics

Habibamod is sending a secret signal, tune your receiver.

 

wireshark

It's simple.

 

data

Value of encoder is encoded in base64.

 

0 to . , 1 to !

To decode it: . to 0, ! to 1.

 

Bin to ascii

 

 

good.

Location medium 100 Digital Forensics

vcan0  06C   [8]  88 E6 0A 3D EC DC 50 2A

 

Bomp medium 100 Digital Forensics

Why dosen't my BOMP Explode!!
Format: Flag{}

 

b0mp 파일이 주어진다.

 

first 2 bytes are empty, but next 4 bytes seems like file size.

0xcdbe = 52670 =

so this is bmp file. b0mp에서 0을 빼면 bmp이기도 하다.

 

put 0x42 0x4D (bmp magic number) into first 2 bytes.

 

hmm

another bits are also empty.

 

ㅎㅎ 모르겠다.

 

 

----풀이보고 내용추가----

b0mp의 파일명을 b0mp.data로 바꾸고 GIMP에 불러온 뒤에, 오프셋, 너비, 높이를 아래와 같이 조절하면 플래그를 확인할 수 있다.

 

P@dly medium 100 Digital Forensics

Someone outside the department has downloaded some files from our server but fortunately we encrypt all the files. Can you get this files?

note.epd and readme.txt were transferred.

pub is directory.

 

readme.txt

note.epd is encrypted file.

 

How to decrypt note.epd.

 

xor 0~0xff - failed

반응형

'CTF Write Up' 카테고리의 다른 글

0xL4ugh CTF write up  (0) 2021.01.16
2020 Christmas CTF [show me the pcap] Write-up  (2) 2020.12.27
제 2회 TeamH4C CTF 2020 Write-up  (0) 2020.10.13
CCE2020 Quals Write-up  (0) 2020.09.26
FIESTA 2020 Write up  (2) 2020.09.07
반응형

프로필 이전 2023.02 ~

https://alder-goat-e8c.notion.site/Profile-41e3482bfdcb44c18d71624739b49e09

 

Profile

About Me

alder-goat-e8c.notion.site

 

-----

N0Named https://ctftime.org/team/104920 공동팀장 (2019.11~)

아주대학교 사이버보안학과 소학회 Whois https://eminent-acapella-e21.notion.site/Whois-081dff39f09c4715b0ed633c96432aaf (2020.09~)

 

CODEGATE2017 본선 (2017)

YISF 2018 본선 (2018.08.19)

한국코드페어 베타 2018 디지털스쿨백팩 코드챌린지 본선 (2018.11.24)

19th HackingCamp 참가 (2019.02)

순천향대학교 YISF 2019 8등 마이크로소프트코리아 대표상(2019.08.18)

20th HackingCamp 참가 (2019.08)

Timisoara CTF 2019 본선 (팀 : WTB) (폰마니아)

영남이공대학교 The Hacking Championship Junior 5등 장려상 (팀 : 스틸리언입사예정자명단.tar.gz) (2019.10.30)

금융보안원 FIESTA2020 4등 장려상 (팀 : N0Named) (2020.09.04~09.21)

TrollCAT CTF 2021 10등 (팀 : N0Named) (2021.02.06~02.07)

금융보안원 FIESTA2021 4등 (팀 : N0Named) (2021.09.03~09.13)

금융보안원 FIESTA2022 5등 특별상 (팀 : 이세계나라 AOMG 치킨아이돌) (2022.09.16~2022.09.26)

한국정보보호학회 디지털포렌식 챌린지 2022 대학생부 우수상(한국정보보호학회장상) (대학부 1위, 전체 공동 4위) (팀: ISEGYE_IDOL) (아주대학교 사이버보안학과 Whois 5인) (2022.05.01~2022.09.30)

2022년 제8회 디지털범인을찾아라경진대회 장려상(한국포렌식학회장 표창) (2022.10.31~2022.11.25)

 

http://ctf.no-named.kr:9300 문제출제 (팀 : N0Named) (2020)

서울여대 SWING CTF 문제출제/20시간 운영 (팀 : N0Named) (2020.08)

Whois X SWING CTF 15시간 운영 (Whois 2인) (2021.05)

이화여대 ECOPS CTF 문제출제/12시간 운영 (팀 : N0Named) (2021.06)

서울여대 SWING CTF 문제출제/24시간 운영 (팀 : N0Named) (2021.08)

INCOGNITO CTF 30시간 운영 (인코그니토 운영팀) (2021.08)

Whois OSINT CTF 1시간 운영 (Whois 2인) (2021.09)

아주대 사이버보안학과 AS CTF 2021 문제출제/12시간 운영 (Whois) (2021.11)

Hspace Open CTF by N0Named 문제 출제 (팀 : N0Named) (2021.12)

 

https://github.com/M4ndU

급식 정보를 제공하는 디스코드/카카오톡 챗봇 개발 및 운영 (python3) (2017~2018.07.21)

볼라티리티 카카오톡 플러그인 개발 프로젝트 (2021.12~2022.02)

BoB 11기 DJI 드론 디지털 증거 분석 및 분석 절차 수립 프로젝트 (2022.09 ~ 2022.12)

반응형

+ Recent posts