Eu tenho um aplicativo C# que escrevi que escuta na porta 789. Ele está sendo executado em um computador com Windows XP Professional. Correndo
netstat -an | find "789"
TCP 0.0.0.0:789 0.0.0.0:0 LISTENING
Quando executo nmap -A -vv ip
em uma máquina Linux diferente (mas na mesma sub-rede), ele relata apenas outras portas abertas no host (ou seja, mysql, vnc, etc), mas não a porta aberta pelo meu aplicativo.
No entanto, quando corro, nmap -p 789 ip
recebo:
PORT STATE SERVICE
789/tcp open unknown
Por que há uma diferença entre as duas varreduras do nmap? Há algo que eu possa fazer para garantir que o nmap detecte a porta aberta ao fazer uma varredura completa?
Responder1
Por padrão, o nmap procura apenas portas "comuns" (as 1000 portas mais comuns por protocolo, acredito). Como 789 não é uma porta comum, ela não foi encontrada. Se você fizer
nmap -A -vv -p- ip
ele deve verificar as portas 1-65535.
Aqui está a documentação do nmap que informa quais portas são verificadas por padrão: http://nmap.org/book/man-port-specification.html
Responder2
A única maneira de fazer isso é modificar o arquivo de serviços do seu nmap, o que não é recomendado. A -A
opção executa opções avançadas, incluindo detecção de serviço, detecção de sistema operacional, tracerouting, etc. - ela não verifica toda a gama. Se você quiser verificar todas as portas de 65k, use a opção -p-
. Fora isso, basta especificar a porta com -p 789
. Sua melhor opção é provavelmente criar um alias que faça isso nmap -p 789
, para economizar tempo.
Se você realmente precisa alterar o arquivo de serviços (/usr/local/share/nmap/nmap-services por padrão), encontre a linha que diz unknown 789/tcp 0.000075
e substitua-a pelo nome do seu programa, e coloque o número no final em 0.9
, então é a porta superior que o nmap inclui. Um apelido seria muito melhor.
Responder3
Eu não tenho certeza. Está detectando como "aberto", é isso que você quer, certo? Então ééaudição. Por que não está sendo encontrado com -A, não tenho certeza.
Editar - trata-se de documentação antiga que pode não se aplicar à sua versão. Corra man nmap
e diga-nos qual versão você possui.
Nos documentos, vejo:
"O padrão é verificar todas as portas entre 1 e 1024, bem como todas as portas listadas no arquivo de serviços que vem com o nmap."
Portanto, 789 deve ser verificado, mesmo que você não o tenha em seu arquivo de serviços (já que está rotulado como "desconhecido", tenho certeza que não está).
Assim, não sei. Verifique seu arquivo man para sua versão do nmap, talvez seu comportamento para quais portas verificar usando -A seja diferente do documento que encontrei?
Este é improvável, mas pode valer a pena investigar - A diferença pode estar no seu ID de usuário na máquina Linux. Usuários privilegiados e não privilegiados do NMap têm diferentes tipos de verificação padrão. Usuários com root podem fazer varreduras TCP SYN, usuários sem o padrão TCP connect() .
Responder4
O nmap -A
é o comando agressivo, pois irá executar vários scripts em segundo plano e essa é a principal razão pela qual lhe dará mais resultados. Ele combina a detecção de versão -sV
com a detecção do sistema operacional -O
(letra O maiúscula e não o número zero) e outros scripts de descoberta. Nmap por padrão e se não for fornecido o número da porta específico irá verificar as primeiras 1000 portas mais comuns(estas são especificadas noserviços nmaparquivo que você pode editar). O comando agressivo pode ser alimentado com as portas que você deseja verificar, para que você não obtenha resultados para outras portas além daquela que deseja verificar, TCP 789
nmap -p 789 -A TARGET_IP_ADDRESS_OR_IP_RANGE
enquanto que se você quiser apenas verificar se a porta, 789 no seu caso, está aberta/fechada/filtrada
nmap -p 789 TARGET_IP_ADDRESS_OR_IP_RANGE
Como -A
executa vários scripts e é barulhento (em termos de tráfego de rede), ele é facilmente sinalizado por IDSs e provavelmente será bloqueado por firewalls ou IPSs e esse pode ser um dos motivos pelos quais não fornece o status correto da porta.