¿No puede encontrar la cadena "SSH-" en la carga útil [Detección de protocolo independiente del puerto]?

0

Estaba leyendo el código de ndpi y encontré esta línea -

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

Quería hacer lo mismo usando la biblioteca gopacket (biblioteca de rastreo de paquetes en Golang) pero la carga útil parece estar encriptada, lo que significa que no puede encontrar la cadena "SSH-". Al ser un principiante en IS, no estoy seguro de lo que está sucediendo -

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())
    }
}

Salida -

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

También estoy usando un filtro BPF con el puerto configurado en 22, y también estoy enviando tráfico a través de mi servidor de prueba.

¿Entonces mi pregunta es dónde me voy mal? Mi objetivo final es detectar algunos protocolos independientes del puerto. ¿Cómo debo abordar este problema?

    
pregunta hashcode55 10.03.2017 - 12:04
fuente

1 respuesta

1

El primer paquete tanto del cliente como del servidor es la carga útil solo que contiene SSH- . Que es cuando tanto el cliente como el servidor intentan determinar los parámetros criptográficos.

Si desea analizar SSH, deberá comprender completamente el protocolo SSH. Incluso después de analizar el protocolo de enlace, no podrá descifrar las cargas útiles de la capa de aplicación. A menos que vuelvas las llaves de alguna manera. Sé que PuTTY te permite depurar sesiones de SSH de esa manera. Por lo tanto, depende de cuál sea su objetivo para oler.

Programas como los protocolos de etiquetas de Wireshark basados en números de puerto. Si configura un demonio SSH en el puerto 4444, y SSH en él; Wireshark probablemente diga que es TCP.

    
respondido por el RoraΖ 10.03.2017 - 13:12
fuente

Lea otras preguntas en las etiquetas