1 पॉइंट द्वारा GN⁺ 2025-01-18 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • चीन से खरीदे गए 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 से मेल खाती दिखीं
    • साथ शामिल .inf file में कंपनी ने 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 .iso file को SPI flash में ज्यों का त्यों लिख देता है
    • chip एक physical CD-ROM की जगह लेने वाले “software-defined” CD-ROM की तरह काम करता है
    • disk image यहां से डाउनलोड की जा सकती है, और password rj45 है
  • 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 टिप्पणियां

 
GN⁺ 2025-01-18
Hacker News की राय
  • यह अभिव्यक्ति गलतफहमी पैदा करती है। समस्या नकली chip अपने-आप में नहीं थी, बल्कि यह थी कि नकली का पता चलने पर FTDI का official driver चल रहे hardware का PID बदलकर 0000 कर देता था, जिससे वह आगे पहचाना नहीं जाता था: http://www.rei-labs.net/changing-ftdi-pid/

    • कुछ ठीक से काम करते थे, लेकिन मेरे पास मौजूद कुछ में CBUS pins पर अजीब व्यवहार दिखता था
    • नकली chip इस लिहाज से भी सिरदर्द थे कि वे अनिश्चितता पैदा करते थे और कई तरह के devices में फैलकर उन्हें दूषित कर देते थे। चुपचाप मिला दिए गए counterfeit components को स्वीकार करना मुश्किल है
  • “Intel Pentium 166MHz या उससे ऊपर चाहिए” वाली लाइन पर हंसी आ गई। लेख भी मजेदार है, और मुझे वह genre बहुत पसंद है जिसमें “कोई होशियार व्यक्ति बोर होकर किसी commonsense के हिसाब से साफ दिखने वाले निष्कर्ष को अंत तक खोदता है, लेकिन उसे साबित करने के लिए अनपेक्षित creativity और धैर्य चाहिए होता है”

    • memory chip की contents dump करने के लिए मैं Dark Web(amazon.com) पर जाकर एक dongle खरीदने को तैयार था वाला हिस्सा भी छोड़ने लायक नहीं है
    • यह इस बात का अच्छा उदाहरण है कि सच्चाई जटिल, महंगी और असुविधाजनक होती है। बिना सबूत के बुरी योजना वाले किसी दुष्ट nation-state actor को मान लेना, इस लेख की तरह झाड़ियों में घुसकर रास्ता बनाने से कहीं आसान है, और समय व expertise के लिहाज से भी बहुत सस्ता पड़ता है
      यह कहना भी आसान है कि आप पीड़ित हैं और आपने साजिश उजागर कर दी, बजाय इसके स्वीकार करने के कि यह बस engineering में आम मिलने वाला जोड़-तोड़ वाला नतीजा था। लेखक को सलाम
    • यह मजेदार भी है, लेकिन मुझे लगता है कि ऐसा काम इसलिए अहम है क्योंकि यह मूल लेख में छिपी xenophobia को सामने लाता है। circuit board पर एक flash chip है? अरे बाप रे, यह तो पक्का Chinese spyware होगा!
      इसका मतलब यह नहीं कि 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 भी उपलब्ध करा देता है

    • flash chip की तस्वीर में ऊपर बाईं तरफ U3 के साथ क्या हुआ होगा?
      ऐसा लगता है कि 3-pin SOT23 package के लिए diode footprint रखा गया था, और special component का stock न होने पर SOD323 diode को दो pins के बीच करीब 30 degree तिरछा लगाकर चिपका दिया गया
    • विडंबना है। मुझे यकीन है कि security समस्याओं का बड़ा हिस्सा उन लोगों से बनता है जो नेक नीयत से hardware और software को खोलकर समझाते हैं और “hack” करने के तरीके बताते हैं
      अगर यह unintended consequence है, तो शुरुआत में यह ज्यादा से ज्यादा security through obscurity ही था, और इसे सामने आना ही चाहिए ताकि लोग इस पर निर्भर न रहें
    • क्या fake CD में autorun.inf जोड़ा जा सकता है?
    • CS और S0 को short करने पर यह काम करना क्यों बंद कर देता है?
  • मुझे यह तरीका काफी पसंद है कि 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 ढूंढने की तुलना में थोड़ा आसान हो जाता है

    • सबसे अच्छा तो ऐसा device है जिसे शुरू से ही अपना driver चाहिए ही न हो। कुछ चीजों को special driver चाहिए हो सकता है, लेकिन USB memory या mouse जैसी चीजें basic driver से ही बस चलनी चाहिए, और चाहें तो internet से update लेने दें
    • Linux पर सीधे काम कर जाना ज्यादा अच्छा लगता है। असल में ज्यादातर यही होता है, और मेरे हिसाब से आज Linux सबसे अच्छा plug and play operating system है
      लेकिन कई 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 करें और वे अपना काम करने लगें
    • इस मामले में यह थोड़ा ज्यादा तर्कसंगत है। क्योंकि अगर आपको RJ45 dongle driver install करना पड़ रहा है, तो आम तौर पर संभावना है कि उस समय network connection नहीं होगा
    • क्या यह NuBus जैसा है? अगर मुझे सही याद है, शुरुआती Macintosh के cards आम तौर पर कम-से-कम basic driver ROM में रखते थे, और वे Forth या 680x0 assembly में लिखे होते थे
  • मुझे नहीं पता आज 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 कर सकता है

    • कुछ समय तक Windows USB memory की तुलना में disk की autorun को ज्यादा आसानी से चलाता था। भले ही वह disk emulated USB disk drive के अंदर ही क्यों न हो
  • अजीब बात यह है कि flash जोड़कर खर्च बढ़ाया गया, लेकिन magnetic isolation components हटा दिए गए। सिर्फ series capacitors हैं, jack भी छोटा है इसलिए integrated magnetic components होने जैसा नहीं लगता, और series capacitors को साथ में लगाना भी समझ में नहीं आता

    • वाह, बहुत तेज नजर है। लगता है PCB को इस तरह design किया गया था कि magnetic components या series capacitors में से कोई एक लगाया जा सके, और capacitor वाला हिस्सा DNP होना चाहिए था
      अगर मुझे पता चले कि मेरे खरीदे हुए USB Ethernet dongle में magnetic isolation components नहीं हैं, तो सच में बहुत गुस्सा आएगा
  • “मैलिशस” USB Ethernet dongle होते हैं क्या? बिल्कुल होते हैं। बस यह वाला वह चीज़ नहीं है
    https://hak5.org/products/lan-turtle

    • लेख में भी इस बात को साफ़ तौर पर माना गया है: मैलिशस hardware का इस्तेमाल intelligence agencies और private penetration testers, दोनों करते आए हैं, और करीब 10 साल पहले लेखक ने भी काम के लिए एक मैलिशस plasma ball बनाया था। यहाँ अहम सवाल यह नहीं था कि मैलिशस RJ45-USB adapter बनाया जा सकता है या नहीं, बल्कि यह था कि क्या यह चीज़ सच में “चीन ने फिर वही किया” वाला उदाहरण है
    • मैलिशस Ethernet patch cable को भी छोड़ा नहीं जा सकता: https://imgur.com/Gpgj7w7
  • RJ45 के कट्टर शुद्धतावादी के हिसाब से इसे 8P8C कहना चाहिए। अब मैं चलता हूँ

    • connector को RJ45 कहना ठीक है, लेकिन इस चीज़ को “RJ45 dongle” कहना सुनकर मेरी पलक फड़कने लगती है। यह Ethernet dongle है। RJ45 कई और कामों में भी इस्तेमाल हो सकता है
      उदाहरण के लिए, कई network devices के console port के लिए USB को RS232 serial में बदलने वाले “RJ45 dongle” भी मैंने देखे हैं
    • आज सीखा। इस connector को लगभग 25 साल से इस्तेमाल कर रहा हूँ, फिर भी इसे 8P8C कहते हैं, यह पहली बार सुना। यह तो पता था कि जैसे पहले Amiga को आपस में जोड़ने के लिए coaxial cable इस्तेमाल होती थी, वैसे Ethernet ने भी दूसरे physical layers इस्तेमाल किए हैं, लेकिन 8P8C के बारे में आज ही जाना
    • लगता है Network+ पढ़ चुके लोग हर बार RJ45 का ज़िक्र होने पर सोचते हैं कि यह comment करें या नहीं
    • मत जाओ, रुको और हमें लगातार बताते रहो। यह ज़रूरी है। क्योंकि दोनों concepts को दोतरफ़ा ढंग से एक-दूसरे की जगह इस्तेमाल नहीं किया जा सकता
    • RJ31X और RJ38X भी होते हैं। दोनों में unkeyed configuration वाला 8P8C modular connector इस्तेमाल होता था
  • 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 ही न हो, तो उसे भी ध्यान में रखना चाहिए

    • सिर्फ 2.5GBaseT ही नहीं है। मेरे पास [1] का 10GBase-T Thunderbolt dongle है। यह आम dongle से थोड़ा बड़ा है, built-in cable की जगह USB-C female port है, और गरम तो हो जाता है
      फिर भी मूल रूप से यह dongle ही है, और Mac पर iperf3 से 9.4Gbit/s मिलता है। जाहिर है, यह PCIe device के रूप में दिखता है
      [1] https://www.amazon.com/gp/product/B0DHSWSSBY
    • क्या कोई विस्तार से बता सकता है कि USB वाला तरीका ज्यादा खराब क्यों है? Wikipedia के मुताबिक 2008 का USB 3.0 भी 5Gbit/s तक पहुँच सकता है, तो सीधे-सादे हिसाब से 2.5GbE line speed आसानी से मिलनी चाहिए लगती है
    • Realtek RTL8156, यानी USB 2.5G Ethernet, तेज़ और बहुत stable है। server use के लिए भी ठीक है, और मैं i225 के बजाय इसे चुनूँगा
    • Thunderbolt/USB4 न हो तो USB के ज़रिए PCIe नहीं होता, है न? या कुछ और भी है?
      अगर सिर्फ 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 लगभग नहीं के बराबर है
    • अगर मैंने गलती से PCIe वाला dongle खरीद लिया, तो शायद वह मेरे किसी भी USB port में काम नहीं करेगा। मेरी जानकारी में तो मेरे पास सिर्फ USB ports हैं। या क्या वह आम तौर पर USB device पर fallback करके काम करता है?
  • Ethernet port के ज़रिए नुकसानदेह connection बनाना बेहद मुश्किल है, लेकिन USB port के ज़रिए नुकसानदेह connection बनाना बहुत आसान है। चीज़ को उसके सही नाम से बुलाना चाहिए। यह Ethernet socket वाला एक मैलिशस USB dongle है