
Ferramenta de Identificação de Serviços de Rede da Microsoft
Versão: 1.0
Autor: Laurent Gaffie
Empresa: Secorizon
MSFinger é uma ferramenta de identificação de rede de alto desempenho projetada para reconhecimento interno de rede. Ela identifica rapidamente serviços da Microsoft, detecta configurações de segurança e destaca potenciais vulnerabilidades nos protocolos SMB, LDAP e LDAPS.
Principais Características:
MSFinger é escrito em Python puro. Nenhuma dependência adicional é necessária além do Python 3.6+.
cd /path/to/MSFinger
chmod +x MSFinger.py
python3 MSFinger.py -i <target> [options]
| Opção | Descrição | Padrão |
|---|---|---|
-i, --ip | IP alvo, intervalo CIDR ou intervalo de IP | Obrigatório* |
-f, --file | Arquivo contendo alvos (um por linha) | Obrigatório* |
-t, --timeout | Timeout de conexão em segundos | 1.0 |
-w, --workers | Número de workers concorrentes | 100 |
-d, --database | Arquivo de banco de dados SQLite para resultados | MSFinger.db |
--no-color | Desabilitar saída colorida | Desabilitado |
* Deve ser especificado -i ou -f
python3 MSFinger.py -i 192.168.1.10
python3 MSFinger.py -i 192.168.1.0/24
python3 MSFinger.py -i 192.168.1.1-50
python3 MSFinger.py -f targets.txt
Exemplo targets.txt:
192.168.1.0/24
10.0.0.1-100
172.16.5.50
# Comments are supported
192.168.2.0/25
# Faster scan with shorter timeout and more workers
python3 MSFinger.py -i 10.0.0.0/16 -t 0.3 -w 200
# More reliable scan with longer timeout
python3 MSFinger.py -i 192.168.1.0/24 -t 1.0 -w 50
python3 MSFinger.py -i 192.168.1.0/24 -d pentest_2026.db
python3 MSFinger.py -i 192.168.1.0/24 --no-color > scan_results.txt
Os resultados são exibidos em tempo real com indicadores de segurança codificados por cores:
[192.168.1.10] SMB: 3.1.1, Signing: required, OS: Windows Server 2022 21H2, Domain: CORP.LOCAL, Boot: 2026-01-01 10:30:15 | SMB1: disabled | Services: RDP, LDAP (signing: required), LDAPS (signing: required, channel binding: required)
Informações SMB:
SMB: X.X.X - Versão do dialeto SMB (2.0.2, 2.1, 3.0, 3.0.2, 3.1.1)Signing: <status> - exigido/ativado/desabilitadoOS: <version> - Versão do Windows com número de compilaçãoDomain: <name> - Nome do domínio/grupo de trabalho NetBIOSBoot: <time> - Horário de inicialização do sistema (ou Desabilitado/Desconhecido)Status SMB1:
SMB1: disabled - SMB1 não suportado (seguro)SMB1: supported, Signing: <status> - SMB1 ativado (risco potencial)Serviços:
RDP - Protocolo de Área de Trabalho Remota (porta 3389) abertaMSSQL - Microsoft SQL Server (porta 1433) abertaLDAP (signing: <status>) - LDAP na porta 389LDAPS (signing: <status>, channel binding: <status>) - LDAPS na porta 636LDAPS (port open, <error>) - Porta LDAPS respondendo mas handshake SSL falhouMSFinger armazena todos os resultados de varredura em um banco de dados SQLite para armazenamento e análise persistentes.
hosts| Coluna | Tipo | Descrição |
|---|---|---|
id | INTEGER | Chave primária (auto-incremento) |
ip | TEXT | Endereço IP (único) |
hostname | TEXT | Nome do host (reservado para uso futuro) |
os_version | TEXT | Versão do sistema operacional |
os_build | INTEGER | Número de compilação do SO |
domain | TEXT | Nome do domínio/grupo de trabalho |
boot_time | TEXT | Carimbo de data/hora de inicialização do sistema |
smb_dialect | TEXT | Versão do protocolo SMB |
smb_signing | TEXT | Status de assinatura SMB |
smb1_supported | INTEGER | SMB1 ativado (0=não, 1=sim) |
smb1_signing | TEXT | Status de assinatura SMB1 |
rdp_open | INTEGER | Porta RDP aberta (0=não, 1=sim) |
mssql_open | INTEGER | Porta MSSQL aberta (0=não, 1=sim) |
ldap_signing | TEXT | Status de assinatura LDAP |
ldaps_signing | TEXT | Status de assinatura LDAPS |
ldaps_channel_binding | TEXT | Status de vinculação de canal LDAPS |
ldaps_error | TEXT | Erro de conexão LDAPS (se houver) |
scan_time | TIMESTAMP | Carimbo de data/hora da primeira varredura |
last_seen | TIMESTAMP | Carimbo de data/hora da varredura mais recente |
# View all vulnerable hosts (no SMB signing)
sqlite3 MSFinger.db "SELECT ip, os_version, smb_signing FROM hosts WHERE smb_signing != 'required'"
# Find hosts with LDAP signing disabled
sqlite3 MSFinger.db "SELECT ip, domain, ldap_signing FROM hosts WHERE ldap_signing = 'not_required'"
# List all Windows Server 2022 hosts
sqlite3 MSFinger.db "SELECT ip, os_version, domain FROM hosts WHERE os_version LIKE '%Server 2022%'"
# Export to CSV
sqlite3 -header -csv MSFinger.db "SELECT * FROM hosts" > results.csv
# Count hosts by OS
sqlite3 MSFinger.db "SELECT os_version, COUNT(*) FROM hosts GROUP BY os_version"
Protocolos Testados:
Informações Coletadas:
required - O servidor exige assinatura de mensagens (seguro)enabled - O servidor suporta mas não exige assinaturadisabled - Sem suporte a assinatura (vulnerável)Mapeamento de Versão do SO:
| Faixa de Compilação | Sistema Operacional |
|---|---|
| 10240 | Windows 10 1507 |
| 14393 | Windows 10 1607 / Server 2016 |
| 17763 | Windows 10 1809 / Server 2019 |
| 19041-19045 | Windows 10 20H2 - 22H2 |
| 20348 | Windows Server 2022 21H2 |
| 22000+ | Windows 11 |
| 25398 | Windows Server 2025 |
Testa vinculação anônima para determinar os requisitos de assinatura: