Semelhante a detecção de SO , cada servidor web tem pequenas peculiaridades e comportamentos diferentes sob algumas condições que podem ser detectadas. Eu não sei os métodos precisos do topo da minha cabeça. Isso é feito com frequência ao enviar solicitações inválidas ou incomuns e ver qual é a mensagem de erro ou a resposta. O Apache pode manipular uma solicitação inválida específica de forma ligeiramente diferente do IIS.
Parte disso será mascarada se você tiver um proxy reverso ou um balanceador de carga no caminho. Em vez de aprender sobre o seu servidor web, a pessoa curiosa aprenderia o seu proxy.