Il sistema operativo stesso verrà riconosciuto dagli aggressori, analizzando i dettagli sottili dei pacchetti TCP / IP . Nmap può farlo facilmente. Il server SSH ha anche un banner (inviato come primo elemento alla connessione) che può dare molti indizi. Allo stesso modo, il software che utilizzi sarà probabilmente rivelato dalle sue dinamiche . Quello che viene considerato come una singola "intestazione HTTP" atomica verrà inviato come una o più chiamate elementari write()
, che verranno poi emesse come alcuni pacchetti IP; la posizione della divisione, e il tempo esatto tra le emissioni, potrebbero rivelarsi abbastanza importanti sul software coinvolto.
L'ordinamento delle intestazioni HTTP può anche dare indizi sul software del server. Vedo che usi gzip
compressione: sarà coinvolto zlib , ma non tutte le versioni comprimono lo stesso input per la stessa identica sequenza di byte (la decompressione è completamente deterministica, ma la compressione lascia aperte molte scelte, e ogni versione di zlib può fare scelte distinte quando si sforza di raggiungere il massimo tasso di compressione o operazione più veloce).
L'unico modo sicuro per nascondere la tua versione del software è scrivere il tuo software (e non pubblicarlo mai). Scrivere il proprio sistema operativo o almeno lo stack TCP / IP, anche se fattibile, è uno sforzo piuttosto scoraggiante.
Comunque, sosterrò che prevenire il rilevamento della versione non è veramente rilevante. Se un attaccante conosce uno o due attacchi non pubblicati, allora ... li proverà. Nel caso in cui. Non ha bisogno di conoscere la versione esatta del software per quello. Conoscere la versione esatta è utile solo quando l'attaccante ha centinaia o migliaia di exploit tra cui scegliere e non ha abbastanza tempo per provarli tutti; questa situazione non si applica a exploit non dichiarati , che tendono ad essere preziosi perché sono rari . Un determinato attaccante si considererebbe davvero fortunato se ha accesso a più di due o tre exploit che sono, ancora, sconosciuti al grande pubblico.