SECPlayground HALF YEAR CTF Event 2024

Ar3musAr3mus
6 min read

แนะนำกด Toggle theme เป็นสีดำนะครับ

สวัสดีคร้าบทุกคน สำหรับปีนี้ผมก็ได้แอบๆ แวะไปลองโจทย์ CTF ในชื่องาน HALF YEAR CTF Event 2024 จัดโดย SECPlayground ที่เป็น Platform การเรียนรู้ และ Hand-on จาก Lab จริง เกี่ยวกับ Cybersecurity ที่ดีระดับต้นๆ ของประเทศไทยเลยก็ว่าได้ครับ

flag format : forensic{}, crypto{}, web{}


Overview

สำหรับ Map ในงานนี้ก็สร้างสรรค์และเป็นเอกลักษณ์ไม่เหมือนใครเป็นปกติครับ ฟีเจอร์เด่นๆ คือ ใครทำโจทย์ได้ครบก่อน ก็จะมีผู้เล่นแสดงโชว์บน Map ครับ เปรียบเสมือนการยึดพื้นที่นั่นเอง

ที่นี้มาเข้าเนื้อหากันครับ สำหรับผมอาจจะทำโจทย์ไปไม่เยอะครับส่วนใหญ่น่าจะเป็นข้อที่ทุกคนทำได้ครับ แต่ยังไงก็ลองมาดูแนวคิดและเทคนิคในการทำโจทย์ของผมดูครับ สำหรับใครที่ทำโจทย์ได้คะแนนลำดับสูงๆ ผมก็อยากให้มาแชร์ความรู้และเทคนิคให้กันบ้างก็ดีนะครับ จะได้เป็นวิทยาทานให้กับผู้เล่นใหม่ๆ ครับ

Pin on so funny!

Network Security

ในหมวดหมู่ Network Security จะมีทั้งหมด 3 ข้อ โดยเป็นโจทย์ระดับง่ายทั้งหมดครับ

Guardian Network#1

จากโจทย์ง่ายๆ เลยให้ตามหา username กับ password

Link Challenge File

pass : secplayground

จากโจทย์เราจะได้ไฟล์ .pcapng มา สำหรับผมขั้นแรกไปเช็คก่อนว่าหลักฐานที่ได้มามี Protocol ไหนที่มีข้อมูลมากที่สุด

จากที่เห็นก็จะเป็น protocol HTTP ครับ แล้วมาดูรายละเอียดใน OSI Layer กัน

เจอข้อมูลที่หน้าสนใจแล้วก็ใช้ เครื่องมือ tshark ดึงออกมาให้หมดได้เลย

tshark -r network_capture.pcapng -Y 'http' -T fields -e 'urlencoded-form.value' | grep login

เราได้ Credentials มาทั้งหมดแล้ว แล้วถามว่าเราจะรู้ได้ไงว่า Attacker ใช้ User คนไหนที่สามารถ Access เข้าเครื่องได้

ทำการ Filter urlencoded-form จะได้ frame ของ index.php ที่กำลังจะ Request ใส่ Credentials เข้าไป

ถ้าลองเช็ค tcp.stream จะเป็นว่า User pinkky จะ Response ว่า "Access Denied! Login Failed."

แต่ถ้าเป็น User admin

สรุป Flag ที่ได้คือ

forensic{admin:P@ssw0rd}

Guardian Network#2

ข้อถัดไปก็จะถามต่อว่า Attacker ใช้ CVE อะไรในการโจมตี จากที่เราวิเคราะห์มาแล้วว่า Attacker ได้ทำการเข้าสู่ระบบด้วย User admin แล้ว Dashboard ที่เห็นคือ cactiConsolePage ดังนั้น ผมเลยค้นหาว่า http.request.uri ไป GET ไฟล์อะไรไปบ้าง

tshark -r network_capture.pcapng -Y 'http' -T fields -e 'http.request.uri' | grep cacti

ซึ่งที่สุะดุดตาก็คือ importing packages ซึ่งจากที่สืบค้นข้อมูลมา ก็เลยไปเจอช่องโหว่

PoC

  • Login into Cacti with an user having the “Import Templates” permission

  • Go to Import/Export -> Import Packages

  • Upload and import the test.xml.gz file previously generated

  • Notice how the PHP file will be written into the resource directory, accessible at http://[cacti]/resource/test.php:

ผมก็เลยลองหา test.xml.gz ดูว่ามีมั้ย

สรุป Flag ที่ได้ก็คือ

forensic{CVE-2024-25641}

Guardian Network#3

ข้อนี้มาแปลกให้หา Flag เลย 😹 งั้นจัดไป

strings network_capture.pcapng | grep flag

forensic{FaDfa9O5ntsLJNx}

Cryptography

ต่อมาเป็นหมวดหมู่ Cryptography ครับ มีแค่ข้อเดียวเป็นโจทย์ระดับกลาง 😾

mystery

หืมมม.... หาข้อความที่ Mr. Red ทิ้งไว้ 🤔

Link Challenge File

โจทย์ให้ไฟล์ pcapng มา ใหญ่มากกกก

ขั้นแรกผมก็เช็ค Protocol เหมือนเดิม สะดุดตาสุดๆ คือ ไฟล์รูปภาพ JPEG มี Packets เยอะจัดๆ

Export object ทั้งหมดออกมาเลย

มีรูปทั้งหมด 1001 รูป OMG!?!

ดูเหมือนว่าจะต้องเปลี่ยนไฟล์ format เป็น jpg ด้วยเพราะไฟล์ที่ Export ออกมาไม่ได้ใส่นามสกุลมา

จัดไป Bash Script!!!

สวยงาม 😻 ไปกันต่อๆ จากที่เราทราบแล้วว่าเราได้ไฟล์รูปภาพมา เราก็ทำการ Stegano (Steganography) รูปภาพกันต่อเลย

exiftool work\(100\).jpg

หลังจากที่ผมลอง เช็คข้อมูล META Data รูปภาพก็เจอกับ Comment ที่สะดุดตาเหมือนการเข้ารหัส Base64

นั่นแสดงว่าทั้งหมด 1001 รูป จะต้องมี Comment Base64 ที่เป็น Flag ซ้อนอยู่ในสักรูปแน่นอน

จัดไป Bashscript!!

ใช้เวลาไป 26 sec ไม่นานเท่าไหร่ อิอิ 😹

cat result_stegano_METADATA.txt | grep flag

ดูเหมือนว่า Flag ไม่ได้อยู่ในนี้แค่รูปเดียว มีทั้งหมด 2 รูป

สองรูปนี้นี่เอง อิอิ 😼

forensic{jeuuq_5372}

Web Application Security

หมวดหมู่สุดท้ายใน Blog ของผมนะครับ 555 ผมไม่ได้ถ่ายเก็บไว้ตอนอัพโจทย์ใหม่ ขออภัยครับ เลยเขียนได้แค่ข้อเดียว เป็นโจทย์ระดับกลางครับ 😾

Hesitation

จากโจทย์ได้บอกเราว่าได้ถูกจ้างให้ไป แฮกบริษัทคู่แข่ง ซึ่งกำลังดำเนินโครงการชื่อว่า Monitor System ถ้าทำสำเร็จจะได้รางวัล แบบตึงๆ

ผมจะท่องบทนี้ไว้ในหัวเสมอเวลา ทำ Red Team ว่า "Enumeration is the KEY 🔑" 😹

อย่างแรกไปดู Source Code ก่อนเลย!!!

นั่นไง สั้นๆนิดเดียว ไปดู /assets/js/app.js ก่อนเลยครับ

หน้าตา Code แบบนี้ Obfuscation มาแน่นอนดังนั้นใช้ Online JavaScript beautifier โล้ดดดด

ดีขึ้นเยอะ พอเรามานั่งอ่านก็ไปสะดุดตากับ function นี้

หืมม แสดงว่าต้องมีหน้า Login ได้เวลา Directory Fuzzing!!

dirsearch -u  http://34.126.118.33/
  _|. _ _  _  _  _ _|_    v0.4.3
 (_||| _) (/_(_|| (_| )

Extensions: php, aspx, jsp, html, js | HTTP method: GET | Threads: 25 | Wordlist size: 11460

Output File: /mnt/c/Users/Ar3mu/Desktop/reports/http_34.126.118.33/__24-07-26_10-56-30.txt

Target: http://34.126.118.33/

[10:56:30] Starting:
[10:56:44] 403 -  278B  - /.ht_wsr.txt
[10:56:44] 403 -  278B  - /.htaccess.bak1
[10:56:44] 403 -  278B  - /.htaccessBAK
[10:56:44] 403 -  278B  - /.htaccess_sc
[10:56:44] 403 -  278B  - /.htaccessOLD
[10:56:44] 403 -  278B  - /.htaccess_extra
[10:56:44] 403 -  278B  - /.htaccessOLD2
[10:56:44] 403 -  278B  - /.htpasswd_test
[10:56:44] 403 -  278B  - /.htaccess.orig
[10:56:44] 403 -  278B  - /.htaccess.sample
[10:56:44] 403 -  278B  - /.htaccess.save
[10:56:44] 403 -  278B  - /.htaccess_orig
[10:56:44] 403 -  278B  - /.html
[10:56:44] 403 -  278B  - /.htpasswds
[10:56:44] 403 -  278B  - /.httr-oauth
[10:56:44] 403 -  278B  - /.htm
[10:56:46] 403 -  278B  - /.php
[10:56:52] 301 -  317B  - /__MACOSX  ->  http://34.126.118.33/__MACOSX/
[10:57:43] 301 -  322B  - /administrator  ->  http://34.126.118.33/administrator/
[10:57:43] 200 -  240B  - /administrator/
[10:57:43] 200 -  240B  - /administrator/index.php
[10:57:49] 301 -  315B  - /assets  ->  http://34.126.118.33/assets/
[10:57:49] 403 -  278B  - /assets/
[10:58:25] 200 -    1KB - /Dockerfile
[10:58:30] 302 -    0B  - /error.php  ->  /
[10:58:46] 200 -    3KB - /index.html
[10:59:21] 200 -  779B  - /readme.txt
[10:59:24] 200 -   82B  - /robots.txt
[10:59:28] 403 -  278B  - /server-status/
[10:59:28] 403 -  278B  - /server-status
[10:59:33] 200 -  182B  - /start.sh

สรุปเราเจอ Path ที่เข้าได้คือ

[10:57:43] 200 -  240B  - /administrator/
[10:57:43] 200 -  240B  - /administrator/index.php
[10:58:25] 200 -    1KB - /Dockerfile
[10:58:46] 200 -    3KB - /index.html
[10:59:21] 200 -  779B  - /readme.txt
[10:59:24] 200 -   82B  - /robots.txt
[10:59:33] 200 -  182B  - /start.sh

ก่อนอื่นเรามาดู robots.txt ก่อน

จากนั่นมาเช็ค Path /administrator/

อ่าวหวานเลย ลองใส่ Credential ที่เราเจอมาจาก app.js

user : admin pass : TH3_0ld_P@ssw0rd

สรุปไม่ถูก โดน Rabbit Hole ซะแล้ว

โอเคครับ ไปกันต่อมาเช็ค Path /start.sh

อ่าวมีไฟล์ bot.py ด้วย

นั่นไงเจอละ Credential ที่แท้ทรู

user : admin pass : itsme3

ครับ...

web{I3L1nD_XS5_5O_FunNy}

เรื่องนี้สอนให้รู้ว่า "Enumeration is the KEY 🔑"

Special : Forensic File Hunt

โจทย์ข้อนี้อยู่ในหมวดหมู่ Digital Forensic ครับ ผมเขียนเพิ่มมาอีกหนึ่งข้อเป็นข้อพิเศษละกันครับ เนื่องด้วยหลังงานแข่งมีพี่เฉลยมา ผมเลยไปลองทำแล้วทำได้ แต่ตอนแข่งผมโดน Rabbit Hole นานจนเสียเวลาไปเยอะครับ ส่วนโจทย์คำถามผมไม่ได้ถ่ายภาพไว้ เลยมีแค่ไฟล์มา ขออภัย ณ ที่นี้ด้วยครับ ซึ่งโจทย์ข้อนี้ถามว่าให้เราหา Flag ในไฟล์ Excel ครับ

เริ่มแรกโจทย์จะให้ไฟล์ Extension คือ .E01 ขออธิบายเพิ่มเติมในส่วนของไฟล์นี้จะได้มาจากการเก็บหลักฐานพวก Volume Images, Disk Image, Memory และ Logical Files โดยใช้ Software ที่เรียกว่า EnCase ครับ

ref : What is .E01 File Extension? EnCase Image File Format (whatisfileextension.com)

แต่จริงๆแล้วก็มีเครื่องมือย่าง FTK Imager ก็สามารถเก็บหลักฐาน แล้วเลือก Image Type ก็ได้เช่นกันครับ

FTK Imager : Select Image Type

ref : Digital Forensics Part 1 — Evidence Acquisition | by WIRAPONG PETSHAGUN | Medium

โดยปกติถ้าเราเจอไฟล์ Disk Image Files อย่าง .E01 เราก็จะได้โปรแกรมในการวิเคราะห์ เช่น

FTK Imager

หรือไม่ก็

Autopsy

สำหรับผมเริ่มแรกเราจะใช่ FTK Imager เพราะ เราจะไม่ได้ไปวิเคราะห์ละเอียดมาก เราจะเข้าไปเช็คก่อนว่าไฟล์หลักฐานที่ได้มา มีข้อมูลอะไรบ้างในเบื้องต้น

Add Evidence Item

Select Source

Select File

ให้เราไปที่ Basic data partition(3) > NONAME [NTFS] ในส่วนนี้เราจะพบว่าเป็น Storage ประเภท NTFS (New Technology File System) ที่เราใช้กันในระบบปฏิบัติการอย่าง Window ครับ

มาต่อกันครับ จากนั้น Navigation ไปที่ Path [root] > Users > secplayground > Desktop

ก็จะเจอกับไฟล์ flag.xlsx ทำการ Export Files โล้ดดดด

ธงชาติไทยจะมิให้ใครย่ำยี 🥲

สรุปอันนี้คือ Flag หลอกนะครับ

โอเคครับ หลังจากที่ได้เฉลยจากพี่ๆ ก็เลยได้คำตอบว่า จะมีไฟล์ Excel อยู่ในไฟล์ zip จากภาพแมว

ใช่ครับจะเห็นว่าเจอ ไฟล์ zip ชื่อว่า catdata.zip ครับ

กลับไปที่ Workspace ของผมดีกว่า อิอิ

เหมือนว่าไฟล์ zip จะเข้ารหัสด้วยนะครับงั้น ต้องเป็นหน้าที่พี่ John The Ripper จัดการ!!!

ใช้เวลาไปทั้งหมด 1m 3s ไฟล์เยอะจัด

528 ไฟล์ OMG!?! สาวกทาสแมวชัดๆ 😼

จากนั้นเราก็ทำการ Stegano ภาพซึ่งเราจะใช้เครื่องมืออย่าง Binwalk เพื่อ Extract ไฟล์ที่ฝั่งอยู่ใน Firmware Images ในระดับ Binary Files ครับ

ref : Digital Forensics Examiner: September 2019 (dforensic.blogspot.com)

binwalk -e * > test.txt

เราก็จะได้ ไฟล์รูปภาพที่ Extract ข้อมูลแยกเป็นโฟลเดอร์ออกมา

สรุปก็คือ ไปเจอที่รูป cat8.jpg

หืม... เหมือน Encode ด้วย Hex อยู่นะช่องแรก

ทำการ Decode ด้วย Hex > Base64 ก็จะได้ Flag

forensic{Kuch1ng}


ก็จบกันไปสำหรับ Write up SECPlayground HALF YEAR CTF Event 2024 ครับ หวังว่าผู้เข้าแข่งขัน คนอื่นๆ จะมาเขียนกันเยอะๆ นะครับ วงการ Cybersecurity จะพัฒนากันต่อไปได้ไกล ถ้าพวกเราหันมาเข้าร่วม Comunity และ Share ประสบการณ์กันครับ เนื้อสิ่งอื่นใดจากแข่งขัน คือ Collaboration and Knowledge Sharing ครับ ขอบคุณที่เข้ามาอ่านจนจบนะครับ

BetterTTV - peepoLove by RisaEverfrost

⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣤⣤⣤⣤⣤⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀  ⠀⠀⠀⠀⠀⠀⠀
        ⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠛⠻⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⡿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣤⣴⣿⣿⣿⣿⣿⡿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋   ⢀⣀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠁⠀⠀  ⣴⣿⣿⣿⣦⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣀⠀⠀⠀  ⢿⣿⣿⣿⡟ Ar3mus@ SECPlayground HALF YEAR CTF  Event 2024
⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄   ⠉⠉⠁⠀⠀⠀⠀
⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀
⠀⠀  ⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋
⠀⠀⠀  ⠀⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠁
⠀⠀   ⠀⠀⠀⠀⠉⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀  ⠀⠀⠉⠙⠛⠛⠻⠿⠿⠟⠛⠛⠋⠉⠀⠀⠀⠀⠀
0
Subscribe to my newsletter

Read articles from Ar3mus directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ar3mus
Ar3mus

Student at NKRAFA who interesting about Cyber Security and Head of NKRAFA Cyber Club 2024