
               ==--    Le merveilleux monde du spoofing --==
	       ==--	        avec CIPS               --==
	   
   
(c) 10 aout 1997 , 3h35 a.m. , HIP
    wolverine

ATTENTION ! IL EST BIEN BIENSUR EVIDANT QUE CIPS , ET LES EXEMPLES D'ATTAQUES
DONNEES ICI SONT DONNEES A TITRE D'INFORMATION, OU POUR UNE UTILISATION SUR
VOS MACHINES. JE NE POURRAIS EN AUCUN CAS ETRE TENUS POUR RESPONSABLE SI
VOUS UTILISEZ CES INFORMATIONS DANS LE BUT DE VOUS INTRODUIRE SUR D'AUTRES
SYSTEMES QUE LES VOTRES !

1.1)Overview !
-------------

Recall: Le spoofing c l'art d'utiliser une autre IP que la votre dans le 
but de vous infiltrer sur une machine , ou bien faire du Denial of Service.
(oui, DOS ...)

Bon ,je vais essayer d'expliquer les grands principes du spoofing ,puis
montrer comment se servir de CIPS ,un programme de spoof entierement en 
ligne de commande ...


2.0) Protocols !
---------------
CIPS est entierement base sur les lignes de commandes, ceci afin de permettre
son utilisation dans des scripts shells.
Au debut il est assez difficile a utiliser vu le nombre d'arguments a fournir,
mais vous vous y ferrez vite si vous connaissez deja un peu le fonctionnement
interne de TCP/IP ...

Il est encore en developpement ,pour l'instant il supporte BOOTP, ICMP, IGMP,
NTP, UDP ,TCP ,TFTP ,RIP (1 et 2) et EGP. Mais d'autres suivront !



2.1) IP (Internet Protocol)
------------------------

Tous les protocoles qui suivront incorporent obligatoirement un header IP
(certains ont aussi besoin d'un header UDP ou TCP).

Syntaxe IP :

<version>  : Version du protocol TCP/IP ,actuellement 4

<ToS>      : Type of Service , il y a trois possibilites
             17 _ Minimise le delai
	     08 _ Minimise le debit
	     04 _ Minimise le cout monetaire

<ID>       : Identificateur

<FragOff>  : Offset de fragmentation (si il y en a !)

<TTL>      : Duree de vie (Time To Live)
             C'est le nombre de machine que le packet est autorise a 
	     traverser avant de tomber en timeout.

<dest>     : adresse IP de destination

<source>   : adresse IP source ,adresse qu'il faut spoofer.


2.2) UDP (User Datagram Protocol)
------------------------------
L'utilisation de protocoles tels que UDP et TCP est necessaire pour 
pourvoir discerner a quelle application , ou protocole de haut niveau
est destine le packet.

UDP est le paradis du spoofer car il ne propose aucune forme de controle
sur le header ou les donnees.
Pour les headers UDP utilises dans CIPS vous devez juste entrer

<source>   : port source

<dest>     : port destination 

<data>     : CECI EST VALABLE UNIQUEMENT POUR LE PACKET UDP SIMPLE !

La liste des ports est disponible dans le fichier /etc/services.

ex. :
     #cips u 4 0 0 0 255 bill hacker 139 139 "Its not a bug, its a feature..."
     

2.3) TCP (Transport Control Protocol)
------------------------------------
Contrairement a UDP, TCP est assez complexe a spoofer car dans la
plupart des cas ont doit avoir recour au sniffing (la capture des packets)
, ce qui implique que vous soyez sur la route qui separe la source de la
destination.

<source>   : port source

<dest>     : port destination 

<seq>      : numero de sequence
             c'est le numero utiliser pour identifier la transmission, c'est
	     pour le recuperer que vous devrez recourir au sniffing.

<ack seq>  : numero d'aquitement
             il est utiliser pour signaler au processus distant qu'un 
	     segment de donnees a bien ete recu. Il requiert le ACK flag.
	     (voir ci dessous)
	     
<URG flag> : Flag qui signale que ce segment contient des donnees qui 
             devront etre passes au processus distant le plus rapidement
	     possible. 
 
<ACK flag> : voir <ack seq>

<PSH flag> : Pousse le packet ...

<RST flag> : Remet la connection en cour a zero.

<SYN flag> : Flag utiliser lors de la connection pour synchroniser les
             numeros de sequences
	     
<FIN flag> : Indique que l'emmetteur a finni de transmettre les donnees

<window>   : Taille de la fenetre distante

<urg prt>  : Quand le flag URG est utilise, ce champ peut contenir un
             pointeur vers le debuts des donnees urgentes.
	     
<data>     : idem que pour UDP.

ex. :

    #cips t 4 0 0 0 255 bill hacker 23 23 6666 9999 0 1 0 0 0 0 500 0 
     "hello world"
     

2.4) ICMP (Internet Control Message Protocol)
--------------------------------------------
ICMP a deux taches principale :
 _ Signaler aux processus qu'une erreur est survenue ...
 _ Obtenir des informations sur la configuration du reseau.
 
Les attaques par spoofing sont nombreuse avec ICMP, plus 
particulierement avec les redirections ICMP et les "unreachables".


-----------------------------------------------------------------------------------------
Type Code Type en C         Code en C                 Description
-----------------------------------------------------------------------------------------
 8   0    ICMP_ECHO         0                         Requete echo (ping)
 0   0    ICMP_ECHOREPLY    0                         Reponse echo (ping)
-----------------------------------------------------------------------------------------
 13  0    ICMP_TSTAMP       0                         Requete d'estampille horaire
 14  0    ICMP_TSTAMPREPLY  0                         Reponse d'estampille horaire       
-----------------------------------------------------------------------------------------                                              
 17  0    ICMP_MASKREQ      0                         Requete de masque d'addresse
 18  0    ICMP_MASKREPLY    0                         Reponse de masque d'addresse
----------------------------------------------------------------------------------------                                                      
 15  0    ICMP_IREQ         0                         demande d'informations (obsolete)
 16  0    ICMP_IREQREPLY    0                         reponse d'informations  (obsolete)                                                                                       -----------------------------------------------------------------------------------------                                                    
 9   0    ICMP_ROUTERADVERT                           Avertissement d'un routeur
 10  0    ICMP_ROUTERSOLICIT                          Solicitation d'un routeur                                                   
-----------------------------------------------------------------------------------------                                                     
 5   0    ICMP_REDIRECT     ICMP_REDIRECT_NET         Redirection reseau                                                     
 5   1    ICMP_REDIRECT     ICMP_REDIRECT_HOST        Redirection machine
 5   2    ICMP_REDIRECT     ICMP_REDIRECT_TOSNET      Redirection ToS et reseau                         
 5   3    ICMP_REDIRECT     ICMP_REDIRECT_TOSHOST     Redirection ToS et machine                                                    

----------------------------------------------------------------------------------------
 3   0    ICMP_UNREACH      ICMP_UNREACH_NET          Reseau destination inaccessible                                                      
 3   1    ICMP_UNREACH      ICMP_UNREACH_HOST         Machine destination  inaccessible                                                  
 3   2    ICMP_UNREACH      ICMP_UNREACH_PROTOCOL     Protocole inaccessible                                                     
 3   3    ICMP_UNREACH      ICMP_UNREACH_PORT         Port destination inaccessible                                                    
 3   4    ICMP_UNREACH      ICMP_UNREACH_SRCFAIL      Echec du routage relache (loose source routing)                                                           
 3   5    ICMP_UNREACH      ICMP_UNREACH_NEEDFRAG     Fragmentation necessaire        
 3   6    ICMP_UNREACH      ICMP_UNREACH_NET_UNKNOWN  Reseau destination inconnu                                                   
 3   7    ICMP_UNREACH      ICMP_UNREACH_HOST_UNKNOWN Machine destination inconnue
 3   8    ICMP_UNREACH      ICMP_UNREACH_ISOLATED     Machine source isole        
 3   9    ICMP_UNREACH      ICMP_UNREACH_NET_PROHIB   Reseau destination administrativement interdit                                           
 3   10   ICMP_UNREACH      ICMP_UNREACH_HOST_PROHIB  Machine destination administrativement interdite                                                     
 3   11   ICMP_UNREACH      ICMP_UNREACH_TOSNET       ToS inaccessible sur ce reseau
 3   12   ICMP_UNREACH      ICMP_UNREACH_TOSHOST      ToS inaccessible sur cette machine                                                     
 3   13   ICMP_UNREACH      13                        Communication administrativement interdite par filtrage                              
 3   14   ICMP_UNREACH      14                        Violation de la precedence de la machine                                                                          
 3   15   ICMP_UNREACH      15                        Coupure de la precedence pendant le transit
-----------------------------------------------------------------------------------------
 11  0    ICMP_TIMXCEED     ICMP_TIMXCEED_INTRANS     TTL a 0 pendant le transit       
 11  1    ICMP_TIMXCEED     ICMP_TIMXCEED_REASS       TTL a 0 pendant le reassemblage
-----------------------------------------------------------------------------------------
 12  0    ICMP_PARAMPROB    0                         Erreur dans le header IP       
 12  1    ICMP_PARAMPROB    ICMP_PARAMPROB_OPTABSENT  Option requise manquante
-----------------------------------------------------------------------------------------
 4   0    ICMP_SRCQUENCH    0                         Demande de diminution du debit
-----------------------------------------------------------------------------------------


Les deux premiers arguments apres le header IP sont toujours le Type et
le Code ICMP.


Echo
----
Les messages echo sont utilises par des programmes comme ping pour 
verfifier qu'une machine est "alive". Normalement le noyau doit
repondre avec un message ICMP ECHO_REPLY.

Toutefois certaines machines choisissent de ne pas repondre au requetes
ICMP car ping peut etre utilise pour inonder une machine avec des
packets de 65000 octets :

#ping -t -s 65000 www.microsoft.com

Pour envoyer des messages echo avec CIPS il faut juste fournir
le Type 8 ou 0 et comme code 0 apres le header IP.

ex. :
     #

Redirect
-------
Les redirections ICMP sont envoyes par un routeur quand une meilleure route
est disponible. Il est evident que des attaques visant a rediriger
des donnees sont faisables ...

<Type>   :  5
<Code>   :  entre 0 et 3

<gtw>    : Adresse du routeur/hote vers lequel sera rediriger les packets.

<err ip> : La c'est le header IP du packet qui est a l'origine du message.

<proto>  : le protocol utilise dans le packet d'origine : UDP ou TCP

<err pt> : Si le protocol est UDP il faut mettre
                   _ Port source
		   _ Port destination
		   
	   mais si c'est TCP :
                   _ Port source
		   _ Port destination
		   _ Numero de sequence
		  

ex. :
      #cips c 4 0 0 0 255 bill hacker 5 0 mygateway 4 0 0 0 255 hacker bill
       udp 23 23

Unreachable
----------
Les messages ICMP "unreachable" sont envoyes quand la machine destination
est injoiniable ou si elle refuse toute communication.

<type>   : 3
<code>   : Entre 0 et 15

<err ip> : Header IP d'origine

<proto>  : protocol utilise dans le packet d'origine

<err pt> : idem que pour les redirections


Une des attaques possible avec les ICMP "unreachable" et TCP consiste
a sniffer le numero de sequence d'une connection ,puis d'envoyer un
message ICMP "port unreachable" vers le serveur. Celui-ci devrait
RSTer la connection.


ex.:
    #cips c 4 0 0 0 255 bill hacker 3 0 4 0 0 0 255 bill hacker udp 139 139 
  

Timestamps
---------
Le but des estampille horaires ICMP est de regler plusieurs machines
sur la meme heure. Pour plus d'infos regarder NTP plus bas.

Les estampilles sont des entiers de 4 octets.

<type>        : 13 / 14
<code>        : 0

<id>          : identificateur

<seq>         : numero de sequence

<org>         : Estampille d'origine

<rec>         : Estampille recue

<trans>       : Estampille transmise

ex. :
     #cips c 4 0 0 0 255 bill.ms.com hacker.hip97.nl 13 0 1 666 66666 66666
      66666


Router Advert
------------
Ce type est une reponse aux messages ICMP "Router Discovery", il indique
juste l'addresse d'un routeur ...

<type>         : 9
<code>         : 0

<addr num>     : numero d'adresse 

<ntr sz>       : Taille de l'adresse

<life>         : Duree de vie

<addr>         : Adresse du routeur 

<pl>           : Niveau de preference du routeur


ex. :
     #cips c 4 0 0 0 255 bill hacker 9 0 1 4 10 gateway1 1
     

Address Mask
------------
La c'est pas trop complique, ce message ce contente de demander ou de 
fournir le masque d'adresse IP.

<type>        : 17 / 18
<code>        : 0

<id>          : identificateur

<seq>         : numero de sequence 

<mask>        : masque d'adresse IP


ex. :
     #cips c 4 0 0 0 255 bill hacker 18 0 0 0 255.255.240.0
     

2.5) IGMP (Internet Group Message Protocol)
------------------------------------------
IGMP est utilise quand de nombreuse personnes doivent recevoir les memes
donnees (par exemple si tous ecoute une radio en ligne), pour eviter au
serveur d'avoir a envoyer plsuieurs fois les donnees , on utilise
le multicasting :

Le serveur envoi les donnees vers une adresse multicast (classe D) comme
224.0.0.1, celles-ci parviendront seulement aux machines qui utilise le
meme group multicast.

<version>     : version de IGMP

<type>        : Type de message IGMP

<code>        : Code du message IGMP

<group>       : Adresse du groupe multicast 


ex.:
    #cips g 4 0 0 0 255 bill.ms.com hacker.hip97.nl 1 1 1 224.0.0.1
    

2.6) EGP (Exterior Gateway Protocol)
-----------------------------------
L'utilisation des protocoles de routage dynamique comme EGP et RIP est
assez complexe ,il faudrait mieux que vous lisiez les RFCs correspondantes,
et je n'est pas le temps pour tout resume ... 
Je rappelle que pour que ces packets marche il faut que la machine destination
execute les demons de routage comme gated et routed.

<version>    : version de EGP

<type>       : Type de packet EGP

<code>       : Code du packet EGP

<status>     : Statut

<as>         : as

<seq>        : numero de sequence

<hello || intgw || extgw || reason> :
              hello, passerelle interieur / exterieur ou raison

<.>          : valeur dependant de l'argument ci-dessus

<poll || sourcenet> 
             : poll ou reseau source.
	     
<.>          : valeur dependant de l'argument ci-dessus


2.7) RIP (Routing Information Protocol) version 1
-------------------------------------------------
Voir EGP...

(header UDP)

<source>     : port source, normalement 520
<dest>       : port destination, 520 aussi


(header RIP) 

<command>    : commande

<family>     : famille 

<gtw>        : adresse du routeur

<metric>     : metrique


ex. :

2.8) RIP (Routing Information Protocol) version 2
-------------------------------------------------
Voir EGP...

(header UDP)

<source>     : port source       (520)
<dest>       : port destination, (520)


(header RIP2)

<command>    : commande 

<routdom>    : domaine de routage

<rttag>      : tags de routage

<gtw>        : adresse du routeur

<mask>       : masque d'adresse

<nxt hop>    : adresse du routeur de saut suivant

<metric>     : metrique

ex. :
     #cips r 4 0 0 0 255 bill hacker 520 520 1 0 0 mygateway 255.255.255.0
      mygateway2 13


2.9) TFTP (Trivial File Tranfert Protocol)
-----------------------------------------
Le TFTP est rarement utiliser car il n'offre pas d'identification
,ni de controle sur le flux de donnees.
Mais ceci le rend attrayant pour lire ou ecrire la ou l