1. [Enhance!]
문제를 한번 보겠습니다.

파일을 다운 받으면 svg파일이 하나 나오는데 hxd에디터로 열어보겠습니다.

xml파일로 되어 있어 메모장으로 다시 열어서 분석을 해봤더니 플래그 값과 비슷한 형태의 모습이 보였습니다.

그래서 차례대로 적었더니 다음과 같이 보입니다.
이어서 붙히면 플래그값이 됩니다.
2. [Lookey here]
문제를 보겠습니다.

주어진 파일을 실행하면 txt파일이 하나 존재합니다.
내용을 보면 어느 한 소설의 일부분이 쓰여져 있는데, 하단으로 내리다 보니 다음과 같은 값을 구할 수 있었습니다.

3. [Packets Primer]
문제를 한번 보겠습니다.

주어진 네트워크 캡쳐 파일을 실행하면 다음과 같이 나옵니다.

그래서 TCP Follow로 열어봤더니 플래그 값을 찾을 수 있었습니다.

4. [Redaction gone wrong]
문제를 한번 보겠습니다.

주어진 파일을 다운 받으면 pdf파일이 하나 주어집니다. 파일을 실행해보겠습니다.

이렇게 검은색으로 스크래치된 부분에 플래그가 있을거라는 추측을 했습니다.
그래서 드래그해서 복사를 하니까 플래그값을 찾을 수 있었습니다.
Flag : picoCTF{C4n_Y0u_S33_m3_fully}
5. [Sleuthkit Intro]

이 문제를 보아 해당 디스크 이미지를 가지고 mmls를 사용해서 Access checker program에 나와있는 nc로 접속을 하라는것 같습니다.
mmls 명령어는 이미지 파일 또는 디스크에 있는 매체 관리 구조를 파싱해서 보여줍니다. 다음과 같이 TSK(The Sleuth kit)으로 보여지는 것이 mmls 명령어를 사용한 것 입니다.
파일을 다운 받으면 .gz파일이 하나 다운로드가 됩니다. 압축을 풀어 나오는 이미지 파일을 리눅스에서 분석하겠습니다.
먼저 mmls를 사용하기 위해서는 이미지 파일이 어떤 형식의 리눅스 시스템인지 알아야 합니다. 그래서 file 명령어로 보겠습니다.

DOS/MBR을 보아 Dos형식으로 된 파일 시스템입니다.
이제 mmls로 TSK형식으로 바꿔봅시다.
mmls -t <type> <파일명>.img

이제 nc로 데이터를 불러옵시다.
nc saturn.picoctf.net 52279

nc를 사용해서 데이터를 불러오게 될 경우, 다음과 같이 해당 디스크 이미지에는 리눅스 파티션의 사이즈가 어떻게 되니? 라는 문구가 보이며 Length in sectors : 에 입력을 하라고 되어 있습니다. 그래서 아까 TSK형식으로 봤던 사진에서 Linux (0x83)인 02번의 Length를 입력하게되면 데이터값을 볼 수 있습니다.

6. [Sleuthkit Apprentice]
문제를 한번 보겠습니다.

주어진 이미지 파일을 다운 받아보겠습니다. gz파일이 하나 다운받아졌고, 압축을 풀면 img파일이 나옵니다.

우리가 봐야 할 부분은 파티션3인데, 그 이유는 1은 시스템 부팅파일, 2는 비할당 영역, 3에서는 사용자 파일들을 볼 수 있었습니다. 여기서 root안에 root가 있는것이 의심스러워 폴더에 접속을 하니까 flag값을 찾을 수 있었습니다.

7. [Operation Oni]
문제를 한번 보겠습니다.

우측에 Launch Instance를 클릭해보니 챌린지에 필요한 이미지 파일을 받을 수 있습니다.

이미지 파일을 다운받게 되면 gz파일을 얻을 수 있었습니다. 파일을 바로 압축을 풀면 다음과 같이 img파일이 하나 생성이 됩니다.

저 이미지 파일로 이제 분석을 진행해야 되는데, 바로 FTK Imager로 열어보겠습니다.

파티션이 2개 존재하며, 둘다 리눅스의 ext4파일 시스템 포맷을 가지고 있습니다.
1번 파티션은 그냥 부팅파티션이며, 파티션2로 분석을 진행 해보겠습니다.
먼저 사용자 계정이 뭐가있는지 shadow, passwd파일을 분석 해봤으나 의심스러운것이 없었습니다. 그래서 파일을 찾아보니 root안에 root파일이 하나 존재했습니다.
열어보니 .ssh파일이 있음으로 보아 ssh-keygen으로 공개키(Public Key)와 개인(비밀)키(Private Key)를 생성을 하였음을 추측할 수 있었고, 아니나 다를까 history파일이 하나 존재했고, 위에 .ssh폴더가 있었습니다.

history파일과 id_ed25519, id_ed25519.pub파일을 줌으로써 파악할 수 있는것이 있습니다.
ssh(Secure SHell)을 접속하는데, passpharse를 주지 않았으니, 공개키와 비밀키를 가지고 접속을 해라! 이 뜻으로 이해를 하고, 바로 접속을 해보도록 하겠습니다.
root폴더를 추출하고 리눅스로 파일을 가져 가겠습니다.
경로를 따라 root폴더에 들어가면 아무것도 보이지 않음을 알 수 있습니다.

하지만 다음과 같은 명령어를 쓰면 파일이 어떤것이 있는지 알 수 있습니다.
ls -al

하지만 이 부분에서 보면 볼 수 있는것이 전혀 없기 때문에 .ssh를 들어가서 존재하는 키값을 실행 시켜 보겠습니다.

id_ed25519는 private key이며, id_ed25519.pub는 Public key임을 알 수 있습니다.
아까 위 history파일을 보면 ssh-keygen -t ed22519 명령은 공개키와 다른 개인키를 생성해주는 명령입니다.
그래서 이 파일(키값)들로 ssh를 접속해보겠습니다.
ssh [유저]@[접속할 주소] -p [포트] -i [key_file]
다음과 같은 형식으로 접속을 하시면 됩니다. key_file에는 개인키가 들어있는 파일을 넣으셔야 합니당.
예시) ssh user@naver.com -p 9999 -i key.key
입력을 제대로 하였으면 다음과 같이 접속이 되신것을 알 수있습니다. 그래서 ls를 하면 플래그를 볼 수 있었습니다.


8. [St3g0]
문제를 한번 보겠습니다.

주어진 이미지 파일을 다운 받으면 이런 파일이 하나 나옵니다.

hxd에디터로 열어 보겠습니다.
png헤더 시그니처도 정상적이고, 푸터 시그니처도 정상적이고, png구조적으로는 아무런 문제가 없어보입니다.
하지만 문제 이름으로 보아 스테가노그래피로 추정이 되어서 steghide로 풀어보려 했으나 아무런 password를 찾을 수 없었고, 한참을 보다가 LSB 이미지 스테가노로 추측이 되었습니다.
LSB란, Least Significant Bit로 각 필셀의 최하위 비트를 숨길 메세지의 비트로 대체하여 이미지 내부에 메시지를 숨기는 이미지 스테가노그래피 기술입니다.
디지털 이미지 픽셀의 모드에는 RGB와 RGBA가 존재합니다. RGB는 (3x8비트 픽셀, True color), RGBA(4x8비트 픽셀, True-color with transparency mask) 즉, 픽셀의 값 범위는 255(8비트)입니다.
근데 내부의 메시지가 뭘까 고민하던 중, 문제에 St3g0이라는 문구를 검색해보니 $t3g0이라는 메세지를 숨긴 스테가노 그래피 내용이 담겨 있던것을 보았고, 메세지를 $t3g0으로 줬을거라는 추측을 했습니다.
메세지를 가지고 복화화를 하니 플래그값을 찾을 수 있었습니다.

9. [Operation Orchid]
문제를 보겠습니다.

주어진 디스크로 문제를 풀면 되는데, 파일을 다운 받아서 ftk로 열어보겠습니다.
이번 문제도 동일하게 파티션에 root폴더 안에 root가 있었습니다. 폴더 안에는 enc파일과 history파일이 존재했는데, history 파일의 로그를 살펴보겠습니다.

읽어보면, openssl을 가지고 aes256 해쉬함수로 암호화를 한다고 되어 있고, password는 unbreakablepassword1234567입니다. 그래서 enc파일을 가지고 복호화를 하라는 의미이니까 enc파일을 추출해서 바로 복호화를 해보겠습니다.
openssl aes-256-cbc -d -in flag.txt.enc -out flag.txt
다음과 같은 명령어를 입력하시면 됩니다.
openssl을 가지고 aes256으로 암호화된 파일을 -d 옵션으로 디코딩하며, 추출할 파일은 flag.txt.enc이며 추출되어 나오는 파일은 flag.txt로 가져오겠다 입니다. 이렇게 입력을 하시면 플래그 값을 구할 수 있었습니다.

이 외에도 4문제 정도 더 있었는데, 아직 지식이 부족해 400점짜리를 올클하진 못했습니다. 이 CTF를 통해서 제 부족한점을 알았고, 더 열심히 공부 해보겠습니다.
추가적으로 문제를 더 푼 것을 가져왔습니다.

pcap 파일을 하나 주는데 바로 분석을 해보겠습니다.
열어서 tcp follow를 가지고 열어보면 메세지 내용을 확인할 수 있습니다.

언급된 내용을 보면 openssl des3 -d -salt -in file.des3 -out file.txt -k supersecretpassword123을 가지고 해독을 하라는 것이니까 일단 openssl로 암호화가 되어 있으면 salt로 시작되는 암호문이 있습니다.

이 패킷을 bin으로 추출해봅시다.
57번 패킷을 "FILE -> Export Selected Packet Bytes" 를 하시면 됩니다.


다음 문제를 보겠습니다.

pin_checker를 통해서 핀을 알아낸 다음 nc로 접속할 때 핀을 가지고 입력을 하면 되는 것 같다.
pin_checker를 실행시켜 보자.

4자리를 입력하면 잘못된 길이라고 출력이 되고, 8자리를 입력하면 체크는 하는데, 허가 거부가 뜬다.
결국엔 8자리를 입력하라는 것으로 추정된다. 그래서 파이썬으로 자동적으로 완성 시켜주는 코드를 돌려보면 다음과 같다.

payload 4000000만 0.24초가 걸리고 나머지는 0.12초가 걸리는 것을 확인할 수 있다.
결국엔 첫번째 자릿수부터 8번째 자릿수까지 코드를 돌려보면 48390513이 된다.

'CTF > 해외CTF' 카테고리의 다른 글
2022 July Belka CTF #2 Write-Up (0) | 2022.08.06 |
---|---|
2022 July Belka CTF #1 Write-Up (0) | 2022.08.06 |
BCACTF 3.0 Write up (0) | 2022.06.09 |
[Forensic] Space Heroes CTF 2022 write-up (0) | 2022.04.06 |
[Forensic] Frank's Little Beauty (0) | 2022.03.08 |