Fincybersec2020 Meow Meow Analyst Write Up

สวัสดีครับ ผมชื่อตี๋ วันนี้จะมาเขียน Write Up หมวด OS/SYSTEM/NETWORK ข้อ Meow Meow Analyst จากงาน Fincybersec2020 ครับ

จากโจทย์

ฝ่าย IT และ Network ของบริษัทหลักทรัพย์ในตำนาน จำกัด(มหาชน) ต้องการรับสมัครพนักงานตำแหน่ง IT Security Analyst ซึ่งคุณมาสมัครงานต้องผ่านการทดสอบเบื้องต้นของทางบริษัทเพื่อให้ผ่านการทดสอบ ซึ่งโจทย์ที่ใช้ในการทดสอบคือไฟล์ pcapng

ไฟล์ที่โหลดมาเป็นไฟล์ pcapng ซึ่งเป็นไฟล์ที่สามารถเปิดด้วยโปรแกรม wireshark เรานำมันมาเข้า Linux รันคำสั่ง

tcpflow -r fcs06_infected.pcapng

จะพบกับไฟล์ที่ถูกแตกออกมามากมาย

เมื่อลองเปิดดูไฟล์จะสังเกตว่าบางไฟล์มีส่วนของไฟล์ภาพ บางไฟล์เป็น logs แต่เมื่อสังเกตดีๆจะพบกับคำสั่ง certutil -encode และคำสั่ง type ซึ่งเป็นคำสั่งเข้ารหัสและแสดงผลข้อมูล

มีทั้งของไฟล์ Persia.zip และ Secret.png

เรานำมันกลับมาสร้างเป็นไฟล์ Persia.txt และ secret.txt และรันคำสั่ง decode

certutil -decode Persia.txt Persia.zip
certutil -decode secret.txt secret.png

เราจะได้ไฟล์ Persia.zip และ secret.png มาซึ่งไฟล์ Persia.zip นั้นติดล๊อครหัสผ่าน ส่วนไฟล์ secret.png เป็นภาพแมว ซึ่งมีลิงค์ Instragram อยู่ในภาพ

เมื่อเราเข้าไปตาม Instragram จะพบกับภาพแมวหลายภาพซึ่งมีข้อความอยู่

เมื่อเราลองนำข้อความแต่ละอันมาลองใส่ในไฟล์ Zip ก็พบว่าสามารถเปิดไฟล์ Zip ได้แล้วก็เจอ Flag

Fincybersec2020 Our KeePass Technology Write Up

สวัสดีครับ วันนี้จะมาเขียน Write Up หมวด Misc ข้อ Our KeePass Technology จากงาน Fincybersec2020 ครับ

จากโจทย์

CEO ของบริษัทหลักทรัพย์ในตำนาน จำกัด(มหาชน) ลืมรหัสผ่านเพื่อเปิดไฟล์ KeePass ที่เก็บข้อมูลรหัสผ่านสำคัญเอาไว้ จึงได้มอบหมายหน้าที่ให้ทีม IT Security ช่วยหาวิธีในการกู้ข้อมูลสำคัญที่อยู่ในไฟล์ KeePass มาให้ได้

เมื่อโหลดมาจะเป็นไฟล์ KeePass Database ซึ่งติดรหัสผ่าน

เราจึงนำไฟล์เข้า Linux ไปถอดเป็น Hash ด้วย keepass2john รันคำสั่ง

keepass2john fcs19_Database.kdbx > fcs19_Database.hash

เราจะได้ไฟล์ fcs19_Database.hash ออกมา จากนั้นเปิดไฟล์ hash แล้วตัดส่วนชื่อไฟล์ออกให้เหลือแต่ hash ดังภาพ

จากนั้นนำไปรันใน hashcat โดยใช้ wordlist rockyou.txt ด้วยคำสั่ง

hashcat -m 13400 -a 0 -w 1 fcs19_Database.hash rockyou.txt

เราจะพบว่ารหัสถูก Cracked ออกมาแล้ว ซึ่งก็คือ #11jesus

เมื่อนำมาลองเปิดไฟล์ด้วย KeePass ก็จะพบ Flag

Fincybersec2020 New Encoding Technology Write Up

สวัสดีครับ วันนี้จะมาเขียน Write Up หมวด Misc ข้อ New Encoding Technology จากงาน Fincybersec2020 ครับ

จากโจทย์

บริษัทประกันไซเบอร์ไลฟ์ จำกัด พัฒนาวิธีการ encoding ข้อมูลแบบใหม่โดยใช้ตัวอักษรภาษาไทยในสมัยสุโขทัยเป็น character set คุณซึ่งเป็นหัวหน้า Programmer พบว่าไฟล์เกิดความเสียหายจนไม่สามารถใช้งานได้ และต้องเขียนโค้ดใหม่ให้เสร็จก่อนส่งงาน

Encode Method: base39

Encoding Character SET: “กขฃคฅฆงจฉชซญฎฏฐณดตถทธนบปผฝพฟภมยรลวศษสหอ”

Encoded Text: “อญฃวนณรบกฃผฝฆษหชญนดฟษขงฉลขฟธซลรฃนอภดทยฅพณยอฐสธฎจธณปธฟผปรฎญฟถงปฃซฝผชนทฃฏฆตปฉฃวซผรญอมฟชลพมสษชฎทฆขฃตธจภมฆฏภกดงฐพธปนญถลวฐธฅฐคญฎขสชฃพหทกจชมซดฆขปฝมขฅขฆษธปยฐตกธฎศคทชฏฉฝฆษฆธบฐผศชฐมรญงชษลฆคถษจนศรฆดคจถญดรปภฐฟซฆฏญณทอจฎฐลยยพตซกฎฝงษฃตนพฉรกจพรฉซงมษคฎขธฆนยธณรฝฃกวทฃทธฟรคกธฆตภ”

จะพบว่า ข้อความถูก encode ด้วย base39 ซึ่งมี Character Set เป็น “กขฃคฅฆงจฉชซญฎฏฐณดตถทธนบปผฝพฟภมยรลวศษสหอ” ข้อนี้ไม่ยากมากครับ ถ้าใครเคยเขียนฟังก์ชั่นแปลงเลขฐานมาก่อน ผมใช้ sourcecode จากข้อ Encoding Tool แต่ตัดฟังก์ชั่น shuffle ออกครับ

เมื่อ compile ก็จะพบ flag ครับ

Fincybersec2020 Old Zip Technology Write Up

สวัสดีครับ วันนี้จะมาเขียน Write Up หมวด Misc ข้อ Old Zip Technology จากงาน Fincybersec2020 ครับ

จากโจทย์

พนักงานของบริษัทหลักทรัพย์ในตำนาน จำกัด(มหาชน) ท่านหนึ่งจำรหัสผ่านไฟล์ Zip ที่มีความยาวกว่าร้อยตัวอักษรของเขาไม่ได้ จึงมาขอความช่วยเหลือจากทีม IT Security เพื่อกู้ไฟล์สำคัญที่อยู่ในไฟล์ Zip ที่เข้ารหัส

เมื่อเปิดไฟล์ Zip ที่โจทย์ให้มาจะพบกับไฟล์รูปภาพและไฟล์ Zip อีกอันที่ lock อยู่

จากที่สังเกตจะพบว่ามีไฟล์ turkish_angora.jpg ที่มีขนาดไฟล์เท่ากันและชื่อเหมือนกัน จึงคาดว่าเป็นไฟล์เดียวกัน ซึ่งก็เลยนึกขึ้นได้ว่ามีวิธีที่เคยอ่านเจอว่าสามารถ Crack ไฟล์ Zip ด้วยการเทียบไฟล์ ชื่อว่า Known-plaintext attack ให้ทำการแยกไฟล์ encrypted.zip ออกมา 1 ไฟล์

ซึ่งโปรแกรมที่ผมจะใช้ชื่อว่า PKCrack สามารถโหลดได้จาก https://github.com/keyunluo/pkcrack

ขั้นตอนที่ 1 คือให้แยกไฟล์ turkish_angora.jpg ออกมาแล้ว zip ให้เหลือไฟล์เดียว

ขั้นตอนที่ 2 ตอนนี้จะมี 2 ไฟล์คือไฟล์ encrypted .zip กับ turkish_angora.zip

ทำการรันคำสั่ง

./pkcrack -C encrypted.zip -c turkish_angora.jpg -P turkish_angora.zip -p turkish_angora.jpg -d cracked.zip -a

จะพบไฟล์ cracked.zip ขึ้นมาซึ่งภายในมีไฟล์ secret.txt พอเปิดดูจะพบว่าไม่ติดรหัสผ่านแล้ว สามารถอ่าน flag ได้เลย

ข้อนี้ไม่ยากมากนะครับ ถ่าใครเคยเห็นมาก่อน แต่ผมค้นวิธีอยู่นานเลย ก็เลยส่งไป 2nd อดเก็บแต้มโบนัสครับ ‘w’

Fincybersec2020 Cracked Program Write Up

สวัสดีครับ วันนี้จะมาเขียน Write Up หมวด Reverse Engineering ข้อ Cracked Program จากงาน Fincybersec2020 ครับ

จากโจทย์

ฝ่าย IT Security ของบริษัทประกันแห่งหนึ่ง พบว่าคอมพิวเตอร์ของพนักงานท่านหนึ่งติด Malware เนื่องจากไปดาวน์โหลดโปรแกรมเถื่อนมาใช้งาน คุณได้รับมอบหมายจากผู้บริหารบริษัท เพื่อหาว่าใครเป็นคนสร้าง Malware ตัวนี้

เริ่มวิเคราะห์โปรแกรม

นำโปรแกรมเข้าไปแสกนใน RDG Packer Detector พบว่าถูก Pack ด้วย UPX

นำไฟล์เข้า Linux แล้วพิมคำสั่ง upx -d app.exe เพื่อ Decompress

ลองรันโปรแกรมจะพบว่าโปรแกรมถามหา key

ค้นหา string ในไฟล์ด้วยคำสั่ง strings app.exe|less จะพบว่ามีข้อความ

ลองเอาข้อความไปใส่ในโปรแกรม จะพบกับ flag

ข้อนี้ค่อนข้างง่ายครับ ทำแปปเดียวเสร็จเลยเพราะคุ้นเคยกับ UPX อยู่แล้ว เลยได้ first blood ด้วยครับ

Fincybersec2020 Encoding Tool Write Up

สวัสดีครับ อันนี้เป็นการเขียนครั้งแรกของผมนะครับ

จากโจทย์

บริษัทประกันไซเบอร์ไลฟ์ จำกัด ได้ว่าจ้างบริษัทขั้นเทพ จำกัด เพื่อพัฒนาโปรแกรมให้พนักงานใช้ encoding ข้อมูล โดยทางฝ่าย IT Security พบว่าโปรแกรมได้ฝังข้อความเข้ารหัสลับเอาไว้ เราจึงอยากให้คุณมาช่วยถอดรหัสข้อความลับดังกล่าวให้หน่อย

เริ่มวิเคราะห์โปรแกรม

นำโปรแกรมเข้าไปแสกนใน RDG Packer Detector พบว่าเป็นไฟล์ .NET

นำไป decompile ด้วย dnSpy / Reflector จะสังเกตเห็นว่ามีการเช็คว่า string ที่ input เข้าไปแล้วนำมา encode จะต้องตรงกับ ข้อความในภาพ

สรุปก็คือให้เราเขียนฟังก์ชั่น decode ข้อความดังกล่าว Flag ก็จะออก

ให้เรามาดูที่ฟังก์ชั่น encode

แล้วทำการเขียนฟังก์ชั่นที่ทำกลับกัน เพื่อสร้างตัว decoder

เราก็จะได้ Flag ออกมา

และแล้วก็ First Blood แบบงงๆครับ

ขอบคุณผู้จัดงาน Fincybersec2020 ที่จัดกิจกรรมดีๆแบบนี้ขึ้นมาครับ