Professional Documents
Culture Documents
Aller au menu - Aller au contenu 706 Zros connects 432 165 Zros inscrits Inscription Connexion Pseudo Mot de passe Mot de passe oubli ? Connexion auto. Connexion Connexion avec un compte :
Cours Cours
Go
Cours Nouveau ?
Suivez le guide !
Nouveauts
Site Web
HTML5 / CSS3 JavaScript PHP dbutant PHP objet Symfony2 jQuery Rfrencement Plus de cours
Programmation
Langage C Langage C++ Java (2e dition) Python Appli Windows 8 C# .NET VB .NET Java EE Perl Actionscript 3 Django Plus de cours
Bases de donnes
Mobiles
Systmes d'exploitation
Linux UNIX
file:///C|/Documents and Settings/Administrateur/Bureau/tutoriel-3-200012-introduction-au-scan-de-ports.html[30/11/2012 08:46 VALR]
Graphisme
Infographie 3D
Bureautique
Rseaux
Matriel
Mapping
Le Site du Zro - Informatique Cours Tutoriels Rseaux Scurit Introduction au scan de ports Lecture du tutoriel
Par elalitte Mise jour : 25/12/2009 Difficult : Intermdiaire 646 visites depuis 7 jours, class 193/797
Vous avez peut-tre entendu parler de scan de port. Mais peu de gens savent exactement de quoi il en retourne. Nous allons essayer dans ce tutoriel de comprendre les notions techniques associes aux scans de ports (ports, protocoles TCP, UDP, etc.) pour pouvoir ensuite comprendre comment se droule un scan de port et savoir s'en servir efficacement. Retour en haut Retour en haut
Heu... dj, un port c'est quoi ? Un port est l'adresse d'une application sur une machine. Par exemple, si j'installe et que je mets en marche un serveur web sur ma machine, le port 80 sera ouvert et permettra des personnes de se connecter sur mon port 80 pour y voir mon site web. 80 sera l'adresse de mon application web. Quand vous taperez le nom d'un site joindre dans votre navigateur, celui-ci va automatiquement interroger le port 80 du serveur demand. Par dfaut, la plupart des machines, qu'elles fonctionnent en tant que serveur ou client, ont des ports ouverts.
Comment voir les ports ouverts sur ma machine ? Il y a diffrentes faons, la plus simple tant de se mettre en ligne de commande. La commande est netstat. Mais elle doit tre utilise avec certaines options pour tre lisible. Par exemple: Code : Console
#netstat-an
Ou mieux pour avoir des dtails sur le PID, l'utilisateur et le processus: Code : Console
#netstat-anpe
Secret (cliquez pour afficher) La premire partie nous donne les ports TCP ouverts, puis TCP sur IPv6, puis UDP, UDP sur IPv6. le reste ne nous intressant pas. Nous voyons donc que ma machine a un bon paquet de ports ouverts ! On peut d'ores et dj remarquer la colonne Etat qui a des rsultats diffrents pour nos diffrents ports. Mais que sont ces tats ? Que sont les tats des connexions ? Quand vous utilisez le protocole TCP, chaque connexion doit tre tablie avant de pouvoir envoyer la moindre information. C'est comme quand vous utilisez le tlphone, vous ne parlez qu'aprs avoir dit Allo et avoir entendu votre correspondant vous rpondre et que vous tes sr que la connexion est tablie ! En TCP, c'est pareil ! TCP gre donc les tats de la connexion. Nous n'allons pas rentrer dans les dtails et allons nous concentrer sur deux tats principaux, l'tat LISTEN et l'tat ESTABLISHED. En tat LISTEN, l'application est en coute et en attente de requtes de la part de clients sur Internet. En tat ESTABLISHED, l'application a tabli la communication suite une demande de requte et on considre donc la connexion comme tablie. Quand quelqu'un se connecte un port (une application web sur un serveur par exemple) l'application va passer de l'tat LISTEN l'tat ESTABLISHED. Mais alors comment quelqu'un d'autre pourra se connecter en mme temps ?
L'application va en fait se dupliquer ! Nous aurons une instance de l'application qui sera en tat ESTABLISHED en cours de communication avec un client. Et une autre instance qui sera de nouveau en coute en tat LISTEN pour pouvoir recevoir de nouvelles connexions ! C'est ce que nous voyons ci-dessous (extrait du netstat prcdent) Code : Console
tcp000.0.0.0:220.0.0.0:*LISTEN073742482/ss tcp030410.8.98.235:2286.64.78.254:43580ESTABLISHED0131834509490/0
La premire ligne montre bien que le port 22 est en tat LISTEN. La seconde ligne montre qu'une connexion est tablie en ce moment sur le port 22 entre la machine 86.64.78.254 et le serveur 10.8.98.235. Nous voyons par ailleurs que la machine 86.64.78.254 coute elle aussi sur le port 43580. Quel est ce port bizarre ? En fait, c'est le port choisi alatoirement par le navigateur du client pour recevoir les rponses du serveur. Le client envoie ses requtes sur le port 80 du serveur, et celui-ci lui rpond sur le port alatoire qu'il a choisi en initialisant la connexion. Nous savons maintenant ce qu'est un port et nous avons vu que nos machine ont des ports ouverts.
Ceux qui sont en coute car nous avons des services pour les autres (serveur web, serveur de messagerie, etc.) Et ceux qui sont tablis car nous sommes en train de communiquer avec une autre machine. Donc revenons-en nos moutons : Qu'est-ce qu'un scan de port ?
Un scan de port a pour objectif de m'indiquer quels sont les ports ouverts sur une machine. Cette dfinition est cependant trs vague, car qu'entendons-nous exactement par port ouvert ? Un port ouvert est un port en tat LISTEN s'il s'agit de TCP, ou simplement en coute s'il s'agit d'UDP (UDP n grant pas l'tablissement de connexions). Ainsi lors d'un scan de ports, nous ne verrons que les ports en tat LISTEN. Ceux en tat ESTABLISHED n'apparatront pas. Et cela est normal puisque ces ports servent une communication spcifique entre deux machines, une
file:///C|/Documents and Settings/Administrateur/Bureau/tutoriel-3-200012-introduction-au-scan-de-ports.html[30/11/2012 08:46 VALR]
troisime machine n'a donc pas le droit d'entrer dans la conversation et de voir ces ports ! Maintenant que nous avons vu globalement ce qu'tait un scan de ports, nous allons nous intresser son fonctionnement.
Nous voyons bien le port 53 en coute. Nous allons maintenant essayer d'interroger ce port en faisant une requte DNS vers notre service : Code : Console
#dig@88.191.51.73www.itinet.fr ;<<>>DiG9.3.4<<>>@88.191.51.73www.itinet.fr ;(1serverfound) ;;globaloptions:printcmd ;;Gotanswer: ;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:61052 ;;flags:qraard;QUERY:1,ANSWER:1,AUTHORITY:2,ADDITIONAL:3 ;;QUESTIONSECTION: ;www.itinet.fr.INA ;;ANSWERSECTION: www.itinet.fr.86400INA88.191.51.73 ;;AUTHORITYSECTION: itinet.fr.259200INNSsd-8131.dedibox.fr. itinet.fr.259200INNSsd-6555.dedibox.fr. ;;ADDITIONALSECTION: sd-8131.dedibox.fr.259200INA88.191.51.73 sd-8131.dedibox.fr.259200INA88.191.51.73 sd-6555.dedibox.fr.259200INA88.191.45.68 ;;Querytime:2msec ;;SERVER:88.191.51.73#53(88.191.51.73) ;;WHEN:WedDec2314:06:252009 ;;MSGSIZErcvd:147
Nous voyons bien la requte vers notre serveur et la rponse qui lui est faite. Maintenant que se passe-t-il si nous interrogeons un port ferm ? Nous pouvons par exemple interroger un serveur sur son port 53 alors qu'il n'y a pas de service DNS en coute : Code : Console
#dig@10.8.98.235www.itinet.fr
Nous voyons ici que le client met la requte, et que le serveur rpond. Mais il rpond avec un message ICMP port unreachable . Nous avons donc deux cas: Si le port est ouvert, l'application rpond en UDP Si le port est ferm, l'application rpond avec un message d'erreur ICMP port unreachable. Ainsi nous pourrons scanner facilement des ports UDP et savoir ceux qui sont ouverts ou ferms. Il nous suffira d'envoyer des requtes UDP. Selon la rponse en UDP ou ICMP, nous saurons si le port test tait ouvert ou ferm. Fonctionnement d'une connexion en TCP Le droulement d'une connexion en TCP est un peu plus complexe, mais nous allons voir que cela reste simple dans le cas d'un scan de ports. Regardons l'tablissement d'une connexion TCP, avec une requte web vers un serveur web par exemple : Code : Console
#wget88.191.51.73 --2009-12-2316:02:17--http://88.191.51.73/
Nous voyons que la connexion a t tablie en trois temps : Envoi d'un segment avec le flag SYN (S dans le premier paquet) Rponse d'un segment avec les flags SYN et ACK de positionns (S et ack dans le second paquet) Rponse enfin d'un segment avec le flag ack (ack positionn, mais sans le S !). C'est le fonctionnement normal de l'tablissement d'une connexion TCP. Mais que se passe-t-il maintenant si le port est ferm ? Essayons de nous connecter sur un port ferm : Code : Console
#wget88.191.51.73:81 --2009-12-2316:12:54--http://88.191.51.73:81/ Connexionvers88.191.51.73:81...chec:Connexionrefuse.
La rponse est claire, c'est ferm ! Regardons ce qu'il s'est pass au niveau rseau : Code : Console
#tcpdump-n-ieth0port81 tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode listeningoneth0,link-typeEN10MB(Ethernet),capturesize96bytes 16:19:14.709972IP87.88.75.75.52063>88.191.51.73.81:S678805342:678805342(0) 16:19:14.710192IP88.191.51.73.81>87.88.75.75.52063:R0:0(0)ack678805343win0
Notre machine a bien envoy un segment avec le flag SYN de positionn. Par contre la machine en face a rpondu d'un segment avec le flag RESET de positionn. On s'est fait jets ! Donc l encore nous avons rencontr deux cas : Si le port est ouvert, rponse avec un segment SYN + ACK Si le port est ferm, rponse avec un segment RST. L encore il va nous tre facile de balayer une plage de ports et de savoir lesquels sont ouverts quand nous recevrons une rponse SYN + ACK. Et donc notre scan de ports
Nous avons vu comment rpondaient des ports ferms et des ports ouverts, en UDP et TCP. Mais nous les avons interrogs un par un et cela est un peu fastidieux... Il serait plus sympa d'avoir un outil qui scanne toute une plage de ports pour nous. C'est l qu'intervient l'outil magique nmap . Qu'est-ce que nmap ? nmap est un outil qui permet de scanner de faon automatique toute une plage de ports, toute une plage d'adresses, et permet d'obtenir une foultitude de rsultats. Dans notre tude nous allons nous limiter au scan de ports, mais vous aurez tout loisir de tester les innombrables fonctionnalits de nmap par vousmme. Si je veux savoir par exemple quels sont les ports ouverts sur la machine 10.8.97.1, je peux faire la commande suivante : Code : Console
#nmap-sS10.8.97.1 StartingNmap4.62(http://nmap.org)at2009-12-2316:32CET Interestingportson(10.8.97.1): Notshown:1703closedports PORTSTATESERVICE 13/tcpopendaytime 22/tcpopenssh 25/tcpopensmtp 37/tcpopentime 53/tcpopendomain 80/tcpopenhttp 113/tcpopenauth 139/tcpopennetbios-ssn 143/tcpopenimap 199/tcpopensmux 445/tcpopenmicrosoft-ds 993/tcpopenimaps MACAddress:00:00:24:C6:2B:D1(ConnectAS) Nmapdone:1IPaddress(1hostup)scannedin18.965seconds
J'ai utilis l'option -sS qui prcise que je veux faire un scan avec des segments SYN, je ne scanne donc que les ports TCP. Le rsultat est probant, j'ai trouv une foultitude de ports ouverts ! Attention cependant, nmap n'a pas scann tous les ports possibles sur la machine distante, mais seulement les plus utiliss (environ 1750 ports). Je peux aussi scanner les ports UDP : Code : Console
#nmap-sU10.8.97.1 StartingNmap4.62(http://nmap.org)at2009-12-2316:37CET Interestingportsonlabo.itinet.fr(10.8.97.1): Notshown:1481closedports PORTSTATESERVICE 53/udpopen|filtereddomain 137/udpopen|filterednetbios-ns 138/udpopen|filterednetbios-dgm 161/udpopen|filteredsnmp 500/udpopen|filteredisakmp 514/udpopen|filteredsyslog 4500/udpopen|filteredsae-urn MACAddress:00:00:24:C6:2B:D1(ConnectAS)
Nmapdone:1IPaddress(1hostup)scannedin77.106seconds
L encore j'ai l'embarras du choix sur les ports ouverts ! Vous savez maintenant faire un scan de ports, mais qu'en faire ?
Bref, il y a une foultitude d'informations trouver et connatre. Pour les plus courageux, je vous invite la lecture du site consacr nmap qui dcrit en dtail son fonctionnement et ses nombreuses options et possibilits. Retour en haut
Q.C.M.
Le premier QCM de ce cours vous est offert en libre accs. Pour accder aux suivants Connectez-vous Inscrivez-vous Si je scanne une machine distante sur le port TCP 80 et que celui-ci est ferm. Quel message vais-je recevoir en rponse ? Un Un Un Un ICMP port unreachable TCP RESET UDP port unreachable TCP SYN + ACK
Je fais un netstat sur ma machine pour voir les ports ouverts : Code : Console
#netstat-antp ConnexionsInternetactives(serveursettablies) ProtoRecv-QSend-QAdresselocaleAdressedistanteEtatPID/Programname tcp00127.0.0.1:33060.0.0.0:*LISTEN7103/mysqld tcp00127.0.0.1:112110.0.0.0:*LISTEN6778/memcached tcp000.0.0.0:250.0.0.0:*LISTEN2143/master tcp00127.0.0.1:8833127.0.0.1:40104ESTABLISHED18481/python2.5 tcp00127.0.0.1:22127.0.0.1:59487ESTABLISHED17668/sshd:elalitt tcp600:::80:::*LISTEN2298/apache2 tcp600:::22:::*LISTEN2482/sshd tcp600:::445:::*LISTEN2159/smbd
Je vais maintenant sur une autre machine et fais un "nmap -sS ma_machine" Quel va tre le rsultat ? Attention, piges !
Rponse 1
Starting Nmap 4.62 ( http://nmap.org ) at 2009-12-24 15:28 CET Interesting ports on ma_machine (10.8.97.1): Not shown: 1703 closed ports PORT STATE SERVICE 22/tcp open ssh
Rponse 2
Starting Nmap 4.62 ( http://nmap.org ) at 2009-12-24 15:28 CET Interesting ports on ma_machine (10.8.97.1): Not shown: 1703 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 445/tcp open microsoft-ds 3306/tcp mysql 11211/tcp memcached
Rponse 3
Starting Nmap 4.62 ( http://nmap.org ) at 2009-12-24 15:28 CET Interesting ports on ma_machine (10.8.97.1): Not shown: 1703 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 445/tcp open microsoft-ds
Rponse 4
Starting Nmap 4.62 ( http://nmap.org ) at 2009-12-24 15:28 CET Interesting ports on ma_machine (10.8.97.1): Not shown: 1703 closed ports PORT STATE SERVICE 22/tcp open ssh 25/tcp open smtp 80/tcp open http 445/tcp open microsoft-ds 3306/tcp mysql 11211/tcp memcached 8833/tcp python
La La La La
1 2 3 4
Si tu fais un scan de ports sur le site impots.gouv.fr. Tu Tu Tu Tu vas avoir des problmes ! payeras moins d'impts seras chaudement flicit par le juge des peines connatras mieux Fleury-Merogis
Vous faites un scan sur le port TCP 80 d'une machine mais ne recevez rien du tout en rponse ?!? Que se passe-t-il ? La machine est dbranche du rseau Il y a srement un firewall qui filtre les requtes Il y a srement trop de requtes et la machine ne peut plus rpondre La machine n'a pas de serveur web install
Correction !
Retour en haut J'espre que ce tuto vous a plu et qu'il vous permettra de mieux comprendre la notion de ports et les scans qui leur sont associs. Un lment important prendre en compte est que pour faire de la scurit, vous devez comprendre dans le dtail ce que vous faites. Si vous ne faites que survoler la connaissance, vous ne ferez jamais qu'utiliser des outils que d'autres auront fait sans vraiment comprendre ce que vous faites. Alors maintenant, potassez et faites vous plaisir ! (en scannant vos propres machines , ou celles de vos amis, bien entendu )
Retour en haut
Partager
Tweet
Retour en haut 25 commentaires pour "Introduction au scan de ports" Note moyenne : 3.83 / 4 (24 votes) Pseudo Commentaire
Hacker professionel # Post le 14/08/2012 19:05:39
Salut elattite, trs bon tuto, j'adore continue-comme ca. J'aimerais bien savoir quoi sert concrtement un scan de ports. Certes avec cela, l'on peut connatre les ports ouverts sur une machine mais, que fait-on "concrtement" avec les ports?? Sinon j'aime bien tes cours, avec ton cours sur l'idle port scan. merci encore, pour tes tutos. Si tu rdiges un cours sur la scurit informatique, je veux tre parmis les premiers le connatre, Avis : Trs bon elalitte # Post le 16/08/2012 21:32:20 En fait, derriere chaque port il y a une application. Et des lors qu' une application peut comporter des failles, savoir qu' une machine a telle ou telle application qui tourne est tres interessant. Une fois les ports trouves, on cherche quelle application et quelle version est utilisee pour savoir si une faille existe. Et si elle existe, on peut l' exploiter Pour le cours sur la secu, il y en a un en cours de redaction par un zero. Mais je crois qu' il a ferme la beta avant d' avoir plus de contenu. Eric Lalitte Enseignant en systmes et rseaux et Directeur d'IN'TECH INFO Tuto de zro "Comprendre le fonctionnement des rseaux et d'Internet" Mon site, www.lalitte.com Mailforkids.net, le site de messagerie protg pour les enfants La page Facebook d'IN'TECH
# Post le 20/08/2012 08:05:59 Bonjour elalitte, au fait j'ai un soucis et jespre normment que vous pouvez m'aider. Depuis hier Wampserver refuse de dmarrer car le port 80 est utilise par "microsoft IIS/7.0" et le programme elle mme, je ne sais pas comment larrter. pour librer ce fameux port, existe t'il un application ou un autre moyen pour contourner ce problme? Merci normment.
elalitte
Pose ta question dans la partie "discussions informatiques" et on pourra te rpondre Eric Lalitte Enseignant en systmes et rseaux et Directeur d'IN'TECH INFO Avis : Trs bon Groupe : Auteurs Ville : Ivry-sur-seine Pays : France mtropolitaine tudes : IN'TECH Tuto de zro "Comprendre le fonctionnement des rseaux et d'Internet" Mon site, www.lalitte.com Mailforkids.net, le site de messagerie protg pour les enfants La page Facebook d'IN'TECH
Ah ok, drire chaque port se cache une application, merci bien elattite.
Voir tous les commentaires Le Site du Zro Plan du site L'quipe Mentions lgales Accessibilit Livre d'or Simple IT L'entreprise Notre blog Contacts Espace annonceurs Espace presse Nous contacter Partenaires Hbergement web Correction tutoriels Suivez-nous Flux RSS News, Cours, Blog Twitter Facebook Google+