Muitos serviços revelam informações sobre si mesmos através do protocolo de comunicação. É uma parte vital do estabelecimento de comunicação em alguns casos. Vendo como a maioria das distros são baseadas em binários, com a implicação de que o usuário provavelmente nunca alterará os binários para ocultar (mesmo que a distribuição seja baseada na origem, o usuário não irá incomodar) informações sobre os serviços.
É muito fácil compilar uma lista de "nomes de serviços conhecidos" e usar o nmap para identificar o sistema operacional.
Eu aposto que é até mesmo possível, dado conhecimento suficiente sobre a implementação IP / TCP nos vários sistemas operacionais, para determinar a versão do kernel do sistema operacional usando apenas as respostas TCP de um serviço "seguro". Venha para pensar sobre isso, mesmo respostas ping podem ter uma assinatura.
Para alguém dedicado a esse tipo de atividade (obter acesso a hosts remotos), o ato de identificar alvos viáveis é a primeira e mais trivial tarefa a ser realizada. Eu nunca pensei sobre essas coisas e com uma pesquisa cuidadosamente redigida, é fácil encontrar uma variedade de exemplos como:
$ nmap -sV -vv -PN eee.lan
Starting Nmap 6.01 ( http://nmap.org ) at 2013-04-05 23:57 ope
Initiating ARP Ping Scan at 23:57
Scanning eee.lan (10.3.0.7) [1 port]
Initiating SYN Stealth Scan at 23:57
Scanning eee.lan (10.3.0.7) [1000 ports]
Discovered open port 80/tcp on 10.3.0.7
Discovered open port 445/tcp on 10.3.0.7
Discovered open port 139/tcp on 10.3.0.7
Discovered open port 22/tcp on 10.3.0.7
Discovered open port 111/tcp on 10.3.0.7
Initiating Service scan at 23:57
Scanning 5 services on eee.lan (10.3.0.7)
Initiating RPCGrind Scan against eee.lan (10.3.0.7) at 23:57
NSE: Script scanning 10.3.0.7.
Nmap scan report for eee.lan (10.3.0.7)
rDNS record for 10.3.0.7: eee.lan
Scanned at 2013-04-05 23:57:46 ope for 11s
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.8p1-hpn13v10lpk (protocol 2.0)
80/tcp open http bozohttpd 20100621
111/tcp open rpcbind (rpcbind V2-4) 2-4 (rpc #100000)
139/tcp open netbios-ssn Samba smbd 3.X (workgroup: MYGROUP)
445/tcp open netbios-ssn Samba smbd 3.X (workgroup: MYGROUP)
MAC Address: 00:26:18:97:B7:0B (Asustek Computer)
Read data files from: C:\Program Files (x86)\Nmap
Nmap done: 1 IP address (1 host up) scanned in 12.42 seconds
Raw packets sent: 1001 (44.028KB) | Rcvd: 1001 (40.048KB)
A informação interessante aqui seria: OpenSSH 5.8p1-hpn13v10lpk Só isso poderia permitir que alguém adivinhe qual SO eu estou rodando. Basta procurar por "hpn13v10lpk" ...