E 'possibile intercettare il carico utile di una richiesta sicura in testo semplice?

0

Considera che eseguiamo la seguente richiesta:

import requests
url="https://secretsub.example.com/secretpath/post.php" 
payload = {'secretmessage1' : 'foo','secretmessage2' : 'bar'}
r = requests.post(url,data=payload,verify=True)

Il linguaggio (python) è arbitrario, ma può essere una richiesta su qualsiasi altra lingua (NodeJs, Java, Php ...)

Si noti che l'url sta usando https, il che significa che la connessione è protetta su SSL. Supponendo che io compili questo programma in binario (.exe), sarebbe possibile per il computer leggere i carichi utili attraverso un software in testo semplice?

So che il software di sniffing dei pacchetti (come WireShark), rivelerà solo il nome del dominio (example.com) in testo semplice, ma non il secrepath né il payload che verrà crittografato.

Se eseguo questo codice in un browser Web (supponendo che sia scritto in Javascript), sarò in grado di accedere al payload e al secretpath in testo normale all'interno della console del browser. Suppongo che il browser la cripta solo dopo che la richiesta è stata registrata nella sua console. Ma se questo codice viene eseguito all'esterno del browser, esiste un modo per l'host del computer di intercettare tali dati in testo normale? (una specie di strumenti di sniffing dei pacchetti)

    
posta TSR 01.08.2018 - 21:57
fonte

3 risposte

1

Generalmente, si sta utilizzando il protocollo TLS e, quindi, si inizia un handshake con il server, concordando come pacchetti e chiavi di crittografia da utilizzare. Questo è un protocollo sicuro, a condizione che tu possa fidarti di chi stai comunicando (ad esempio convalida del certificato).

Chiedi se il computer host potrebbe intercettare qualcosa. Dopo che la crittografia è avvenuta, direi di no.

Nota a margine, il computer host sta eseguendo la crittografia in un'area di memoria allocata. Se l'host è compromesso nella misura in cui non ci si può fidare della protezione della memoria di quella macchina, o in generale del contesto del processo, il testo in chiaro può essere recuperato prima della crittografia. Ma è impossibile avere zero rischi, quindi non è necessario qualcosa che devi considerare.

    
risposta data 01.08.2018 - 22:21
fonte
0

Nell'esempio corrente, se si compila il codice, è possibile eseguire strings sul file binario e vedere il payload segreto poiché non è crittografato nel file binario.

    
risposta data 01.08.2018 - 23:58
fonte
0

Assuming that I compile this program into binary (.exe), would it be possible for computer to read the payloads through a software in plain text?

Sì.

Nella maggior parte dei casi (ma non in tutti) il programma non incorporerà la funzionalità SSL in sé ma utilizzerà una libreria collegata al runtime - un dll su MSWindow, un .so su Linux. Sarebbe relativamente banale iniettare e astrarre il livello in cima alla libreria per acquisire i dati in / out.

Potresti compilare il programma con link statici (ma non sarebbe molto portabile e non trarrai vantaggio dal patching del sistema operativo per rimanere al sicuro). Ma sarebbe ancora possibile collegare un debugger al processo per vedere il testo in chiaro.

Quindi c'è il problema che qualcuno con il controllo del computer può semplicemente reindirizzare il traffico verso un server che controllano usando un certificato falso - è possibile attenuarlo implementando il proprio blocco personale all'interno dell'applicazione, ma poi ci sei tu ' solo il problema altrove - per proteggere l'hash del certificato - e ora stai mantenendo il tuo stack SSL completo indipendentemente.

Ma se il testo è statico nel file binario e non usa un'elaborata offuscazione (che è la sicurezza per oscurità), non è necessario fare tutto questo, basta decompilarlo o usare "stringhe".

Se ti stai chiedendo specificamente del malware in esecuzione sul client, probabilmente dovrai solo preoccuparti del problema della lib condivisa.

    
risposta data 02.08.2018 - 11:55
fonte

Leggi altre domande sui tag