Mr. Robot Disassemblato: eps3.9_shutdown -r

Ciao amico. Sono Ryan Kazanciyan, consulente tecnico per Mr. Robot e Chief Security Architect per Tanium. Ho lavorato con Kor Adana - scrittore, produttore e mente dietro l'ARG - e il resto del team di Mr. Robot dalla seconda metà della stagione 2. Per tutta la stagione 3, scriverò degli hack descritti in lo spettacolo, come si sono uniti e le loro basi nella realtà.

Avviso spoiler! Questo post illustra gli eventi del finale della stagione 3.

Come suggerisce il titolo, "eps3.9_shutdown -r" segna sia una conclusione che un nuovo inizio - un riavvio - per Elliot e il suo rapporto con Mr. Robot. È quindi appropriato che gli hack in questo episodio evocino scene della prima stagione, e allo stesso modo siano stati tra i primi e gli ultimi elementi tecnici che Kor e io abbiamo progettato nell'ultimo anno.

Password cracking, con un po 'di LUKS

Durante l'episodio della scorsa settimana, abbiamo visto il contenuto della catena di custodia del NYPD che Trenton ha allegato alla sua e-mail "killswitch" a Elliot. Descriveva in dettaglio le prove sequestrate dalla casa di Romero, che includeva quattro registratori di battitura con partizioni di dati crittografate. Il NYPD non è stato in grado di recuperare i contenuti da questi dispositivi e, presumibilmente, nemmeno l'FBI.

Modulo di catena di custodia che elenca le prove della casa di Romero

Quando Dom dà a Elliot l'accesso al suo computer dell'FBI e a Sentinel, può recuperare immagini forensi dei keylogger, ma deve ancora capire come decifrare la password per visualizzare i loro dati acquisiti.

I parametri per questa scena hanno posto alcune sfide tecniche interessanti. L'FBI ha molta potenza di calcolo per forzare la sua forza attraverso prove criptate. Non sarebbe credibile se Elliot si imbattesse nella password alimentando un file di dizionario comune attraverso uno strumento di cracking come John lo Squartatore. Inoltre, Romero sarebbe stato abbastanza esperto da usare una password lunga e un algoritmo di crittografia forte.

Ho deciso che i keylogger di Romero sono stati progettati per archiviare i dati acquisiti utilizzando LUKS, una specifica di crittografia del disco per Linux. Tra gli altri vantaggi, l'implementazione di riferimento per LUKS utilizza un algoritmo computazionalmente lento, che rende difficile decifrare tramite indovinazioni automatiche di password o forza bruta.

Come può Elliot avere successo quando l'FBI fallisce? Si affida alla sua conoscenza della personalità, degli interessi e delle abitudini di Romero come hacker per creare un elenco di parole migliore. Kor e io alla fine abbiamo avuto l'idea di usare la musica - un testo di una canzone trasformato in una passphrase. Ha messo insieme un elenco degli artisti preferiti di Romero e io mi sono bloccato a un certo Curtis Mayfield mentre lavoravo sulla scena.

Elliot ha bisogno di una serie di strumenti che non sarebbero presenti sul computer dell'FBI di Dom. Abbiamo progettato questa scena partendo dal presupposto che prima avesse SSH in un'istanza di Kali che aveva impostato su un VPS, prima di procedere come visto sullo schermo.

Vediamo per la prima volta Elliot che esegue PyL Cognomi per scaricare i testi di tutte le canzoni degli artisti preferiti di Romero:

Scaricare testi per creare un elenco di parole mirate per decifrare le password dei keylogger di Romero

L'output è memorizzato in un singolo file, "lyrics.txt", per servire come input per gli strumenti di cracking delle password.

Nel prossimo (molto breve) scatto, vediamo due finestre affiancate. La finestra di sinistra mostra l'output di un comando che elenca le informazioni su una partizione del disco LUKS:

cryptsetup luksDump ~ / keyintercept_1.raw

Elliot eseguirà questo per confermare il tipo di crittografia in uso.

Analisi LUKS a sinistra; iniziando l'attacco di cracking della password sulla destra

La finestra a destra mostra il processo di cracking. Inizialmente volevo usare Hashcat, uno degli strumenti di recupero password più popolari, per questa scena. Sfortunatamente, Hashcat non ha introdotto il supporto per LUKS fino a tardi nel 2016. Elliot finisce per eseguire uno strumento più vecchio, bruteforce-luks, che può solo indovinare poche decine di password al secondo.

Chiudiamo nella finestra di destra mentre Elliot digita:

bruteforce-luks -t 8 -f ~ / tools / PyLCRIP / lyrics.txt ~ / keyintercept_1.raw

Questo comando fa girare 8 thread simultanei per indovinare le password sull'immagine del disco "keyintercept_1.raw", usando ogni riga di "lyrics.txt" come input.

Dopo il prossimo taglio, vediamo che la creatività di Elliot ha dato i suoi frutti. La password di Romero è una riga di "Non preoccuparti" di Curtis Mayfield:

E se c'è un inferno sotto, andremo tutti

(Sì, è la stessa canzone usata nei titoli di testa di "The Deuce". Completa coincidenza!)

Elliot procede a montare la partizione LUKS crittografata digitando:

cryptsetup luksOpen ~ / keyintercept_1.raw keyintercept

Montaggio della partizione LUKS

Passa al percorso montato contenente l'output del registro della sequenza di tasti e digita meno keylog.txt per visualizzarne il contenuto.

Non vediamo mai i contenuti reali sullo schermo - sentiamo solo la reazione di Elliot.

“Romero ci stava solo spiando. Ha scoperto che qualcun altro stava esportando i dati chiave. "

E questo pone le basi per la nostra scena finale.

Quanto è stato realistico questo trucco? I passaggi descritti sono tutti autentici; come al solito, ho assicurato che tutto potesse essere riprodotto end-to-end in una macchina virtuale usando gli stessi strumenti. Ma ci siamo presi le libertà artistiche per abbreviare il tempo necessario per craccare una partizione LUKS, soprattutto considerando quanto è lento l'algoritmo. La conoscenza e l'approccio di Elliot hanno massimizzato le sue probabilità, ma è stato comunque fortunato. Potrebbero essere voluti giorni o settimane per decifrare la password di Romero con un ampio elenco di parole. In ogni caso, quel dettaglio non cambia sostanzialmente il modo in cui il resto dell'episodio si svolge.

Determinare il destino di cinque / nove

“Ho trasferito le chiavi dall'arcade a una macchina virtuale remota sulla nostra scatola di casa. L'ho quindi masterizzato su un CD. Troverai i dati di seed e l'algoritmo incorporato in una di quelle immagini. Conoscerai quello. "- Mr. Robot

Elliot ritorna sul suo computer e carica il CD pieno di immagini di lui e suo padre, come avevamo visto inizialmente nella prima stagione. Ho immaginato che avrebbe usato un mix di intuizione e analisi tecnica per trovare il file giusto. Lo vediamo esaminare diverse immagini usando uno script Python, lsb.py, che esegue analisi statistiche per cercare prove di steganografia - di dati nascosti altrimenti invisibili a occhio nudo. Questo particolare strumento si concentra su una tecnica comune in base alla quale il bit meno significativo (LSB) dei valori di pixel viene utilizzato per memorizzare altri dati.

Analisi ed estrazione di dati nascosti da uno dei file di immagine

Elliot è convinto di aver trovato l'immagine giusta: lui e suo padre vestiti da Marty e Doc Brown.

Esamina un dump esadecimale dei primi 256 byte del file con il comando:

xcd -l 256 IMG_5528.jpg

L'intestazione del file indica che si tratta di un file PNG - un formato "lossless" - non di un JPG (il primo è più facilmente utilizzato per la steganografia). Fa una copia funzionante ed esegue un altro strumento, stepic, per estrarre tutti i dati che sono nascosti usando la tecnica LSB:

stepic -d -i IMG_5528_copy.png -o file

Le intuizioni di Elliot erano corrette. L'immagine contiene un codice Python nascosto:

da Crypto.Protocol.KDF import PBKDF2
da Crypto.PublicKey importare RSA
import getpass
infile = raw_input (“File:“)
f = aperto (infile, "r")
password = getpass.getpass ()
f.seek (1024)
salt = f.read (32)
master = PBKDF2 (password, salt, count = 10000)
def notrand (n):
    notrand.i + = 1
    return PBKDF2 (master, str (notrand.i), dkLen = n, count = 1)
notrand.i = 0
RSA_key = RSA.generate (4096, randfunc = notrand)
stampa RSA_key.exportKey ()

Kor ed io abbiamo analizzato i contorni di questa scena durante le prime fasi di pianificazione della stagione 3, ma non ho scritto il codice che vedi sullo schermo fino a molto tempo dopo. È breve e semplice, ma volevo assicurarmi che fosse tecnicamente preciso per non compromettere una parte così importante della storia. E per la piena divulgazione, non sono un crittografo - ne sto solo giocando in TV.

Senza scavare nella fonte, analizziamo come funziona questo script. È progettato per generare una chiave RSA in modo deterministico, utilizzando tre input:

  • una passphrase
  • un valore salt / seed - 32 byte letti da un offset hardcoded in un file di input fornito - in questo caso, un'immagine
  • un generatore di numeri casuali "backdoored" deliberatamente non casuale (da cui la funzione denominata "notrand").

Se presentato con lo stesso passphrase e stesso valore seed, questo script genererà sempre lo stesso output esatto. Quella vulnerabilità - deliberatamente introdotta da Mr. Robot - è ciò che consente a Elliot di rigenerare copie identiche delle chiavi originali.

Se si desidera provare a eseguire lo script sul proprio sistema, assicurarsi di disporre di una copia delle librerie PyCrypto. Dovrebbe funzionare con qualsiasi file seme.

Il ransomware e altri attacchi di crittografia utilizzano spesso un algoritmo simmetrico per crittografare i dati delle vittime. Successivamente, la chiave simmetrica può essere crittografata con la metà pubblica di una coppia di chiavi asimmetrica e archiviata con i file criptati della vittima. Quando le vittime pagano il riscatto, ciò consente all'attaccante di utilizzare la chiave privata per decrittografare e fornire la chiave simmetrica necessaria per recuperare i file.

Elliot esegue lo script, utilizzando lo stesso file di immagine come input per l'algoritmo di crittografia:

Lo script nascosto genera nuovamente una chiave privata RSA

Funziona. Lo script emette una chiave RSA. Con un semplice copia e incolla, Elliot può mettere in moto le cose per annullare l'attacco cinque / nove. Deve solo fare clic su Invia.

Elliot si prepara a inviare la chiave al team di recupero di E-Corp. Prendi nota dell'indirizzo

Appendere la mia felpa con cappuccio

Lavorare su Mr. Robot è stato un lavoro d'amore e vederlo riunirsi dopo un anno di preparazione è stata un'esperienza straordinariamente gratificante. Sono molto orgoglioso di ciò che abbiamo creato e l'entusiasmo dei fan dello show, soprattutto tra i miei amici e colleghi nel settore della sicurezza, ha reso utile ogni grammo di sforzo.

Detto questo, è anche una svolta agrodolce per me: dopo due anni come consulente tecnico, ho preso la difficile decisione di appendere la felpa e passare a nuove opportunità. Mi sento estremamente fortunato a far parte dello spettacolo, e ha ampliato i miei orizzonti e graffiato un prurito che non sapevo nemmeno di avere. È stato anche un enorme impegno nel tempo, e nel prossimo anno ho bisogno di recuperare la larghezza di banda per altri sforzi emergenti nella mia vita professionale e personale.

Mi mancherà molto lavorare con tutti dietro le quinte, ma rimarrò entusiasta di vedere la prossima stagione dalla prospettiva semplice di un fan - proprio come quando ho iniziato a guardare!

Detto questo, sarei negligente concludere senza alcuni riconoscimenti:

  • Adam Brustein, il fantastico artista e designer che ha dato vita agli schermi che vedi nello show. Ogni scatto è scrupolosamente realizzato come un'animazione interattiva per abbinare l'aspetto e il comportamento del software reale. Naturalmente, i suoi talenti vanno ben oltre l'emulazione delle GUI del computer: controlla il suo sito per alcuni dei suoi altri lavori.
  • David Damato e il consulente dello spettacolo Andre McGregor, che inizialmente mi collegarono a Kor e al resto dell'equipaggio. Tutto risale a un incontro fortuito tra Dave e Kor, quando hanno presentato insieme in un panel al Consumer Electronics Show (CES) a gennaio 2016.
  • Sam Esmail, Kyle Bradstreet e il resto dei produttori e degli scrittori per essersi impegnati con entusiasmo con me stesso e gli altri consulenti dello spettacolo - e per averci fatto sentire parte della famiglia.
  • E, soprattutto, Kor Adana, per avermi fornito l'opportunità e il supporto per contribuire a così tanto di questa stagione, la pazienza di elaborare alcune delle mie idee più folli e il tutoraggio che mi guida attraverso l'apprendimento di questo nuovo mestiere. Non posso che elogiare la sua passione per lo spettacolo e i suoi fan o la sua instancabile attenzione ai dettagli. (Per non parlare del suo lavoro sull'ARG in cima a tutto!) Se non l'hai ancora fatto, dai un'occhiata alla serie di interviste di Kor con Josh Wigler al THR. È la sceneggiatura equivalente ai miei scritti tecnici per questa stagione e mostra davvero quanti dettagli e pensieri vanno in ogni episodio.

Infine, grazie a tutti voi che avete dedicato del tempo a leggere “Mr. Robot: smontato "nel corso di questa stagione. Sono rimasto sbalordito dalla quantità di supporto che hai condiviso nei tuoi tweet, commenti ed e-mail. Mi è piaciuto anche vedere tutte le domande e persino i dibattiti accesi, ispirati da alcuni degli hack che abbiamo creato. Speravo che questi articoli fossero entrambi educativi e divertenti, e sono grato di aver trovato un pubblico disponibile.