ãããŸã§ãã»ãšãã©ã®åŸæ¥å¡ã¯ããžã¯ãŒã«ã®ã¯ã€ã€ã¬ã¹ ããŒããŒããšããŠã¹ã䜿çšããŠããŸããã Raccoon ã»ãã¥ãªã㣠ããŒã ã®ã¹ãã·ã£ãªã¹ãã§ããç§ãã¡ã¯ãããäžåºŠãã¹ã¯ãŒããå ¥åããŠã次ã®è³ªåãèªåããŸãããã¯ã€ã€ã¬ã¹ ããŒããŒãã®ã»ãã¥ãªã㣠ã¡ã«ããºã ããã€ãã¹ããã®ã¯ã©ãã»ã©é£ããã§ãããã? ãã®èª¿æ»ã«ãããå ¥åããŒã¿ãžã®ã¢ã¯ã»ã¹ãå¯èœã«ããã¢ãŒããã¯ãã£äžã®æ¬ é¥ãšãœââãããŠã§ã¢ ãšã©ãŒãæããã«ãªããŸããã ã«ããã®äžãç§ãã¡ãåŸããã®ã§ãã
ãªãããžã¯ãŒã«ãªã®ã?
ç§ãã¡ã®æèŠã§ã¯ãããžã¯ãŒã«ã®å
¥åããã€ã¹ã¯æé«å質ã§ãããæã䟿å©ã§ãã åœç€Ÿãææããããã€ã¹ã®ã»ãšãã©ã¯ Logitech ãœãªã¥ãŒã·ã§ã³ã«åºã¥ããŠããŸã
Logitech Unifying ãµããŒããåãããã³ã°ã« ã¬ã·ãŒããŒ
ããŒããŒãã¯æ»æè
ã®æ
å ±æºã«ãªãå¯èœæ§ããããŸãã ããžã¯ãŒã«ã¯ãæœåšçãªè
åšãèæ
®ããŠãã»ãã¥ãªãã£ã«é
æ
®ããã¯ã€ã€ã¬ã¹ ããŒããŒãã®ç¡ç·ãã£ãã«ã§ AES128 æå·åã¢ã«ãŽãªãºã ã䜿çšããŸããã ãã®ç¶æ³ã§æ»æè
ãæåã«èããã®ã¯ããã€ã³ãã£ã³ã°æé äžã«ç¡ç·ãã£ãã«ãä»ããŠéä¿¡ãããéµæ
å ±ãååããããšã§ãã çµå±ã®ãšãããããŒãæã£ãŠããã°ãããŒããŒãã®ç¡ç·ä¿¡å·ãååããŠåŸ©å·åããããšãã§ããŸãã ãã ãããŠãŒã¶ãŒãããŒããŒããçµ±äžããå¿
èŠãããããšã¯ã»ãšãã© (ãŸãã¯ãŸã£ãã) ãªããã¹ãã£ã³ç¡ç·ã䜿çšããããã«ãŒã¯é·ãéåŸ
ããªããã°ãªããŸããã ããã«ãååããã»ã¹èªäœããã¹ãŠãããã»ã©åçŽã§ããããã§ã¯ãããŸããã 2019 幎 XNUMX æã®ææ°ã®èª¿æ»ã§ã¯ãã»ãã¥ãªãã£å°é家ã®ãã«ã¯ã¹ã»ã¡ã³ã¹æ°ããªã³ã©ã€ã³ã§çºè¡šããŸããã
Nordic Semiconductor ã® NRF24 SoC ãããŒã¹ã«ãã Logitech ãã³ã°ã«ã®ã»ãã¥ãªãã£ç 究ã«ã€ããŠèª¬æããŸãã ããããã©ãžãªãã£ã³ãã«èªäœããå§ããŸãããã
ç¡ç·ãã£ãã«å ã§ããŒã¿ãã©ã®ããã«ãé£ã¶ãã
ç¡ç·ä¿¡å·ã®æéåšæ³¢æ°åæã«ã¯ãã¹ãã¯ãã©ã ã¢ãã©ã€ã¶ãŒ ã¢ãŒãã® Blade-RF ããã€ã¹ã«åºã¥ã SDR ã¬ã·ãŒããŒã䜿çšããŸãã (ããã«ã€ããŠã¯ãã¡ããåç
§ããŠãã ãã)
SDR ãã¬ãŒã RF ããã€ã¹
ãŸããäžéåšæ³¢æ°ã§ç¡ç·ä¿¡å·ã®çŽè§äœçžãèšé²ããããžã¿ã«ä¿¡å·åŠçæè¡ã䜿çšããŠåæã§ããå¯èœæ§ãæ€èšããŸããã
ãã·ã¢é£éŠç¡ç·åšæ³¢æ°åœå®¶å§å¡äŒ
2,4GHz垯ã®ã¹ãã¯ãã«
ãã®ç¯å²å ã®å¹²æžç°å¢ã¯éåžžã«è€éã§ãã ããã«ãããããããããžã¯ãŒã«ã¯ãNRF24 ãã©ã³ã·ãŒããŒã® Enhanced ShockBurst ãããã³ã«ãåšæ³¢æ°é©å¿ã¢ã«ãŽãªãºã ãšçµã¿åãããŠäœ¿çšââããããšã§ãä¿¡é Œæ§ã®é«ãå®å®ããåä¿¡ãæäŸããããšãã§ããŸããã
垯åå
ã®ãã£ãã«ã¯ã次ã®ããã«å®çŸ©ãããæŽæ° MHz ã®äœçœ®ã«é
眮ãããŸãã
ããŒããŒãç¡ç·ä¿¡å·ã®æéè¡šçŸ
åä¿¡æ©ã¯åä¿¡ã®çžé¢åçã䜿çšãããããéä¿¡ããããã±ããã«ã¯ããªã¢ã³ãã«ãšã¢ãã¬ã¹éšåãå«ãŸããŸãã èãã€ãºç¬Šå·åã¯äœ¿çšãããããŒã¿æ¬äœã¯AES128ã¢ã«ãŽãªãºã ã§æå·åãããŸãã
äžè¬ã«ãLogicool ã¯ã€ã€ã¬ã¹ ããŒããŒãã®ç¡ç·ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãçµ±èšçå€éåãšåšæ³¢æ°é©å¿ã«ããå®å šã«éåæã§ãããšç¹åŸŽä»ããããšãã§ããŸãã ããã¯ãããŒããŒãéä¿¡æ©ããã£ãã«ãåãæ¿ããŠæ°ãããã±ãããéä¿¡ããããšãæå³ããŸãã åä¿¡æ©ã¯éä¿¡æéãåšæ³¢æ°ãã£ãã«ãäºåã«ã¯ç¥ããŸãããããããã®ãªã¹ãã ããããããŸãã åä¿¡æ©ãšéä¿¡æ©ã¯ã調æŽãããåšæ³¢æ°ãã€ãã¹ããã³ãªã¹ãã³ã° ã¢ã«ãŽãªãºã ãããã³åŒ·åããã ShockBurst 確èªå¿çã¡ã«ããºã ã®ãããã§ããã£ãã«å ã§æ¥ç¶ãããŸãã ãã£ã³ãã«ãªã¹ããéçãã©ããã¯èª¿æ»ããŠããŸããã ããããããã®å€åã¯åšæ³¢æ°é©å¿ã¢ã«ãŽãªãºã ã«ãããã®ãšèããããŸãã ãã®ç¯å²ã®åšæ³¢æ°ãªãœãŒã¹ã®äœ¿çšã«ã¯ãåšæ³¢æ°ãããã³ã°æ¹åŒ (åäœåšæ³¢æ°ã®æ¬äŒŒã©ã³ãã 調æŽ) ã«è¿ããã®ãèŠãããŸãã
ãããã£ãŠãæéãšåšæ³¢æ°ãäžç¢ºå®ãªç¶æ³ã§ã¯ããã¹ãŠã®ããŒããŒãä¿¡å·ã®åä¿¡ãä¿èšŒããããã«ãæ»æè
㯠84 ããžã·ã§ã³ã®åšæ³¢æ°ã°ãªããå
šäœãåžžã«ç£èŠããå¿
èŠããããããã«ã¯ããªãã®æéãããããŸãã ããã§ãUSB ããŒæœåºã®èåŒ±æ§ (CVE-2019-13054) ã®çç±ãæããã«ãªããŸãã
åé¡ãå éšããèŠãŠã¿ã
ãã®ç 究ã§ã¯ãæ¢åã® Logitech K330 ããŒããŒãã® XNUMX ã€ãš Logitech Unifying ãã³ã°ã«ãéžæããŸããã
Logitech K330
ããŒããŒãã®å éšãèŠãŠã¿ãŸãããã ç 究ãã¹ãããŒãäžã®èå³æ·±ãèŠçŽ ã¯ãNordic Semiconductor ã® SoC NRF24 ãããã§ãã
Logitech K24 ã¯ã€ã€ã¬ã¹ ããŒããŒã ããŒãäžã® SoC NRF330
ãã¡ãŒã ãŠã§ã¢ã¯å éšã¡ã¢ãªã«é 眮ãããŠãããèªã¿åãããã³ãããã°ã®ã¡ã«ããºã ã¯ç¡å¹ã«ãªã£ãŠããŸãã æ®å¿µãªããããã¡ãŒã ãŠã§ã¢ã¯ãªãŒãã³ãœãŒã¹ã§å ¬éãããŠããŸããã ãããã£ãŠãç§ãã¡ã¯ãã®åé¡ã«å察åŽããã¢ãããŒãããããšãã€ãŸã Logitech ãã³ã°ã« ã¬ã·ãŒããŒã®å éšå 容ã調æ»ããããšã«ããŸããã
ãã³ã°ã«ã¬ã·ãŒããŒã®ãå éšäžçãã¯éåžžã«èå³æ·±ãã§ãã ãã³ã°ã«ã¯ç°¡åã«å解ã§ããUSB ã³ã³ãããŒã©ãå èµãã䜿ãæ £ãã NRF24 ãªãªãŒã¹ãæèŒããŠãããUSB åŽãšããã°ã©ãããçŽæ¥åããã°ã©ã ããããšãã§ããŸãã
Logitech ãã³ã°ã« (ããŠãžã³ã°ãªã)
ã䜿çšããŠãã¡ãŒã ãŠã§ã¢ãæŽæ°ããããã®æšæºã¡ã«ããºã ãããããã
å®è¡å
容: ãã¡ãŒã ãŠã§ã¢ RQR_012_005_00028.bin ããã¡ãŒã ãŠã§ã¢ ã¢ããããŒã ããŒã« ã¢ããªã±ãŒã·ã§ã³ã®æ¬äœããæœåºãããŸããã å®å
šæ§ã確èªããããã«ããã³ã°ã« ã³ã³ãããŒã©ãŒãã±ãŒãã«ã§æ¥ç¶ããŸãã
Logitech ãã³ã°ã«ã ChipProg 48 ããã°ã©ããŒã«æ¥ç¶ããããã®ã±ãŒãã«
ãã¡ãŒã ãŠã§ã¢ã®æŽåæ§ãå¶åŸ¡ããããã«ããã¡ãŒã ãŠã§ã¢ã¯ã³ã³ãããŒã©ãŒã®ã¡ã¢ãªã«æ£åžžã«é 眮ãããæ£ããåäœããããŒããŒããšããŠã¹ã¯ Logitech Unifying çµç±ã§ãã³ã°ã«ã«æ¥ç¶ãããŸããã ãã¡ãŒã ãŠã§ã¢ã«ã¯æå·åä¿è·ã¡ã«ããºã ããªããããæšæºã®æŽæ°ã¡ã«ããºã ã䜿çšããŠå€æŽããããã¡ãŒã ãŠã§ã¢ãã¢ããããŒãããããšãã§ããŸãã ç 究ç®çã§ã¯ããããã°ãã¯ããã«é«éã§ãããããããã°ã©ããžã®ç©çæ¥ç¶ã䜿çšããŸããã
ãã¡ãŒã ãŠã§ã¢ã®èª¿æ»ãšãŠãŒã¶ãŒå ¥åã«å¯Ÿããæ»æ
NRF24 ãããã¯ãäŒçµ±çãªããŒããŒã ã¢ãŒããã¯ãã£ã® Intel 8051 ã³ã³ãã¥ãŒãã£ã³ã° ã³ã¢ã«åºã¥ããŠèšèšãããŠããŸãã ã³ã¢ã«ãšã£ãŠããã©ã³ã·ãŒããŒã¯åšââ蟺ããã€ã¹ãšããŠæ©èœããã¬ãžã¹ã¿ã®ã»ãããšããŠã¢ãã¬ã¹ç©ºéã«é 眮ãããŸãã ãããã®ããã¥ã¡ã³ããšãœãŒã¹ ã³ãŒãã®ãµã³ãã«ã¯ã€ã³ã¿ãŒãããã§å ¥æã§ããããããã¡ãŒã ãŠã§ã¢ã®éã¢ã»ã³ãã«ã¯é£ãããããŸããã ãªããŒã¹ ãšã³ãžãã¢ãªã³ã°äžã«ãããŒã¹ãããŒã¯ ããŒã¿ãç¡ç·ãã£ãã«ããåä¿¡ããããã USB ã€ã³ã¿ãŒãã§ã€ã¹çµç±ã§ãã¹ãã«éä¿¡ããããã« HID 圢åŒã«å€æããæ©èœãããŒã«ã©ã€ãºããŸããã ã€ã³ãžã§ã¯ã·ã§ã³ ã³ãŒãã¯ç©ºãã¡ã¢ãª ã¢ãã¬ã¹ã«é 眮ãããããã«ã¯å¶åŸ¡ãååããå ã®å®è¡ã³ã³ããã¹ããšæ©èœã³ãŒããä¿åããã³åŸ©å ããããã®ããŒã«ãå«ãŸããŠããŸããã
ãã³ã°ã«ãç¡ç·ãã£ãã«ããåä¿¡ããããŒãæŒãããé¢ããããããã±ããã¯ã埩å·åãããæšæºã® HID ã¬ããŒãã«å€æãããéåžžã®ããŒããŒãããã®å Žåãšåæ§ã« USB ã€ã³ã¿ãŒãã§ã€ã¹ã«éä¿¡ãããŸãã 調æ»ã®äžç°ãšããŠãç§ãã¡ã«ãšã£ãŠæãèå³æ·±ã HID ã¬ããŒãã®éšåã¯ã修食åãã©ã°ã® 6 ãã€ããšããŒã¹ãããŒã¯ ã³ãŒããå«ã XNUMX ãã€ãã®é
åãå«ã HID ã¬ããŒãã®éšåã§ã (åèãšããŠãHID ã«é¢ããæ
å ±ãåç
§ããŠãã ãã)ã
HID ã¬ããŒãã®æ§é :
// Keyboard HID report structure.
// See https://flylib.com/books/en/4.168.1.83/1/ (last access 2018 december)
// "Reports and Report Descriptors", "Programming the Microsoft Windows Driver Model"
typedef struct{
uint8_t Modifiers;
uint8_t Reserved;
uint8_t KeyCode[6];
}HidKbdReport_t;
HID æ§é ããã¹ãã«éä¿¡ããçŽåã«ãæ¿å ¥ãããã³ãŒããå¶åŸ¡ãåŒãç¶ããã¡ã¢ãªå ã® 8 ãã€ãã®ãã€ãã£ã HID ããŒã¿ãã³ããŒãããããã¯ãªã¢ ããã¹ãã§ç¡ç·ãµã€ã ãã£ãã«ã«éä¿¡ããŸãã ã³ãŒãã§ã¯æ¬¡ã®ããã«ãªããŸãã
//~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~>
// Profiling have shown time execution ~1.88 mSec this block of code
SaveRfState(); // save transceiver state
RfInitForTransmition(TransmitRfAddress); // configure for special trnsmition
hal_nrf_write_tx_payload_noack(pDataToSend,sizeof(HidKbdReport_t)); // Write payload to radio TX FIFO
CE_PULSE(); // Toggle radio CE signal to start transmission
RestoreRfState(); // restore original transceiver state
//~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~<
ãµã€ããã£ãã«ã¯ãæäœé床ãšãã±ããæ§é ã®ç¹å®ã®ç¹æ§ã䜿çšããŠèšå®ããåšæ³¢æ°ã§ç·šæãããŸãã
ãããå
ã®ãã©ã³ã·ãŒããŒã®åäœ
ãµã€ããã£ãã«ã®åŸ©èª¿ããŒã¹ãããŒã¹ãä¿¡å·
ãã±ããããµã€ã ãã£ãã«ã«éä¿¡ãããåŸãæ³šå ¥ãããã³ãŒãã«ãã£ãŠãã©ã³ã·ãŒããŒã®ç¶æ ã埩å ãããŸãã ããã§ãå ã®ãã¡ãŒã ãŠã§ã¢ã®ã³ã³ããã¹ãã§æ£åžžã«åäœããæºåãåã³æŽããŸããã
åšæ³¢æ°é åããã³æé-åšæ³¢æ°é åã§ã¯ããµã€ã ãã£ãã«ã¯æ¬¡ã®ããã«ãªããŸãã
ãµã€ããã£ãã«ã®ã¹ãã¯ãã«ããã³æéåšæ³¢æ°è¡šçŸ
ãã¡ãŒã ãŠã§ã¢ãå€æŽããã NRF24 ãããã®åäœããã¹ãããããã«ããã¡ãŒã ãŠã§ã¢ãå€æŽããã Logitech ãã³ã°ã«ãã¯ã€ã€ã¬ã¹ ããŒããŒããNRF24 ããããæèŒããäžåœè£œã¢ãžã¥ãŒã«ã«åºã¥ããŠçµã¿ç«ãŠãããã¬ã·ãŒããŒãå«ãã¹ã¿ã³ããçµã¿ç«ãŠãŸããã
ããžã¯ãŒã« ã¯ã€ã€ã¬ã¹ ããŒããŒãç¡ç·ä¿¡å·åååè·¯
NRF24ããŒã¹ã®ã¢ãžã¥ãŒã«
ãã³ãã§ã¯ãããžã¯ãŒã« ãã³ã°ã«ã«æ¥ç¶ããåŸãããŒããŒããæ£åžžã«åäœããŠããç¶æ ã§ããµã€ãç¡ç·ãã£ãã«ã§ã®ããŒã¹ãããŒã¯ã«é¢ããã¯ãªã¢ãªããŒã¿ã®éä¿¡ãšãã¡ã€ã³ç¡ç·ã€ã³ã¿ãŒãã§ã€ã¹ã§ã®æå·åãããããŒã¿ã®éåžžã®éä¿¡ã芳å¯ããŸããã ãããã£ãŠããŠãŒã¶ãŒã®ããŒããŒãå ¥åãçŽæ¥ã€ã³ã¿ãŒã»ããããããšãã§ããŸããã
ããŒããŒãå ¥åãã€ã³ã¿ãŒã»ããããçµæ
æ¿å ¥ãããã³ãŒãã«ããããã³ã°ã« ãã¡ãŒã ãŠã§ã¢ã®åäœã«ããããªé 延ãçããŸãã ãã ããå°ãããããããŠãŒã¶ãŒã¯æ°ã¥ããŸããã
ãæ³åã®ãšãããUnifying ãã¯ãããžãŒãšäºææ§ã®ãã Logitech ããŒããŒãã¯ããã®æ»æãã¯ãã«ã«äœ¿çšã§ããŸãã ãã®æ»æã¯ãã»ãšãã©ã® Logitech ããŒããŒãã«å«ãŸãã Unifying ã¬ã·ãŒããŒãã¿ãŒã²ãããšããŠãããããç¹å®ã®ããŒããŒã ã¢ãã«ã«ã¯äŸåããŸããã
ãŸãšã
ç 究çµæã¯ãæ€èšãããã·ããªãªãæ»æè ã«ãã£ãŠäœ¿çšãããå¯èœæ§ã瀺åããŠããŸããããã«ãŒã被害è ãããžã¯ãŒã«ã®ã¯ã€ã€ã¬ã¹ ããŒããŒãã®ãã³ã°ã« ã¬ã·ãŒããŒã«çœ®ãæããå Žåããã®åŸã®ãã¹ãŠã®æ å ±ã䜿çšããŠè¢«å®³è ã®ã¢ã«ãŠã³ãã®ãã¹ã¯ãŒããèŠã€ããããšãã§ããŸããçµæã ããŒã¹ãããŒã¯ãæ¿å ¥ããããšãå¯èœã§ããããšãå¿ããªãã§ãã ãããã€ãŸãã被害è ã®ã³ã³ãã¥ãŒã¿äžã§ä»»æã®ã³ãŒããå®è¡ããããšã¯é£ãããããŸããã
çªç¶ãæ»æè ã USB çµç±ã§ Logitech ãã³ã°ã«ã®ãã¡ãŒã ãŠã§ã¢ããªã¢ãŒãã§å€æŽã§ããããã«ãªã£ããã©ããªãã§ãããã? 次ã«ãå¯ã«é 眮ããããã³ã°ã«ãããªããŒã¿ãŒã®ãããã¯ãŒã¯ãäœæããæŒæŽ©è·é¢ãå¢ããããšãã§ããŸãã ãçµæžçã«è£çŠãªãæ»æè ã¯ãé£ã®å»ºç©ããã§ãããŒããŒãå ¥åããçèŽãããŠããŒãæŒãããšãã§ããŸãããé«åºŠã«éžæçãªã·ã¹ãã ãåããææ°ã®ç¡ç·åä¿¡è£ çœ®ãåšæ³¢æ°å調æéãçãé«æ床ã®ç¡ç·åä¿¡æ©ãããã³é«æåæ§ã¢ã³ãããåããŠãããããæ»æãå¯èœã«ãªããŸããããŒããŒãå ¥åããèããŠããé£ã®å»ºç©ããã§ãããŒãæŒãããšãã§ããŸãã
æ¥åçšç¡ç·æ©åš
Logitech ããŒããŒãã®ã¯ã€ã€ã¬ã¹ ããŒã¿éä¿¡ãã£ãã«ã¯ååã«ä¿è·ãããŠãããããçºèŠãããæ»æãã¯ãã«ã«ã¯åä¿¡æ©ãžã®ç©ççãªã¢ã¯ã»ã¹ãå¿ èŠã§ãããæ»æè ãå€§å¹ ã«å¶éãããŸãã ãã®å Žåã®å¯äžã®ä¿è·ãªãã·ã§ã³ã¯ãåä¿¡åŽãã¡ãŒã ãŠã§ã¢ã«æå·åä¿è·ã¡ã«ããºã ã䜿çšããããšã§ããããšãã°ãåä¿¡åŽã§ããŒãããããã¡ãŒã ãŠã§ã¢ã®çœ²åã確èªããŸãã ããããæ®å¿µãªãããNRF24 ã¯ããããµããŒãããŠããããçŸåšã®ããã€ã¹ ã¢ãŒããã¯ãã£å ã§ä¿è·ãå®è£ ããããšã¯äžå¯èœã§ãã èšèŒãããŠããæ»æãªãã·ã§ã³ã§ã¯ãã³ã°ã«ãžã®ç©ççãªã¢ã¯ã»ã¹ãå¿ èŠãšãªãããããã³ã°ã«ã®ç®¡çã«ã¯æ³šæããŠãã ããã
Raccoon Security ã¯ãå®çšçãªæ å ±ã»ãã¥ãªãã£ãæå·åãåè·¯èšèšããªããŒã¹ ãšã³ãžãã¢ãªã³ã°ãäœã¬ãã« ãœãããŠã§ã¢äœæã®åéã«ããã Vulcan ç 究éçºã»ã³ã¿ãŒã®å°é家ãããªãç¹å¥ããŒã ã§ãã
åºæïŒ habr.com