Los atacantes reconocerán el propio sistema operativo al analizar los detalles sutiles de los paquetes TCP / IP . Nmap puede hacerlo fácilmente. El servidor SSH también tiene una pancarta (enviada como primer elemento en la conexión) que puede dar muchas pistas. De forma similar, el software que utilice probablemente se revelará por su dinámica . Lo que usted piense como un "encabezado HTTP" único y atómico se enviará como una o varias llamadas elementales write()
, que luego se emitirán como algunos paquetes IP; La posición de la división y el tiempo exacto entre las emisiones pueden indicar mucho sobre el software involucrado.
El orden de los encabezados HTTP también puede dar pistas sobre el software del servidor. Veo que usa gzip
de compresión: zlib estará involucrado, pero no todas las versiones comprimen la misma entrada a la misma secuencia exacta de bytes ( descompresión es completamente determinista, pero compresión deja muchas opciones abiertas, y cada versión de zlib puede hacer elecciones distintas cuando se esfuerza por lograr la tasa de compresión máxima o operación más rápida).
La única manera segura de ocultar su versión de software es escribir su propio software (y nunca publicarlo). Escribir su propio sistema operativo o, al menos, la pila TCP / IP, aunque es factible, es un esfuerzo bastante desalentador.
De todos modos, argumentaré que prevenir la detección de versiones no es realmente relevante. Si un atacante conoce uno o dos ataques no publicados, entonces ... simplemente los probará. Por si acaso. Él no necesita saber la versión exacta del software para eso. Saber la versión exacta es útil solo cuando el atacante tiene cientos o miles de ataques para elegir y no tiene tiempo suficiente para probarlos todos; esta situación no se aplica a exploits no reportados , que tienden a ser valiosos porque son raros . Un atacante determinado se consideraría muy afortunado si tuviera acceso a más de dos o tres ataques que, hasta el momento, son desconocidos para el público en general.