- चीन से खरीदे गए Ethernet-to-USB adapter में malware होने का दावा फैला, लेकिन पुष्टि किए गए संकेत पुराने RJ45-to-USB chip के driver distribution तरीके के ज्यादा करीब निकले
- CrowdStrike Falcon scan में दिखे “Russian-language elements” का मेल Igor Pavlov के 7-Zip self-extracting EXE की विशेषताओं से बैठता था, और file contents भी CoreChips Shenzhen के SR9900 के लिए public driver से मेल खाते दिखे
- SR9900 एक ऐसा chip है जिसके बारे में सार्वजनिक जानकारी बहुत कम है, लेकिन यह Realtek RTL8152B का सीधा clone लगता है, और Windows 7 के आसपास के उस दौर से मेल खाता है जब USB 2.0·100BASE-TX devices अपने drivers खुद onboard storage से देते थे
- PCB पर लगा 25x40 प्रकार का 512 kB SPI flash packet capture storage नहीं, बल्कि ऐसा सेटअप निकला जिसमें production tool ISO 9660 image और Windows driver को सीधे लिखकर उसे virtual CD-ROM की तरह इस्तेमाल करता है
- SR9900 के अंदर USB·Ethernet microcontroller code अभी भी एक अनसुलझा हिस्सा है, लेकिन सिर्फ इस मामले के आधार पर “अजीब hardware” को तुरंत malicious मानने के लिए पर्याप्त आधार नहीं है
सप्लाई चेन malicious hardware के शक की शुरुआत
- infosec क्षेत्र में बड़े पैमाने के supply-chain sabotage के दावे अक्सर सामने आते हैं, लेकिन शुरुआती मान्यता यही रही कि असल में उनमें से अधिकतर झूठे निकलते हैं
- ऐसा इसलिए नहीं कि ऐसे हमले असंभव हैं, बल्कि इसलिए कि उन्हें अंजाम देना जटिल, समय लेने वाला और जोखिम भरा है
- व्यवहार में credentials चुराना या किसी से malicious file डाउनलोड करवाना कहीं ज्यादा सरल होता है
- चीन से खरीदे गए Ethernet-to-USB adapter में malware पहले से भरा होने का दावा एक युवा founder ने social media पर किया, जिससे विवाद बढ़ गया
- दावे में virtual machine evasion, keystroke capture, और Russian-language elements जैसी बातें शामिल थीं
- संबंधित पोस्ट को millions में views मिले, लेकिन ठोस technical details अस्पष्ट रहीं
सार्वजनिक scan और driver file की जांच
- पोस्ट करने वाले ने साझा की हुई CrowdStrike Falcon scan report अस्पष्ट थी, और निर्णायक सबूत से ज्यादा भ्रम पैदा करने वाले संकेत जैसी लगती थी
- analysis के लिए देखी गई binary, Igor Pavlov द्वारा बनाए गए open source compression tool 7-Zip पर आधारित self-extracting EXE थी
- Russian-language elements को इसके लेखक की nationality से जुड़ा निशान माना जा सकता है
- यह एक self-extracting archive था जो driver install करता है, और यही बात उसके ज्यादातर संदिग्ध दिखने वाले व्यवहार को समझा देती है
- archive की contents, CoreChips Shenzhen द्वारा बनाए गए RJ45-to-USB chip के signed public driver 2.0.7.0 से मेल खाती दिखीं
- साथ शामिल
.inffile में कंपनी ने Corechip Semiconductor नाम भी इस्तेमाल किया है
- साथ शामिल
SR9900 chip और पुरानी design का संदर्भ
- driver में SR9900 नाम के chip का उल्लेख है
- इस chip और इसके manufacturer के बारे में सार्वजनिक जानकारी लगभग नहीं के बराबर है
- जांच में SR9900, Realtek RTL8152B का सीधा clone लगा
- अंग्रेज़ी product blurb से संकेत मिलता है कि “SR” का मतलब “Supereal” है, और Supereal brand name पहले उद्योग में समस्या पैदा कर चुके नकली FTDI FT232RL chips के संदर्भ में भी सामने आता है
- यह lineage इसलिए महत्वपूर्ण है क्योंकि मूल Realtek design 2013 datasheet पर आधारित एक पुराना design है
- device 100BASE-TX और USB 2.0 support करता है
- यह Windows 7 दौर की peripheral practices से मेल खाता है
- उस समय CD-ROM drives गायब हो रही थीं, लेकिन यह मान लेना भी मुश्किल था कि हर computer हमेशा online होगा
- कुछ peripherals का खुद को अपने drivers वाले mass storage device की तरह expose करना उस समय के संदर्भ में स्वाभाविक था
- security नज़रिए से भी इसे driver files पहुँचाने के दूसरे ad-hoc तरीकों से खास बेहतर या बदतर कहना मुश्किल है
SPI flash का असली उपयोग
- teardown photos में SR9900 के बगल में 25x40 प्रकार का serial flash IC लगा हुआ एक साधारण PCB दिखा
- मुख्य सवाल यह था कि 512 kB flash firmware के लिए है या capture किए गए packets के storage के लिए
- SR9900 और RTL8152B के documents, साथ लगे flash IC के उद्देश्य को पर्याप्त रूप से नहीं समझाते, और circuit image search में भी मूल Realtek chip के serial pins से कुछ जुड़ा हुआ design नहीं मिला
- SPI bus खुद में सरल है
- host अपनी मनचाही speed पर clock signal देता है
- हर rising clock edge पर peripheral “serial in” का 1 bit पढ़ता है, और host “serial out” का 1 bit पढ़ता है
- इसमें handshake, header, parity bit, या flow control नहीं होता
- सामान्य serial flash read, READ command 0x03 और 3-byte address भेजने के बाद लगातार data पाने वाले ढांचे पर आधारित होता है
- इसी वजह से असली dongle खरीदकर memory contents dump करना भी संभव था
- CoreChips website पर चीनी मूल सामग्री खोजने और बहुत तलाश करने के बाद “SR9900 series chip Windows system mass production tool” से जुड़ी पुरानी Chinese forum posts और password/pro-paid download archives मिले
- “SR9900(A)设计资料1018.rar” को 2.99 डॉलर में लेकर जांचा गया
- archive में retro-style UI वाला SR9900Efuse production tool शामिल था
- साथ मौजूद 168 kB ISO 9660 filesystem image में self-extracting Windows driver था
- production tool
.isofile को SPI flash में ज्यों का त्यों लिख देता है - chip एक physical CD-ROM की जगह लेने वाले “software-defined” CD-ROM की तरह काम करता है
- disk image यहां से डाउनलोड की जा सकती है, और password
rj45है
- production tool
- CD-ROM image “ULTRAISO V9.3 CD & DVD CREATOR, (C) EZB SYSTEMS” से बनाई गई थी
- UltraISO को Windows XP दौर जैसे tool के रूप में बताया गया है
- इसे चलाने के लिए Intel Pentium 166MHz या उससे ऊपर की जरूरत होती है
वैकल्पिक virtual CD-ROM feature और बची हुई सीमाएँ
- मुख्य archive में “SR9900(A)设计前必看.docx” नाम का document भी शामिल था
- machine translation किए गए वाक्य के अनुसार, SR9900 को USB network card की तरह इस्तेमाल करते समय Windows driver install के लिए SPI का उपयोग virtual optical drive के रूप में किया जा सकता है
- SPI flash में Windows के लिए SR9900 driver पहले से burn किया जा सकता है
- flash chip का उपयोग optional बताया गया था
- इस मामले की अजीब बात malicious behavior नहीं, बल्कि पुराने peripheral driver distribution तरीके से जुड़ी निकली
- बिना hardware lab के भी, सार्वजनिक सामग्री की खोज और धैर्य से मुख्य सवालों का जवाब पाया जा सका
- जो हिस्सा पूरी तरह verify नहीं हुआ, वह SR9900 IC के अंदर के दो छोटे microcontroller cores हैं
- अंदर USB और Ethernet cores हैं और दोनों अपना internal code चलाते हैं
- यदि माना जाए कि chip manufacturer शामिल था, तो इनके अंदर झांकना संभव हो सकता है
- Realtek, RTL8152 के लिए open source Linux driver देता है, और वह driver memory से firmware patch करता है
- देखने में ऐसा नहीं लगा कि encryption या signing लागू है
- malicious USB dongle की संभावना को पूरी तरह नकारा नहीं जा सकता
- लेख में कहा गया है कि अगर आप Iran के nuclear program के scientist हैं, तो चिंता की बात हो सकती है
- रणनीतिक रूप से महत्वपूर्ण private company के CISO के लिए भी कुछ सावधानी उचित है
- लेकिन home networking के लिए, सिर्फ इस मामले के आधार पर इसे तत्काल खतरा मानने का पर्याप्त आधार नहीं है
1 टिप्पणियां
Hacker News की राय
यह अभिव्यक्ति गलतफहमी पैदा करती है। समस्या नकली chip अपने-आप में नहीं थी, बल्कि यह थी कि नकली का पता चलने पर FTDI का official driver चल रहे hardware का PID बदलकर 0000 कर देता था, जिससे वह आगे पहचाना नहीं जाता था: http://www.rei-labs.net/changing-ftdi-pid/
“Intel Pentium 166MHz या उससे ऊपर चाहिए” वाली लाइन पर हंसी आ गई। लेख भी मजेदार है, और मुझे वह genre बहुत पसंद है जिसमें “कोई होशियार व्यक्ति बोर होकर किसी commonsense के हिसाब से साफ दिखने वाले निष्कर्ष को अंत तक खोदता है, लेकिन उसे साबित करने के लिए अनपेक्षित creativity और धैर्य चाहिए होता है”
memory chip की contents dump करने के लिए मैं Dark Web(amazon.com) पर जाकर एक dongle खरीदने को तैयार थावाला हिस्सा भी छोड़ने लायक नहीं हैयह कहना भी आसान है कि आप पीड़ित हैं और आपने साजिश उजागर कर दी, बजाय इसके स्वीकार करने के कि यह बस engineering में आम मिलने वाला जोड़-तोड़ वाला नतीजा था। लेखक को सलाम
इसका मतलब यह नहीं कि Chinese spyware समस्या नहीं है। लेकिन अगर उसे पहचानने की बुनियादी तकनीकी क्षमता नहीं है, तो “China! China! China!” चिल्लाते हुए दौड़ना नहीं चाहिए। यही तरीका है जिससे नेता fake news उठाकर बेवकूफी भरी नीतियों का बहाना बना लेते हैं, और यह समाज के लिए नुकसानदेह है
इस “malicious” dongle वाले tweet को देखते ही मैं पहचान गया कि यह वही चीज है जिस पर मैंने पहले काम किया था। malicious से ज्यादा यह बस परेशान करने वाली चीज है
https://blog.brixit.nl/making-a-usb-ethernet-adapter-work-sr...
मेरे मामले में मैंने SPI flash module को disable किया था ताकि यह CD drive की तरह न दिखे, लेकिन इस लेख के लेखक ने तो वह documentation भी ढूंढ निकाली कि SPI optional है। मजे की बात यह है कि अब यह लेख reflash करके सचमुच का malicious RJ45 dongle बनाने के tools भी उपलब्ध करा देता है
ऐसा लगता है कि 3-pin SOT23 package के लिए diode footprint रखा गया था, और special component का stock न होने पर SOD323 diode को दो pins के बीच करीब 30 degree तिरछा लगाकर चिपका दिया गया
अगर यह unintended consequence है, तो शुरुआत में यह ज्यादा से ज्यादा security through obscurity ही था, और इसे सामने आना ही चाहिए ताकि लोग इस पर निर्भर न रहें
autorun.infजोड़ा जा सकता है?मुझे यह तरीका काफी पसंद है कि USB device खुद को storage device जैसा दिखाकर अपना driver उपलब्ध कराए। आजकल का “सही” तरीका शायद यह होगा कि Microsoft servers पर चीजें डाल दी जाएं और plug in होने पर जरूरत की चीज डाउनलोड हो जाए, लेकिन मैंने इतने devices देखे हैं जिनमें manual driver install करना पड़ता है कि पता है यह दिखने जितना आसान नहीं है। उदाहरण के लिए मुझे vendor-specific ADB drivers बहुत बार डाउनलोड करने पड़ते हैं
खैर, peripheral अगर initial setup में मदद करे तो यह smart तरीका है, और driver device के अंदर हो तो official download source ढूंढने की तुलना में थोड़ा आसान हो जाता है
लेकिन कई operating modes ने 4G/LTE USB dongle जैसे devices को configure करना मुश्किल बना दिया है। वे USB storage device की तरह दिखते हैं, या किसी तरह के serial device की तरह, या CDC-ACM modem device जैसी किसी चीज की तरह, और सही mode में बदलने के लिए tools और vendor-specific AT commands का combination चाहिए होता है। मैं ऐसे simple devices पर लौटना चाहता हूं जिन्हें बस plug in करें और वे अपना काम करने लगें
मुझे नहीं पता आज state of the art क्या है, लेकिन लंबे समय तक USB peripheral ICs के साथ छोटा flash लगाकर VID/PID और दूसरी USB configuration जानकारी store करना आम था। ताकि plug in करने पर device सही तरह enumerate हो और सही driver से जुड़ सके। design के समय के हिसाब से supply chain में आसानी से मिलने वाली सबसे छोटी capacity 512kB रही होगी, इसलिए कुछ दर्जन bytes store करने के लिए ऐसा chip इस्तेमाल करना अजीब नहीं था
ISO वाला हिस्सा थोड़ा अजीब है, लेकिन सच कहूं तो यह mass USB storage को restrict करने वाली corporate IT security policies को bypass करने का creative तरीका है। optical drives अलग device class इस्तेमाल करते हैं, इसलिए ज्यादातर restrictions से बच सकते हैं, और अगर optical drive और network adapter के combined composite device के रूप में enumerate हो, तो “USB drive” locked computer पर भी अपना driver install कर सकता है
अजीब बात यह है कि flash जोड़कर खर्च बढ़ाया गया, लेकिन magnetic isolation components हटा दिए गए। सिर्फ series capacitors हैं, jack भी छोटा है इसलिए integrated magnetic components होने जैसा नहीं लगता, और series capacitors को साथ में लगाना भी समझ में नहीं आता
अगर मुझे पता चले कि मेरे खरीदे हुए USB Ethernet dongle में magnetic isolation components नहीं हैं, तो सच में बहुत गुस्सा आएगा
“मैलिशस” USB Ethernet dongle होते हैं क्या? बिल्कुल होते हैं। बस यह वाला वह चीज़ नहीं है
https://hak5.org/products/lan-turtle
RJ45 के कट्टर शुद्धतावादी के हिसाब से इसे 8P8C कहना चाहिए। अब मैं चलता हूँ
उदाहरण के लिए, कई network devices के console port के लिए USB को RS232 serial में बदलने वाले “RJ45 dongle” भी मैंने देखे हैं
USB-1000BASE-T, और आजकल 2.5GBaseT dongles में performance की परवाह करने वालों के लिए, USB device और PCI Express device के बीच का फर्क जानना अच्छा है
किसी laptop में latest Linux kernel के साथ hot-plug करने के बाद देख लें कि वह
sudo lsusb -vमें दिखता है याsudo lspci -vमेंnative PCIe devices कहीं बेहतर performance देते हैं, 2.5GBASE-T line speed तक पहुँच सकते हैं, और USB के ऊपर Thunderbolt implementation के ज़रिए host से communicate करते हैं। USB-only devices भी ठीक-ठाक चल सकते हैं, लेकिन सस्ते होने की वजह होती है। बेशक, low-end laptops में Thunderbolt implementation ही न हो, तो उसे भी ध्यान में रखना चाहिए
फिर भी मूल रूप से यह dongle ही है, और Mac पर iperf3 से 9.4Gbit/s मिलता है। जाहिर है, यह PCIe device के रूप में दिखता है
[1] https://www.amazon.com/gp/product/B0DHSWSSBY
अगर सिर्फ USB port है और performance मायने रखती है, तो बड़ा फर्क शायद यह होगा कि USB Ethernet device CDC-NCM implement करता है या सिर्फ CDC-ECM। CDC-ECM frames को एक-एक करके driver को भेजता है और driver को उन्हें एक-एक करके confirm और process करना पड़ता है, जिससे CPU work बहुत बढ़ जाता है; जबकि नया CDC-NCM frames को batch में भेजता है
मेरे laptop पर 1Gbit ECM dongle से भी gigabit speed मिलती है, लेकिन CPU का एक core 100% इस्तेमाल होता है, जबकि 1Gbit NCM dongle में CPU usage लगभग नहीं के बराबर है
Ethernet port के ज़रिए नुकसानदेह connection बनाना बेहद मुश्किल है, लेकिन USB port के ज़रिए नुकसानदेह connection बनाना बहुत आसान है। चीज़ को उसके सही नाम से बुलाना चाहिए। यह Ethernet socket वाला एक मैलिशस USB dongle है