การตรวจสอบดองเกิล RJ45 “อันตราย”
(lcamtuf.substack.com)- มีการเผยแพร่ข้อกล่าวหาว่า อะแดปเตอร์ Ethernet-to-USB ที่ซื้อจากจีนฝังมัลแวร์มาในตัว แต่เบาะแสที่ตรวจสอบได้กลับใกล้เคียงกับวิธีแจกจ่ายไดรเวอร์ของชิป RJ45-to-USB รุ่นเก่ามากกว่า
- การสแกนของ CrowdStrike Falcon ที่พบ “องค์ประกอบภาษารัสเซีย” สอดคล้องกับลักษณะของ 7-Zip self-extracting EXE ของ Igor Pavlov และเนื้อหาไฟล์ก็ดูตรงกับไดรเวอร์สาธารณะสำหรับ SR9900 ของ CoreChips Shenzhen
- SR9900 เป็นชิปที่แทบไม่มีข้อมูลสาธารณะ แต่ดูเหมือนจะเป็นโคลนตรงของ Realtek RTL8152B และสอดคล้องกับบริบทช่วงรอบ Windows 7 ที่อุปกรณ์ USB 2.0·100BASE-TX มักแจกจ่ายไดรเวอร์ผ่านสตอเรจในตัว
- SPI flash 512 kB ขนาด 25x40 บน PCB ไม่ได้เป็นที่เก็บแพ็กเก็ตที่ดักมา แต่พบว่าเป็นการตั้งค่าที่เครื่องมือการผลิตเขียนอิมเมจ ISO 9660 และไดรเวอร์ Windows ลงไปตรง ๆ เพื่อใช้เสมือน CD-ROM
- โค้ดไมโครคอนโทรลเลอร์ USB·Ethernet ภายใน SR9900 ยังเป็นส่วนที่ยังไม่ได้ยืนยันทั้งหมด แต่จากกรณีนี้เพียงอย่างเดียว ยังไม่มีหลักฐานพอที่จะตัดสินว่า “ฮาร์ดแวร์แปลก ๆ” คือมัลแวร์ทันที
จุดเริ่มต้นของข้อสงสัยเรื่องฮาร์ดแวร์อันตรายในซัพพลายเชน
- ในวงการความปลอดภัยข้อมูล มักมีการกล่าวอ้างเรื่อง การก่อวินาศกรรมซัพพลายเชนขนาดใหญ่ อยู่บ่อยครั้ง แต่จุดตั้งต้นของบทความนี้คือข้อเท็จจริงที่ว่าในโลกจริง ส่วนใหญ่แล้วเรื่องแบบนี้มักไม่เป็นความจริง
- ไม่ใช่เพราะการโจมตีลักษณะนี้เป็นไปไม่ได้ แต่เพราะมันซับซ้อน ใช้เวลานาน และมีความเสี่ยงสูง
- ในทางปฏิบัติ การขโมยข้อมูลรับรองหรือหลอกให้ดาวน์โหลดไฟล์อันตรายนั้นง่ายกว่ามาก
- ประเด็นเริ่มลุกลามเมื่อผู้ก่อตั้งสตาร์ตอัปรายหนึ่งอ้างบนโซเชียลมีเดียว่า อะแดปเตอร์ Ethernet-to-USB ที่ซื้อจากจีนมีมัลแวร์ติดตั้งมาแล้วจากโรงงาน
- ข้อกล่าวหาใช้คำอย่างการหลบเลี่ยงเครื่องเสมือน การดักจับการกดแป้นพิมพ์ และการใช้องค์ประกอบภาษารัสเซีย
- โพสต์ที่เกี่ยวข้องมียอดเข้าชมนับล้าน แต่รายละเอียดทางเทคนิคที่ชัดเจนกลับไม่แน่นอน
ตรวจสอบผลสแกนสาธารณะและไฟล์ไดรเวอร์
- รายงานสแกน CrowdStrike Falcon ที่ผู้โพสต์แชร์ไว้นั้นคลุมเครือ และใกล้เคียงกับการเป็น เบาะแสที่ทำให้สับสน มากกว่าจะเป็นหลักฐานชี้ขาด
- ไบนารีที่ถูกวิเคราะห์เป็นไฟล์ EXE แบบ self-extracting ซึ่งสร้างบนพื้นฐานของโปรแกรมบีบอัดโอเพนซอร์ส 7-Zip ของ Igor Pavlov
- องค์ประกอบภาษารัสเซียอาจอธิบายได้จากสัญชาติของผู้สร้าง
- และการเป็นไฟล์ archive แบบ self-extracting สำหรับติดตั้งไดรเวอร์ก็อธิบายพฤติกรรมส่วนใหญ่ที่ดูน่าสงสัยได้
- เนื้อหาใน archive ดูตรงกับ ไดรเวอร์สาธารณะที่มีลายเซ็นเวอร์ชัน 2.0.7.0 สำหรับชิป RJ45-to-USB ที่ผลิตโดย CoreChips Shenzhen
- ในไฟล์
.infที่แนบมา บริษัทนี้ยังใช้ชื่อ Corechip Semiconductor ด้วย
- ในไฟล์
ชิป SR9900 และบริบทของดีไซน์รุ่นเก่า
- ไดรเวอร์อ้างถึงชิป SR9900
- แทบไม่มีข้อมูลสาธารณะเกี่ยวกับชิปและผู้ผลิต
- จากการตรวจสอบ SR9900 ดูเหมือนจะเป็นโคลนตรงของ Realtek RTL8152B
- ในเอกสารแนะนำสินค้าเวอร์ชันภาษาอังกฤษ มีนัยว่า “SR” หมายถึง “Supereal” และชื่อแบรนด์ Supereal ก็เคยปรากฏในบริบทของ ชิป FTDI FT232RL ปลอม ที่สร้างปัญหาในอุตสาหกรรมมาก่อน
- สาเหตุที่เชื้อสายนี้สำคัญ คือดีไซน์ต้นฉบับของ Realtek เป็นดีไซน์เก่าที่อิงจาก datasheet ปี 2013
- อุปกรณ์รองรับ 100BASE-TX และ USB 2.0
- และสอดคล้องกับแนวปฏิบัติของอุปกรณ์ต่อพ่วงในยุค Windows 7
- ในเวลานั้นไดรฟ์ CD-ROM กำลังค่อย ๆ หายไป แต่ก็ยังยากจะสมมติว่าคอมพิวเตอร์ทุกเครื่องออนไลน์ตลอดเวลา
- อุปกรณ์ต่อพ่วงบางชนิดจึงแสดงตัวเป็น mass storage device ที่บรรจุไดรเวอร์ของตัวเองไว้ ซึ่งถือว่าเป็นแนวทางที่สมเหตุสมผลในบริบทของยุคนั้น
- ในมุมความปลอดภัย วิธีนี้ก็ไม่ได้ดีกว่าหรือแย่กว่าวิธีชั่วคราวอื่น ๆ สำหรับส่งมอบไฟล์ไดรเวอร์อย่างมีนัยสำคัญ
หน้าที่ที่แท้จริงของ SPI flash
- ภาพถอดประกอบแสดง PCB แบบเรียบง่ายที่มี serial flash IC ตระกูล 25x40 ติดตั้งอยู่ข้าง SR9900
- คำถามหลักคือแฟลช 512 kB นี้ใช้เก็บเฟิร์มแวร์ หรือเป็นที่เก็บแพ็กเก็ตที่ดักจับมา
- เอกสารของ SR9900 และ RTL8152B ไม่ได้อธิบายจุดประสงค์ของแฟลช IC ที่ใช้งานร่วมกันนี้อย่างเพียงพอ และแม้ค้นหารูปวงจรก็ยังไม่พบดีไซน์ที่มีการต่ออะไรบางอย่างเข้ากับขา serial ของชิป Realtek ต้นฉบับ
- ตัวบัส SPI เองนั้นเรียบง่ายมาก
- โฮสต์เป็นผู้สร้างสัญญาณนาฬิกาตามความเร็วที่ต้องการ
- ทุกขอบขาขึ้นของนาฬิกา อุปกรณ์ปลายทางจะอ่าน 1 บิตจาก “serial in” และโฮสต์จะอ่าน 1 บิตจาก “serial out”
- ไม่มี handshake, header, parity bit หรือ flow control
- การอ่าน serial flash ทั่วไปมีโครงสร้างคือส่ง คำสั่ง READ 0x03 ตามด้วยที่อยู่ 3 ไบต์ แล้วรับข้อมูลต่อเนื่องกลับมา
- ด้วยเหตุนี้ การซื้อดองเกิลจริงมา dump เนื้อหาในหน่วยความจำจึงเป็นวิธีที่เป็นไปได้เช่นกัน
- หลังค้นหาเว็บของ CoreChips และไล่หาต้นฉบับภาษาจีน ผู้เขียนก็พบโพสต์เก่าในฟอรัมจีน รวมถึง archive แบบใส่รหัสผ่านและต้องจ่ายเงินดาวน์โหลด ที่เกี่ยวกับ “SR9900 series chip Windows system mass production tool”
- มีการจ่าย 2.99 ดอลลาร์เพื่อดาวน์โหลด “SR9900(A)设计资料1018.rar” มาตรวจสอบ
- ใน archive มีเครื่องมือการผลิต SR9900Efuse พร้อม UI กลิ่นอายย้อนยุคอยู่ด้วย
- ภายในยังมี อิมเมจระบบไฟล์ ISO 9660 ขนาด 168 kB ที่บรรจุไดรเวอร์ Windows แบบ self-extracting
- เครื่องมือการผลิตจะเขียนไฟล์
.isoลง SPI flash โดยตรง - ชิปจะทำงานเสมือน CD-ROM แบบ “software-defined” ที่มาแทนไดรฟ์จริง
- อิมเมจดิสก์สามารถดาวน์โหลดได้ที่นี่ และรหัสผ่านคือ
rj45
- เครื่องมือการผลิตจะเขียนไฟล์
- อิมเมจ CD-ROM ถูกสร้างด้วย “ULTRAISO V9.3 CD & DVD CREATOR, (C) EZB SYSTEMS”
- UltraISO ถูกอธิบายว่าเป็นเครื่องมือที่ให้ความรู้สึกแบบยุค Windows XP
- เงื่อนไขการรันคือใช้ Intel Pentium 166MHz ขึ้นไป
ฟังก์ชัน virtual CD-ROM แบบเลือกใช้ และข้อจำกัดที่ยังเหลือ
- ใน archive หลักยังมีเอกสารชื่อ “SR9900(A)设计前必看.docx” รวมอยู่ด้วย
- จากข้อความที่แปลอัตโนมัติ ระบุว่าเมื่อใช้ SR9900 เป็นการ์ดเครือข่าย USB สามารถใช้ SPI เป็น ไดรฟ์ออปติคัลเสมือน สำหรับติดตั้งไดรเวอร์ Windows ได้
- สามารถเขียนไดรเวอร์ SR9900 สำหรับ Windows ลงแฟลช SPI ล่วงหน้าได้
- และระบุชัดว่าการใช้แฟลชชิปเป็นตัวเลือก ไม่ได้บังคับ
- สรุปได้ว่าความแปลกของกรณีนี้ไม่ได้มาจากพฤติกรรมอันตราย แต่เกิดจาก วิธีแจกจ่ายไดรเวอร์ของอุปกรณ์ต่อพ่วงรุ่นเก่า
- แม้ไม่มีห้องแล็บฮาร์ดแวร์ ก็สามารถคลี่คลายคำถามหลักได้ด้วยการค้นข้อมูลสาธารณะและความอดทน
- ส่วนที่ยังไม่ได้ตรวจสอบอย่างสมบูรณ์คือไมโครคอนโทรลเลอร์คอร์ขนาดเล็กสองตัวภายใน IC ของ SR9900
- ภายในมีคอร์ USB และ Ethernet และแต่ละส่วนรันโค้ดภายในของตัวเอง
- หากสมมติว่าผู้ผลิตชิปมีส่วนเกี่ยวข้อง ก็อาจยังสามารถตรวจสอบภายในได้
- Realtek มี ไดรเวอร์ Linux แบบโอเพนซอร์ส สำหรับ RTL8152 และไดรเวอร์ดังกล่าวทำการแพตช์เฟิร์มแวร์จากหน่วยความจำ
- จากที่ตรวจดูด้วยตาเปล่า ไม่เหมือนว่าจะมีการเข้ารหัสหรือเซ็นลายเซ็นไว้
- ความเป็นไปได้ของ USB ดองเกิลที่เป็นอันตรายยังตัดทิ้งไม่ได้ทั้งหมด
- มีการเปรียบเปรยว่าหากเป็นนักวิทยาศาสตร์ในโครงการนิวเคลียร์ของอิหร่านก็น่าจะต้องกังวล
- หากเป็น CISO ของบริษัทเอกชนที่มีความสำคัญเชิงยุทธศาสตร์ ก็ควรระมัดระวังในระดับหนึ่ง
- แต่สำหรับการใช้งานเครือข่ายในบ้าน ยังไม่มีหลักฐานจากกรณีนี้เพียงอย่างเดียวที่ชี้ว่าเป็นภัยคุกคามเร่งด่วน
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ถ้อยคำนี้ทำให้เข้าใจผิด สิ่งที่เป็นปัญหาไม่ใช่ตัวชิปปลอมเองเสียทีเดียว แต่เป็นกรณีที่ ไดรเวอร์ทางการของ FTDI ตรวจพบของปลอมแล้วเปลี่ยน PID ของฮาร์ดแวร์ที่กำลังทำงานอยู่เป็น 0000 ทำให้ไม่ถูกจดจำอีกต่อไป: http://www.rei-labs.net/changing-ftdi-pid/
ผมหัวเราะตรงข้อความว่า “ต้องใช้ Intel Pentium 166MHz ขึ้นไป” บทความก็สนุก และผมชอบแนว “คนฉลาดที่เบื่อ ๆ เลยขุดคุ้ยข้อสรุปที่สามัญสำนึกก็บอกอยู่แล้วไปจนสุดทาง แต่การพิสูจน์มันกลับต้องใช้ ความคิดสร้างสรรค์และความอึด อย่างคาดไม่ถึง” มาก
ผมพร้อมจะไป Dark Web (amazon.com) เพื่อซื้อดองเกิลสักตัวมาดัมป์เนื้อหาในชิปหน่วยความจำก็ไม่ได้การบอกว่าตัวเองเป็นเหยื่อและเปิดโปงแผนสมคบคิดได้ ก็สบายใจกว่าการยอมรับว่านี่เป็นเพียง ผลงานปะติดปะต่อ แบบที่พบได้ทั่วไปในงานวิศวกรรม ขอปรบมือให้ผู้เขียน
ไม่ได้หมายความว่าสปายแวร์จีนไม่ใช่ปัญหา แต่ถ้าไม่มีทักษะพื้นฐานพอจะแยกแยะได้ ก็ไม่ควรวิ่งไปทั่วพร้อมตะโกนว่า “จีน! จีน! จีน!” นั่นคือวิธีที่นักการเมืองหยิบข่าวปลอมไปใช้เป็นข้ออ้างสำหรับนโยบายโง่ ๆ และเป็นโทษต่อสังคม
พอเห็นทวีตเรื่องดองเกิล “มุ่งร้าย” ตัวนี้ ผมก็รู้ทันทีว่ามันเป็นของแบบเดียวกับที่ผมเคยทำงานด้วยมาก่อน แทนที่จะเรียกว่ามุ่งร้าย มันก็แค่ของน่ารำคาญ
https://blog.brixit.nl/making-a-usb-ethernet-adapter-work-sr...
ในกรณีของผม ผมปิดใช้งานโมดูลแฟลช SPI เพื่อไม่ให้มันแสดงเป็นไดรฟ์ CD แต่ผู้เขียนบทความนี้ถึงกับหาเอกสารเจอว่า SPI เป็นออปชันด้วย ที่น่าสนใจคือตอนนี้บทความนี้กลายเป็นการให้เครื่องมือสำหรับรีแฟลชเพื่อสร้าง ดองเกิล RJ45 มุ่งร้าย ของจริงได้แล้ว
ดูเหมือนว่าใส่ footprint ไดโอดสำหรับแพ็กเกจ SOT23 แบบ 3 ขาไว้ แต่ไม่มีสต็อกชิ้นส่วนพิเศษ เลยเอาไดโอด SOD323 มาแปะเอียงประมาณ 30 องศาระหว่างสองขา
ถ้านั่นเป็นผลลัพธ์ที่ไม่ได้ตั้งใจ อย่างดีที่สุดมันก็เป็นแค่ security through obscurity ตั้งแต่แรก และควรถูกเปิดเผยเพื่อไม่ให้ผู้คนพึ่งพามัน
autorun.infลงใน CD ปลอมได้ไหม?ผมค่อนข้างชอบวิธีที่อุปกรณ์ USB ปลอมตัวเป็นอุปกรณ์จัดเก็บข้อมูลเพื่อให้ไดรเวอร์ของตัวเอง วิธีที่ “ถูกต้อง” ในยุคนี้คงเป็นการเอาโน่นนี่ไปวางบนเซิร์ฟเวอร์ของ Microsoft แล้วให้ดาวน์โหลดสิ่งที่ต้องใช้เมื่อต่ออุปกรณ์ แต่ผมเจอของที่ต้องติดตั้งไดรเวอร์เองมามากพอจะรู้ว่ามันไม่ได้ง่ายอย่างที่เห็น ตัวอย่างเช่น ผมต้องดาวน์โหลด ไดรเวอร์ ADB เฉพาะผู้ผลิต บ่อยมาก
อย่างไรก็ดี การที่อุปกรณ์ต่อพ่วงช่วยตั้งค่าเริ่มต้นเองเป็นวิธีที่ฉลาด และถ้าไดรเวอร์อยู่ในตัวอุปกรณ์ ก็ง่ายกว่าการต้องเที่ยวตามหาแหล่งดาวน์โหลดอย่างเป็นทางการอยู่เล็กน้อย
แต่โหมดการทำงานหลายแบบทำให้อุปกรณ์อย่างดองเกิล USB 4G/LTE ตั้งค่าได้ยากขึ้น มันอาจแสดงเป็นอุปกรณ์จัดเก็บข้อมูล USB หรืออุปกรณ์อนุกรมบางชนิด หรืออะไรคล้ายอุปกรณ์โมเด็ม CDC-ACM และหากจะเปลี่ยนให้เป็นโหมดที่ถูกต้องก็ต้องใช้เครื่องมือผสมกับคำสั่ง AT เฉพาะผู้ผลิต ผมอยากกลับไปหาอุปกรณ์เรียบง่ายที่เสียบแล้วทำหน้าที่ของมันได้ทันที
ผมไม่รู้ว่าปัจจุบัน state of the art เป็นอย่างไร แต่เป็นเวลานานแล้วที่การใส่แฟลชขนาดเล็กไว้กับ IC อุปกรณ์ต่อพ่วง USB เพื่อเก็บ VID/PID และข้อมูลการตั้งค่า USB อื่น ๆ เป็นเรื่องพบได้ทั่วไป เพราะต้องทำอย่างนั้นเพื่อให้อุปกรณ์ถูก enumerate อย่างถูกต้องเมื่อต่อเข้าไป และจับคู่กับไดรเวอร์ที่ถูกต้องได้ ขึ้นอยู่กับช่วงเวลาที่ออกแบบ ความจุเล็กที่สุดที่หาได้ง่ายในซัพพลายเชนอาจเป็น 512kB ก็ได้ ดังนั้นการใช้ชิปแบบนั้นเพื่อเก็บข้อมูลไม่กี่สิบไบต์จึงไม่แปลก
ส่วน ISO นั้นแปลกอยู่บ้าง แต่พูดตรง ๆ มันเป็นวิธีสร้างสรรค์ในการหลบเลี่ยงนโยบายความปลอดภัย IT ขององค์กรที่จำกัดอุปกรณ์จัดเก็บข้อมูล USB แบบ mass storage ไดรฟ์ออปติคัลใช้ device class อื่น จึงมีโอกาสเลี่ยงข้อจำกัดส่วนใหญ่ได้ และถ้ามันถูก enumerate เป็นอุปกรณ์ composite ที่รวมไดรฟ์ออปติคัลกับอะแดปเตอร์เครือข่าย ก็ดูเหมือนว่าจะติดตั้งไดรเวอร์ของตัวเองได้แม้บนคอมพิวเตอร์ที่ล็อก “USB drive” ไว้
สิ่งที่แปลกคือยอมใส่แฟลชเพิ่มให้มีต้นทุน แต่กลับตัด ชิ้นส่วนแยกทางแม่เหล็ก ออกไป มีแค่คาปาซิเตอร์แบบอนุกรม แจ็กก็เล็กจนดูไม่น่าจะมีชิ้นส่วนแม่เหล็กแบบรวมอยู่ และการใส่คาปาซิเตอร์อนุกรมร่วมด้วยก็ไม่สมเหตุสมผล
ถ้าผมพบว่าดองเกิล USB Ethernet ที่ซื้อมาไม่มีชิ้นส่วนแยกทางแม่เหล็ก ผมคงโกรธมากจริง ๆ
ถ้าถามว่ามีดองเกิล USB Ethernet “ประสงค์ร้าย” ไหม แน่นอนว่ามี เพียงแต่ไม่ใช่ของชิ้นนี้
https://hak5.org/products/lan-turtle
ในมุมของสายเคร่ง RJ45 สิ่งนี้ควรถูกเรียกว่า 8P8C มากกว่า แค่นี้ขอตัวก่อน
เช่น เคยเห็น “ดองเกิล RJ45” ที่แปลง USB เป็น RS232 serial สำหรับพอร์ตคอนโซลของอุปกรณ์เครือข่ายจำนวนมาก
ถ้าเป็นคนที่ใส่ใจประสิทธิภาพของ USB-1000BASE-T และโดยรวมถึงดองเกิล 2.5GBaseT ในยุคนี้ ควรรู้ความแตกต่างระหว่างการเป็น อุปกรณ์ USB กับ อุปกรณ์ PCI Express ไว้
หลังจากเสียบ hot-plug เข้ากับแล็ปท็อปที่ใช้เคอร์เนล Linux รุ่นใหม่ ให้ดูว่ามันโผล่ใน
sudo lsusb -vหรือsudo lspci -vอุปกรณ์ PCIe แบบเนทีฟให้ประสิทธิภาพดีกว่ามาก ทำความเร็วระดับ line rate ของ 2.5GBASE-T ได้ และสื่อสารกับโฮสต์ผ่านการใช้งาน Thunderbolt ที่อยู่บน USB ส่วนอุปกรณ์ที่เป็น USB ล้วนก็อาจทำงานได้ดีเหมือนกัน แต่ราคาถูกย่อมมีเหตุผลของมัน แน่นอนว่าแล็ปท็อปราคาถูกอาจไม่มีการใช้งาน Thunderbolt อยู่เลย ก็ต้องพิจารณาตรงนั้นด้วย
ถึงอย่างนั้นโดยพื้นฐานแล้วมันก็ยังเป็นดองเกิล และบน Mac วัดด้วย iperf3 ได้ 9.4Gbit/s แน่นอนว่ามันแสดงเป็นอุปกรณ์ PCIe
[1] https://www.amazon.com/gp/product/B0DHSWSSBY
ถ้ามีแค่พอร์ต USB และใส่ใจประสิทธิภาพ ความต่างที่ใหญ่กว่าน่าจะอยู่ที่อุปกรณ์ USB Ethernet นั้น implement CDC-NCM หรือมีแค่ CDC-ECM มากกว่า CDC-ECM จะส่งเฟรมให้ไดรเวอร์ทีละเฟรม และไดรเวอร์ต้องยืนยันและประมวลผลทีละเฟรม ทำให้มีงานของ CPU เยอะ ในขณะที่ CDC-NCM ซึ่งใหม่กว่าจะส่งเฟรมแบบรวมเป็นชุด
บนแล็ปท็อปของผม ดองเกิล ECM 1Gbit ก็ทำความเร็วกิกะบิตได้ แต่ใช้ CPU หนึ่งคอร์ 100% ส่วนดองเกิล NCM 1Gbit ใช้ CPU แทบไม่เห็น
การสร้างการเชื่อมต่อที่เป็นอันตรายผ่านพอร์ต Ethernet นั้นยากสุด ๆ แต่การสร้างการเชื่อมต่อที่เป็นอันตรายผ่านพอร์ต USB นั้นง่ายมาก ควรเรียกตามความเป็นจริง นี่คือ ดองเกิล USB ประสงค์ร้าย ที่มีช่อง Ethernet ติดมาด้วย