2008-09-24 9 views
1

J'ai trouvé un article sur l'obtention de connexions tcp/udp actives sur une machine.Vérification de l'état du port IP à distance

http://www.codeproject.com/KB/IP/iphlpapi.aspx

Ma question est cependant je dois être en mesure de déterminer les connexions actives à distance - pour voir si un port particulier est en cours d'exécution ou écouter sans altérer la machine.

Est-ce possible? Cela ne semble pas être le cas nativement, sinon cela pourrait poser un problème de sécurité. L'alternative serait d'interroger un service distant qui pourrait alors faire les appels nécessaires sur la machine locale.

Des pensées?

Répondre

3

Il n'y a aucun moyen de savoir quels ports sont ouverts sans que l'ordinateur distant ne le sache. Mais vous pouvez déterminer l'information sans que le programme s'exécutant sur le port le sache (c'est-à-dire sans interférer avec le programme).

Utiliser l'analyse SYN:

Pour établir une connexion, TCP utilise une poignée de main à trois voies. Cela peut être exploité pour savoir si un port est ouvert ou non sans que le programme le sache.

La poignée de main fonctionne comme suit:

  1. le client effectue une ouverture active en envoyant un SYN au serveur.
  2. Le serveur répond avec un SYN-ACK.
  3. Normalement, le client envoie un ACK au serveur. Mais cette étape est ignorée.

scan SYN est la forme la plus populaire de TCP scanning. Plutôt que d'utiliser les fonctions réseau du système d'exploitation , l'analyseur de port génère automatiquement les paquets IP et surveille les réponses . Ce type de numérisation est également connu sous le nom de "numérisation semi-ouverte", car n'ouvre jamais réellement une connexion TCP complète. L'analyseur de port génère un paquet SYN. Si le port cible est ouvert, il répondra avec un paquet SYN-ACK . L'hôte du scanner répond avec un paquet RST, fermant la connexion avant la fin de la prise de contact.

L'utilisation des réseaux premières a plusieurs avantages , donnant le scanner contrôle complet des paquets envoyés et le délai d'attente pour les réponses et permettant des rapports détaillés des réponses. Il y a un débat sur lequel balayage est moins intrusif sur l'hôte cible. SYN scan a l'avantage que les services individuels jamais réellement recevoir une connexion tandis que certains services peuvent être écrasés avec un scan de connexion. Toutefois, le RST au cours de la négociation peut causer des problèmes pour certaines piles réseau , en particulier les périphériques simples comme les imprimantes.Il n'y a aucun arguments concluants de toute façon.

Source Wikipedia

Comme il est mentionné ci-dessous, je pense que nmap peut faire l'analyse SYN.

Utilisation prises pour le balayage de ports TCP:

Une façon de déterminer quels ports sont ouverts est d'ouvrir un socket à ce port. Ou à un port différent qui trouve l'information pour vous comme vous l'avez mentionné.

Par exemple à partir d'invite de commande ou d'un terminal:

telnet google.com 80 

UDP balayage Port:

si un paquet UDP est envoyé à un port qui n'est pas ouvert, le système répondra avec un Message de port ICMP inaccessible. Vous pouvez utiliser cette méthode pour déterminer si un port est ouvert ou fermé. Mais le programme de réception saura.

+0

Le problème avec la connexion directe au socket est qu'il interfère avec n'importe quel programme existant sur le port. J'essaye de déterminer l'état d'un port - qui à son tour me fera savoir si un programme fonctionne correctement. –

+0

Je crois que nmap peut dire s'il y a un programme qui écoute sur un port sans terminer la négociation à trois voies. Ainsi, il ne va pas interférer avec le programme s'exécutant sur ce port car il ne remarque jamais une connexion. – Ferruccio

+0

Ferruccio merci, j'ai mis à jour ma réponse. –

1

neouser99 (et al) a suggéré NMAP. NMAP est très bon si tout ce que vous essayez de faire est de détecter les ports ouverts sur la machine distante. Mais à partir des sons de votre question, vous essayez en fait de déterminer quels ports sont ouverts et connectés sur votre machine distante. Si vous recherchez une solution de surveillance générale, y compris les ports connectés, vous pouvez installer un serveur snmp sur votre machine distante. Il y a deux MIBs qui vous permettent de vérifier l'état du port: TCP-MIB :: tcpConnectionTable et UDP-MIB :: udpEndpointTable.

Le démon (serveur) fourni en net-snmp a très probablement pris en charge ces mibs.

Questions connexes