:: News .:. Documents .:. Forum .:. Downloads .:. Bibliographie .:. Liens .:. Contact  :: 


Home
  :. News
  .: Documents
    .: Notions
    .: Protocoles
    .: Sécurité
    .: Architecture
    .: Prog
    .: Systèmes
  :. Forum
  .: Downloads
  :. Bibliographie
  .: Liens
  :. Contact

Chat

  Nickname:


irc: #guill.net

Forum



 
Applications de sécurité pour linux : Netcat, Scapy, Nessus, Nmap  
 

 

Netcat

Qu'est ce que c'est?

Netcat est un petit outil qui permet d'envoyer des données a travers un réseau aussi bien en UDP qu'en TCP. C'est également un outil de terminaison utilisable facilement par d'autres programmes ou des scripts shells. C'est également un outil de debug d'application réseau puisqu'il peut créer toute connexion UDP ou TCP.

Commandes

Se connecter à une machine

>netcat 192.168.4.68 5000

192.168.4.68 : ip de la machine destination
5000: le port de destination

LxSilvano:/home/collins # netcat 192.168.4.67 5000

Dans ce cas, l'application est connectée et prête à discuter.
Dans le cas où a connexion n'est pas possible, le prompt réapparaît de suite.

Faire un serveur

netcat -l -v -p 5001

-l: mode listen, soit écoute
-p: défini le port de la machine local
-v: mode verbose, soit verbeux, c'est à dire qu'il parle.
5001: numéro de port

LxSilvano:/home/collins # netcat -l -v -p 5001
listening on [any] 5001 ...
listening on [any] 5001... est la grace à l'option -v

Trouver un port ouvert dans une plage

>netcat -r -v -p 2003 192.168.4.67 5000-5100
-r: randomize, chercher les ports par une scrutation aléatoire dans plage indiquée.
-p: précise le port de la machine, ici précise le port d'émission

LxSilvano:/home/collins # netcat -r -v -p 2003 192.168.4.67 5000-5100
192.168.4.67: inverse host lookup failed: Unknown host
(UNKNOWN) [192.168.4.67] 5005 (avt-profile-2) open

Remarque: la connexion s'effectue sur le premier port trouvé

Faire un serveur sur UDP:

>netcat -v -n -l -u -p 2020

-p: écoute sur le port 2020
-n: considère les adresses numériques, ne fait pas de résolution DNS.
-u: actionne le port d'écoute en UDP

ALxSilvano:/home/collins # netcat -v -n -u -l -p 2020
listening on [any] 2020 ...
connect to [192.168.4.222] from (UNKNOWN) [192.168.4.67] 1024

Créer un serveur temporaire

>netcat -w 10 -l -p 5060

-w: temps d'expiration de l'écoute sur le port si il n'y a pas de connection avant.
10: temps en secondes
-l: listen mode
-p: port d'écoute

LxSilvano:/home/collins # netcat -w 5 -l -p 5060
no connection : Connection timed out

Réception d'une requête http :

Après avoir correctement configuré le navigateur web pour l'adresse et le port du proxy, grâce à netcat on peut observer la requête web envoyée.

collins@LxSilvano:~> netcat -l -p 5353
GET http://www.zqefoij.re/ HTTP/1.1
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.0.0; Linux)
Accept: text/*, image/jpeg, image/png, image/*, */*
Accept-Encoding: x-gzip, gzip, identity
Accept-Charset: ISO-8859-15
Accept-Language: fr
Host: www.zqefoij.re

Conclusion

Netcat est outil très utile pour les développeurs d'applications clients/serveurs pour tester la connectivité et les messages échangés entre clients et serveurs. Il peut également servir dans un cadre pédagogique pour mettre en évidence la connectivité ou des mesdsages échangés. Les administrateurs réseaux préféreront sans doute des analyseurs réseaux tels que tcpdump ou ethereal, qui de part leur ergonomie permettent facilement d'observer les différentes couches d'encapsulation là où netcat ne présente que les données à envoyer.

SCAPY

Scapy est un outil logiciel libre dont la principale fonction est la génération de trames réseau.

Cet outil est programmé en python et son exécution offre donc l'accès à une console dans laquelle on entre successivement les commandes voulues.

Le principe de ce logiciel est de pouvoir configurer chaque champ de chaque couche des protocoles réseaux concernés à volonté.

Un certain nombre de classes pythons sont déjà créées pour pouvoir implémenter les différents protocoles supportés.

Protocoles supportés

Actuellement

La majorité des protocoles courants sont déjà implémentés :

Ethernet, 802.1Q, 802.11, 802.3, EAPOL, LLC, EAP, BOOTP, PPP, IP, TCP, ICMP, ARP, STP, UDP, DNS.

Prochainement

Le développement de nouveaux protocoles sous scapy est relativement simple de par sa programmation en python. D'autres protocoles ont déjà été annoncés tels que Ipv6, OSPF ou BGP.

Principales commandes

Lancement de l'application

python scapy.py

Lance l'application scapy, ouvre une console python.

python scapy.py -s toto

Lance l'application en appellant toutes les commandes de la session toto précédemment sauvegardée.

Commandes de la console python

Commandes bas niveau:

<classe>.__doc__

Permet d'obtenir la documentation d'une classe, ceci est une commande globale de python

conf.session=''toto''

Permet de sauvegarder la session courante dans le fichier toto qui sera sauvegardé dans le répertoire courant.

ls()

Permet d'obtenir la liste des protocoles disponibles

ls(IP)

Affiche la liste des champs du protocole IP

lsc()

Affiche la liste des commandes globales disponibles

i=IP()

Implémente un objet IP

i.ttl=7

Assigne le champ ttl de l'objet i à la valeur voulue

i.ttl

Affiche la valeur du champ ttl de l'objet i

pkts=IP(ttl=(1,10))

Crée un groupe de paquets constitués du protocole IP ayant pour valeurs du champ ttl les nombres de 1 à 10

i=IP()/TCP()

Permet de créer une trame constituée de la concaténation de deux protocoles, on peut en faire de même avec un nombre illimité de concaténations

p.display()

Permet d'afficher une trame, affiche tous les protocoles implémentés

send(pkt)

Envoie le paquet pkt de couche 3 sur l'interface sélectionnée (eth0 par défaut)

sendp(tr)

Envoie la trame tr de couche 2 sur l'interface sélectionnée (eth0 par défaut)

arp=sniff(filter=''arp'', count=''2'')

Permet d'écouter les 2 prochaines trames de type arp et les stocker dans l'objet arp

ans,unans=sr(pkt)

Envoie un paquet ou groupe de paquets (couche 3), attend leur réponse et stocke le résultat dans des variables : ans pour les réponses et unans pour les paquets n'ayant pas eu de réponse

ans,unans=srp(tr)

Donne le même résultat mais nécessite la présence du niveau 2

_

L’underscore donne le résultat de la dernière commande, ceci est une commande globale de python

Commandes de niveau plus élevé :

Cet outil propose aussi des instructions de niveau plus élevé mettant à profit les instructions bas niveau développées.

nmap

Commande reprenant la plupart des fonctionnalités de l'outil système du même nom

nmap-fp

Permet de faire de l'OS fingerprinting (récupération d'information sur l'OS utilisé par un hôte)

sniff(prn=prnp0f)

Permet de faire de l'OS fingerprinting passif

Exemples d'utilisation

Emission d'une requête ping à destination de l'hôte 192.168.4.68
(echo-request est la requête par défaut du protocole ICMP)

>>> IP(dst='192.168.4.68')/ICMP()
<IP proto=ICMP dst=192.168.4.68 |<ICMP |>>

Emission de la même requête ping avec attente du premier paquet de réponse
On remarque que parmi les 4 paquets reçus, scapy a été capable de repérer la réponse à sa requête

>>> sr1(IP(dst='192.168.4.68')/ICMP())
Begin emission:
...*Finished to send 1 packets.
Received 4 packets, got 1 answers, remaining 0 packets
<IP version=4 ihl=5 tos=0x0 len=28 id=5036 flags= frag=0 ttl=64 proto=ICMP chksum=0xdd31 src=192.168.4.68 dst=192.168.4.111 options='' |<ICMP type=echo-reply code=0 chksum=0xffff id=0x0 seq=0x0 |<Padding load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |>>>

Obtention de la documentation sur le protocole ARP

>>> ls(ARP) hwtype : XShortField = (1) ptype : XShortField = (2048) hwlen : ByteField = (6) plen : ByteField = (4) op : ShortEnumField = (1) hwsrc : ARPSourceMACField = (None) psrc : SourceIPField = (None) hwdst : MACField = ('00:00:00:00:00:00') pdst : IPField = ('0.0.0.0')

On peut maintenant formater une trame ARP

>>> ARP(pdst='192.168.4.222').display() ---[ ARP ]--- hwtype = 0x1 ptype = 0x800 hwlen = 6 plen = 4 op = who-has hwsrc = 00:01:02:a1:ae:2e psrc = 192.168.4.111 hwdst = 00:00:00:00:00:00 pdst = 192.168.4.222

On remarque que scapy a automatiquement ajouté notre adresse MAC et IP dans les champs correspondants

On voit aussi que la requête ARP par défaut est who-has

Envoyons maintenant cette requête et analysons la réponse

>>> ans=sr1(ARP(pdst='192.168.4.222')) Begin emission: ...*Finished to send 1 packets. Received 4 packets, got 1 answers, remaining 0 packets >>> ans.display() ---[ ARP ]--- hwtype = 0x1 ptype = 0x800 hwlen = 6 plen = 4 op = is-at hwsrc = 00:01:02:a1:ad:0a psrc = 192.168.4.222 hwdst = 00:01:02:a1:ae:2e pdst = 192.168.4.111 ---[ Padding ]---   load = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

Essayons de combiner ces deux protocoles pour effectuer une attaque

Tout d'abord, essayons de pinger un hôte en ne mettant pas notre adresse IP réelle

>>> sr1(IP(src='192.168.4.100',dst='192.168.4.6')/ICMP())
Begin emission:
..Finished to send 1 packets.
....................................................
Received 54 packets, got 0 answers, remaining 1 packets

Cela ne donne aucune réponse, essayons maintenant de faire croire à l'hôte que l'adresse IP en question nous appartient

Cette attaque est nommée ARP poisonning, elle permet d'écrire des données erronées dans la table ARP de l'hôte distant

>>>send(ARP(op=2,hwsrc='00:01:02:A1:AE:2E',psrc='192.168.4.100',hwdst='00:50:DA:41:9C:0A',pdst='192.168.4.6'))

Réessayons maintenant de pinger cet hôte distant

>>> sr1(IP(src='192.168.4.100',dst='192.168.4.6')/ICMP())
Begin emission:
.*Finished to send 1 packets.
Received 2 packets, got 1 answers, remaining 0 packets
<IP version=4 ihl=5 tos=0x0 len=28 id=240 flags= frag=0 ttl=64 proto=ICMP chksum=0xf036 src=192.168.4.6 dst=192.168.4.100 options='' |<ICMP type=echo-reply code=0 chksum=0xffff id=0x0 seq=0x0 |<Padding load='\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |>>>

On a bien reçu la réponse à notre requête ping, cela signifie que l'hôte distant croit que notre adresse IP est 192.168.4.100 alors qu'il n'en n'est rien, il est donc susceptible de nous envoyer les paquets qu'il voudrait envoyer à cette adresse alors que nous n'en sommes pas le destinataire

Fonctionnalités

Les fonctionnalités fondamentales de scapy sont la création, l'affichage, l'envoi et la réception de paquets avec la possibilité de faire correspondre les paquets reçus avec ceux que l'on vient d'envoyer. D'autres fonctionnalités viennent s'appuyer sur ces couches : effectuer ou lire des captures pcap, activités de découverte (nmap), d'attaques (arp poisoning).

Cet outil utilise par défaut les librairies libdnet et libpcap, ce qui autorise la création de trames à volonté, même de trames invalides, ce qui nécessite les droits de l'utilisateur root.

Applications possibles

Les principales applications envisageables pour scapy sont à ce jour des fins de recherche et d'enseignement. On peut en effet facilement grâce à cet outil étudier la forme exacte des trames envoyées et reçues. De plus, on peut relativement facilement implémenter de nouveaux protocoles, ce qui en fait un logiciel de développement et de test de nouveaux protocoles assez intéressant.

D'autres applications peuvent être envisagées, comme le scannage de réseau, des attaques précises afin de tester la sécurité de serveurs, ou la création de rapports (au format LaTex ou html), mais ces aspects sont encore légèrement immatures par rapport à des outils déjà existants tels que nmap.

Conclusion

Ce logiciel est très puissant, il permet de formater des trames à volonté, ce qui peut se révéler très utile. Comme tous les champs de chaque protocole sont modifiables, on pourra réaliser toutes les trames possibles et imaginables, ce qui permettra de tester de façon complète un système.

De plus, il est facilement extensible en fonction de ses besoins, on pourra par exemple automatiser certaines attaques ou implémenter de nouveaux protocoles.

Certains détails viennent tout de même ombrager cette présentation.

Tous d'abord, la puissance de cet outil résidant principalement dans ses fonctions bas niveaux, une très bonne connaissance des protocoles mis en jeux est indispensable.

De plus, la documentation disponible pour cet outil se résume à la documentation du code qui, de par le choix du langage python, est disponible dans la console grâce à la fonction __doc__. Cette documentation sommaire sera largement insuffisante pour un utilisateur facilement décourageable.

Quand aux fonctions haut niveau, elles ont surtout été développées pour démontrer le potentiel de l'application.

Au final, si cet outil trouve parfaitement sa place dans un environnement de recherche, développement, ou enseignement, elle manque encore de maturité pour pouvoir être utilisée quotidiennement par un administrateur réseau.

On lui préfèrera par exemple les outils traditionnels et éprouvés qu'elle essaie de cloner, comme nmap, dont la documentation est plus complète et qui comportent plus de fonctionnalités.

Il n'est toutefois pas exclu que cet outil se répande si d'autres fonctions haut niveau sont développées et l'ergonomie un peu améliorée.

Nessus

Que fait Nessus?

Nessus est non seulement un outil de scan de ports, mais également un outil de détection de faille de sécurité.

Il peut opérer sur plusieurs machines à la fois, et fournit un rapport une fois le scan effectué.

De nombreux paramètres agissants sur les scans, sur les tests de sécurité sont ajustables par l'utilisateur.

Comment se déroule un scan?

Un scan d'une machine se déroule en deux temps. Tout d'abord il scanne des ports d'après les critères définis dans les préférences, puis soumet les machines scannées à des attaques pour voir les machines sensibles à des attaques. Ces attaques sont sélectionnées par les plugins dans la rubrique du même nom.

Les différentes rubriques et onglets

Nous allons passer en revue les principaux onglets qui sont les suivants:

Plugins

Préférences

Scan options

Target selection

Plugins

Cet onglet concerne les plugins de nessus. Ils sont sollicités dans la seconde phase du scan des machines. Ils contiennent des attaques réseau connues et servent pour tester la vulnérabilité des machines aux attaques sélectionnées.

La fenêtre du haut présente les différents plugins disponibles alors que celle du bas affiche les différentes attaques décrites par le plugin sélectionné. Des boutons radio permettent de sélectionner les plugins à mettre en oeuvre et chaque attaque à tester.

Il y'a possibilité de charger des plugins supplémentaires pour mettre à jour la base des attaques testées par nessus.

Un point important est que nessus signale toute attaque pouvant faire crasher la machine visée lors de la sélection d'un attaque.

Préférences

Cet onglet permet de choisir les techniques employées lors du scan de ports.

Principaux paramètres

Recherche de port SNMP:

La version SNMP, la communauté, le protocole de couche transport sont paramétrables, ainsi que la plage de ports et la répartition temporelle.

Ping de l'hôte distant:

Choix entre ICMP ping ou TCP ping et traitement des hôtes absents et du log des hôtes découverts.

Fonctionnalités de nmap:

Ceci comprend notamment les techniques de scan TCP(connect(), SYN, FIN, Xmas tree, null scan et les composés de plusieurs techniques).

Egalement les différentes options de nmap telles que le scan de ports UDP, de ports RPC, la détection d' OS, la fragmentation de paquets IP, le scan aléatoire...

La répartition temporelle est paramétrable, que ce soit dans la fréquence aussi bien que dans la régularité.

IDS:

Des techniques de camouflage d'intrusions sont sélectionnables à travers une dizaines de techniques proposées. Elles permettent de flouer un éventuel IDS qui serait en train d'observer le réseau.

Chacune tire parti de failles différentes connues de certains IDS du commerce.

NIDS:

De nombreuses techniques d'évasions spécifiques à certains protocoles tels TCP ou HTTP sont proposées ici pour flouer les détecteurs d'intrusions.

Brute Force:

Possibilité de tester en Brute Force(essai de toutes les possibilités) sur de nombreux protocoles: Telnet, pop3, IMAP, VNC, FTP...

Autres:

D'autres paramètres sont également configurables, mais concernent des techniques avancées spécifiques et ne seront donc pas développées ici.

Scan options:

Les options de scan sont d'ordre général. Par exemple les plages de ports à scanner, le nombre d'ôtes à scanner à la fois... et d'autres options tout aussi générales.

Egalement une possibilité de faire exécuter le scan en tache de fond.

Target sélection:

Permet de sélectionner les machines cibles par adresses IP ou réseaux ou sous réseaux.

Avantages et inconvénients

Ses avantages sont nombreux. Nessus est un outil très complet dans son domaine du scan de ports. Les paramètres sur lesquels on peut agir sont très nombreux, ce qui donne l'impression que cet outil être très complet.

D'autre part la présentation du rapport de scan est très pratique, sous forme tableau dynamique rassemblant les sous réseaux observés, les IP précises observées, les ports détectés, la sensibilité du port, et enfin une explication sur le warning présenté.

De manière générale, l'interface graphique est la bienvenue et peut présenter de manière visuelle toutes les options disponibles.

Un inconvénient est quand même le grand nombre de paramètres sur lesquels on peut agir sans tout le temps bien comprendre ce qu'ils font. En effet le détail et la signification des attaques, des options de scans ne sont pas toujours très clairs par leur simple nom.

Un avantage incontestable: nessus prévient si l'on coche une option qui peut être dangereuse ou bloquante pour un certain temps.

Un lien utile est le site de nessus: www.nessus.org

Une fois le scan opéré avec les options choisies, nessus opère à de tests de trous de sécurité connus et stockés dans les plugins et sélectionnables.

Les informations sur le niveau de sécurité résultant de ces attaques sont reportées dans les rapports. Des explications sont données sur la raison pour laquelle il a été détecté un trou de sécurité.

Utilisation

Pour l'installation et la mise en route, des pages très utiles sont:
http://www.nessus.org/demo/first.html

Elles décrivent les étapes d'initialisation du serveur, comme du client nessus et l'utilisation du client. De plus, lorsqu'ils sont bien installés les pages de manuel (man) sont également très utiles, notamment pour le nessus-adduser qui permet de créer de nouveaux utilisateurs.

En effet Nessus est composé d'un client et d'un serveur. Ceci permet d'attribuer des droits d'utilisation de nessus spécifique à chaque utilisateur.

Pour connecter un client il faudra donc connaître l'adresse IP du serveur de nessus (nessusd) et le port sur lequel il travaille. Il faut également connaître un couple login/password valide.

Pour créer un utilisateur la page suivante donne les démarches principales:
http://www.nessus.org/demo/first.html

Exemple de création d'un utilisateur:

Création de l'utilisateur "gabo" qui peut scanner le host 192.168.4.68, mais pas 192.168.4.222 et même aucun autre poste.

LxSilvano:/home/collins/projet/Rapport # nessus-adduser Using /var/tmp as a temporary file holder Add a new nessusd user ---------------------- Login : gabo Authentication (pass/cert) [pass] : pass Login password : gabo User rules ---------- nessusd has a rules system which allows you to restrict the hosts that gabo has the right to test. For instance, you may want him to be able to scan his own host only. Please see the nessus-adduser(8) man page for the rules syntax Enter the rules for this user, and hit ctrl-D once you are done : (the user can have an empty rules set) deny 192.168.4.222 accept 192.168.4.68 default deny Login            : gabo Password         : gabo DN               : Rules            : deny 192.168.4.222 accept 192.168.4.68 default deny Is that ok ? (y/n) [y] y user added.

Gabo devra donc se logger avec les login et password gabo et gabo.

De plus il ne pourra scanner que l'adresse 192.168.4.68. Il y a également possibilité de permettre ou d'interdire des réseaux ou sous réseau entier avec le nombre de bits du masque de sous réseau:

accept 10.163.156.0/24

Concernant l'utilisation du client se reporter à la page:
http://www.nessus.org/demo/second.html

et
http://www.nessus.org/demo/third.html

Ceci dit pour les personnes qui ont déjà utilisé nmap et autres logiciels de gestion de réseau, les différentes classes de paramètres sur lesquels on peut agir sont relativement intuitives.

Résultats

Les résultats sont présentés sous formes d'une multifenêtre résumant les réseaux scannés, les hôtes scannés, les ports ouverts trouvés et la sensibilité de ces ports aux attaques avec les éventuelles solutions pour y remédier.

Remarque:

L'installation de nessus à partir des rpm peut être hasardeuse car elle requiert des composants particuliers, tels rpm helpers et autres. Toujours est il qu'il me parait plus facile de faire l'installation à partir des sources.

Conclusion

Nessus est un outil très puissant. Il sera apprécié autant pour ses capacités de scans de ports, que ses diagnostiques sur la sensibilité aux attaques. Le tout associé à une interface graphique présentant les résultats d'une façon claire et sans ambiguïté font de nessus un outil très utile à l'administrateur réseau.

NMAP

Nmap est un outil d'exploration réseau. Il permet de sonder un réseau entier et de détecter les services en écoute et sur quel port. A l'aide de fingerprints, il permet également d'estimer quel OS tourne le plus probablement sur une machine donnée. Les options de scans sont nombreuses allant du scan tcp connect() au spoofing d'adresses IP. Nmap est également disponible sous windows.

Possibilités

Nmap est essentiellement centré sur les scans de ports et d'ip. Il supporte les scans aussi bien sur TCP qu' UDP et par différentes techniques basés sur les connections tcp, les flags de contrôles SYN, FIN,ACK, les réponses renvoyées.

Nmap permet également de détecter les OS, les protocoles IP supportés, faire de l'IP spoofing, créer des adresses ip leurres (decoy) ...

Avantages et inconvénients

Nmap peut travailler sur des plages d'adresses et de ports, ce qui le rend particulièrement pratiques pour des recherches de masse. Les options de scans sont très nombreuses ce qui multiplie grandement les possibilités de détections.

D'autre part nmap est bien documenté. Que ce soit par le man très complet sur les options, mais également en documentation disponible sur internet.

Un avantage est également l'interface graphique Nmap Front End disponible avec Nmap (lancer avec nmapfe dans terminal). Elle réunit beaucoup d'options sans avoir à connaître les commandes en ligne. La commande en ligne est cependant montrée en bas de la fenêtre front end.

Bien que forte agréable, cette interface graphique ne contient pas toutes les options ,et des fois certaines options ne sont pas forcement très claires et l'on ne sait pas quel effet entre plusieurs disponibles est activé.

Aussi pour des scans aux caractéristiques avancées, les commandes en lignes peuvent être indispensables.

Remarque:

L'interface graphique ainsi que par exemple le nombre de fingerprint reconnus semblent avoir beaucoup évolué avec les différentes versions de Nmap. Ainsi la version de Nmap(2.54) livrée avec la Suse 8.0 a une interface "front end" disposant de peu d'options et pas assez de fingerprints référencées pour pouvoir reconnaître un OS linux sur une station distante.

Principales commandes

Scan TCP sur une plage d'adresses et de ports:

nmap -sT 192.168.4-6.15-20 -p 1-5000

-sT: il s'agit d'un scan TCP par tentative d'établissement de connections.(pour UDP -sU, mais la rapidité dépends de l'OS: voir remarque de decoy)
192.168.4-6.15-98: les adresses ip explorées sont sur les réseaux 192.168.4.0 à 192.168.6.0 et les machines 15 à 20.

-p: définition de la plage de ports.
1-5000 : scans des ports 1 à 5000.

collins@LxSilvano:~> nmap -sT 192.168.4-6.15-20 -p 1-5000
Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-11-27 08:14 CET
Interesting ports on 192.168.4.15:
(The 4998 ports scanned but not shown below are in state: closed)
PORT   STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind

Interesting ports on 192.168.4.16:
(The 4996 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
22/tcp  open ssh
111/tcp open rpcbind
1024/tcp open kdm
1025/tcp open NFS-or-IIS

Interesting ports on 192.168.4.19:
(The 4998 ports scanned but not shown below are in state: closed)
PORT   STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind

Nmap run completed -- 18 IP addresses (3 hosts up) scanned in 4.778 seconds

Remarque: N'ayant pas de réseau 192.168.5-6.0, ces réseaux n'apparaissent pas dans la console.

Détection des machines présente sur un réseau:

nmap -PT -sP 192.168.4.1-100
-PT: envoie des TCP ping et non des requêtes ICMP
-sP: indique qu'il s'agit d'un scan d'adresses IP(ping)
les adresses vont de 192.168.4.1 à 100

collins@LxSilvano:~> nmap -PT -sP 192.168.4.1-100
Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-11-27 08:17 CET
Host 192.168.4.2 appears to be up.
Host 192.168.4.3 appears to be up.
Host 192.168.4.5 appears to be up.
Host 192.168.4.8 appears to be up.
Host 192.168.4.9 appears to be up.
Host 192.168.4.12 appears to be up.
Host 192.168.4.15 appears to be up.
Host 192.168.4.16 appears to be up.
Host 192.168.4.19 appears to be up.
Host 192.168.4.27 appears to be up.
Host 192.168.4.56 appears to be up.
Host 192.168.4.57 appears to be up.
Host 192.168.4.58 appears to be up.
Host 192.168.4.67 appears to be up.
Host 192.168.4.68 appears to be up.
Host 192.168.4.69 appears to be up.
Host 192.168.4.70 appears to be up.
Host 192.168.4.71 appears to be up.
Host 192.168.4.75 appears to be up.
Host 192.168.4.90 appears to be up.
Nmap run completed -- 100 IP addresses (20 hosts up) scanned in 3.184 seconds

Détection de l'OS

Permet de détecter l'OS utilisé sur une machine connectée au réseau.

nmap -P0 -O 192.168.4.60-70
-P0:pour ne pas précéder l'action par un ping de la cible.
-O: se sert des fingerprints connues pour déterminer l'OS en service sur la machine cible.

LxSilvano:/home/collins # nmap -P0 -O 192.168.4.67-69
Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-11-27 08:37 CET
Interesting ports on 192.168.4.67:
(The 1652 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
22/tcp  open ssh
80/tcp  open http
111/tcp open rpcbind
3306/tcp open mysql
6000/tcp open X11
Device type: general purpose
Running: Linux 2.4.X
OS details: Linux Kernel 2.4.20
Uptime 2.931 days (since Mon Nov 24 10:16:19 2003)
Interesting ports on 192.168.4.68:
(The 1652 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
22/tcp  open ssh
80/tcp  open http
111/tcp open rpcbind
3306/tcp open mysql
6000/tcp open X11
Device type: general purpose
Running: Linux 2.4.X
OS details: Linux Kernel 2.4.20
Uptime 0.022 days (since Thu Nov 27 08:05:18 2003)
Interesting ports on 192.168.4.69:
(The 1653 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
1025/tcp open NFS-or-IIS
Device type: general purpose
Running: Microsoft Windows 95/98/ME|NT/2K/XP
OS details: Microsoft Windows Millennium Edition (Me), Windows 2000 Professional or Advanced Server, or Windows XP
Nmap run completed -- 3 IP addresses (3 hosts up) scanned in 15.629 seconds

Remarque: si il y a une adresse non présente sur le réseau dans la plage d'adresses à observer, le scan est très long.

IP spoofing

Le but est de scanner une adresse en se faisant passer pour une autre adresse que la notre.

nmap -P0 -sI 192.168.4.68 192.168.4.69
-sI: pour être en mode idleScan(ip spoofing)
192.168.4.68: adresse spoofée, adresse qui est vue comme l'adresse responsable du scan.
192.168.4.69: adresse cible

LxSilvano:/home/collins # nmap -P0 -sI 192.168.4.68 192.168.4.69
Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-11-27 08:27 CET
Idlescan using zombie 192.168.4.68 (192.168.4.68:80); Class: Incremental
Interesting ports on 192.168.4.69:
(The 1653 ports scanned but not shown below are in state: closed)
PORT    STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
1025/tcp open NFS-or-IIS
Nmap run completed -- 1 IP address (1 host up) scanned in 52.570 seconds

Remarque: pour pas se faire remarquer, faire attention à ne pas pinger la cible avant: P0.

Leurre (decoy):

Les actions sont vues comme exécutées par plusieurs machines à la fois: on noie la véritable source dans une marée d'adresse

nmap -P0 -D 192.168.4.66,192.168.4.65 -sU 192.168.4.69
-D : active l'option decoy
192.168.4.65, 192.168.4.66: les adresses qui sont vu comme également émettrices des actions. Pour véritablement noyer la source effective, il faut mieux mettre un maximum d'adresses decoy.
-sU: il s'agit d'un scan UDP sur 192.168.4.69

LxSilvano:/home/collins # nmap -P0 -D 192.168.4.66,192.168.4.65 -sU 192.168.4.69
Starting nmap 3.48 ( http://www.insecure.org/nmap/ ) at 2003-11-27 09:15 CET
Interesting ports on 192.168.4.69:
(The 1473 ports scanned but not shown below are in state: closed)
PORT   STATE SERVICE
135/udp open msrpc
137/udp open netbios-ns
138/udp open netbios-dgm
445/udp open microsoft-ds
500/udp open isakmp
Nmap run completed -- 1 IP address (1 host up) scanned in 4.680 seconds

Remarque: le scan UDP est généralement très long sur des stations UNIX, en raison de la limitation de l'envoi de message d'erreur ICMP. Cependant les stations Windows ne sont pas limités en taux de messages d'erreurs ICMP (Win95 et NT au minimum, et par expérience 2000).D'ou un scan UDP très rapide sur des cibles Windows, et très lents sur UNIX(2 ports scannés par seconde).

Conclusion

nmap est un des outils de base de l'administrateur réseau. A partir de simples lignes de commande, il permet de réaliser des opérations simples comme des opérations très poussées en ce qui concerne les scans de réseaux. L'administrateur réseau préférera les commandes en ligne à l'interface graphique pour rester maître des opérations qu'il effectue.

En résumé, on appréciera nmap pour les nombreuses options qu'il propose et sa puissance.

Sylvain COLLIN & Aldo DE LUCA - 01/2004
 




Sondage

Quel est votre connexion à Internet aujourd'hui ?
 
RTC 56Kbps
ADSL simple de 128 à 2048 Kbps
ADSL + Téléphonie (+TV) de 128 à 2048 Kbps
ADSL simple jusqu'à 20Mbps
ADSL + Téléphonie (+TV) jusqu'à 20Mbps
Autres (RNIS, Satellites bi-directionnel...)
Total :
3241

Recherche


Docs
   Pflogsumm (Analyseur de log mail pour Postfix)
   Proftpd (Mise en service d'un serveur FTP avec proftpd sous Linux)
   Openldap (Mise en service d'un serveur LDAP sous Linux)
   Gestion des périphériques en c++ builder (Communication RS232 en C++ Builder)
   Les sockets windows (Windows Sockets : un cours accéléré)

guill.net©1999-2024