Creio que possa ser algo com as portas, ou seja, quando voce abre uma conexao com um host remoto, uma porta alta acima de 1024 (seja udp ou tcp) é aberta localmente.
Quando se faz NAT, para cada porta de origem no pc da rede interna ex.: 3248 é aberta uma porta na maquina que faz NAT ex.: 12485
web(80) <-------------- (12485) gateway <------------ pc interno (3248)
Se fosse possivel descobrir que o windows reserva um range de portas para alocar em processos de NAT, bloquear essas portas resultaria em banir o compartilhamento de conexoes.
Assim, portas altar abertas para NAT poderiam ser identificadas em bloqueadas.
No linux isso também é usado. Dentro do kernel (/proc) existe arquivos de configuração que vc preenche com o range de portas (não lembro quais).
Creio que essa minha teoria seja a mais perto da solução. vou testar no meu laboratorio e ver no que dá!