กราบสวัสดีผู้อ่านทุกท่าน หลังจากที่ทีม MAYASEVEN ได้มีส่วนร่วมในการแข่งขัน Thai “Capture the Packet” Contest และทำโจทย์ได้ครบทุกข้อในรอบออนไลน์ ทางทีมมีความรู้สึกสนุกกับการแข่งขันอย่างมาก จึงอยากจะแชร์วิธีการแก้โจทย์ให้ผู้อ่านได้สามารถทำตามและทำความเข้าใจได้อย่างง่าย ๆ กันครับ โดยเลือกหนึ่งในสองข้อยาก นั่นก็คือข้อ Covert Channel 4 มาเฉลย มาเริ่มกันเลย!
จากโจทย์เราจะได้ไฟล์pcapมาหนึ่งไฟล์ชื่อว่า covert_channel3.pcap (จริงๆ ชื่อไฟล์น่าจะเป็น covert_channel4.pcap แต่สงสัยทางผู้จัดงานลืมแก้ชื่อไฟล์!!!) เราก็ใช้ Wireshark เปิดไฟล์ เพื่อวิเคราะห์ข้อมูลข้างในไฟล์
อันดับแรก เราเริ่มวิเคราะห์ packets จากเครื่องมือ Conversations เพื่อดูว่ามีการสื่อสารช่องทางไหนบ้าง และใครเป็นผู้ส่ง ใครเป็นผู้รับ
เราสังเกตว่าจะมีการส่ง packets ที่มีจำนวนมากอยู่สองจุดนั่นก็คือ
- 78df:47bb:ddf4:7dcf:f85f:5ae9:cfa6:359f(A) -> 7ee7:418b:58b1:f8b:58e1:f8b:e8fc:3e7 (B)
- 78df:47bb:ddf4:7dcf:f85f:5ae9:cfa6:359f (A) -> 7ee7:418b:58b1:f8b:58e1:f8b:e8fc:1e7(C)
ผู้ส่งก็ คือ IPv6:78df:47bb:ddf4:7dcf:f85f:5ae9:cfa6:359f (A)
และส่งข้อมูลไปที่ IPv6: 7ee7:418b:58b1:f8b:58e1:f8b:e8fc:3e7 (B)
กับ 7ee7:418b:58b1:f8b:58e1:f8b:e8fc:1e7 (C)
หลังจากวิเคราะห์ข้อมูลที่ถูกส่งจะพบว่าผู้ส่ง A ได้ request ขอไฟล์รูปภาพ sample.png จาก B และ C จำนวนหลาย requests เราจึงมาวิเคราะห์การ request ของ A โดยเริ่มจากใส่ filter ว่า http.request.uri==”/assets/images/sample.png”
จากนั้นก็ export เฉพาะข้อมูลที่เราสนใจ แยกออกมาอีกไฟล์ เพื่อที่จะใช้ I/O Graph วิเคราะห์ความถี่ในการส่งข้อมูล
เปิดไฟล์ที่เรา export ด้วยโปรแกรม Wireshark แล้วก็เลือก Statistics > I/O Graph เพื่อวิเคราะห์ข้อมูลความถี่
จากรูป เมื่อเราเห็นลักษณะของแท่งในกราฟทำให้เดาได้ว่า มีการส่งข้อความลับด้วยรหัส Morse Code
เราจึงใช้ Morse Code Translatorโดยให้ แท่งสั้นแทนด้วย – และ แท่งยาวแทนด้วย .
ผลที่เราได้คือชุดตัวอักษรนี้ครับ ORUGKIDGNRQWOIDJOMQHW3JQOJZWKYZQMQZX2<BT><BT><BT>
เกร็ดความรู้ <BT> คือ Prosign มีความหมายว่า BREAK ใน Morse code ถ้าอ่านจากใน Wikipedia สัญลักษณ์นี้ก็คือ เท่ากับ( = ) นั่นเอง
สุดท้าย เราจะได้ชุดตัวอักษรนี้ครับ ORUGKIDGNRQWOIDJOMQHW3JQOJZWKYZQMQZX2=== ชุดตัวอักษรที่เราได้เป็นตัวอักษรตัวใหญ่หมด ทำให้เราคาดเดาได้ว่ามีการ encode ด้วย base32
เกร็ดความรู้ : (base32 จะประกอบไปด้วยตัวอักษร A-Z 2-7 รวมเป็น 32 ตัวอักษร หมายความว่า base64 จะมี 64 ตัวอักษร คือ A-Z a-z 0-9 + / และการใช้เครื่องหมาย = คือการทำ padding)
เราสามารถ decode ออกมาได้คำตอบ ก็คือ The Flag is {m0rsec0d3} จบอย่างสวยงามครับ
Download covert_channel3.pcap : https://drive.google.com/file/d/1_XNJ2fmysAer138S3W6Z9Y0MNyQwTWWK/view?usp=sharing
MD5 (covert_channel3.pcap) = 0bac6d30f56e7747666a7d46b297426e