Non riesci a trovare la stringa "SSH-" nel carico utile [Rilevamento protocollo indipendente dalla porta]?

0

Stavo leggendo il codice da ndpi e ho trovato questa riga -

if (packet->payload_packet_len > 7 && packet->payload_packet_len < 100
    && memcmp(packet->payload, "SSH-", 4) == 0) {
    ....
}

Volevo fare la stessa cosa usando la libreria gopacket (libreria sniffing di pacchetti in golang) ma il carico utile sembra essere crittografato, il che significa che non è in grado di trovare la stringa "SSH-". Essendo un principiante in IS, non sono sicuro di cosa stia succedendo -

applicationLayer := packet.ApplicationLayer()
if applicationLayer != nil {
    fmt.Println("Application layer/Payload found.")
    fmt.Printf("%s\n", applicationLayer.Payload())
    fmt.Println()
    // Search for a string inside the payload
    if strings.Contains(string(applicationLayer.Payload()), "SSH-") {

         fmt.Println("SSH found!")
         fmt.Printf("%s\n", applicationLayer.Payload())
    }
}

Output -

Application layer/Payload found.
?}"o??>A??L??j#??U?|X?:c?K??^1L?)?)???I"

Inoltre sto utilizzando un filtro BPF con porta impostata su 22 e sto anche inviando traffico attraverso il mio server di prova.

Quindi la mia domanda è dove sto andando male? Il mio obiettivo finale è quello di rilevare alcuni protocolli indipendenti dalla porta. Come dovrei avvicinarmi a questo problema?

    
posta hashcode55 10.03.2017 - 12:04
fonte

1 risposta

1

Il primo pacchetto sia dal client che dal server è il payload only che contiene SSH- . Che è quando sia il client che il server stanno tentando di determinare i parametri crittografici.

Se si desidera analizzare SSH, è necessario comprendere appieno il protocollo SSH. Anche dopo aver analizzato l'handshake, non sarai in grado di decifrare i payload del livello dell'applicazione. A meno che non scarichi le chiavi in qualche modo. So che PuTTY ti consente di eseguire il debug di sessioni SSH in questo modo. Quindi dipende da quale sia il tuo obiettivo per sniffare.

Programmi come i protocolli di etichette Wireshark basati su numeri di porta. Se si imposta un daemon SSH sulla porta 4444 e SSH su di esso; Wireshark probabilmente dirà solo che è TCP.

    
risposta data 10.03.2017 - 13:12
fonte

Leggi altre domande sui tag