
Basic Covert Channel
Incognito Lab
Covert (adj.) = Hidden or Secret
คำว่า Covert Channel ในเรื่องของ Security หมายถึง การส่งข้อมูลโดยใช้ช่องทางที่ไม่ได้ถูกออกแบบมาให้ส่งข้อมูลนั้น ๆ
ใครที่งงแนะนำว่าอ่าน Definition ภาษาอังกฤษ จะเข้าใจง่ายกว่า
A covert channel is a path for the illegal flow of information between subjects within a system, utilizing system resources that were not designed to be used for inter-subject communication
คำที่ตรงข้ามกับ Covert Channel คือ Overt Channel นะครับ ซึ่ง Overt แปลว่า เปิดเผย (Public) การส่งข้อมูลทั่ว ๆ ไปนั้นเป็นลักษณะ Overt Channel
โดยทั่วไปการทำ Covert Channel นั้นใช้ช่องทางการส่งข้อมูลที่ไม่ถูก Block ใน Network ข้อมูลที่จะถูกส่งผ่าน Covert Channel นี้มักถูกใส่ไว้ในส่วนของ Header หรือ Payload ของ Protocol ซึ่งแต่ละ Protocol นั้นสามารถนำมาใช้ทำ Covert Channel ได้แต่ประสิทธิภาพของแต่ละ Protocol นั้นไม่เท่ากัน ทั้งนี้ขึ้นอยู่กับ Protocol Specification ด้วย เช่น ใน TCP Protocol มี Field ของ Header ที่มากกว่า ICMP Protocol ดังนั้นการทำ Covert Channel บน TCP Protocol น่าจะมีประสิทธิภาพสูงกว่า ICMP
ตัวอย่างการทำ Covert Channel บน ICMP
ก่อนที่จะทำความเข้าใจเทคนิคการทำ Covert Channel ควรจะต้องมีความเข้าใจเกี่ยวกับ Protocol นั้น ๆ ก่อน รูปด้านล่างเป็น ICMP Protocol ที่มีส่วนของ Header (Type, Code, Checksum) และ Data (Payload) ซึ่ง ICMP เป็น Protocol ที่ใช้ในการส่งข้อมูลระหว่างกันเพื่อตรวจสอบปัญหาต่าง ๆ ในกรณีที่ Network มีปัญหา

basic covert channel
ซึ่งในส่วนของ Type และ Code นั้นจะเป็นไปตามมาตรฐานของ Protocol เช่น การส่งคำสั่ง Ping คือการทำ Echo request จะเป็น Type 8 Code 0 และในส่วนของ Data ก็มักจะมีการส่ง String ไปด้วย ซึ่ง String นี้จะแล้วแต่แต่ละ OS อย่างตัวอย่างด้านล่างจะเป็นการ Ping จาก OSX (ในส่วนของ Checksum จะไม่ขอพูดถึงละเอียดว่าคำนวณอย่างไรนะครับ โดยคร่าว ๆ Checksum คือค่าที่ใช้ในการตรวจสอบว่าข้อมูลที่ส่งมานั้นมีความถูกต้องหรือไม่ ถ้าไม่ถูกก็จะมีการ Drop ทิ้งไป)
ในส่วนของ Data (Payload) จากตัวอย่างข้างบนคือมีการส่งค่า "0809010b………" ซึ่งค่านี้เป็นค่าที่สร้างโดย Default ขึ้นมาอาจแตกต่างกันได้ในแต่ละ OS โดยปกติ Data ของ ICMP จะใส่ข้อมูลของ Packet ที่มีปัญหาเพื่อแจ้งให้ Sender ทราบว่าใน Network มีบางอย่างผิดปกติ
แทนที่ส่วนของ Data (Payload) จะส่งข้อมูลของ Packet ที่มีปัญหา เราสามารถใช้ Data (Payload) ในการทำ Covert Channel เพื่อส่งข้อมูลออกไปที่เครื่อง Server ปลายทางได้ด้วย ซึ่งเหตุผลของการทำ Covert Channel นั้นมักจะเป็นเรื่องของความต้องการที่จะ Bypass Firewall/ACL หรือ อยากให้การตรวจจับทำได้ยาก โดยตัวอย่างนี้แทนที่จะทำการ Upload ไปที่เว็บต่าง ๆ อาจเลือกใช้วิธีการส่ง Echo request ออกไปแทน
ทดลองส่ง Text จาก Text File ที่สร้างขึ้นโดยทำ Covert Channel ผ่าน ICMP ซึ่งสามารถใช้ Tool อย่าง Hping3 ทำได้
ลอง Run คำสั่งของ Hping3 พร้อมจับ Packet ผ่าน WireShark ดูที่ช่อง Data ของ ICMP packet จะเห็นว่ามีการส่งข้อมูลออกไป
ไว้ในบทความถัด ๆ ไปจะลองทำอันที่ซับซ้อนมากขึ้นนะครับ
Up Next

ARTICLES
Feb
25
2021
Incognito Mode EP1
สำหรับใน EP 1 นี้ได้คุณพรสุข มาบรรยายในหัวข้อ Thailand's Cyber
READ MORE

ARTICLES
Jan
27
2021
Difference between Single-stage Ransomware and Multi-stage Ransomware
องค์กรที่มีแผนรับมือ(Incident Response) กรณีการโจมตีของ Ransomware Attack ต้องเริ่มมาทบทวนแผนกันใหม่นะครับเนื่องจากรูปแบบการโจมตีของ attackers มีชั้นเชิงที่จะบีบบริษัทหรือองค์กรที่ตกเป็นเหยื่อมากยิ่งขึ้น
READ MORE

ARTICLES
Jan
27
2021
VA/Pentest Service FAQs
บทความนี้อยากทำให้ผู้อ่านได้เข้าใจถึง VA/Pentest Service ซึ่งเป็น Service หลักของ Incognito Lab
READ MORE