GCC 2024 : Hands-on Car Hacking
Table of contents
- Introduction to Automotive Security and Car Hacking
- Car Hacking Methodology and Kill Chain
- Bluetooth Security and Hands-on
- Automotive Bluetooth security case studies
- Bluetooth Security Hands-on exercises
- In-Vehicle Networks and Hands-on CAN Bus
- CAN Bus Basics
- CAN Physical Layer
- CAN Bus Priority and Collision Resolution
- Hands-on CAN Bus with CanAble
- CAN Bus Reverse Engineering
- CAN Bus Security
- Playtime
สวัสดีครับทุกคน สำหรับหัวข้อนี้เป็นเรื่องของ Car Hacking นะครับ เชื่อว่าหลายๆคนที่ผ่านค่าย GCC มาทุกคนสนใจหัวข้อนี้ที่สุดนะครับ สำหรับใครที่ยังไม่ได้อ่าน Overview สามารถไปอ่านได้ที่ ลิ้งค์
Introduction to Automotive Security and Car Hacking
ก่อนที่จะเข้าสู่เนื้อหา ผมขอเล่าในส่วนของคลาสที่ผมได้เรียนกับ เทรนเนอร์ Kamel Ghali ก่อนนะครับสำหรับคลาสนี้ ในคอร์สของ Car Hacking จริงๆ จะใช้เวลาเรียน ประมาณ 2-3 วันครับ แต่สำหรับในค่าย จะอัดเนื้อหาให้มากที่สุด เพราะมีเวลาแค่ 1 วัน และเพื่อที่จะแบ่งเวลาให้ได้ไป hands-on กันเยอะๆ ครับ ซึ่งบล็อกที่ผมเขียนขึ้นมา จะนำเสนอในบางส่วนของ hands-on นะครับ ส่วนรายละเอียดพวกทฤษฎี ผมไป Research เพิ่มเองแล้วนำมาอ้างอิงในบล็อกนี้ซะส่วนใหญ่นะครับ จะเป็นยังไงไปดูกันเลยครับ
Trainer : Kamel Ghali
Overview of Automotive Cybersecurity
สำหรับในบริบทของนักเจาะระบบทุกคนจะรู้จักคำว่า "Attack Surface" ถูกมั้ยครับ ถ้าคนที่ไม่รู้จักความหมายของมันก็คือ ช่องทางที่ผู้ไม่หวังดี (Threat Actor) สามารถใช้เป็นช่องทางในการเข้าสู่องค์กรโดยไม่ได้รับอนุญาต (Unauthorized access) และสร้างความเสียหายทางไซเบอร์ได้ ซึ่งในการทดสอบเจาะระบบ เราก็ต้องหาทุกวิถีทางเพื่อหาส่วนประกอบต่างๆ ของเป้าหมายที่จะเป็นไปได้ในการโจมตีและมีผลกระทบต่อเป้าหมายมากที่สุด โดยถ้ายิ่งเป้าหมายมี Surface ที่มาก ก็ย่อมมีความเสี่ยงในการเกิดช่องโหว่ในการโจมตีได้ครับ ดังนั้นเทคโนโลยีด้านยานยนต์ตั้งแต่อดีตจนถึงปัจจุบัน ก็มีการพัฒนาขึ้นอย่างต่อเนื่อง มีการเพิ่มฟังก์ชั่นต่างๆ เช่น Networking , Biometrics , Autonomy และ Huge Supply Chain เข้ามานั้นจึงทำให้เกิด Surface และความเสี่ยงของระบบต่างๆ ขึ้นมาได้ครับ จากที่กล่าวมานั้นทำให้เรื่องของ Automotive Security เกิดขึ้นมา ซึ่งก็เป็นส่วนหนึ่งของ สาขา Computer Security ที่โฟกัสในเรื่องของความเสี่ยงทางไซเบอร์ นั่นเองครับ
ผมเชื่อว่าในเรื่องของ Automotive Security อาจจะยังไม่ค่อยแพร่หลายในประเทศไทยสักเท่าไหร่ครับ แต่สำหรับในต่างประเทศก็จะมีกลุ่มอย่าง CarHackingVillage ที่น่าจะเป็นกลุ่มหลักๆที่ศึกษาและวิจัยในด้านนี้โดยเฉพาะครับ
แต่ก็จะมีกลุ่มอื่นๆ อีก เช่น ASRG , AUTO-ISAC และ SAE ศึกษาและวิจัยเช่นกันครับ
Unique Aspects of Automotive Security
ถามว่าอะไรที่ทำให้เรื่องของ Automotive Security จึงมีเอกลักษณ์เฉพาะตัว วิทยากรได้กล่าวว่า หมายถึงว่าเราต้องเรียนรู้
Binary Exploitation
Binary Reverse Engineering
Bluetooth
Wi-Fi
CAN Bus
Automotive Ethernet
Fault Injection
Cellular Spoofing Privilege Escalation
ที่นี้เรามาดูภาพรวมของ Car Hacking ในรูปแบบของ Automotive Security กันดีกว่าครับ
Car Hacking Methodology and Kill Chain
เรื่องของ Automotive Security สิ่งที่เราคำนึงถึงคือ ความปลอดภัยของผู้ใช้งาน ซึ่งก็จะมี Procress ในแต่ละด้าน ในทางกลับกัน ถ้ามี Hacker อยากจะแฮก ก็อาจจะนำ Procress นั่นมาประยุกต์ใช้ในด้านของการโจมตีแทนครับ
สำหรับ นักทดสอบเจาะระบบ โดยปกติเราจะมี Mindset ในการเจาะโดยอาจจะยึดหลักจาก Cyberkillchain หรือ Penetration Testing States ซึ่งในเรื่องของการเจาะระบบรถ เราจะยึดหลัก
"Car Hacking Kill Chain" โดยมีขั้นตอนดังนี้ครับ
STEP 1 : Get Inside
ขั้นตอนแรกคือ การหาช่องทางจากระบบต่างๆภายในรถครับ จากภาพก็จะเป็นตัวอย่างของระบบต่างๆภายในรถที่เป็นไปได้ครับ ลำดับแรก ให้เราลองนึกก่อนว่า Attack Surfaces ที่เป็นไปได้มีอะไรบ้าง โดยให้เราลองคิดว่า เรามีข้อมูลอะไรบ้างที่สามารถนำเข้าไปในรถได้
ref : The Car Hackers HandBook
อ้างอิงจากตัวอย่าง Flow chart ข้างต้นเราจะเห็นว่ามีการแบ่งเป็นระบบภายในและภายนอก โดยเชื่อมด้วย Dot ของรถ ซึ่งตรงนี้จะเป็น Process ต่างๆที่ขึ้นอยู่กับว่ารถนั่นๆมีระบบอะไรบ้าง แล้วเราค่อยโยงการทำงานของ ฟังก์ชั่นต่างๆของรถเข้าด้วยกัน
ดังนั้นสิ่งที่เราจะต้องหานั้นก็ คือ ข้อมูลต่างๆในเบื้องต้นว่ารถมีฟังก์ชันอะไรบ้างครับ
📶Cellular
การเชื่อมต่อผ่านเครือข่ายมือถือ จะใช้สำหรับ ระบบ Telematics, ระบบ Infotainment, Remote Diagnostics และการอัปเดตซอฟต์แวร์ผ่านอากาศ หรือ Over-The-Air (OTA) ทำให้รถสามารถสื่อสารกับเซิร์ฟเวอร์ภายนอกได้ครับ
💀Vulnerabilities
Remote Exploits ช่องโหว่ในระบบ Telematics (TCU) หรือ ระบบ Inforainment ก็สามารถถูกโจมตีจากระยะไกลได้ ผู้โจมตีอาจจะสามารถควบคุมระบบของรถและปลอมแปลงข้อมูล หรือ แทรกซอฟต์แวร์ที่เป็นอันตรายได้ครับ
ระบบ infotainment ที่แสดงผลจาก Dashboard
Data Interception สามารถถูกโจมตีจาก Man-in-the-middle ได้ ทำให้ถูกดักจับข้อมูลที่ส่งผ่านเครือข่าย Cellular แล้วนำไปสู่การเข้าถึงข้อมูลโดยไม่ได้รับอนุญาต และ การปลอมแปลงคำสั่งข้อมูลของรถที่อาจจะเกิดขึ้นได้ครับ
OTA Update Risks หากมีการอัพเดต OTA ไม่ได้รับการรักษาความปลอดภัยอย่างเหมาะสมอาจจะถูกแก้ไข ทำให้ผู้โจมตีสามารถติดตั้งเฟิร์มแวร์ที่เป็นอันตรายได้ครับ
Remote Diagnostics การเข้าถึงระบบเช่น OnStar อาจทำให้ผู้โจมตีได้รับข้อมูลสำคัญหรือควบคุมฟังก์ชันบางอย่างของรถใช้เครือข่ายเซลลูลาร์เชื่อมต่อกับระบบวินิจฉัยทางไกลได้เช่นกัน
สามารถติดตามความเคลื่อนไหวของรถยนต์ได้
ปลอมสถานี Global System for Mobile Communications (GSM) ในการรับส่งข้อมูลไปที่รถยนตร์ได้
📶Wi-Fi
ในรถยนต์การเข้าถึงอินเทอร์เน็ตและช่วยให้สามารถสื่อสารกับอุปกรณ์อื่นๆ ภายในเครือข่าย LAN มักใช้สำหรับสตรีมมีเดีย อัปเดตซอฟต์แวร์ และเชื่อมต่อกับอุปกรณ์สมาร์ทโฮม ได้ครับ
💀Vulnerabilities
สามารถเข้าถึงเครือข่ายของรถยนต์จากระยะไกลสูงสุดถึง 300 หลา หรือมากกว่า
หาช่องโหว่ในซอฟต์แวร์ที่จัดการกับการเชื่อมต่อขาเข้า
ติดตั้งโค้ดที่เป็นอันตรายใน ระบบ Infotainment unit
เจาะรหัสผ่าน Wi-Fi
ตั้งจุดเชื่อมต่อ Dealer ปลอมเพื่อหลอกให้รถคิดว่ากำลังได้รับการบริการ
ดักจับการสื่อสารที่ผ่านเครือข่าย Wi-Fi
ติดตามรถยนต์
📶Bluetooth
รถยนตร์ในปัจจุบันฟังก์ชั่น บลูทุธ แถบจะมีอยู่ในทุกๆคัน เพื่อมีไว้ในการใช้งานตามการใช้งาน เช่น การแจ้งเตือนข้อความจาก Application ต่างๆ และเน้นการใช้งานการสื่อสารที่มีพื้นที่เฉพาะไม่ไกลมาก
💀Vulnerabilities
ใช้ประโยชน์จากช่องโหว่ Bluetooth ในระบบ infotainment
ช่องทางการอัปโหลดข้อมูล เช่น อาจจะมี Application ที่ออกแบบมาเพื่อรันโค้ด
รบกวนการทำงานของอุปกรณ์ Bluetooth
📶TPMS
Tire Pressure Monitoring System เป็นเซ็นเซอร์ ตรวจสอบความดันอากาศภายในยางและสื่อสารข้อมูลนี้ไปยังระบบกลางของรถยนต์เพื่อให้แน่ใจว่ามีการบำรุงรักษายางและความปลอดภัยที่เหมาะสม
💀Vulnerabilities
ส่งสภาวะปลอมไปยังหน่วยควบคุมเครื่องยนต์ (ECU) ทำให้เกิดข้อผิดพลาดในการแสดงผลได้
ทำให้เครื่องรับ TPMS หรือ ECU อยู่ในสถานะที่ไม่สามารถกู้คืนได้ ซึ่งอาจทำให้ผู้ขับขี่ต้องหยุดรถเพื่อตรวจสอบยางแบนที่รายงานหรือแม้กระทั่งปิดเครื่องยนต์
ติดตามรถยนต์โดยอิงจากรหัสประจำตัวเฉพาะของ TPMS
ปลอมแปลงสัญญาณ TPMS เพื่อทำให้เกิดการเตือนภายใน
📶KES
ระบบกุญแจไร้สาย ช่วยให้สามารถปลดล็อคและสตาร์ทรถได้โดยไม่ต้องใช้กุญแจจริง โดยทั่วไปผ่านกุญแจรีโมท (Key Fob) ที่สื่อสารแบบไร้สายกับรถยนต์
💀Vulnerabilities
ส่งคำขอจากกุญแจรีโมทที่ไม่สมบูรณ์เพื่อทำให้ระบบป้องกันการโจรกรรมของรถยนต์ Immobilizer อยู่ในสถานะที่ไม่ทราบ
สแกนหา Immobilizer อย่างต่อเนื่องเพื่อทำให้แบตเตอรี่รถยนต์หมด
ล็อกกุญแจไม่ให้ใช้งานได้
ดักจับข้อมูลเข้ารหัสที่รั่วไหลจาก Immobilizer ระหว่างกระบวนการ handshake
ใช้วิธีการ brute-force ในการถอดรหัสกุญแจรีโมท
โคลนกุญแจรีโมท
รบกวนสัญญาณของกุญแจรีโมท
ทำให้พลังงานจากกุญแจรีโมทหมด
ตัวอย่าง Case โดยใช้ วิธี Relay Attack จากการหลอกสัญญาณ Key Fob
ref : Vehicle relay hacking keyless car theft | Hard-Off Security Ltd (hard-off-security.com)
STEP 2 : Become The Boss
หลังจากที่เราหาทางเข้าได้แล้ว เราก็ทำการหาช่องโหว่ เพื่อที่จะสามารถนำไปสู่การควบคุมโดยสมบูรณ์ ในขั้นตอนต่อไป
ref : The Car Hackers HandBook
หลังจากที่เราได้ว่าง Flowchart ในขั้นตอนแรกไป ถ้าเราเริ่มนำมาเชื่อมโยงกันว่าระบบต่างๆ ได้นำข้อมูลจาก Input ไปไว้ที่ Process อะไรบ้างก็จะทำให้เราเข้าใจการทำงานของระบบมากขึ้นครับ
STEP 3 : Control Everything
สุดท้าย Control Everything เราก็จะสามารถทำการควบคุมระบบนั้นๆ ได้อย่างเต็มรูปแบบครับ
ตัวอย่าง Case
💀Jeep Hack 2014
💀Lexus Hack 2020
ref :
หลังจากที่เราได้เรียนรู้ถึงแนวคิดและที่มาที่ไปในการเจาะระบบในรถแล้ว เรามาดูกันครับว่า ในเรื่องของ Bluetooth เนี่ยเราสามารถเล่นอะไรกับมันได้บ้างครับ
Bluetooth Security and Hands-on
สำหรับหัวข้อนี้เรียกได้ว่าเป็นเครือข่ายพื้นฐานที่เราจะสามารถพบได้ในรถยนตร์ทั่วไปที่ใช้งานกันอยู่ทั่วโลกในยุคปัจจุบัน ซึ่งเราจะได้เรียนรู้ตามเนื้อหาดังต่อไปนี้ครับ
Bluetooth Basics and Architecture
มีมจาก Car Hacking Village 😅
Concept
เป็นเทคโนโลยีทดแทนสายเคเบิล
การสื่อสารไร้สายระยะใกล้ บลูทูธทำงานได้ดีในระยะประมาณ 10 เมตร ซึ่งเหมาะสำหรับการใช้งานส่วนบุคคลหรือในพื้นที่จำกัด
Pairing-based Authentication เมื่อเราเชื่อมต่ออุปกรณ์บลูทูธครั้งแรก จะมีกระบวนการ "Pairing" ซึ่งเป็นการสร้างการเชื่อมต่อที่ปลอดภัยระหว่างอุปกรณ์ทั้งสอง หลังจากนั้น อุปกรณ์จะจดจำกันและเชื่อมต่อกันโดยอัตโนมัติเมื่ออยู่ในระยะ
เป็นข้อกำหนดมากกว่าโปรโตคอล บลูทูธเป็นชุดของมาตรฐานที่กำหนดวิธีการสื่อสารระหว่างอุปกรณ์ ไม่ใช่เพียงแค่โปรโตคอลการสื่อสารเดียว แต่เป็นชุดของข้อกำหนดที่ครอบคลุมหลายด้าน เช่น การเชื่อมต่อ การส่งข้อมูล และการรักษาความปลอดภัย
Bluetooth Special Interest Group (SIG) องค์กรนี้ประกอบด้วยบริษัทเทคโนโลยีชั้นนำหลายแห่ง ทำหน้าที่พัฒนาและปรับปรุงมาตรฐานบลูทูธอย่างต่อเนื่อง เพื่อให้มั่นใจว่าเทคโนโลยีนี้จะทันสมัยและตอบสนองความต้องการของผู้ใช้และอุตสาหกรรม
Physical Layer
2.4 Ghz Spectrum
บลูทูธใช้คลื่นความถี่ 2.4 GHz ซึ่งอยู่ในย่าน ISM (Industrial, Scientific, and Medical) ย่านนี้เป็นย่านความถี่ที่ใช้งานได้ฟรีโดยไม่ต้องขออนุญาต นอกจากบลูทูธแล้ว Wi-Fi ก็ใช้ย่านความถี่นี้เช่นกัน เปรียบเทียบให้เห็นภาพง่ายๆ ก็เหมือนกับถนนสายหนึ่งที่มีรถหลายประเภทวิ่งอยู่ บลูทูธและ Wi-Fi ก็เหมือนรถต่างชนิดที่ต้องใช้ถนนเส้นเดียวกันครับ การแบ่งช่องสัญญาณ บลูทูธแบ่งย่านความถี่ 2.4 GHz ออกเป็นช่องย่อยๆ ได้แก่
บลูทูธแบบดั้งเดิม (Classic Bluetooth) แบ่งเป็น 79 ช่อง แต่ละช่องกว้าง 1 MHz
บลูทูธพลังงานต่ำ (Bluetooth Low Energy หรือ BLE) แบ่งเป็น 40 ช่อง แต่ละช่องกว้าง 2 MHz
ref : Bluetooth Technology Overview | Bluetooth® Technology Website
รู้จัก Wi-Fi Channel & DFS - SIAM Wireless by ONEHS (onehospitality.co.th)
Monitor Mode
หรือบางครั้งเรียกว่า Promiscuous Mode ในบริบทของการสื่อสารไร้สาย เป็นฟังก์ชันที่ช่วยให้อุปกรณ์สามารถจับข้อมูลทั้งหมดที่ส่งผ่านเครือข่ายไร้สายได้โดยไม่สนใจว่าข้อมูลนั้นจะถูกส่งไปที่ไหน เช่นเดียวกับในเครือข่าย Wi-Fi โหมดนี้ถูกใช้อย่างแพร่หลายสำหรับ การวิเคราะห์เครือข่าย การแก้ไขปัญหา และการประเมินความปลอดภัย อย่างไรก็ตาม ในระบบบลูทูธ ความสามารถนี้ไม่ได้มีให้ใช้งานอย่างทั่วไปและไม่ง่ายที่จะนำมาใช้ครับ เนื่องจากบลูทูธไม่ได้รองรับโหมดมอนิเตอร์แบบเดียวกับ Wi-Fi โดยตรง การจับข้อมูลบลูทูธแบบเงียบๆ ทำได้ยากเพราะธรรมชาติของเทคโนโลยีที่เรียกว่า "Frequency Hopping Spread Spectrum (FHSS)"
Frequency Hopping
การกระจายสเปกตรัมด้วยการกระโดดความถี่ ซึ่งเป็นวิธีการที่บลูทูธใช้ในการส่งข้อมูล โดยจะสลับความถี่อย่างรวดเร็วระหว่างการส่งข้อมูล ทำให้ยากที่จะจับและติดตามการสื่อสารโดยไม่มีอุปกรณ์และซอฟต์แวร์พิเศษ
มีมจาก Car Hacking Village 😅
แต่ก็มีเครื่องมือและเทคนิคที่สามารถใช้เพื่อดักจับได้ครับ
🛠️เครื่องมือที่เป็นฮาร์ดแวร์
Sniffing เครื่องดักจับสัญญาณบลูทูธ อุปกรณ์ฮาร์ดแวร์พิเศษที่สามารถจับข้อมูลบลูทูธได้โดยการติดตามรูปแบบการกระโดดความถี่ของอุปกรณ์ที่กำลังถูกติดตาม เครื่องมือนี้ถูกออกแบบมาให้รับมือกับการเปลี่ยนความถี่อย่างรวดเร็วและสามารถจับข้อมูลบลูทูธได้หลากหลายรูปแบบ เช่น
Ellisys - Bluetooth Explorer - Bluetooth Protocol Analysis System
Software Defined Radio (SDR) for Hackers: Setting Up Your HackRF One – Hackers-Arise
mikeryan/ice9-bluetooth-sniffer: Wireshark-compatible all-channel BLE sniffer for bladeRF, with wideband Bluetooth sniffing for HackRF and USRP (github.com)
โดยส่วนใหญ่จะใช้สายอากาศ แบบ Omnidirectional Antenna เพื่อให้ครอบคลุมในระยะจุดพื้นที่ที่เราสนใจโดยรอบ
The radiation pattern of a simple omnidirectional antenna
Animation of an omnidirectional half-wave dipole
🛠️เครื่องมือซอฟต์แวร์
ซอฟต์แวร์บางตัวสามารถใช้ร่วมกับอะแดปเตอร์บลูทูธที่เข้ากันได้เพื่อจับและวิเคราะห์ข้อมูลบลูทูธ ตัวอย่างเช่น Wireshark ที่มีปลั๊กอินสำหรับบลูทูธ หรือเครื่องมืออย่าง BlueZ ในระบบลินุกซ์ ซึ่งมีความสามารถในการดักจับการสื่อสารบลูทูธได้บางส่วน
แล้วก็ล่าสุดก็มี อีกอุปกรณ์ที่ All in One ในอุปกรณ์เดียวจาก Hak5 นั้นคือ
Design ยังกะ Iron Man Arc Reactor 😄
Architecture
ภาพจาก Car Hacking Village
เรามาดูโครงสร้างของบลูทูธ กันครับ
🔴ชั้นล่างสุด
Bluetooth Radio
เป็นส่วนฮาร์ดแวร์ที่ทำหน้าที่รับส่งสัญญาณวิทยุ
Baseband Link Layer
จัดการการเชื่อมต่อระดับพื้นฐาน
Device Manager และ Link Manager Protocol (LMP)
ควบคุมอุปกรณ์และการจัดการการเชื่อมต่อ
⚫ชั้นกลาง
Host Controller Interface Layer (HCI)
เป็นส่วนเชื่อมต่อระหว่างฮาร์ดแวร์และซอฟต์แวร์
🟢ชั้นบน
Logical Link Control and Adaptation Protocol (L2CAP)
จัดการการเชื่อมต่อทางตรรกะ
RFCOMM
โปรโตคอลที่จำลองพอร์ตอนุกรม
Service Discovery Protocol (SDP)
ใช้ค้นหาบริการที่มีอยู่
ชั้นแอปพลิเคชัน
แสดงตัวอย่างแอปพลิเคชันที่ใช้บลูทูธ เช่น FTP, VCARD, OBEX, TCP/UDP, IP, PPP และอื่นๆ
Implementations
ภาพจาก Car Hacking Village
จากภาพก็จะเป็นการออกแบบระบบบลูทูธ 3 แบบ ครับ
Isolated Design (การออกแบบแบบแยกส่วน)
แอปพลิเคชันซอฟต์แวร์ (Application SW)
แยกออกจากชุดควบคุมบลูทูธ (Full BT Stack)
ทั้งสองส่วนสื่อสารกันผ่านวิธีการสื่อสารแบบง่าย เช่น I2C หรือ SPI
เหมาะสำหรับระบบที่ต้องการแยกการทำงานของแอปพลิเคชันและบลูทูธอย่างชัดเจน
Mixed Design (การออกแบบแบบผสม)
แบ่งเป็น 3 ส่วน แอปพลิเคชันซอฟต์แวร์, BT Host Stack, และ BT Controller Stack
BT Host Stack อยู่ใกล้กับแอปพลิเคชันมากขึ้น
ใช้ HCI (Host Controller Interface) ในการสื่อสารระหว่าง Host และ Controller
เหมาะสำหรับระบบที่ต้องการความยืดหยุ่นในการจัดการบลูทูธ
Integrated Design (การออกแบบแบบบูรณาการ)
ทุกส่วนรวมอยู่ในชิปเดียวกัน
แอปพลิเคชันซอฟต์แวร์และชุดควบคุมบลูทูธทั้งหมด (Full BT Stack) อยู่รวมกัน
ใช้ Internal API ในการสื่อสารระหว่างส่วนต่างๆ
เหมาะสำหรับอุปกรณ์ขนาดเล็กที่ต้องการประสิทธิภาพสูงและใช้พื้นที่น้อย
โดยสรุปนะครับแต่ละแบบจะมีข้อดีและข้อเสียต่างกัน ขึ้นอยู่กับการใช้งานตามความเหมาะสมครับ
Isolated Design ให้ความยืดหยุ่นสูง แต่อาจมีประสิทธิภาพต่ำกว่า
Mixed Design สมดุลระหว่างความยืดหยุ่นและประสิทธิภาพ
Integrated Design มีประสิทธิภาพสูงสุด แต่ยืดหยุ่นน้อยที่สุด
เป็นยังไงกันบ้างครับสำหรับพื้นฐานในเรื่องของ Bluetooth ที่นี้หลังจากที่เราเข้าใจในระบบการทำงานของ Bluetooth แล้ว เรามาดูกันในหัวข้อต่อไปว่าในความปลอดภัยและช่องโหว่เป็นยังไงครับ
Bluetooth Security and Vulnerabilities
สำหรับในหัวข้อนี้เราจะมาดูกันครับว่า ประวัติของความเป็นมา คุณสมบัติด้านความปลอดภัยรวมไปถึงช่องโหว่ของ Bluetooth จะเป็นยังไงไปดูกันครับ
Features
🛡️ Frequency Hopping
อย่างที่เราได้ทราบกันไปว่าคุณสมบัติของบลูทูธจะทำให้อุปกรณ์เปลี่ยนความถี่อย่างรวดเร็วในขณะส่งข้อมูล ดังนั้นคุณสมบัติดังกล่าวจึงสามารถที่จะลดความเสี่ยงในโจมตีได้แก่
Deter Sniffing (ป้องกันการดักจับสัญญาณ)
การเปลี่ยนความถี่อย่างรวดเร็วทำให้ยากสำหรับผู้โจมตีที่จะจับและติดตามการสื่อสารได้ เพราะอุปกรณ์บลูทูธจะสลับไปมาระหว่าง 79 ช่อง (สำหรับบลูทูธแบบดั้งเดิม) หรือ 40 ช่อง (สำหรับบลูทูธพลังงานต่ำ) ถึง 1,600 ครั้งต่อวินาที
Reduced Interference (ลดสัญญาณรบกวน)
การกระโดดความถี่ยังช่วยลดโอกาสที่จะเกิดสัญญาณรบกวนจากอุปกรณ์ไร้สายอื่นๆ ที่ใช้คลื่นความถี่ 2.4 GHz เช่นกัน ทำให้การสื่อสารมีความน่าเชื่อถือและปลอดภัยมากขึ้น
🛡️ Invisible Mode
อุปกรณ์บลูทูธสามารถทำงานในโหมดต่างๆได้ครับ
Discoverable Mode
ในโหมดนี้ อุปกรณ์บลูทูธจะส่งสัญญาณแจ้งการมีอยู่ของตัวเองให้อุปกรณ์อื่นๆ ในบริเวณใกล้เคียงทราบ ทำให้ง่ายต่อการเชื่อมต่อใหม่ แต่ก็อาจเสี่ยงต่อการถูกโจมตีได้ง่ายขึ้นเช่นกัน
Non-Discoverable Mode
ในโหมดนี้ อุปกรณ์จะไม่ส่งสัญญาณแจ้งการมีอยู่ของตัวเอง ทำให้เสมือน "มองไม่เห็น" สำหรับอุปกรณ์อื่นๆ ที่ไม่รู้จักที่อยู่ของมัน ช่วยลดความเสี่ยงจากการพยายามเชื่อมต่อโดยไม่ได้รับอนุญาต
🛡️ Pairing-Based Authentication
การจับคู่เป็นกระบวนการสร้างความสัมพันธ์ที่เชื่อถือได้ระหว่างอุปกรณ์บลูทูธสองเครื่อง ในระหว่างการจับคู่ อุปกรณ์จะแลกเปลี่ยนกุญแจเข้ารหัสที่ใช้ในการยืนยันตัวตนและเข้ารหัสการสื่อสารในอนาคต ซึ่งคุณสมบัติความปลอดภัยหลักของการจับคู่บลูทูธ มีดังนี้ครับ
Authentication
ทำให้มั่นใจว่าอุปกรณ์ที่เกี่ยวข้องในการสื่อสารเป็นอุปกรณ์ที่ถูกต้องจริงๆ โดยปกติจะใช้การยืนยันตัวตนแบบสองทาง คือทั้งสองอุปกรณ์ต้องยืนยันตัวตนซึ่งกันและกัน
Encryption
ป้องกันข้อมูลที่แลกเปลี่ยนระหว่างอุปกรณ์ที่จับคู่กันจากการถูกดักจับและอ่านโดยบุคคลที่ไม่ได้รับอนุญาต บลูทูธรุ่นใหม่รองรับมาตรฐานการเข้ารหัสที่แข็งแกร่ง ให้ความปลอดภัยในระดับดีเมื่อใช้งานอย่างถูกต้อง
โดย Pairing Methods มีวิธีการจับคู่ที่แตกต่างกันซึ่งให้ระดับความปลอดภัยที่ต่างกันครับ ได้แก่
Legacy Pairing
หรือ การจับคู่แบบดั้งเดิม อุปกรณ์บลูทูธรุ่นแรกๆ ใช้รหัส PIN อย่างง่ายในการจับคู่ ซึ่งมักจะสั้นและเดาได้ง่าย ทำให้ง่ายต่อการโจมตีแบบ brute force และมีความปลอดภัยน้อยกว่าและอาจถูกโจมตีได้ง่าย เช่น การดักฟัง
Secure Simple Pairing (SSP)
แนะนำในบลูทูธเวอร์ชัน 2.1 SSP เพื่อเพิ่มความปลอดภัยโดยใช้วิธี Elliptic Curve Diffie-Hellman (ECDH) สำหรับการแลกเปลี่ยนกุญแจ และมีรูปแบบการจับคู่หลายแบบเพื่อให้เหมาะกับการใช้งานต่างๆ เช่น Just Works, Numeric Comparison, Passkey Entry และ Out of Band
History
⏳ Early Bluetooth (ประมาณปี 1998 - 2007)
ในช่วงแรกของบลูทูธ ความปลอดภัยเป็นปัญหาใหญ่ เนื่องจากมีจุดอ่อนหลายอย่างและมาตรการรักษาความปลอดภัยที่ไม่แข็งแรง ซึ่งปัญหาความปลอดภัยที่พบบ่อยในช่วงนี้ได้แก่
💀BlueSnarfing
เป็นการโจมตีที่ผู้ไม่ได้รับอนุญาตสามารถเชื่อมต่อกับอุปกรณ์บลูทูธโดยที่เจ้าของไม่รู้ตัว และเข้าถึงข้อมูลต่างๆ เช่น รายชื่อติดต่อ ข้อความ และปฏิทิน
ref : Bluesnarfing คืออะไร ? และจะป้องกันการโจมตีแบบ Bluesnarfing ได้อย่างไร ? (antivirus.in.th)
💀BlueJacking
เป็นวิธีการส่งข้อความที่ไม่ได้รับอนุญาตไปยังอุปกรณ์บลูทูธที่อยู่ใกล้เคียง มักใช้ในการ social engineering
⏳ Bluetooth 2.1 + EDR (2007)
เมื่อมีการเปิดตัวบลูทูธ 2.1 + EDR (Enhanced Data Rate) ในปี 2007 ได้มีการปรับปรุงส่วนที่สำคัญเพื่อเพิ่มความปลอดภัย มากขึ้นครับ มีดังนี้
- Secure Simple Pairing (SSP): การจับคู่แบบง่ายและปลอดภัย โดยวิธีการจับคู่ใหม่นี้มาแทนที่การจับคู่แบบดั้งเดิมที่ไม่ปลอดภัย SSP ใช้วิธี Elliptic Curve Diffie-Hellman (ECDH) ในการแลกเปลี่ยนกุญแจ ซึ่งให้การยืนยันตัวตนและการเข้ารหัสที่แข็งแรงกว่า นอกจากนี้ยังแนะนำรูปแบบการเชื่อมต่อหลายแบบ (เช่น Just Works, Numeric Comparison, Passkey Entry, และ Out of Band) เพื่อรองรับความต้องการด้านความปลอดภัยที่แตกต่างกัน
- การเข้ารหัสที่ดีขึ้น: บลูทูธ 2.1 + EDR นำอัลกอริทึมการเข้ารหัสที่ดีขึ้นมาใช้ ทำให้ยากขึ้นสำหรับผู้โจมตีที่จะดักจับและถอดรหัสข้อมูล
ซึ่งหลังจากที่มีการปรับปรุงสิ่งเหล่านี้ทำให้บลูทูธปลอดภัยขึ้นอย่างมาก นำไปสู่ช่วงเวลาที่มีการวิจัยด้านความปลอดภัยของบลูทูธลดลง เนื่องจากเทคโนโลยีนี้ถูกมองว่า ค่อนข้างปลอดภัยแล้ว😅
⏳ Renaissance (ประมาณปี 2017 - ปัจจุบัน)
ต่อมาประมาณปี 2017 การวิจัยด้านความปลอดภัยของบลูทูธได้กลับมาได้รับความสนใจอีกครั้ง ส่วนหนึ่งเป็นเพราะการค้นพบจุดอ่อนใหม่ๆ เช่น BlueBorne ครับ
ระวัง BlueBorne เจาะข้อมูลผ่าน Bluetooth รีบอัพเดตแพตช์ความปลอดภัยโดยไว (techhub.in.th)
เตือนภัยช่องโหว่ BlueBorne แค่เปิด Bluetooth ค้างไว้ก็ถูก Hack ได้ - Hostatom Web Hosting
- BlueBorne: เป็นช่องโหว่ที่ส่งผลกระทบต่ออุปกรณ์บลูทูธหลากหลายประเภท ตามรายงานของ Armis "ช่องทางการโจมตี BlueBorne สามารถส่งผลกระทบต่ออุปกรณ์ทุกชนิดที่สามารถเชื่อมต่อกับบลูทูธ ซึ่งประมาณการว่ามีมากกว่า 8.2 พันล้านเครื่องในปี 2017" โดยช่องโหว่เหล่านี้ทำให้ผู้โจมตีสามารถควบคุมอุปกรณ์ รันโค้ดจากระยะไกล และแพร่กระจายมัลแวร์ผ่านการเชื่อมต่อบลูทูธได้โดยที่ผู้ใช้ไม่ต้องทำอะไรเลย การเปิดเผยเรื่อง BlueBorne ทำให้เกิดความสนใจในความปลอดภัยของบลูทูธอีกครั้ง และชี้ให้เห็นถึงความจำเป็นในการเฝ้าระวังและปรับปรุงมาตรการรักษาความปลอดภัยอย่างต่อเนื่อง จนถึงปัจจุบัน
ref : NVD - CVE-2017-14315 (nist.gov)
ดังนั้นช่วงจึงนี้มีการวิจัยด้านความปลอดภัยเพิ่มขึ้น เพื่อนำไปสู่การค้นพบช่องโหว่ใหม่ๆ และการพัฒนาโปรโตคอลความปลอดภัยที่แข็งแกร่งขึ้น อุตสาหกรรมยานยนต์ซึ่งพึ่งพาบลูทูธสำหรับฟังก์ชันต่างๆ ก็ได้รับประโยชน์จากความก้าวหน้าเหล่านี้ ทำให้รถยนต์สมัยใหม่มีการป้องกันที่ดีขึ้นจากการโจมตีผ่านบลูทูธครับ
ตารางข้างต้นแสดงข้อมูลเกี่ยวกับโหมดความปลอดภัยต่างๆ ของระบบบลูทูธ โดยแบ่งเป็น 5 ระดับ ตั้งแต่ 0 ถึง 4 ผมจะอธิบายรายละเอียดแต่ละส่วนนะครับ
โหมดความปลอดภัย (Security Mode): มีทั้งหมด 5 ระดับ: 0, 1, 2, 3 และ 4 ยิ่งตัวเลขสูง ความปลอดภัยก็จะยิ่งสูงขึ้น
อัลกอริทึมที่ได้รับการรับรองจาก FIPS (FIPS Approved Algorithms): FIPS คือมาตรฐานการประมวลผลข้อมูลของรัฐบาลสหรัฐฯ เฉพาะโหมด 4 เท่านั้นที่ใช้อัลกอริทึมที่ได้รับการรับรอง FIPS โหมดอื่นๆ ไม่ได้ใช้อัลกอริทึมที่ได้รับการรับรอง FIPS
การป้องกัน MITM (MITM Protection)
หรือ Man-in-the-Middle เป็นการโจมตีที่ผู้ไม่ประสงค์ดีแทรกตัวเข้ามาระหว่างการสื่อสารของสองฝ่าย
โหมด 3 และ 4 มีการป้องกัน MITM
โหมด 0, 1 และ 2 ไม่มีการป้องกัน MITM
การมีส่วนร่วมของผู้ใช้ระหว่างการจับคู่ (User Interaction During Pairing)
โหมด 3 และ 4: "Acceptable" หมายถึงผู้ใช้อาจต้องมีส่วนร่วมในกระบวนการจับคู่
โหมด 1 และ 2: "Minimal" หมายถึงผู้ใช้มีส่วนร่วมน้อยมากในกระบวนการจับคู่
โหมด 0: "None" หมายถึงผู้ใช้ไม่ต้องมีส่วนร่วมเลยในกระบวนการจับคู่
การเข้ารหัสที่จำเป็น (Encryption Required)
ทุกโหมดยกเว้นโหมด 0 ต้องมีการเข้ารหัสโหมด 0 ไม่จำเป็นต้องมีการเข้ารหัส
ขั้นตอนการรักษาความปลอดภัย (Security Procedures Steps)
โหมด 4: "Service" หมายถึงการรักษาความปลอดภัยเกิดขึ้นที่ระดับบริการ
โหมด 3: "Link" หมายถึงการรักษาความปลอดภัยเกิดขึ้นที่ระดับการเชื่อมต่อ
โหมด 2: "Service" เช่นเดียวกับโหมด 4 แต่ความปลอดภัยน้อยกว่า
โหมด 1: "Never" หมายถึงไม่มีขั้นตอนการรักษาความปลอดภัย
โดยสรุปนะครับ โหมด 4 มีความปลอดภัยสูงสุด มีการป้องกันที่ครอบคลุมที่สุด ในขณะที่โหมด 0 มีความปลอดภัยต่ำสุด ไม่มีการป้องกันใดๆ แต่ง่ายต่อการใช้งานมากที่สุด ดังนั้นผู้ใช้ควรเลือกโหมดที่เหมาะสมกับความต้องการด้านความปลอดภัยและความสะดวกในการใช้งานครับ
ต่อมา ทางวิทยากรก็ได้มาพูดเกี่ยวกับ โพสของ user @jiska@chaos.social ครับ
ภาพจาก Car Hacking Village
จุดสำคัญในกราฟมี 2 จุด คือ
"The Valley" เป็นช่วงระหว่างปี 2006 ถึง 2017 ที่จำนวนช่องโหว่ที่ถูกค้นพบค่อนข้างต่ำและคงที่
"InternalBlue" มีการเพิ่มขึ้นอย่างมากของจำนวนช่องโหว่ที่ถูกค้นพบ ซึ่งตรงกับปีที่ InternalBlue ถูกเปิดตัว จำนวนช่องโหว่พุ่งสูงถึง 113 รายการในปี 2020
สิ่งที่น่าสนใจคือ หลังจากการเปิดตัว InternalBlue จำนวนช่องโหว่ที่ถูกค้นพบเพิ่มขึ้นอย่างมีนัยสำคัญจากกราฟ ซึ่งบ่งชี้ว่าเครื่องมือนี้มีประสิทธิภาพในการค้นหาปัญหาความปลอดภัยที่ซ่อนอยู่ในระบบ Bluetooth นั่นเองครับ
Modern Security
Afero News: Secured by Afero™ Devices Are Immune to Bluetooth KNOB Vulnerabilities
💀BlueBorne (2560)
เป็นช่องโหว่ความปลอดภัยที่ร้ายแรงในระบบบลูทูธ ค้นพบโดยบริษัท Armis Labs ในปี 2560 ช่องโหว่นี้ส่งผลกระทบต่ออุปกรณ์หลายพันล้านเครื่องที่ใช้ระบบปฏิบัติการต่างๆ เช่น Android, Windows, Linux และ iOS
ลักษณะสำคัญของ BlueBorne
Remote Code Execution
ผู้โจมตีสามารถสั่งให้อุปกรณ์เป้าหมายทำงานตามที่ต้องการได้ โดยมีสิทธิ์ระดับสูงในระบบ
Zero-Click Exploitation
สามารถโจมตีได้โดยที่ผู้ใช้ไม่ต้องทำอะไรเลย เพียงแค่อยู่ในระยะที่สัญญาณบลูทูธเข้าถึงได้
ref : https://www.armis.com/blueborne/
💀InternalBlue (2561)
เป็นเครื่องมือที่พัฒนาขึ้นในปี 2561 เพื่อใช้แก้ไขชิปบลูทูธบางรุ่นของ Broadcom ช่วยให้นักวิจัยสามารถเข้าถึงฟังก์ชันในระดับล่างของระบบบลูทูธได้ และทำให้สามารถค้นหาและแก้ไขช่องโหว่ในระดับลึกได้
ความสำคัญของ InternalBlue
Access to Lower-Layer Functions
เครื่องมือนี้ทำให้นักวิจัยสามารถโต้ตอบและแก้ไขเฟิร์มแวร์ของชิปบลูทูธ Broadcom ได้ ทำให้พบช่องโหว่ที่เคยตรวจสอบได้ยาก
Discovery of New Vulnerabilities
InternalBlue ช่วยให้ค้นพบช่องโหว่สำคัญหลายอย่างในระบบบลูทูธ เช่น การโจมตีแบบ KNOB และ BlueFrag
ref :
seemoo-lab/internalblue: Bluetooth experimentation framework for Broadcom and Cypress chips. (github.com)
💀KNOB (2562)
การโจมตีแบบ KNOB (Key Negotiation of Bluetooth) ค้นพบในปี 2562 เป็นข้อบกพร่องในระดับโปรโตคอลที่ส่งผลกระทบต่อมาตรฐานบลูทูธโดยตรง
รายละเอียดสำคัญของการโจมตีแบบ KNOB
Encryption Key Entropy Reduction
การโจมตีนี้ใช้ประโยชน์จากข้อบกพร่องในโปรโตคอลบลูทูธ ที่ทำให้ผู้โจมตีสามารถต่อรองให้ความยาวของกุญแจเข้ารหัสลดลงเหลือเพียง 1 ไบต์ (8 บิต) ซึ่งทำให้ความปลอดภัยของการเชื่อมต่อลดลงอย่างมาก
Wide Impact
เนื่องจากเป็นช่องโหว่ในมาตรฐานบลูทูธ จึงส่งผลกระทบต่ออุปกรณ์บลูทูธจำนวนมาก
ref : https://knobattack.com/
💀BlueFrag(2020)
เป็นช่องโหว่ความปลอดภัยในระบบบลูทูธที่ส่งผลกระทบต่ออุปกรณ์ Android โดยเฉพาะ ช่องโหว่นี้มีความอันตรายมากเพราะสามารถถูกใช้โจมตีได้โดยที่ผู้ใช้ไม่ต้องทำอะไรเลย
ลักษณะสำคัญของ BlueFrag
Remote Code Execution
ผู้โจมตีสามารถส่งคำสั่งให้อุปกรณ์ Android เป้าหมายทำงานตามที่ต้องการได้ เช่น ติดตั้งโปรแกรมอันตราย ขโมยข้อมูล หรือควบคุมอุปกรณ์
No User Interaction
ช่องโหว่นี้สามารถถูกใช้โจมตีได้โดยที่เจ้าของอุปกรณ์ไม่ต้องกดอะไร หรือรู้ตัวเลย ทำให้อันตรายมาก เพราะผู้ใช้อาจถูกโจมตีโดยไม่รู้ตัว
ref : https://insinuator.net/2020/04/cve-2020-0022-an-android-8-0-9-0-bluetooth-zero-click-rce-bluefrag/
💀BIAS (2020)
เป็นการโจมตีที่มุ่งเป้าไปที่วิธีการยืนยันตัวตนของอุปกรณ์บลูทูธ โดยใช้ประโยชน์จากข้อบกพร่องในขั้นตอนการตรวจสอบ long-term key ทำให้ผู้โจมตีสามารถปลอมตัวเป็นอุปกรณ์ที่เคยจับคู่มาก่อนได้
ลักษณะสำคัญของ BIAS
Bluetooth Impersonation
ผู้โจมตีสามารถแอบอ้างเป็นอุปกรณ์ที่คุณเคยเชื่อมต่อและไว้ใจมาก่อน เช่น หูฟังไร้สาย หรือลำโพงบลูทูธของคุณ
Role Change Exploitation
ผู้โจมตีใช้ประโยชน์จากวิธีการที่อุปกรณ์บลูทูธสลับบทบาทกันในขณะเชื่อมต่อ เพื่อหลบเลี่ยงการตรวจสอบความปลอดภัย
ref :
💀Braktooth(2021)
เป็นช่องโหว่ที่มุ่งเป้าไปที่ระบบการทำงานพื้นฐานของบลูทูธ ครอบคลุมการโจมตีหลายรูปแบบ:
Denial of Service (DoS)
บางช่องโหว่ทำให้ผู้โจมตีสามารถทำให้อุปกรณ์บลูทูธค้างหรือหยุดทำงานได้
Remote Code Execution (RCE)
บางช่องโหว่ทำให้ผู้โจมตีสามารถส่งคำสั่งให้อุปกรณ์เป้าหมายทำงานตามที่ต้องการได้ เช่น ติดตั้งโปรแกรมอันตราย หรือขโมยข้อมูลส่วนตัว
ref :
โดยวิทยากร สนใจช่องโหว่ BIAS (2020) เป็นพิเศษครับ
BIAS Attack
Alice และ Bob เป็นอุปกรณ์ที่เคยจับคู่กันมาก่อน และมี long-term key ร่วมกัน
Charlie เป็นผู้โจมตีที่พยายามแทรกแซงการเชื่อมต่อ
Charlie สามารถปลอมตัวเป็น Bob เพื่อหลอก Alice หรือปลอมตัวเป็น Alice เพื่อหลอก Bob ได้
Alice (slave) มีกุญแจ KL ที่แชร์กับ Bob แต่ไม่ได้แชร์กับ Charlie
Charlie (master) ส่งคำขอเชื่อมต่อไปยัง Alice โดยแอบอ้างว่าเป็น Bob
Alice ตอบรับการเชื่อมต่อ เพราะคิดว่าเป็น Bob จริงๆ
Charlie สร้างค่าสุ่ม CM
Alice ส่งค่า RS ที่คำนวณจากกุญแจ KL, CM, และค่า BTADDS
จากนั้นทั้งสองฝ่ายเริ่มกระบวนการสร้างกุญแจเซสชันและเปิดใช้การเชื่อมต่อที่ปลอดภัย
ในที่สุด Charlie สามารถปลอมตัวเป็น Bob (master) ได้สำเร็จ
สรุปโดยรวมก็คือ ช่องโหว่นี้เกิดขึ้นเพราะระบบบลูทูธไม่ได้ตรวจสอบอย่างเข้มงวดว่าอุปกรณ์ที่พยายามเชื่อมต่อนั้นมี long-term key ที่ถูกต้องจริงๆ หรือไม่ ทำให้ Charlie สามารถแทรกแซงและปลอมตัวเป็นอุปกรณ์ที่เคยจับคู่กันมาก่อนได้ ซึ่งการโจมตีแบบนี้อันตรายมาก เพราะทำให้ผู้โจมตีสามารถเข้าถึงข้อมูลที่ส่งผ่านการเชื่อมต่อบลูทูธ หรือควบคุมอุปกรณ์เป้าหมายได้ โดยที่เหยื่อไม่รู้ตัววิธีการป้องกันการโจมตีแบบนี้ ผู้ใช้ควรอัปเดตอุปกรณ์และซอฟต์แวร์ให้เป็นเวอร์ชันล่าสุดเสมอ และระมัดระวังเมื่อต้องเชื่อมต่อกับอุปกรณ์บลูทูธในที่สาธารณะครับ
Classification
ภาพจาก Car Hacking Village
สำหรับตารางนี้ก็จะแสดงประเภทของช่องโหว่ในเทคโนโลยี Bluetooth แบ่งออกเป็น 3 ระดับดังนี้
ระดับการนำไปใช้งาน (Implementation Level)
คือข้อบกพร่องหรือช่องโหว่ที่เกิดขึ้นในการนำโปรโตคอล Bluetooth ไปใช้งานจริง
ตัวอย่างเช่น BleedingTooth และ BlueBorne ซึ่งเป็นช่องโหว่ที่รู้จักกันดีในวงการความปลอดภัย
ระดับข้อกำหนด (Specification Level)
เกี่ยวข้องกับปัญหาทางตรรกะในการออกแบบข้อกำหนดของ Bluetooth
ตัวอย่างเช่น BIAS และ KNOB ซึ่งเป็นช่องโหว่ที่เกิดจากจุดอ่อนในมาตรฐานของ Bluetooth นั่นเอง
ระดับแอปพลิเคชัน (Application Level)
หมายถึงข้อบกพร่องหรือช่องโหว่ในซอฟต์แวร์แอปพลิเคชันที่เชื่อมต่อกับเครือข่าย Bluetooth
ตัวอย่างส่วนใหญ่จะเป็นช่องโหว่เฉพาะผลิตภัณฑ์ ซึ่งมักจะถูกระบุเป็น CVE (Common Vulnerabilities and Exposures)
Automotive Bluetooth security case studies
หัวข้อนี้เราจะมาดูใน case studies ของช่องโหว่ที่ถูกนำไปใช้งานจริงครับ
Lexus Hack (2020)
กรณีการแฮ็กรถ Lexus ในปี 2020 ที่เปิดเผยโดยทีม Tencent Keen Labs มีช่องโหว่สำคัญหลายประการ
💀ช่องโหว่ BlueBorne
อนุญาตให้ทำ Remote Code Execution (RCE) ที่มีสิทธิ์สูงบนบอร์ดหลักของระบบข้อมูลและ SONY IVI
ผลกระทบ: ผู้โจมตีอาจควบคุมระบบสำคัญของรถจากระยะไกลได้
💀Backdoor ผ่าน Wi-Fi
ผู้โจมตีสามารถสร้างช่องทางลับเพื่อเข้าถึงระบบของรถผ่าน Wi-Fi
ผลกระทบ อาจทำให้เข้าถึงระบบรถจากระยะไกลได้ แม้ไม่อยู่ในระยะ Bluetooth
💀ขาดการตรวจสอบลายเซ็นเฟิร์มแวร์
ไม่มีการตรวจสอบความถูกต้องของลายเซ็นเฟิร์มแวร์
ผลกระทบ สามารถอัปโหลดและรันเฟิร์มแวร์ที่เป็นอันตรายบนบอร์ด SONY IVI ได้ ส่งผลต่อความปลอดภัยของรถ
💀การส่งข้อมูลผ่าน CAN Bus โดยไม่มีข้อจำกัด
สามารถส่งข้อความอะไรก็ได้ผ่านระบบ Controller Area Network (CAN) Bus
CAN Bus เป็นระบบสื่อสารสำคัญระหว่างส่วนประกอบต่างๆ ในรถ
ผลกระทบ อาจนำไปสู่การโจมตีหลายรูปแบบ เช่น การปลอมแปลงข้อมูล หรือการควบคุมรถโดยไม่ได้รับอนุญาต
ref : Vulnerabilities Expose Lexus, Toyota Cars to Hacker Attacks - SecurityWeek
Tesla BLE Relay Attack (May 2022)
การโจมตีแบบ BLE Relay ต่อรถ Tesla ในเดือนพฤษภาคม 2022 โดยกลุ่ม NCC Group มีรายละเอียดดังนี้
💀การโจมตีแบบ Relay
เป็นวิธีดักจับและส่งต่อการสื่อสารระหว่างอุปกรณ์สองเครื่อง
จุดประสงค์คือขยายระยะของสัญญาณ Bluetooth Low Energy (BLE)
💀เป้าหมายคือระบบ BLE Passive Entry
- ฟีเจอร์นี้ช่วยให้ผู้ใช้ปลดล็อกรถได้เมื่อกุญแจอยู่ในระยะ
💀การขยายระยะ BLE
ขยายระยะของสัญญาณ BLE ให้ไกลขึ้น
ทำให้ผู้โจมตีสามารถโต้ตอบกับระบบของรถจากระยะที่ไกลกว่าปกติ
💀การเข้าถึงระบบควบคุมรถ
- เมื่อการโจมตีสำเร็จ สามารถเข้าถึงระบบควบคุมรถโดยไม่ได้รับอนุญาต อาจรวมถึงการปลดล็อกประตูและฟังก์ชันอื่นๆ
Tesla Bluetooth RCE (Pwn2Own 2022)
ภาพจาก Car Hacking Village
จากภาพข้างต้นแสดงการโจมตีแบบ Remote Code Execution (RCE) ผ่าน Bluetooth ต่อรถยนต์ Tesla ที่สาธิตในงาน Pwn2Own 2022 โดยบริษัท Synacktiv ซึ่งมีรายละเอียดดังนี้
💀การโจมตีแบ่งเป็น 2 ส่วนหลัก
Media Domain: ส่วนที่ดูแลระบบมัลติมีเดียและการเชื่อมต่อ
Vehicle Domain: ส่วนควบคุมการทำงานของรถ
💀ขั้นตอนการโจมตี
ใช้ช่องโหว่ BlueZ เพื่อเข้าถึง bsa_server Application
ใช้ช่องโหว่ HCI เพื่อเข้าถึง Firmware ของ Bluetooth และ Wi-Fi
ใช้การอัปเดตเพื่อเข้าถึง Secure Gateway
💀ผลลัพธ์
สามารถเข้าถึงระดับ Root ใน Linux Kernel บน Media Domain
สามารถส่งคำสั่งผ่าน CAN Bus ไปยัง ECU ต่างๆ ของรถ
ซึ่งผลลัพธ์ที่เกิดขึ้นนั่นคือ เราสามารถ Remote Code Execution (RCE) ได้ครับ
ref :
Bluetooth Security Hands-on exercises
for Bluetooth scanning, pairing, and data transmission
ถึงส่วนที่ได้ปฏิบัติกันจริงๆ แล้วครับ 🥳 สำหรับ Hands-on เนี่ยทางวิทยากร ก็จะมี Worksheet มาให้แล้วให้เราหาข้อมูลตามที่กำหนดครับ
อุปกรณ์ที่เราใช้คือ
Bluetooth Dongle CSR 4.0
เครื่องเป้าหมายที่เราจะทดสอบคือ
SONY Aftermarket IVI System Bluetooth, USB, Infrared
1.Getting Started
ทำการใส่ Bluetooth Dongle CSR 4.0 แล้วเชื่อมกับ VMware
ทำการเปิด bluetooth interface โดยใช้คำสั่ง
sudo hciconfig hci0 up piscan
2.Bluetooth Scanning
ภาพจาก Car Hacking Village
ทำการค้นอุปกรณ์ Bluetooth ใกล้เคียงโดยใช้คำสั่ง
sudo hcitool scan
ผลลัพธ์
hcitool scan
Scanning ...
00:1A:7D:4D:4B:09 n/a
00:1A:7D:4D:4B:05 chvTraining
00:1A:7D:4D:4B:06 n/a
00:1A:7D:DA:71:15 chvTraining
00:1A:7D:4D:4B:04 chvTraining
E4:0C:FD:4F:A9:2A OPPO Reno5 5G
00:1A:7D:DA:71:13 chvTraining
00:1A:7D:4D:4B:0A chvTraining
00:1A:7D:DA:71:10 chvTraining
00:1A:7D:4D:4B:0C n/a
00:1A:7D:DA:71:12 n/a
00:19:5D:37:FD:EA OroJackson
28:11:A8:78:B7:1F ASUS-AS16
58:1C:F8:F4:18:97 BOOK-I0AFNC2SJC
F4:7B:09:6B:1C:54 LAPTOP-CQA118DI
68:54:5A:1A:96:2B DESKTOP-6QONJ5B.
Target : 00:19:5D:37:FD:EA OroJackson
รายละเอียดของ Bluetooth Address มีดังนี้ครับ
◦ 48-bit “unique” value
◦ AA:BB:CC:DD:EE:FF
◦ First 3 Bytes: Organizationally Unique Identifier (OUI)
◦ First 2: Non-significant. address Part
◦ Third: Upper Address Part
◦ Last 3 Bytes: Lower Address Part
◦ Normally invisible unless discoverable
*OUI =/= Chip manufacturer!
3.Enumerating Target Info
ภาพจาก Car Hacking Village
ทำการสแกนรายละเอียดเป้าหมายโดยใช้คำสั่ง
sudo hcitool info
ผลลัพธ์
hcitool info 00:19:5D:37:FD:EA
Requesting information ...
BD Address: 00:19:5D:37:FD:EA
OUI Company: ShenZhen XinHuaTong Opto Electronics Co.,Ltd (00-19-5D)
Device Name: OroJackson
LMP Version: 4.1 (0x7) LMP Subversion: 0x2209
Manufacturer: Broadcom Corporation (15)
Features page 0: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87
<3-slot packets> <5-slot packets> <encryption> <slot offset>
<timing accuracy> <role switch> <sniff mode> <RSSI>
<channel quality> <SCO link> <HV2 packets> <HV3 packets>
<u-law log> <A-law log> <CVSD> <paging scheme> <power control>
<transparent SCO> <broadcast encrypt> <EDR ACL 2 Mbps>
<EDR ACL 3 Mbps> <enhanced iscan> <interlaced iscan>
<interlaced pscan> <inquiry with RSSI> <extended SCO>
<EV4 packets> <EV5 packets> <AFH cap. slave>
<AFH class. slave> <LE support> <3-slot EDR ACL>
<5-slot EDR ACL> <sniff subrating> <pause encryption>
<AFH cap. master> <AFH class. master> <EDR eSCO 2 Mbps>
<EDR eSCO 3 Mbps> <3-slot EDR eSCO> <extended inquiry>
<LE and BR/EDR> <simple pairing> <encapsulated PDU>
<err. data report> <non-flush flag> <LSTO> <inquiry TX power>
<EPC> <extended features>
Features page 1: 0x0a 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Features page 2: 0x13 0x03 0x00 0x00 0x00 0x00 0x00 0x00
4.Identifying Services
sudo sdptool browse 00:19:5D:37:FD:EA
ผลลัพธ์
root@chvtraining:/home/mokoubuntu# sdptool browse 00:19:5D:37:FD:EA
Browsing 00:19:5D:37:FD:EA ...
Service RecHandle: 0x10000
Service Class ID List:
"PnP Information" (0x1200)
Profile Descriptor List:
"PnP Information" (0x1200)
Version: 0x0103
Browsing 00:19:5D:37:FD:EA ...
Service Search failed: Invalid argument
Service Name: S.E.R.A.P.H
Service Description: Secret Key 1 is hidden in another service on this machine! Search the sdp server for the service with the RecHandle 0x80108. The key is the value of Attribute Identifier 2023. Do you know how to browse Attribute Identifiers?
Service Provider: The pairing PIN is the inverse of the last 2 bytes of the BT Address! Btw here's another flag: flag{they_told_me_about_the_flag_format_kind_of_late}
Service RecHandle: 0x10006
Service Class ID List:
UUID 128: 88888888-1111-0000-1111-888888888888
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 22
Profile Descriptor List:
"Serial Port" (0x1101)
Version: 0x0100
Service Name: OBEX Phonebook Access Server
Service RecHandle: 0x10007
Service Class ID List:
"Phonebook Access - PSE" (0x112f)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 19
"OBEX" (0x0008)
Profile Descriptor List:
"Phonebook Access" (0x1130)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x30154
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x60103
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x70021
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x80085
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x80105
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x80108
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x82129
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
Service Name: OBEX File Transfer
Service RecHandle: 0x90105
Service Class ID List:
"OBEX File Transfer" (0x1106)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 10
"OBEX" (0x0008)
Profile Descriptor List:
"OBEX File Transfer" (0x1106)
Version: 0x0100
5.Analyzing Bluetooth Services
ข้อมูลที่น่าสนใจ คือ
Browsing 00:19:5D:37:FD:EA ...
Service Search failed: Invalid argument
Service Name: S.E.R.A.P.H
Service Description: Secret Key 1 is hidden in another service on this machine!
Search the sdp server for the service with the RecHandle 0x80108.
The key is the value of Attribute Identifier 2023.
Do you know how to browse Attribute Identifiers?
Service Provider:
The pairing PIN is the inverse of the last 2 bytes of the BT Address!
Btw here's another
flag: flag{they_told_me_about_the_flag_format_kind_of_late}
จากคำใบ้ " The key is the value of Attribute Identifier 2023" เราสามารถค้นหา Attribute Identifier ได้ครับเราก็จะได้ data นี้มา
sdptool browse --tree 00:19:5D:37:FD:EA
Attribute Identifier : 0x2023
Data : 52 68 6f 6e 67 6f 6d 79 6e 69 61 64 00
เราสามารถหา PIN ได้จากคำใบ้
"The pairing PIN is the inverse of the last 2 bytes of the BT Address!"
FD EA >> From Hex >> XOR key=ffff(HEX) >> To Decimal "2 21" >> invert >> 0215
6.Pairing Devices in Linux
ทำการสแกนหาเป้าหมายแล้วใช้เครื่องมือ "bluetoothctl"
sudo hciconfig hci0 sspmode 0
sudo bluetoothctl
[bluetooth]# scan on
สามารถทำการ pairing โดยใช้คำสั่ง "pair [target]" หรือจะเช็ครายละเอียดโดยใช้คำสั่ง "info [target]"
[bluetooth]# info 00:19:5D:37:FD:EA
Device 00:19:5D:37:FD:EA (public)
Name: OroJackson
Alias: OroJackson
Class: 0x005a020c
Icon: phone
Paired: no
Trusted: no
Blocked: no
Connected: no
LegacyPairing: yes
[CHG] Device 00:19:5D:37:FD:EA Connected: yes
Request PIN code
[OroJ1m[agent] Enter PIN code: 0215
[CHG] Device 00:19:5D:37:FD:EA Modalias: usb:v1D6Bp0246d0537
[CHG] Device 00:19:5D:37:FD:EA UUIDs: 00001106-0000-1000-8000-00805f9b34fb
[CHG] Device 00:19:5D:37:FD:EA UUIDs: 0000112f-0000-1000-8000-00805f9b34fb
[CHG] Device 00:19:5D:37:FD:EA UUIDs: 00001200-0000-1000-8000-00805f9b34fb
[CHG] Device 00:19:5D:37:FD:EA UUIDs: 88888888-1111-0000-1111-888888888888
[CHG] Device 00:19:5D:37:FD:EA ServicesResolved: yes
[CHG] Device 00:19:5D:37:FD:EA Paired: yes
Pairing successful
[CHG] Device 00:19:5D:37:FD:EA ServicesResolved: no
[CHG] Device 00:19:5D:37:FD:EA Connected: no
7.Sending Data Over Bluetooth
จากนั้นให้เราใช้เครื่องมือ "BT_Helper.py"
python3 BT_Helper.py 00:19:5D:37:FD:EA
ผลลัพธ์
Searching for MOKO service on 00:19:5D:37:FD:EA...
Connecting to "S.E.R.A.P.H" on 00:19:5D:37:FD:EA
Connected. Type something you want to send, then press 'Enter' to send it.
Rhongomyniad
**** Received Data from Server:
You've found the first key! Well done!
The Secret Key 2 is: 'Bellerophon'.
Make sure you remember it, because you'll need it later, for decryption!!) ****
The Secret Key 2 is: 'Bellerophon'
cat /home/mokoubuntu/Training_Scripts/BT_Helper.py
#This is an extra credit flag! Good for you, checking the source code. Toast3456
#This script used to be a little harder to use, you used to have to input both the BT address and the RFCOMM channel of the service, but honestly easy is better right?
extra credit flag : Toast3456
ทั้งหมดก็ประมาณนี้ครับสำหรับ Bluetooth Security Hands-on Exercises ครับ
In-Vehicle Networks and Hands-on CAN Bus
หลังจากที่เราได้เรียนรู้เกี่ยวกับช่องโหว่ของสัญญาณบลูทูธแล้วที่นี้เรามาดูในเชิง physical กันบ้างครับ
Introduction to in-vehicle networks
ระบบเครือข่ายภายในยานยนต์ (In-Vehicle Network หรือ IVN) เป็นระบบสื่อสารที่ซับซ้อนและทนทานภายในรถยนต์ ทำหน้าที่เชื่อมต่อระบบและอุปกรณ์อิเล็กทรอนิกส์ต่างๆ เข้าด้วยกัน มีรายละเอียดดังนี้ครับ
Vehicle Nervous System
ทำหน้าที่คล้ายระบบประสาทในร่างกายมนุษย์ เป็นเส้นทางการสื่อสารหลักระหว่างระบบต่างๆ ในรถ ช่วยให้ทุกส่วนของรถสามารถส่งและรับข้อมูลได้อย่างมีประสิทธิภาพ
Communication between systems
เชื่อมโยงการสื่อสารระหว่างระบบย่อยและอุปกรณ์ต่างๆ เช่น ECU (Engine Control Unit) ระบบความบันเทิง ระบบควบคุมเกียร์ ถุงลมนิรภัย ระบบเบรก
Robust (ความทนทาน)
ออกแบบให้มีความทนทานและเชื่อถือได้สูง ทำให้สามารถทำงานได้อย่างถูกต้องในสภาวะต่างๆ สำคัญต่อการรักษาประสิทธิภาพและความปลอดภัยของรถ โดยแบ่งเป็น 2 ประเภท
Resistant to failure (ความต้านทานต่อความล้มเหลว)
Fault-Tolerant (ออกแบบให้ทนต่อข้อผิดพลาด)
Resistant to EMI
ต้านทานต่อสัญญาณรบกวนทางแม่เหล็กไฟฟ้า (EMI) รักษาความถูกต้องและความต่อเนื่องของสัญญาณที่สำคัญในสภาพแวดล้อมที่มีสัญญาณรบกวนทางไฟฟ้าสูงในรถ
Selection by Application
การเลือกใช้ตามการใช้งาน ซึ่งมีเครือข่ายหลายประเภทตามความต้องการเฉพาะ ซึ่งเครือข่ายมีประมาณนี้ครับ
Application | Mean |
CAN (Controller Area Network) | ใช้สำหรับการสื่อสารแบบ real-time ที่สำคัญระหว่าง ECU |
LIN (Local Interconnect Network) | ใช้สำหรับงานที่ไม่ซับซ้อน ต้นทุนต่ำ และไม่เน้นความเร็ว |
MOST (Media Oriented Systems Transport) | ใช้สำหรับงานมัลติมีเดียที่ต้องการแบนด์วิดท์สูง |
FlexRay | ให้การสื่อสารความเร็วสูงและทนต่อข้อผิดพลาด เหมาะสำหรับระบบขั้นสูง เช่น drive-by-wire |
Automotive Ethernet | ใช้สำหรับการส่งข้อมูลความเร็วสูงในรถยนต์สมัยใหม่ รองรับแอปพลิเคชันซับซ้อน เช่น ADAS และระบบความบันเทิง |
ดังนั้น IVN จึงมีความสำคัญอย่างยิ่งต่อการประสานงานและการทำงานของระบบต่างๆ ในรถยนต์ เนื่องจากจะช่วยให้มั่นใจได้ว่าการสื่อสารมีประสิทธิภาพ มีความทนทาน และต้านทานต่อการรบกวนทั้งจากภายนอกและภายใน
แล้ว IVN มีการนำไปใช้งานอย่างไร เรามาดูกันที่เครือข่าย CAN กันครับ
CAN Bus Basics
ถ้าเราพูดถึง CAN Bus เป็นหนึ่งในรูปแบบการสื่อสารผ่านสายที่ออกแบบมาใช้งานด้านยานพาหนะ (Automotive) ต่างๆ ครับ เช่น รถยนต์ รถไฟฟ้า หรือแม้กระทั่งเครื่องบินครับ ในปัจจุบัน CAN Bus กลายเป็นรูปแบบการสื่อสารมาตรฐานที่นิยมใช้งานกัน ทางด้านอุตสาหกรรมก็ได้เริ่มนำ CAN มาใช้งานมากขึ้น ร่วมไปถึงองค์กรระดับโลกอย่าง ISO ได้รองรับมาตรฐานนี้อีกด้วยครับ
ref :
แล้ว CAN Bus คืออะไร
Controller Area Network (CAN) เป็นระบบเครือข่ายการสื่อสารผ่านสายที่ถูกออกแบบมาเพื่อใช้ในรถยนต์เป็นหลัก ทำหน้าที่เชื่อมต่ออุปกรณ์อิเล็กทรอนิกส์ต่างๆ ภายในรถให้สามารถสื่อสารกันได้ โดยไม่จำเป็นต้องมีคอมพิวเตอร์กลางคอยควบคุม ในระบบรถยนต์จะมีส่วนควบคุม (ไมโครคอนโทรลเลอร์ หรือ กล่อง ECU) เป็นของตัวเอง เช่น ระบบถุงลมนิรภัย ระบบเครื่องยนตร์ ระบบปัดนํ้าฝน เครื่องเล่นเพลง และระบบอื่นๆอีก แต่ละระบบล้วนมีส่วนควบคุม (กล่อง ECU) เป็นของตัวเอง เพื่อให้รถยนต์สามารถทำงานได้ ซึ่งทุกระบบจึงจำเป็นต้องสื่อสารกัน ซึ่งการสื่อสารนั้นก็ทำผ่าน CAN Bus นั่นเอง
ภาพการเปรียบเทียบเมื่อไม่มี CAN กับ มี CAN
คุณสมบัติสำคัญของ CAN
Multi-Master Serial Communication (การสื่อสารแบบหลายตัวควบคุม) ทุกอุปกรณ์บน บัส (Bus) คือ ตัวแม่ (Multi-master ) ซึ่งทำงานในลักษณะที่อุปกรณ์ทุกตัวในเครือข่ายสามารถเริ่มต้นการสื่อสารกับอุปกรณ์อื่นๆ ได้ทุกเมื่อ ไม่จำเป็นต้องมีตัวควบคุมกลาง ทำให้การควบคุมมีความยืดหยุ่นและทนต่อความผิดพลาดได้ดี (บน CAN Bus หากมีอุปกรณ์ใดเสียหาย อุปกรณ์นั้น ๆ จะแตะตัวเองออก อุปกรณ์อื่น ๆ ยังสื่อสารกันได้ปกติ)
Multi-cast Serial Communication (การสื่อสารแบบเลือกรับข้อมูลได้) การส่งข้อมูลบน CAN Bus คือการส่งที่ทุกอุปกรณ์ได้รับข้อมูลทั้งหมด (broadcast) ทั้งนี้หากอุปกรณ์ใดต้องการเลือกรับเฉพาะบางข้อมูล (Multi-cast) ก็สามารถทำได้เช่นกัน
เป็นเครือข่ายยอดนิยมในรถยนต์ CAN เป็นระบบเครือข่ายที่ใช้กันมากที่สุดในรถยนต์ปัจจุบัน เพราะมีความน่าเชื่อถือสูง ทนทาน และสามารถสื่อสารแบบเรียลไทม์ได้ หรือก็คือตอบสนองได้ทันทีครับ ซึ่ง ความเร็วในการส่งข้อมูลสูงสุด 1 ล้านบิตต่อวินาที (Mbps) CAN สามารถส่งข้อมูลได้เร็วถึง 1 ล้านบิตต่อวินาที (Mbps) ซึ่งเพียงพอสำหรับการใช้งานแบบเรียลไทม์ส่วนใหญ่ในรถยนต์ ซึ่ง CAN ส่งข้อมูลได้ครั้งละ 8 ไบต์ แต่ละข้อความใน CAN สามารถบรรจุข้อมูลได้มากถึง 8 ไบต์ ซึ่งเพียงพอสำหรับการส่งข้อมูลจากเซ็นเซอร์และอุปกรณ์ควบคุมส่วนใหญ่ในรถยนต์
ภาพจาก Car Hacking Village
Arbitration-Based Priority (การจัดลำดับความสำคัญของข้อความ) เมื่อมีอุปกรณ์หลายตัวพยายามส่งข้อความพร้อมกัน CAN จะใช้วิธีการที่เรียกว่า "การตัดสินใจแบบบิต" เพื่อเลือกว่าข้อความไหนจะได้ส่งก่อน โดยข้อความที่มีความสำคัญสูงกว่า (มีหมายเลขประจำตัวต่ำกว่า) จะได้ส่งก่อนเสมอ วิธีนี้ช่วยให้มั่นใจว่าข้อมูลสำคัญ เช่น การควบคุมเครื่องยนต์หรือระบบเบรก จะได้รับการจัดการอย่างรวดเร็วครับ
Asynchronous Communication (การสื่อสารแบบไม่ประสานเวลา) CAN ใช้การสื่อสารแบบไม่ประสานเวลา หมายความว่าข้อมูลจะถูกส่งทันทีที่พร้อม โดยไม่ต้องรอคำสั่ง ทำให้การใช้งานเครือข่ายมีความยืดหยุ่นและมีประสิทธิภาพมากขึ้น
การใช้งาน CAN ในรถยนต์
Engine Control
CAN เชื่อมต่อเซ็นเซอร์และอุปกรณ์ควบคุมต่างๆ เข้ากับคอมพิวเตอร์ควบคุมเครื่องยนต์ ทำให้สามารถควบคุมการทำงานของเครื่องยนต์ได้แบบเรียลไทม์
Transmission Control
ระบบควบคุมเกียร์ใช้ CAN ในการสื่อสารกับ ECU ควบคุมเครื่องยนต์และระบบอื่นๆ เพื่อจัดการการเปลี่ยนเกียร์
Anti-lock Braking System (ABS)
CAN ช่วยให้ระบบ ABS รับข้อมูลความเร็วล้อและควบคุมการเบรกเพื่อป้องกันไม่ให้ล้อล็อก
Airbag Systems
ระบบควบคุมถุงลมนิรภัยใช้ CAN ในการสื่อสารกับเซ็นเซอร์ตรวจจับการชนและสั่งการให้ถุงลมทำงานเมื่อเกิดอุบัติเหตุ
Infotainment Systems
CAN ถูกใช้ในการเชื่อมต่ออุปกรณ์ต่างๆ ในระบบความบันเทิง เช่น ระบบเสียง ระบบนำทาง และจอแสดงผล
Body Control Modules (BCM)
CAN ช่วยจัดการฟังก์ชันต่างๆ เช่น ไฟส่องสว่าง หน้าต่างไฟฟ้า และระบบปรับอากาศ
Types of CAN
ภาพจาก Car Hacking Village
ประเภทของ CAN จริงๆ แล้วมีหลากหลายประเภทมากๆ ครับ ในการการแยกประเภทจะขึ้นอยู่กับจุดประสงค์ที่เราจะนำไปใช้งานครับซึ่ง ถ้าในเรื่องของ Automotive เราจะแบ่งเป็น 2 ปรเภทหลักๆครับ ได้แก่
High-Speed CAN
อ้างอิงตามมาตรฐาน ISO 11898-2
เราเรียกอีกอย่างว่า "Dual-wire CAN" หรือ "Standard CAN"
การส่งสัญญาณแบบต่างระดับ (Differential Signaling)
สายเคเบิลแบบคู่บิดเกลียว (Twisted-Pair Cabling)
ความเร็วสูงสุดถึง 1Mbps
ความเร็วในทางปฏิบัติ 125Kbps, 250Kbps, 500Kbps
ความเร็ว 1Mbps จะจำกัดความยาวของสายเคเบิล
รองรับได้สูงสุดถึง 110 โหนด
Low-Speed Fault-Tolerant CAN
CAN Physical Layer
ref : artronshop - ทฤษฎี CAN
ในชั้นกายภาพ CAN Bus จะใช้สายในการเชื่อมต่อระหว่างส่วนควบคุม (ECU หรือไมโครคอนโทรลเลอร์หรือ CAN Device) ด้วยสาย 2 เส้น เชื่อมต่ออุปกรณ์ที่ต้องการสื่อสารทั้งหมดเข้าด้วยกันครับ ประกอบด้วยสาย CAN High และ CAN Low ที่ปลายทั้งสองด้าน ต่อตัวต้านทาน 120Ω (เรียกว่า Terminating Resistor) เพื่อ dampen overshoot for high drive lines and reduce signal noise
โดยการทำงานของ CAN High และ CAN Low จะทำงานแบบ Differential wire คือใช้ความแตกต่างของแรงดันไฟฟ้าระหว่างสาย 2 เส้นในการรับ-ส่งข้อมูล โดยมีวัตถุประสงค์เพื่อลดสัญญาณรบกวน สัญญาณภายในสายประกอบด้วย 2 สถานะ คือ
สถานะ Dominant เกิดขึ้นเมื่อแรงดันของสาย CAN High มากกว่าสาย CAN Low ซึ่งแปลเป็นสถานะส่งลอจิก 0
สถานะ Recessive เกิดขึ้นเมื่อแรงดันของสายเส้น CAN High น้อยกว่าหรือเท่ากับ CAN Low แปลเป็นสถานะส่งลอจิก 1
ภาพจาก Car Hacking Village
ref : artronshop - ทฤษฎี CAN
จากภาพกราฟ จะเห็นว่า ในสถานะ Dominant (ส่งลอจิก 0) แรงดันของสาย CAN High มีค่าประมาณ 3.5V ส่วน CAN Low มีค่าประมาณ 1.5V ในสถานะ Recessive (ส่งลอจิก 1) แรงดันของสาย CAN High และ CAN Low มีค่าเท่ากันคือ 2.5V สาย CAN High และ CAN Low มีแรงดันแตกต่างกัน 0V นั้นจึงทำให้เห็นว่าสองอย่างนี้สามารถ ลดสัญญาณรบกวน ได้ครับ
CAN Node
ภาพจาก Car Hacking Village
Node หรือ อุปกรณ์ CAN (CAN Device) หรือส่วนควบคุม (ECU) ภายในประกอบด้วย 2 ส่วน คือ
CAN controller
CAN controller เป็นวงจรไฟฟ้าที่ออกแบบมาสำหรับใช้ควบคุมการรับ-ส่งข้อมูลผ่าน CAN โดยเฉพาะ มักฝังมาภายในไมโครคอนโทรลเลอร์ที่สเปคสูง หรือถูกออกแบบมาเพื่องานด้าน Automotive โดยเฉพาะ ไมโครคอนโทรลเลอร์ที่ฝัง CAN controller มาในตัว เช่น ESP32 ATSAME51 เป็นต้น ไมโครคอนโทรลเลอร์ที่ไม่มี CAN controller สามารถต่อไอซี CAN Controller ภายนอกเพิ่มได้ เช่น MCP2515 เป็นต้น
CAN Transceiver
CAN Transceiver ทำหน้าที่แปลงสัญญาณลอจิก 0 และ 1 แบบ TTL (ลอจิก 1 = 3.3V/5V, ลอจิก 0 = 0V) ให้เป็นสัญญาณเพื่อส่งออก CANH และ CANL โดย CAN Transceiver เป็นอุปกรณ์ที่ต้องต่อแยกออกมาจากตัวไมโครคอนโทรลเลอร์ ไอซี CAN Transceiver มีผลิตหลายบริษัท แต่ละบริษัทแต่ละรุ่นจะมีสเปคด้านความเร็วในการรับ-ส่งข้อมูล (Data Rate) ที่แตกต่างกัน และใช้แรงดันไฟเลี้ยงต่างกัน (มีรุ่นใช้ไฟเลี้ยง 5V กับรุ่นใช้ไฟเลี้ยง 3.3V) ตัวอย่างไอซี CAN Transceiver ได้แก่ SN65HVD232DR TJA1050 BD41041FJ-CE2 โดยส่วนใหญ่ ไอซี CAN Transceiver ตัวถังจะเป็น SOIC-8 มีขาที่ตรงกันทุกเบอร์ ดังนั้นจึงใช้แทนกันได้ทั้งหมด
ref : artronshop - ทฤษฎี CAN
CAN Frame
การรับ-ส่งข้อมูลผ่าน CAN ใช้สิ่งที่เรียกว่า CAN frame และ 1 CAN frame หมายถึงการส่งข้อมูล 1 ครั้ง โดย CAN frame แบ่งเป็น 4 ชนิดดังนี้
Data frame ใช้ส่งข้อมูลไปยังอุปกรณ์ CAN อื่น ๆ
Remote frame ใช้ร้องขอข้อมูลจากอุปกรณ์ CAN อื่น ๆ
Error frame ใช้แจ้งทุกอุปกรณ์ CAN ว่าพบความผิดพลาดขึ้นบนบัส
Overload frame
ซึ่งในการใช้งานจริงมีเพียง Data frame และ Remote frame เท่านั้นที่ผู้ใช้สามารถเขียนโปรแกรมสั่งงานได้ ส่วน Error frame และ Overload frame ตัว CAN controller จะจัดการให้อัตโนมัติครับ
Standard Frame
โดยปกติแล้ว CAN message ถ้าอ้างอิงตามมาตรฐาน ISO ดังเดิมได้กำหนดสิ่งที่เรียกว่า Standard CAN ครับ ซึ่ง Standard CAN ใช้ตัวระบุ 11 บิต สำหรับข้อความต่างๆ ซึ่งมีจำนวนทั้งหมด 2^11 คือ 2048 ID ข้อความที่แตกต่างกัน CAN จะถูกแก้ไขในภายหลัง โดยขยายตัวระบุเป็น 29 บิต ทำให้มี 2^29 ตัวระบุ สิ่งนี้เรียกว่า Extended CAN CAN ใช้บัสแบบหลายมาสเตอร์ ซึ่งข้อความทั้งหมดจะถูกส่งกระจายไปทั่วทั้งเครือข่าย ซึ่งตัวระบุจะจัดลำดับความสำคัญของข้อความ
ภาพจาก Car Hacking Village
SOF: Start of Frame (1 บิต) - ส่ง Dominant (ส่งลอจิก 0) เพื่อบอกให้ทุกอุปกรณ์บนบัสรับรู้ว่ากำลังจะมีการส่งข้อมูล
ID: Identifier (11 บิต สำหรับ Standard Frame) – หมายเลขเฉพาะของชุดข้อมูลนี้ โดยอาจกำหนดเป็นหมายเลขอุปกรณ์ หรือหมายเลขของข้อมูลที่ตั้งขึ้นมาเฉพาะก็ได้ โดยหมายเลขนี้จะเป็นตัวกำหนดความสำคัญของข้อมูลด้วย หากมีค่าน้อย หมายถึงมีความสำคัญมาก
RTR: Remote Transmission Request (1 บิต) – บิตกำหนดว่าเป็น Remote frame หรือไม่ ดังนี้
RTR = Dominant (ลอจิก 0) หมายถึง ข้อมูลชุดนี้เป็น Data frame
RTR = Recessive (ลอจิก 1) หมายถึง ข้อมูลชุดนี้เป็น Remote frame
Control (6 บิต) ประกอบไปด้วย
IDE: Identifier extension bit (1 บิต) – ใช้ตรวจจับว่าเป็น Standard Frame หรือ Extended Frame
Reserved (1 บิต) – สงวนบิตนี้ไว้สำหรับฟีเจอร์ในอนาคต มีค่าเป็น Dominant (ลอจิก 0) เสมอ
DLC: Data Length Code (4 บิต) – แบ่งเป็น 2 กรณีดังนี้
ถ้า RTR = Dominant (ลอจิก 0, Data frame) ใช้บอกความยาวของข้อมูลที่ส่ง
ถ้า RTR = Recessive (ลอจิก 1, Remote frame) ใช้บอกความยาวของข้อมูลที่ร้องขอ
Data (0 ถึง 64 บิต หรือ 0 ถึง 8 ไบต์) – ข้อมูลที่ต้องการส่ง
CRC (16 บิต) – แบ่งดังนี้
CRC (15 บิต)
CRC delimiter (1 บิต) – มีค่าเป็น Recessive (ลอจิก 1) เสมอ
ACK (2 บิต) – แบ่งดังนี้
ACK slot (1 บิต) – ฝั่งส่งจะปล่อยให้บัสเป็นสถานะ Recessive (ลอจิก 1) หากมีอุปกรณ์ใด ๆ ในบัสได้รับ และยืนยันว่าข้อมูลที่ส่งถูกต้อง บิตนี้จะถูกดึงเป็น Dominant (ลอจิก 0)
ACK delimiter (1 บิต) – มีค่าเป็น Recessive (ลอจิก 1) เสมอ
EOF (7 บิต) – ใช้ส่งเพื่อบอกสิ้นสุด CAN frame
Extended Frame
แตกต่างจาก Standard Frame ตรงที่ฟิลด์ ID มีความยาว 29 บิต และมีโครงสร้างอื่น ๆ ที่แตกต่างกันเล็กน้อยการใช้งานจริง ฟิลด์ที่กำหนดค่าได้คือ ID, RTR, DLC และ Data ส่วนฟิลด์อื่น ๆ ตัว CAN controller จะจัดการให้อัตโนมัติ
ref : artronshop - ทฤษฎี CAN
CAN Bus Priority and Collision Resolution
เครือข่าย CAN Bus ไม่อนุญาตให้ทั้งสองโหนดมีส่วน ID เดียวกันในหลักการ แต่จะเกิดอะไรขึ้นหากส่วน ID โหนดทั้งสองมีค่าเท่ากัน โดยผลผลกระทบของการมี ID เดียวกัน จะทำให้การตัดสินไม่สามารถระบุผู้ส่งข้อมูลได้ ซึ่งอาจนำไปสู่ความล่าช้าในการส่งข้อมูล จึงทำให้ระบบอาจจะต้องทำการส่งข้อความหลายครั้ง ซึ่งอาจทำให้ประสิทธิภาพของระบบลดลง
ซึ่งถ้าเกิดเหตุการณ์นี้ขึ้นมาระบบ CAN Bus มีวิธีการดังนี้
🛡️Arbitration Process (กระบวนการตัดสิน)
เมื่อสองโหนดพยายามส่งข้อความพร้อมกันและมีส่วน ID เหมือนกัน การตัดสินจะเกิดขึ้นโดยอัตโนมัติ
การตัดสินนี้จะขึ้นอยู่กับลำดับบิตในฟิลด์ ID บิตที่ 0 จะมีลำดับความสำคัญสูงกว่าบิตที่ 1 หรือก็คือ ID ที่ต่ำกว่าจะมีลำดับความสำคัญสูงกว่า
ถ้า ID ของทั้งสองโหนดเหมือนกันทุกบิต การตัดสินจะล้มเหลวและจะนำไปสู่การส่งข้อความใหม่อีกครั้ง (Re-transmission)
🛡️Re-transmission (การส่งใหม่)
เมื่อการตัดสินล้มเหลว โหนดที่ส่งข้อความจะรู้ว่ามีการชนกันและจะพยายามส่งข้อความอีกครั้งในเวลาถัดไปตามโปรโตคอลของ CAN
การส่งใหม่นี้จะเกิดขึ้นจนกว่าการสื่อสารจะสำเร็จ
Arbitration IDs
ภาพจาก Car Hacking Village
Arbitration IDs หรือ รหัสการตัดสิน โดยจะมีองค์ประกอบดังนี้ครับ
🛡️Arbitration Field (ฟิลด์การตัดสิน)
ฟิลด์นี้ใช้ในการตัดสินว่าข้อมูลใดจะถูกส่งในกรณีที่มีการชนกันของข้อมูล (Collision) บน CAN Bus
โดยปกติมีจำนวน 12 Bits ประกอบไปด้วย
11 for ID ใช้เพื่อระบุความสำคัญของข้อความ
1 for RTR Bit (Remote Transmission Request) ใช้เพื่อระบุว่าข้อความนี้เป็นการขอส่งข้อมูลระยะไกลหรือไม่
🛡️Used to Identify Data (ใช้ในการระบุข้อมูล)
โดยมีการกำหนด Addressing เพื่อใช้เพื่อระบุข้อความต่างๆ ที่ส่งบนเครือข่าย CAN Bus แต่ไม่ใช่การกำหนดที่อยู่จริงๆ
🛡️Multi-Master
ทุกโหนดในเครือข่ายสามารถทำหน้าที่เป็นมาสเตอร์ได้ และโหนดสามารถส่งข้อความได้โดยไม่ต้องรอการอนุญาตจากโหนดอื่น
🛡️Collision Handling
เมื่อมีการชนกันของข้อมูลเกิดขึ้น ระบบจะใช้กระบวนการตัดสิน (Arbitration) เพื่อกำหนดโหนดที่มีลำดับความสำคัญสูงกว่าให้ส่งข้อความก่อน โดยโหนดที่มีลำดับความสำคัญต่ำกว่าจะรอและพยายามส่งข้อความใหม่ในเวลาถัดไป
CAN Priority
🛡️Different Function, Different Priority
แต่ละหน้าที่ในระบบจะมีลำดับความสำคัญที่แตกต่างกัน เช่น ระบบเบรกจะมีความสำคัญสูงกว่าระบบหน้าต่าง
🛡️Priority Resolves Collisions
ความสำคัญของข้อความจะถูกใช้ในการแก้ไขการชนกันของข้อมูล เมื่อมีโหนดหลายโหนดพยายามส่งข้อมูลพร้อมกัน
🛡️11-Bit and 29-Bit IDs
ระบบ CAN Bus รองรับทั้งรหัส 11 บิตและ 29 บิต
รหัส 11 บิตเป็นรหัสปกติที่ใช้ใน Standard CAN
รหัส 29 บิตใช้ใน Extended CAN
Convention
ตัวอย่างเช่น รหัส 4EE จะเป็น 11บิต รหัส x4EE จะเป็น 29 บิต โดยที่ "x" แสดงถึงส่วนขยาย
🛡️ 0
is Dominant, 1
is Recessive
ในระบบ CAN Bus บิตที่มีค่าเป็น 0
จะมีความสำคัญหรือเด่นกว่าบิตที่มีค่าเป็น 1
ดังนั้น รหัสที่มีค่าน้อยกว่าจะมีความสำคัญสูงกว่า
🛡️ARB ID is Transmitted Bit by Bit
รหัสการตัดสินจะถูกส่งออกไปทีละบิตเพื่อทำการตัดสินความสำคัญในกรณีที่มีการชนกัน โหนดสามารถตรวจสอบและส่งข้อมูลพร้อมกัน ในขณะที่โหนดกำลังส่งข้อมูล โหนดนั้นยังตรวจสอบสัญญาณบนบัสเพื่อดูว่ามีการชนกันเกิดขึ้นหรือไม่ ถ้าโหนดใดพบว่ามีโหนดอื่นส่งบิตที่มีความสำคัญสูงกว่า (บิต '0') โหนดนั้นจะหยุดส่งข้อมูลและรอการส่งใหม่ในครั้งถัดไป
Arbitration Example
สมมุติว่าเรามีโหนด 3 โหนด แต่ละโหนดพยายามส่งข้อความในเวลาเดียวกัน ข้อความมีรหัส ARB ดังนี้
4F1:
010 1111 0001
4FE:
010 1111 1110
4F2:
010 1111 0010
ภาพจาก Car Hacking Village
กระบวนการตัดสิน (Arbitration Process)
เมื่อโหนดทั้งหมดพยายามส่งข้อความพร้อมกัน ระบบจะทำการตัดสินโดยตรวจสอบบิตของรหัส ARB ทีละบิต โดยเริ่มจากบิตที่สำคัญที่สุด (Most Significant Bit) ไปจนถึงบิตที่น้อยที่สุด (Least Significant Bit)
การตรวจสอบบิต (Bit-by-Bit Comparison)
บิตที่ 1-3 (
010
):- ทุกโหนดมีบิตเหมือนกัน จึงไม่มีการตัดสินในขั้นนี้
บิตที่ 4-6 (
111
):- ทุกโหนดยังมีบิตเหมือนกัน จึงไม่มีการตัดสินในขั้นนี้
บิตที่ 7 (
0
):- ทุกโหนดยังคงมีบิตเหมือนกัน จึงไม่มีการตัดสินในขั้นนี้
บิตที่ 8:
โหนด 4F1 และ 4F2 มีบิต
0
โหนด 4FE มีบิต
1
เนื่องจากบิต
0
มีความสำคัญสูงกว่า โหนด 4FE จะหยุดส่ง และโหนด 4F1 กับ 4F2 ยังคงส่งต่อไป
บิตที่ 9:
โหนด 4F1 มีบิต
0
โหนด 4F2 มีบิต
0
ไม่มีการตัดสินในขั้นนี้
บิตที่ 10:
โหนด 4F1 มีบิต
0
โหนด 4F2 มีบิต
1
เนื่องจากบิต
0
มีความสำคัญสูงกว่า โหนด 4F2 จะหยุดส่ง และโหนด 4F1 ยังคงส่งต่อไป
ผลลัพธ์การตัดสิน (Arbitration Outcome)
โหนด 4F1 (
010 1111 0001
) ชนะการตัดสินและจะได้ส่งข้อความก่อนโหนด 4F2 (
010 1111 0010
) และ 4FE (010 1111 1110
) จะต้องรอการส่งใหม่ในเวลาถัดไป
โดยสรุปในกระบวนการตัดสินบนเครือข่าย CAN Bus ข้อความที่มีรหัส ARB ที่มีค่าต่ำกว่าจะมีความสำคัญสูงกว่าและจะได้รับสิทธิ์ในการส่งก่อน ซึ่งช่วยให้ระบบสามารถจัดการการชนกันของข้อมูลได้อย่างมีประสิทธิภาพ โดยใช้การตรวจสอบบิตทีละบิตตามลำดับความสำคัญครับ
Hands-on CAN Bus with CanAble
ที่ก็มาถึงในส่วนของการ Hands-on ครับอุปกรณ์ เราสามารถเลือกใช้ได้ว่าเราจะใช้แบบไหน โดยจะแบ่งเป็น 2 กลุ่ม
กลุ่มแรกจะเป็น
USB2CAN Device (White Device: Old Model)
USB2CAN Device (Blue Device: New Model)
ถ้าใช้อุปกรณ์กลุ่มนี้จะมีราคาประมาณ 90 $ ซึ่งรองรับกับ Native socketCAN โดย CAN pins จะมี 2 (LO) and 7 (HI) ซึ่งเราจะต้องใช้อุปกรณ์นี้ต่อเพิ่มครับเพื่อต่อเข้ากับสายไฟ
D-SUB DB9 RS232
โดยการวาง Hardware Setup จะประมาณนี้ครับ
ภาพจาก Car Hacking Village
กลุ่มที่สองจะเป็น
CanAble
ถ้าใช้อุปกรณ์กลุ่มนี้ราคาประมาณ 20 $ แล้วยังเป็น Open Source Hardware ซึ่งทางวิทยากรเลือกใช้อุปกรณ์ให้กับ นักเรียน GCC ครับ
โดยการวาง Hardware Setup จะประมาณนี้ครับ
ภาพจาก Car Hacking Village
ต่อมาทางวิทยากรก็จะให้แต่ละกลุ่มทำการเชื่อมต่อกับ CanAble เข้าโน๊ตบุ๊ค ครับ
ภาพจาก Car Hacking Village
Open-source CAN tools for Linux
โดยเครื่องมือที่เราจะใช้นั่นคือ Can-utils Package ครับ
Exercise I : จะให้เราทำการทดสอบ CAN Bus ของเราครับโดยทำการส่งข้อมูลไปหาผู้รับ
ภาพจาก Car Hacking Village
Receivers เราจะใช้เครื่องมือ Candump ครับ
candump[options] <interface>
Sender เราจะใช้เครื่องมือ Cansend ครับ
cansendcan0 <ARB_ID>#<DATA>
สำหรับ Exercise I เราอาจจะต้องเรียกใช้คำสั่งในทุกๆครั้งของการส่ง ซึ่งถ้าเราไม่ต้องการที่จะใช้คำสั่งทุกครั้งที่จะส่งเราสามารถใช้ เครื่องมือ "cangen" แทนได้ครับ
cangen
Exercise II : จะให้เราส่งชื่อและวันเกิดของผ่าน CAN BUS และค้นหาวันเกิดของเพื่อนใน GCC กลุ่มอื่นๆ ครับ
Birthday --> ArbitrationID
Name --> Data field
April 29th --> 429
Kamel --> 4B616D656C
cansend can0 429:4B616D656C
โดยเราจะใช้ cangen ในการส่ง CAN Data ครับ
cangen[options] <can interface>
cangen –g 100 –I 444 –D –r –L 4 can0
-g
sent CAN data every 100ms-I
Generates CAN frames with ID=444-D -r
Data=Random Value-L
Length= 4 Bytes
Exercise III : ให้เราลองตรวจสอบ Log และ หาลองเทียบว่า Log เนี่ยแตกต่างจาก candump output หรือไม่ครับ
ภาพจาก Car Hacking Village
candump
candump –l can0
Understanding CAN Data
ที่นี้เรามาทำความเข้าใจเกี่ยวกับ CAN Data กันครับ
🛡️ทำไมเราถึงต้องทำความเข้าใจ
เนื่องจากข้อมูล CAN แสดงข้อมูลจริงของยานพาหนะ เช่น ความเร็ว สถานะแป้นเบรก มุมพวงมาลัย ครับ
🛡️การค้นหาข้อมูล
ใช้ฐานข้อมูล .dbc ซึ่งแปลงข้อมูล CAN ดิบเป็นความหมายที่เข้าใจได้ ประกอบด้วย Arbitration Signal Names, Signal Scaling, Bit Placements
🛡️ปัญหา
ไฟล์ .dbc หายากเนื่องจากถูกจำกัดโดยผู้ผลิต แต่เราสามารถสร้างเองได้ด้วย Reverse Engineering
ภาพโปรแกรม Vector CANdb++ วิเคราะห์ไฟล์ .dbc
🛡️การกรองข้อมูล
เนื่องจากมีข้อความ CAN จำนวนมาก การกรองจึงเป็นสิ่งสำคัญในการวิเคราะห์ เราสามารถใช้เครื่องมือเช่น candump เพื่อกรองและดูเฉพาะข้อความที่สนใจ
ประเภทของตัวกรอง
มีสองประเภทหลัก คือ แบบรวม (Inclusive) และแบบไม่รวม (Exclusive)
ตัวกรองแบบรวม (Inclusive filter)
รูปแบบ
<set_ID>:<mask>
ทำงานโดย
<received_ID> && <mask> == <set_ID> && <mask>
ความหมาย แสดงเฉพาะข้อมูลที่ตรงกับเงื่อนไข
ใช้เมื่อต้องการดูเฉพาะข้อความที่มี ID ตรงตามที่กำหนด
ตัวกรองแบบไม่รวม (Exclusive filter)
รูปแบบ
<set_ID>~<mask>
ทำงานโดย
<received_ID> && <mask> != <set_ID> && <mask>
ความหมาย แสดงข้อมูลทั้งหมดยกเว้นที่ตรงกับเงื่อนไข
ใช้เมื่อต้องการดูทุกข้อความยกเว้นที่มี ID ตามที่กำหนด
** การใช้ mask
**
Mask ใช้เพื่อกำหนดบิตที่สนใจในการเปรียบเทียบ
ช่วยให้สามารถกรองช่วงของ ID ได้
ตัวอย่าง: ถ้าต้องการดู ID ในช่วง 0x400-0x4FF, ใช้ mask 0x700
ตัวอย่างการกรอง
candump can0,429:7FF #แสดงเฉพาะ ID 429
candump can0,429~7FF #แสดงทุก ID ยกเว้น 429
candump can0,429:700 #แสดง ID ตั้งแต่ 400 ถึง 4FF
candump can0,429:500 #แสดงเฉพาะ ID 429 และ 500
CAN Bus Reverse Engineering
สำหรับหัวข้อนี้ก็จะเป็นการแนะนำเครื่องมือที่ใช้ในการวิเคราะห์ CAN Bus กันนะครับ
Hands-on exercises with CAN Bus simulation
ICSim (Instrument Cluster Simulator)
สำหรับเครื่องมือนี้จะอ้างอิงจาก "The Car Hacker's Handbook" ซึ่งจะเอาไว้ใช้ในการจำลอง VirtualCAN เพื่อนำไปใช้ในการสร้างสถานการณ์เพื่อลองวิเคราะห์ CAN Bus ดูครับ
tool : zombieCraig/ICSim: Instrument Cluster Simulator (github.com)
ขั้นแรก ทำการติดตั้งเครื่องมือ ICSim
sudo apt-get install can-utils && sudo apt-get install libsdl2-dev libsdl2-image-dev && sudo apt-get update --fix-missing
make all
จากนั้นให้เราทำการ setup virtual CAN (vcan) ขึ้นมาก่อนโดยใช้คำสั่ง
sudo ./setup_vcan.sh
จะเห็นว่าเราสร้าง interface vcan0 เพิ่มขึ้นมา
ต่อมาให้เราทำการเปิด ตัวจำลองขึ้นมา
./icsim vcan0
./controls vcan0
แล้วทำการดักฟัง โดยใช้ CAN sniffer
cansniffer -c vcon0
สามารถเปลี่ยนสีเพื่อให้ง่ายต่อการ Identify Key Values โดยกด "C+enter"
ICSim Actions | Keys |
Accelerate (เร่งความเร็ว) | Up Arrow |
Left / Right Turn Signal (เลี้ยว ซ้าย/ขวา) | Left / Right Arrow |
Unlock Front L/R Doors (ปลดล็อคประตูหน้า ซ้าย/ขวา) | Right-Shift+A, Right-Shift+B |
Unlock Back L/R Doors (ปลอดล็อคประตูหลัง ซ้าย/ขวา) | Right-Shift+X, Right-Shift+Y |
Lock All Doors (ล็อคประตูทั้งหมด) | Hold Right Shift Key, Tap Left Shift |
Unlock All Doors (ปลดล็อคประตูทั้งหมด) | Hold Left Shift Key, Tab Right Shift |
จากนั่นก็ให้เราลองบังคับ แล้วลองวิเคราะห์ดูครับว่า รูปร่างหน้าตาในการส่งข้อมูลจะเป็นยังไงครับ
CAN Bus Security
⚔️Attacks
Data-level attacks
💀 Replay Attack
การบันทึกข้อมูลที่รับมาแล้วส่งกลับไปใหม่เป็นการโจมตีที่ได้ผลบน CAN Bus เนื่องจาก CAN Bus ไม่มีการระบุแหล่งที่มาและไม่มีการตรวจสอบตัวตนของผู้ส่ง ทำให้ผู้โจมตีสามารถส่งข้อมูลที่บันทึกมาไปยังระบบได้โดยที่ระบบไม่สามารถแยกแยะได้ว่านี่คือข้อมูลที่ถูกส่งกลับมาใหม่ครับ
ตัวอย่างการโจมตี
สร้างโปรแกรมที่บันทึกข้อความจำนวน 300 ข้อความแล้วเล่นข้อความที่บันทึกมาใหม่ลงบน CAN Bus สามารถทำได้ด้วยสคริปต์ bash หรือคำสั่งเดียว เช่น candump can0 -l > log.txt && cansend can0 -i log.txt
💀 Message Override Attack
การรับข้อมูลที่เข้ามาแล้วส่งข้อมูลของตัวเองกลับไปแทนที่ข้อมูลเดิม โดยใช้รหัสตัวตนเดียวกัน (Arb ID) การโจมตีนี้อาศัยการที่ระบบตรวจสอบข้อมูลจากข้อความล่าสุดที่รับมา เช่น การแสดงผลบนหน้าจอหรือการทำงานของเซ็นเซอร์ การโจมตีนี้สามารถทำให้ระบบแสดงข้อมูลที่ผิดพลาดหรือทำงานผิดพลาดได้
ตัวอย่างการโจมตี
สร้างโปรแกรมที่รับข้อความจาก CAN Bus แล้วส่งข้อความที่มีรหัสตัวตนเดียวกันแต่ข้อมูลต่างออกไปเพื่อแทนที่ข้อความเดิม ซึ่งการทำงานนี้อาจซับซ้อนกว่าการโจมตี Replay Attack เล็กน้อย เช่น ใช้ Python หรือเครื่องมือ CAN ที่มีความสามารถสูงกว่าก็ได้ครับ
ภาพจาก Car Hacking Village
Protocol-level attacks
💀 DoS Attack
ใช้การจัดลำดับความสำคัญในระบบเพื่อลดประสิทธิภาพของระบบ ผู้โจมตีสามารถส่งข้อความที่มีความสำคัญสูงมากๆ ทำให้ระบบต้องจัดการกับข้อความเหล่านั้นตลอดเวลาและไม่สามารถจัดการกับข้อความอื่นได้
ภาพจาก Car Hacking Village
ภาพจาก Car Hacking Village
ref :
💀 Bit Smashing Attack
ใช้ระบบการจัดการข้อผิดพลาดของ CAN Bus เพื่อบังคับให้โหนดหยุดการส่งข้อมูล โดยการส่งข้อความที่มีข้อผิดพลาดมากเกินไปจนทำให้โหนดนั้นถูกตั้งค่าให้หยุดทำงานเนื่องจากมีข้อผิดพลาดเกินกว่าที่กำหนดไว้
Physical attacks
การโจมตีที่เกี่ยวข้องกับการเข้าถึงทางกายภาพของอุปกรณ์ CAN Bus เช่น การเชื่อมต่ออุปกรณ์ของผู้โจมตีกับเครือข่าย CAN Bus โดยตรง การตัดสายเคเบิลหรือการขัดขวางการทำงานของอุปกรณ์
การโจมตี
💀Cable Cutting
การตัดสายเคเบิลของ CAN Bus จะทำให้การสื่อสารระหว่างโหนดหยุดชะงัก โดยทั่วไป CAN Bus ใช้สายเคเบิลแบบ twisted pair ซึ่งการตัดหรือดัดแปลงสายเคเบิลเหล่านี้จะทำให้โหนดไม่สามารถรับส่งข้อมูลได้
💀Inserting a Malicious Device
ผู้โจมตีสามารถเชื่อมต่ออุปกรณ์ที่ไม่หวังดีเข้ากับเครือข่าย CAN Bus โดยตรง อุปกรณ์นี้อาจส่งข้อมูลที่มีความสำคัญสูงมาก ๆ หรือข้อมูลที่มีข้อผิดพลาดจำนวนมากเข้าสู่เครือข่าย ทำให้ระบบ CAN Bus ต้องจัดการกับข้อมูลที่ไม่ปกติและเกิดการหยุดชะงัก
💀Signal Jamming
การใช้เครื่องมือสร้างสัญญาณรบกวนเพื่อขัดขวางการสื่อสารใน CAN Bus สัญญาณรบกวนนี้จะทำให้โหนดต่าง ๆ ไม่สามารถรับข้อมูลที่ถูกต้องได้ และอาจทำให้ระบบเกิดข้อผิดพลาดและหยุดทำงาน
💀Node Tampering
การเข้าถึงทางกายภาพของโหนดต่าง ๆ ในระบบ CAN Bus แล้วทำการดัดแปลงหรือแก้ไขให้โหนดเหล่านั้นส่งข้อมูลที่ผิดพลาดหรือหยุดทำงานไปเลย วิธีนี้สามารถทำให้ระบบ CAN Bus ทั้งระบบไม่สามารถทำงานได้อย่างถูกต้อง
🛡️Defense
Higher-layer protocols
การเข้ารหัส (Encryption) การเข้ารหัสข้อมูลเพื่อป้องกันไม่ให้ผู้โจมตีสามารถอ่านหรือดัดแปลงข้อมูลได้ แม้ว่าการเข้ารหัสจะช่วยเพิ่มความปลอดภัย แต่มีปัญหาคือการใช้ทรัพยากรที่เพิ่มขึ้น เช่น การใช้พลังงานและเวลาในการประมวลผล
Message Authentication Code (MAC) การใช้รหัสตรวจสอบความถูกต้องของข้อความเพื่อยืนยันว่าข้อความที่รับมานั้นไม่ได้ถูกดัดแปลง ซึ่งต้องแลกกับการลดประสิทธิภาพในบางกรณี เนื่องจากต้องใช้ทรัพยากรในการคำนวณ MAC
Diagnostic Security Access การใช้การเข้าถึงความปลอดภัยในการวินิจฉัยเพื่อปกป้องฟังก์ชันที่มีสิทธิพิเศษจากการถูกโจมตี ซึ่งมีการใช้งานในชีวิตจริ
Network segmentation
การแยกเครือข่ายออกเป็นส่วนย่อย ๆ เพื่อป้องกันการเข้าถึงจากภายนอก การแบ่งส่วนเครือข่ายจะทำให้การโจมตีที่เกิดขึ้นในส่วนหนึ่งของเครือข่ายไม่สามารถแพร่กระจายไปยังส่วนอื่น ๆ ได้ง่าย
Dedicated security devices
การใช้อุปกรณ์ที่ออกแบบมาเฉพาะเพื่อรักษาความปลอดภัยของระบบ CAN Bus เช่น อุปกรณ์ Firewall สำหรับ CAN Bus หรืออุปกรณ์ IDS/IPS ที่สามารถตรวจจับและป้องกันการโจมตีในระบบ CAN Bus
ref : Laborde Motorsport USA
CAN Bus Network Segmentation Case Study
สำหรับอันนี้ก็เป็นตัวอย่าง Case "How an Auto Security Researcher Had His Car Stolen"
Playtime
สำหรับใน Classroom Setup ก็จะแบ่งเป็น 2 กลุ่ม ได้แก่ "Instrument Cluster" และ "SONY IVI" เนื่องจากอุปกรณ์มีจำกัดครับ และจะเปลี่ยนกันหลังจาก 1 ชั่วโมงผ่านไปครับ
2012 Toyota Corolla Instrument Cluster CAN Bus
SONY Aftermarket IVI System Bluetooth, USB, Infrared
เป็นยังไงกันบ้างครับ สำหรับ Hands-on Car Hacking by Kamel Ghali สำหรับผมถือว่าเป็นอะไรที่สนุกมากๆตอนที่ได้ไปเรียนในค่าย GCC ครับ และผมหวังว่าความรู้ที่ผมได้นำมาแชร์ในครั้งนี้อาจจะสร้างแรงบันดาลใจให้กับคนที่สนใจเรื่องนี้ นำไปศึกษาและวิจัยต่อในอนาคตนะครับ หวังว่าในประเทศไทยจะมีกลุ่มคนที่สนใจด้าน Automotive Security เกิดขึ้นมานะครับ :)
และขอขอบคุณ TechTalkThai และ ผู้สนับสนุนอื่นๆ อีกเป็นอย่างยิ่งนะครับ ที่ทำให้ค่าย GCC ในประเทศไทย เกิดขึ้นมาได้ครับ
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣤⣤⣤⣤⣤⣤⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀
⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠛⠻⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⡿⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣤⣴⣿⣿⣿⣿⣿⡿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⢰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋ ⢀⣀⠀⠀⠀⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠋⠁⠀⠀ ⣴⣿⣿⣿⣦⠀⠀⠀
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣀⠀⠀⠀ ⢿⣿⣿⣿⡟ Ar3mus @ GCC2024 #Hands-on Car Hacking by Kamel Ghali
⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄ ⠉⠉⠁⠀⠀⠀⠀
⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀
⠀⠀ ⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋
⠀⠀⠀ ⠀⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠁
⠀⠀ ⠀⠀⠀⠀⠉⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠉⠙⠛⠛⠻⠿⠿⠟⠛⠛⠋⠉⠀⠀⠀⠀⠀
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