Steganografia utilizzando tutte le porte TCP / UDP?

1

Ho appena avuto un'idea, e di solito quando ne trovo uno, risulta che era già stato inventato, quindi ...

Esistono standard che consistono in più parti che sniffano su tutte le loro connessioni TCP / UDP che invierebbero messaggi tramite numeri di porta invece di (o in aggiunta) dati inviati attraverso le porte? Un sofisticato sistema di bussare alla porta? Un tale sistema renderebbe più difficile rilevare un tentativo di nascondere la connessione effettiva?

    
posta d33tah 08.01.2013 - 21:25
fonte

1 risposta

6

Lo sniffing delle porte è lento: devi inviare un sacco di pacchetti e usare un timeout per sapere quali porte sono aperte e quali no. Inoltre, è molto raro che l'elenco delle porte aperte su un server cambi ogni 2 minuti. La steganografia non può esistere se implica impostazioni insolite; si sforza di non dare nell'occhio.

Quello che potresti fare è nascondere i dati in porte sorgente . Ogni volta che si invia un pacchetto UDP a un server di destinazione, il pacchetto viene contrassegnato con la porta di destinazione (che è spesso ben nota, ad esempio 53 per una richiesta DNS) e una porta di origine . La porta di origine è momentaneamente aperta sul client e destinata a ricevere la risposta, nel caso in cui venga inviata una risposta (anche in questo caso, questa è una situazione normale con DNS). In condizioni normali, la porta di origine viene scelta casualmente dal client; le applicazioni non hanno bisogno di preoccuparsene, sono allocate dal kernel). Ma l'applicazione potrebbe scegliere la porta di origine (si tratta di una chiamata di sistema bind() prima di inviare il pacchetto) e quindi trasmettere le informazioni in modo nascosto al server.

In questo modo, puoi inviare informazioni segrete al server con il pretesto di richieste DNS dall'aspetto innocente. Per simulare la normale allocazione casuale delle porte come eseguita dai sistemi operativi, dovresti limitarti all'incirca allo stesso intervallo, in modo da poter inviare, ad esempio, circa 12 bit di informazioni per richieste. Per rendere il trasferimento nascosto non rilevabile, è necessario crittografare i dati (le porte di origine devono "apparire casuali" e nulla sembra più casuale dei dati crittografati).

È una proprietà generica: ogni volta che un protocollo di dati include elementi che dovrebbero essere scelti casualmente dal server, può essere sovvertito in un canale di dati nascosto. Questo è solitamente considerato un problema di sicurezza, perché consente al mittente di divulgare dati critici a terzi senza che il ricevente se ne accorga. Un esempio è il riempimento dei dati dei record in SSL 3.0 (sezione 5.2.3.2), quando viene utilizzato un codice a blocchi: il il valore dei byte di padding può essere scelto arbitrariamente dal mittente. È stato corretto in TLS 1.0 , dove viene applicato il valore dei byte di riempimento:

Each uint8 in the padding data vector must be filled with the padding length value.

Non conosco nessuno standard per fare steganografia attraverso i numeri di porta. Quando vieni giù, sembra abbastanza inutile. Inoltre, per sua natura, la "steganografia" non si sposa bene con gli "standard".

    
risposta data 08.01.2013 - 22:09
fonte

Leggi altre domande sui tag