macOS : Comment découvrir et analyser les ports TCP/IP ouverts sur Mac ?

Les « Ports » sont des véritables « portes ouvertes » sur les ordinateurs qui les hébergent, la plupart des tentatives d’intrusion ou les attaques de « denis de service » passent par des failles sur des services, il est donc nécessaire de connaître la liste des « ports ouverts » sur votre ordinateur.

Voici quelques explications… Plusieurs « services » peuvent être hébergé par un même serveur, pour que chaque service puisse maintenir une communication avec son « client » un « canal » est exclusivement utilisé, il s’agit de ce qui est communément nommé des « ports », un service écoute sur un « Port » précis, et le « client » qui souhaite utiliser ce service doit échanger au travers du même « canal » pour engager un dialogue.

Certains ports sont bien connus : Le port 80 pour le WEB (http), le port 21 pour le service FTP, le port 443 pour le WEB crypté (le https). Il existe au maximum 65535 ports au sein du protocole TCP/IP, certains sont « normalisés » c’est-à-dire qu’ils sont connus pour êtres utilisés par un service sur Internet (du port numéro 0 à 1023) mais la plupart sont libres (de 1024 à 65535).

La liste est présente dans votre Mac

Pour obtenir cette liste : dans le Terminal tapez :

$ more /etc/services

Si vous préférez une liste officielle à jour voici l’url: http://www.iana.org/assignments/port-numbers, elle est gérée par l’iana (Internet Assigned Numbers Authority).

Il s’agit là d’une convention, mais rien ne vous interdit d’utiliser le port 21 (normalement dédié au service FTP) pour y placer votre service WEB, il faut toutefois vous assurer que votre client utilise le même « numéro » sans quoi pas de dialogue possible.

Compte tenu des risques, il est donc indispensable de connaître la liste des « ports ouverts » sur votre ordinateur.

Ce site référence les ports les plus scannés et les services ciblés :
Ports scan : http://isc.sans.org/trends.php

Un peu plus spartiate, celui-ci liste classement des ports attaqués :
http://www.mynetwatchman.com/tp.asp

Pour déterminer quels sont les ports ouverts nous avons plusieurs outils, les premiers d’entre eux sont livrés avec notre système préféré, il est possible au travers du terminal d’utiliser des commandes comme « netstat » comme ceci :

$ netstat –a
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4     407      0  localhost.62683        localhost.49204        CLOSE_WAIT
tcp4       0      0  *.3880                 *.*                    LISTEN
tcp4       0      0  iris.bubble-fish.55842 anubis.bubble-fi.netbi ESTABLISHED
tcp4       0      0  iris.bubble-fish.55721 idisk.mac.com.http     CLOSE_WAIT
tcp4       0      0  iris.bubble-fish.55421 mail.mac.com.imap      ESTABLISHED
tcp4       0      0  iris.bubble-fish.55030 anubis.bubble-fi.afpov ESTABLISHED
tcp4       0      0  iris.bubble-fish.54703 mail.mac.com.imap      ESTABLISHED
tcp4       0      0  localhost.ipp          *.*                    LISTEN

Un peu compliquer pour un début !, pour aller plus loin avec « netstat » :

La commande suivante retourne la liste des ports en chiffres qui sont en « écoute » :

$ netstat -an | grep 'listen' –i

La même commande sans le n retourne la liste avec le nom des services.

$ netstat -a | grep 'listen' –i

Cherchons plus simple :

Par « réflexe » Apple nous facilite la tâche, le programme « Utilitaire de réseau « va nous permettre de « scanner » un ordinateur et identifier les ports ouverts. (vous le trouvez dans le dossier « Utilitaires » qui ce trouve dans votre dossier « Applications »).

Comme beaucoup d’autres applications fournies par Apple, il s’agit d’une interface graphique au-dessus des commandes UNIX, chaque onglet de cet utilitaire correspond à une commande Unix sauf pour un « Port Scan », en effet Apple a développé son propre « scanner ou renifleur » (sniffer en Anglais) de ports du nom de « stroke », pour le trouver il faut parcourir le contenu de l’application (le package) d’ « Utilitaires réseau ».

Stroke peut donc comme toute commande Unix être lancé dans le terminal :

$ /Applications/Utilities/Network\ Utility.app/Contents/Resources/stroke 127.0.0.1 1 35000

Vous devez indiquer l’adresse IP du Mac que vous souhaitez « scanner » (127.0.0.1 dans l’exemple ci dessus ce qui équivaut a votre propre ordinateur) puis le port de début et enfin le port de fin (réciproquement 1 et 35000 dans l’exemple).

S’agissant d’une commande SHELL, elle est utilisable par AppleScript : (Pourquoi ne pas créer un « script » capable de scanner plusieurs Mac ?).

set shell_result to do shell script "/Applications/Utilities/Network\\ Utility.app/Contents/Resources/stroke 127.0.0.1 1 80"
display dialog shell_result

Mais pourquoi faire compliquer quant on peut faire simple :

Ouvrez « Utilitaire réseaux » , cliquer sur « Port Scan » et indiquez « localhost » puis cliquez sur le bouton « scanner » :

Voici la liste des ports ouverts sur le Mac que j’utilise, les ports inférieurs à 1024 sont dits « connus », nous trouvons donc le port 22 , nous pouvons donc en déduire que Mac accepte les connections entrantes sur le service SSH (le shell sécurisé), puis le port 80, un serveur WEB (http) est exécuté sur cette machine, Quant au port 631 il correspond à « cups » (service d’impression sous Mac Os X).

Pour identifier un service (pour autant qu’il soit listé dans le fichier « /etc/services ») utilisez la ligne de commande suivante (ici pour le port 631 en exemple):

$ grep –w 631 /etc/services

Et vous obtenez en retour les lignes contenant les caractères « 631 » :

ipp 631/udp # IPP (Internet Printing Protocol)
ipp 631/tcp # IPP (Internet Printing Protocol)

La complication apparaît au-delà des ports situés après 1024, ils sont dits « libres » donc utilisables par n’importe quelle application.

Par exemple le port 5679 correspond au service « Missing sync » sur IP qui me permet de synchroniser mon PDA par le réseau avec mon G5, (Je l’ai découvert parce qu’au moment de « scanner » ce port « Missing Sync » se lance…).

Un autre moyen d’identifier quel service utilise un port, est d’utiliser la commande lsof (LiSt Open file) qui liste les fichiers ouverts, ce qui inclus sous Unix un flux ou un fichier réseau aussi appelé « Socket Internet ».

$ lsof –i -n |egrep ‘COMMAND|LISTEN’

(man page en Français de lsof : http://www.delafond.org/traducmanfr/man/man8/lsof.8.html)

Mais difficile d’en savoir plus sur les autres ports, reconnaissons que « dccm » n’est pas très explicite et identifier l’application (service) derrière ce port est plutôt ardu. Il existe bien une base qui tente de référencer les services par ports, elle est disponible à cette adresse : http://www.insecure.org/nmap/data/nmap-services.

« Insecure » l’organisme qui propose cette liste, diffuse un programme NMAP, (http://www.insecure.org/nmap/ ) celui-ci est très bien connu de la communauté des hackers et fait partie de la trousse à outils de toute personne travaillant dans la sécurité des réseaux.

NMAP est un « scanner » tout comme « strock « d’Apple mais, bien sur , avec beaucoup plus de fonctions, sa renommé s’est construite en autre parce qu’il peut « scanner » un PC sans se faire « repérer », il est capable de vous indiquer quel est le système d’exploitation hébergeant les services; de vous fournir les applications derrières les ports et leurs versions et d’être en mesure de scanner un ordinateur pour vérifier si une faille de sécurité peut être utilisée contre ce même ordinateur.

Le « couteau suisse » du bon pirate !.

NMAP est devenu un outil universel, disponible sur la plupart des Systèmes d’exploitation dont Mac OS X. Vous avez à votre disposition plusieurs variantes pour son installation sur Mac :

1) – Utilisez « Fink » ou « Darwin Port » ( pour les connaissseurs).

2) – Téléchargez un utilitaire prêt à l’emploi avec une interface graphique « Mac » :

NmapFE :

http://faktory.org/m/software/nmap/

3) – Procédez à une Installation standard avec compilation des binaires :

Téléchargez et décompressez les sources de NMAP.

http://freshmeat.net/redir/nmap/7202/url_tgz/nmap-3.93.tgz
(Décompressez cette archive sur votre bureau)

Dans le terminal exécutez ces commandes :

a) – Placez vous dans le répertoire décompressé :

$ cd /Users/votre login/Desktop/nmap-3.93

b)- Créer l’install et la compilation de Nmap

$ ./configure
$ make
$ sudo -s
$ make install

Ces commandes engendrent beaucoup de lignes de textes dans le terminal, ayez de la patience…

La compilation des binaires peut paraître barbare, dans le cas de « nmap » il y a peu de dépendances, qui sont souvent à l’origine d’erreur dans la compilation, vous ne devriez pas rencontrer de difficultés. Récupérer des sources puis les compiler vous assure toujours d’avoir la dernière version, les outils avec interface graphique comme NmapFe peuvent ne pas être réactualisés aussi souvent que le programme sur lequel ils sont basés.

Comment utiliser NMAP ou nmapFE

Image 2.jpg

Pour lancer un scan sur votre réseau privé :

$ sudo nmap -vr 192.168.1/16

L’option « v » : Cette option analyse tous les ports TCP réservés sur la machine. L’option -v signifie d’activer le mode verbeux.

L’option « r » : indique à Nmap de ne pas changer aléatoirement l’ordre dans lequel les ports seront analysés, ce qui rend votre détection plus compliquée.

En fonction de l’installation que vous avez choisi : vous devez soit saisir une commande avec les options dans le terminal , soit au travers de l’interface de NmapFE, vous sélectionnez les options, la transcription en option de ligne de commande apparaît en bas de la fenêtre de NmapFE, vous y retrouvez l’équivalent de ce que vous auriez du saisir en utilisant la ligne de commande :

Exemples sur des Bornes Airport :

Vous obtiendrez sur des bornes « airport » quelque chose comme cela :

Host 192.168.1.1 appears to be up ... good.
Interesting ports on 192.168.1.1:
(The 1666 ports scanned but not shown below are in state: closed)
PORT      STATE SERVICE
53/tcp    open  domain
10000/tcp open  snet-sensor-mgmt
MAC Address: 00:0D:93:22:20:20 (Apple Computer)

La seconde :

Host 192.168.1.2 appears to be up ... good.
Interesting ports on 192.168.1.2:
(The 1665 ports scanned but not shown below are in state: closed)
PORT      STATE SERVICE
53/tcp    open  domain
5000/tcp  open  UPnP
10000/tcp open  snet-sensor-mgmt
MAC Address: 00:11:24:02:3A:3A (Apple Computer)

La première borne étant une borne « airport extrême » la seconde un borne « airport express », la détermination de l’ordinateur se faisant au travers d’une requête sur l’adresse MAC, vous constatez qu’un port supplémentaire est présent sur la borne « express ».

Voici le « scan » d’un PC avec NmapFE :

Les résultats parlent d’eux-mêmes, les ports, les services et le fabriquant quand ce n’est pas le système d’exploitation et sa version.

Exemples sur le G5 :

$ nmap -T4 -F localhost

Retourne :

Starting nmap 3.93 ( http://www.insecure.org/nmap/ ) at 2005-11-05 10:39 CET
Interesting ports on localhost (127.0.0.1):
(The 1222 ports scanned but not shown below are in state: closed)
PORT     STATE SERVICE     VERSION
631/tcp  open  ipp         CUPS 1.1
1033/tcp open  rpc.unknown
3689/tcp open  rendezvous  Apple iTunes 6.0.1 (on Mac OS X)
5679/tcp open  activesync?
5900/tcp open  vnc         Apple remote desktop vnc
Service Info: OS: Mac OS X

Nmap finished: 1 IP address (1 host up) scanned in 85.550 seconds

L ‘analyse de ces résultats nous indique que ce Mac est géré par « Apple Remote Desktop » sur le port 59, Itunes 6.0.1 est « ouvert » et partage sa librairie sur le port 3689, cups est en fonction et qu’un port num »ro 5679 est utilisé par activesync, beaucoup d’informations si l’on souhaite attaquer cet ordinateur.

Je vous conseille fortement de lire La page MAN traduite et qui est très complète, vous y trouverez des exemples pratiques et des explications sur des termes comme « Xmas Tree » ou « Stealth FIN »:

http://www.insecure.org/nmap/data/nmap_manpage-fr.html

Le cas Microsoft :

Ouvrez Microsoft Word, faites un scan de votre poste, puis fermez Word, et exécutez un autre scan, un port apparaît puis disparaît, MS Word écoute le réseau !, (je présume que c’est pour vérifier que le même numéro de série n’est pas utilisé). Le port semble changer de façon aléatoire, pour être certain qu’il s’agit bien de Microsoft :

$ lsof -i -n | egrep 'COMMAND|LISTEN'

Parmi la liste des ports ouverts, vous trouverez une ligne indiquant qu’un service « Microsoft » est en écoute sur le port 3916 :

Microsoft  9890 UserX 22u  IPv4 0x0337cb70  0t0  TCP *:3916 (LISTEN)

Henri Dominique Rapin Rapin


Applwe reasonably small Recevez toutes les semaines le résumé des publications : Abonnez-vous à la Newsletter !
Publicités

2 commentaires sur « macOS : Comment découvrir et analyser les ports TCP/IP ouverts sur Mac ? »

  1. i may not have considered this had been trendy quite a few years in the past then again it’s funny how years adjusts the manner by which you have an understanding of several creative ideas, thank you regarding the write-up it truly is pleasant to start reading something sensible once in a while in lieu of the traditional trash mascarading as blogs on the web

    J'aime

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s