web-dev-qa-db-fra.com

Comment puis-je utiliser netcat comme ping?

Comment pouvons-nous utiliser le netcat (nc) pour déterminer si une machine particulière exécute des services Web, de messagerie ou SSH?

6
stevGates

Pour identifier si un serveur est en cours d'exécution, il vous suffit de déterminer si le port est ouvert pour les demandes. En utilisant netcat, vous pouvez interroger un serveur comme celui-ci:

nc -z www.example.com 80

Cela vous dira s'il écoute sur le port 80, le port Web, mais il ne vous dira rien d'autre sur le serveur.

Pour utiliser netcat pour en savoir plus, vous devez lui transmettre les données correctes pour obtenir une réponse valide. Cela signifie que vous devez comprendre http si vous voulez savoir s'il exécute un serveur Web, smtp s'il exécute un expéditeur de courrier, etc. Vous devez savoir sur quel port un serveur Web s'exécute, le nom du serveur, le protocole , tout.

Voici un exemple simple de la façon dont je déterminerais si www.example.com hébergeait un serveur Web en direct à l'aide de netcat.

echo -e "GET http://www.example.com HTTP/1.0\n\n" | nc www.example.com 80 | less 

Si cela revient avec une réponse contenant HTTP/1.0 200 OK, il exécute un serveur Web sur le port 80. Sinon, il ne peut pas exécuter un serveur Web typique.

Vous devrez découvrir et comprendre les protocoles des serveurs de messagerie et des serveurs ssh si vous souhaitez les interroger de la même manière.

Cependant, Netcat n'est vraiment pas le bon outil pour ce travail. Si vous souhaitez identifier les types de serveurs exécutés par un hôte, nmap est un bien meilleur outil car il est tenu à jour avec les différentes empreintes digitales des serveurs communs que vous êtes susceptible de rencontrer.

9
John Deters

Répondez à ce qui a été demandé, aucune suggestion ou information supplémentaire.

Pour tester si le service s'exécute sur le serveur distant.

nc -zvn IP PORT

ex. pour tester smtp

nc -zvn 10.8.0.45 25
3
avicoder

Comme je l'ai dit sur superuser.com:

Oui, utilisez HPing pour ce faire:

$ Sudo hping -S -p 80 google.com
HPING google.com (p5p1 77.237.27.37): S set, 40 headers + 0 data bytes
len=46 ip=77.237.27.37 ttl=58 id=25706 sport=80 flags=SA seq=0 win=29200 rtt=7.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25707 sport=80 flags=SA seq=1 win=29200 rtt=7.4 ms
len=46 ip=77.237.27.37 ttl=58 id=25708 sport=80 flags=SA seq=2 win=29200 rtt=8.5 ms
len=46 ip=77.237.27.37 ttl=58 id=25709 sport=80 flags=SA seq=3 win=29200 rtt=7.8 ms
^C
--- google.com hping statistic ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 7.4/7.8/8.5 ms

Notez qu'il a besoin des privilèges root (ou des capacités SELinux) pour créer des paquets IP bruts, tout comme ping (qui est probablement suid sur votre système).

Source: https://superuser.com/a/769980/171552

0
d33tah

Cela peut répondre à votre question; netcat peut effectuer une analyse de port:

"Le balayage de port est une méthode populaire pour explorer ce qui existe. Netcat accepte ses commandes avec des options d'abord, puis l'hôte cible, et tout ensuite est interprété comme des noms ou des numéros de port, ou des plages de ports dans la syntaxe MN. CAVEAT: certains ports noms dans /etc/services contient des tirets - netcat ne les analysera pas correctement actuellement, donc spécifiez les plages en utilisant des nombres si vous le pouvez. Si plusieurs ports sont ainsi spécifiés, netcat se connecte à tous d'entre eux, en envoyant le même lot de données à partir d'une entrée standard [d'une valeur pouvant atteindre 8 000] à chacun qui est connecté avec succès. La spécification de plusieurs ports supprime également les messages de diagnostic sur les connexions refusées, sauf si -v est spécifié deux fois pour "plus de verbosité". De cette façon, vous êtes normalement averti uniquement des connexions réellement ouvertes. Exemple: nc -v -w 2 -z target 20-30 essaiera de se connecter à chaque port entre 20 et 30 [inclus] sur la cible, et vous informera probablement d'un serveur FTP, d'un serveur telnet et d'un expéditeur en cours de route. Le -z switch empêche d'envoyer des données vers une connexion TCP et des données de sonde très limitées vers une connexion UDP, et est donc utile comme mode de numérisation rapide juste pour voir sur quels ports la cible écoute. Pour limiter la vitesse de numérisation si vous le souhaitez, -i insérera un délai entre chaque sonde de port. Il y a quelques pièges en ce qui concerne le scan UDP, décrits plus loin, mais en général, cela fonctionne bien. "

http://nc110.sourceforge.net

0
multithr3at3d