Come funziona l'exploit EternalBlue?

14

Ho cercato su Google casualmente le spiegazioni su come funziona esattamente l'exploit di EternalBlue ma, supponendo che WannaCry si sia preoccupata dei media, sono stato in grado di trovare risorse che nel migliore dei casi dicono che si tratta di un exploit SMB. Ho capito che c'era un bug nell'implementazione del protocollo SMB da parte di Microsoft, ma quello che mi piacerebbe sapere è esattamente quale tipo di payload doveva essere creato per sfruttare l'errore di sicurezza di Microsoft e cosa ha fatto Microsoft che ha sbagliato Windows vulnerabile a un simile attacco? Anche un link (stimabile) ad un certo codice sorgente sarebbe più di quanto non sia stato in grado di trovare fino ad ora.

    
posta butallmj 16.05.2017 - 22:31
fonte

1 risposta

12

C'è un exploit per EternalBlue in Metasploit spiegato qui :

There is a buffer overflow memmove operation in Srv!SrvOs2FeaToNt. The size is calculated in Srv!SrvOs2FeaListSizeToNt, with mathematical error where a DWORD is subtracted into a WORD. The kernel pool is groomed so that overflow is well laid-out to overwrite an SMBv1 buffer. Actual RIP hijack is later completed in srvnet!SrvNetWskReceiveComplete.

Non sono un esperto e non capisco troppo bene il ruby, ma da quanto ho capito DWORD è il doppio di WORD, che ti consente di scrivere in memoria inviando un buffer di grandi dimensioni. La memoria del kernel è organizzata (governata) mentre i dati vengono scritti, in modo che il carico utile trasmesso abbia senso una volta che il puntatore RIP viene dirottato e punta alla memoria sovrascritta, che verrà quindi letta ed eseguita.

Puoi vedere il codice sorgente qui .

Per quanto riguarda ciò che è stato fatto male, ci doveva essere una sottrazione da DWORD a DWORD o da WORD a WORD. La differenza nelle dimensioni è ciò che ha permesso la sovrascrittura della memoria.

EDIT: Checkpoint ha fatto un incredibile resoconto che spiega tutti e 3 i bug relativi a questo exploit, cosa capito dal codice ruby che ho letto è solo bug 1/3 (bug A in Checkpoint's write-up), se vuoi andare molto più a fondo, dai un'occhiata.

    
risposta data 16.05.2017 - 23:49
fonte

Leggi altre domande sui tag