==-- 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 du protocol TCP/IP ,actuellement 4 : Type of Service , il y a trois possibilites 17 _ Minimise le delai 08 _ Minimise le debit 04 _ Minimise le cout monetaire : Identificateur : Offset de fragmentation (si il y en a !) : Duree de vie (Time To Live) C'est le nombre de machine que le packet est autorise a traverser avant de tomber en timeout. : adresse IP de destination : 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 : port source : port destination : 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. : port source : port destination : numero de sequence c'est le numero utiliser pour identifier la transmission, c'est pour le recuperer que vous devrez recourir au sniffing. : 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) : Flag qui signale que ce segment contient des donnees qui devront etre passes au processus distant le plus rapidement possible. : voir : Pousse le packet ... : Remet la connection en cour a zero. : Flag utiliser lors de la connection pour synchroniser les numeros de sequences : Indique que l'emmetteur a finni de transmettre les donnees : Taille de la fenetre distante : Quand le flag URG est utilise, ce champ peut contenir un pointeur vers le debuts des donnees urgentes. : 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 isolée 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 ... : 5 : entre 0 et 3 : Adresse du routeur/hote vers lequel sera rediriger les packets. : La c'est le header IP du packet qui est a l'origine du message. : le protocol utilise dans le packet d'origine : UDP ou TCP : 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. : 3 : Entre 0 et 15 : Header IP d'origine : protocol utilise dans le packet d'origine : 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. : 13 / 14 : 0 : identificateur : numero de sequence : Estampille d'origine : Estampille recue : 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 ... : 9 : 0 : numero d'adresse : Taille de l'adresse : Duree de vie : Adresse du routeur : 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. : 17 / 18 : 0 : identificateur : numero de sequence : 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 de IGMP : Type de message IGMP : Code du message IGMP : 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 de EGP : Type de packet EGP : Code du packet EGP : Statut : as : numero de sequence : hello, passerelle interieur / exterieur ou raison <.> : valeur dependant de l'argument ci-dessus : poll ou reseau source. <.> : valeur dependant de l'argument ci-dessus 2.7) RIP (Routing Information Protocol) version 1 ------------------------------------------------- Voir EGP... (header UDP) : port source, normalement 520 : port destination, 520 aussi (header RIP) : commande : famille : adresse du routeur : metrique ex. : 2.8) RIP (Routing Information Protocol) version 2 ------------------------------------------------- Voir EGP... (header UDP) : port source (520) : port destination, (520) (header RIP2) : commande : domaine de routage : tags de routage : adresse du routeur : masque d'adresse : adresse du routeur de saut suivant : 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'on ne devrait pas :-) (header UDP) : port source (69) : port destination (69) (header TFTP) : Type de packet TFTP: 1 _ Requete de lecture 2 _ Requete d'ecriture 3 _ Packet de donnees 4 _ Aquitement de donnees 5 _ Erreur <.> : Ce champ depand du type : 1 / 2 : Nom du fichier 3 / 4 : Numero du block de donnes 5 : Code d'erreur 1 _ Fichier introuvable 2 _ Permission refusee 3 _ Espace disque insuffisant ou allocation refusee 4 _ Type inconnu 5 _ Identificateur incorrect 6 _ Fichier deja existant 7 _ Utilisateur inconnu : 1 / 2 : mode de transmission _ binary _ netascii 3 / 4 : donnees 5 : message d'erreur ex. : #cips f 4 0 0 0 255 bill.ms.com hacker.hip97.nl 69 69 1 /etc/passwd netascii 2.10) NTP (Network Time Protocol) --------------------------------- Le NTP sert a mettre des machines a la meme heure. Les estampilles horaires utilisees utilise le nombre de secondes ecoules depuis 1900 (je suis pas sur a 100% ...) (header UDP) : port source (123) : port destination (123) (header NTP) : statut : stratum... : : precision des estampilles horaires : Heure distante ATTENTION , CES ESTAMPILLES HORAIRES SONT CHACUNE COMPOSEES DE DEUX ARGUMENTS ! la partie entiere et la partie fractionnaire. Ce sont toutes les deux des nombres non-signes sur 2 octets. : Decalage entre les horloges (format idem que pour ) : identificateur pour l'heure de reference : Heure de reference. Comme tout les arguments qui vont suivre, ces heures sont similaires aux precedantes mais avec 4 octets au lieu de 2. : Heure initiale : Heure recue : Heure transmise Utiliser des packet spoofer avec NTP peut etre utile pour effectuer des "replay attacks" vers des machines utilisant un systeme d'authentification tels que kerberos , SKEY etc ... ex.: #cips n 4 0 0 0 255 bill hacker 123 123 1 0 0 1 66666 66 66666 66666 66666 66666 X) BOOTP (Bootstrap Protocol) ---------------------------- C'est le protocol utiliser par les clients sans disques et les terminaux X pour obtenir leur adresse IP, leur nom de domaine et quelques autres trucs qui ne nous servirons pas trop... Ce protocol peut servir a de nombreuses attaques ,par exemple on peut repondre a une requete BOOTP et ainsi attribuer une autre adresse IP ,ou l'empecher d'utiliser TCP/IP. (header UDP) : port source (67 pour le serveur, 68 pour le client) : port destination (header BOOTP) : Code : Type de carte reseau, 1 pour de l'ethernet 10mb/s : Taille de l'adresse hardware , 6 pour de l'ethernet 10mb/s : Compteur de sauts : Identificateur de transaction : Identificateur de securite : adresse IP du client : adresse IP de l'expediteur : adresse IP du serveur : adresse IP de la passerelle : adresse hardware du client : nom de domaine du serveur : nom du fichier de boot : information specifique du vendeur ============================== DA EOF ======================================= Voila c tout ! Mais je ferais surement un file plus complet plus tard questions ? try wolverin@altern.org