content-image
ARTICLES | 01 March 2021

Basic Covert Channel

author-image

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

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 จะเห็นว่ามีการส่งข้อมูลออกไป


ไว้ในบทความถัด ๆ ไปจะลองทำอันที่ซับซ้อนมากขึ้นนะครับ

logologo

INCOGNITO LAB CO., LTD.

38 Soi Petchakasem 30, Petchakasem Road, Pak Khlong Phasi Charoen, Phasi Charoen, Bangkok 10160

©2025 Incognito Lab Co., Ltd. All rights reserved

Terms & Conditions Privacy Policy