10/28/2006

Tunnel basé sur SSH

Par exemple, si le port 22 reste ouvert, il est alors possible de crypter n'importe quelle communication TCP entre la machine expéditrice et la machine visée sur laquelle vous avez un accès SSH. Ainsi pour établir un tunnel SSH pour une connexion HTTP vers la machine exemple.org, 2006 est le port sur la machine cliente à partir duquel la connexion entre dans le tunnel SSH (le port doit être supérieur à 1024 si on ne veut pas avoir à lancer le tunnel en tant que root).

Ensuite, il suffit de lancer un navigateur Web en lui demandant de se connecter en local sur ce port.




Une méthode simple pour mettre cela en jeu est, lorsqu’on est sous linux d'utiliser la ligne de commande, ou bien sous Windows il suffira d'avoir Putty SSH ou autre.

Tunnel basé sur MSN mesenger

MSN Messenger est le système de messagerie instantanée, de VoIP et de visioconférence de Microsoft. Une session comporte toujours la connexion à un serveur de notification (NS), qui met à jour la liste des contacts connectés. Le NS permet ensuite de se connecter directement aux serveurs de messagerie instantanée standards (SB). Toutes les connections aux serveurs de MSN Messenger utilisent les couches de TCP/IP. Le client initialise toujours la connexion aux serveurs. Le port officiel de MSN Messenger est 1863. Le raccordement au serveur doit être considéré comme asynchrone, on peut envoyer beaucoup de commandes sans recevoir de réponse, et le serveur ne répondra pas nécessairement aux commandes dans l'ordre dans lequel celles-ci ont été envoyées. Le serveur peut également envoyer des messages qui ne sont pas des réponses aux questions du client.

Comment le protocole est-il détourné?


MsnShell se connecte au NS à l'aide d'un proxy HTTP ou en utilisant le réseau interne. Le processus d'ouverture de session nécessite l'authentification du client interne (CI) (le MSN Shell), le client externe (CE) reçoit alors une notification de connexion du CI.

Une fois que MsnShell est sur le réseau MSN Messenger, il reçoit sans interruption les messages qui indiquent le statut des autres utilisateurs et les messages qui précisent les demandes de dialogue. Pour chaque client en ligne sur Messenger, MsnShell crée une structure appelée l'online_user_info


Lorsque MsnShell reçoit une demande de dialogue, il crée un canal caché permettant de contrôler à distance une station Linux située derrière le Firewall en encapsulant les commandes Shell au sein du protocole MSN. MsnShell n'est composé que d'une partie serveur : "MsnShell server". Les principales fonctionnalités de MsnShell :

Figure 9: Principe de MSN Shell

  • Obtention d'un shell depuis une station située sur un réseau interne à partir d'un serveur externe;

  • Encapsulation des commandes et des réponses Shell dans le protocole MSN ("Shell over MSN");

  • Gestion de proxy HTTP ("Shell over MSN over HTTP");

Tunnel basé sur le protocole DNS

Comment le protocole est-il détourné?

Le protocole DNS, Domain name System, est un protocole de la couche applicative, utilisé pour enregistrer et effectuer des requêtes dans une base de données distribuée des noms de domaine. DNS se base sur un système symétrique de question-réponse.

Une nouvelle fois, les champs de l'entête du protocole vont pouvoir être détournés de leur usage premier pour faire circuler de l'information. Par exemple dans les champs ID, QDCOUNT, ANCOUNT, NSCOUNT, ARCOUNT, QNAME, NAME.



Logiciels pouvant être utilisés:

De nombreux outils ont été développés pour détourner le protocole DNS de son usage premier, nous citerons par exemple Nstx et Ozyman DNS (programme en perl).

Tunnel utilisant le Protocole HTTP

Le protocole HTTP (HyperText Transport Protocol) est utilisé pour transférer des informations sur Internet. C'est un protocole extrêmement répandu, ce qui en fait un medium de choix pour la création de canaux cachés. HTTP est basé sur un système à base de question-réponse. Bien que la RFC définissant le protocole contienne 6 différents types de requêtes, seules les requêtes GET et POST sont utilisées en pratique.

Comment le protocole est-il détourné?

Différents champs peuvent être détournés pour créer un canal caché, par exemple les champs HTTP request: {General, Request, Entity}-Header. Ces champs peuvent contenir différents entêtes, comme par exemple « User-Agent: », « Referer: », « Cookie: », on peut ajouter n'importe quel type d'entête pour faire circuler de l'information. Le champ HTTP request Entity-Body n'est normalement présent que dans la requête POST, cependant, la RFC 1945 n'exclue pas la présence de ce champ dans les autres requêtes. Ce champ peut donc servir à transmettre de l'information. Dans les champs de HTTP request, nous retrouverons les mêmes possibilités.


Considérons une requête GET (presque vraie) émise via un proxy HTTP :
Frame3

Pour plus de furtivité, il est possible d’utiliser une approche stéganographique. Les moyens de tromper un éventuel observateur sont donc:

  • La chaîne URI ressemble à une demande de service relative à un service web public : conversation en ligne, forum de discussion... Les données sont codées dans une chaîne additionnelle : "view=tu_peux_apporter_la_suite".

  • En utilisant une approche plus stéganographique, nous sommes capables de coder une information : "Accept-Language: en" = 0 et "Accept-Language: fr" = 1 ce qui correspond dans notre exemple à en,fr,en,fr,en,en,en,en soit 01010000 ou encore 0x50.

  • Les données sont codées dans une partie du champ "User-Agent" avec la valeur: "(121245321)".

  • Les données sont codées comme une fausse requête de type de caractères : "ISO-1212-1".

  • Les données sont codées dans un champ étendu de l'entête: "X-Microsoft-Plugin: unexpected error #123294681278"

La liste précédente n'est bien sûr pas exhaustive. Les méthodes présentées sont toutes valides du point de vue du protocole HTTP et peuvent être employées dans toutes les combinaisons possibles.

De telles méthodes ne sont pas utilisables pour véhiculer d'importantes quantités de données mais elles peuvent être employées comme la base d'un protocole de communication pour une backdoor. Les méthodes pour cacher des informations au niveau du programme serveur sont en tous points identiques à celles que nous venons de présenter.


Logiciels pouvant être utilisés:


Il existe de nombreuses implémentations de canaux cachés utilisant le protocole HTTP, par exemple HTTunel, Firepass, CCTT... Pour une application un peu plus ciblée, on peut citer aussi Webshell, qui offre un canal sur le protocole http pour la commande d’une station UNIX.


Les Canaux cachés au niveau des ports utilisés

La confusion de port consiste à détourner un port de son usage premier. Ainsi on peut très bien monter un serveur Apache sur le port 22 de l’ordinateur pour y accéder.

Figure 7: Confusion de port






OpenVPN permet de créer un tunnel chiffré sur une liaison point-à-point entre deux serveurs. Il permet à des pairs de s’authentifier entre eux en utilisant une clef privée pré-partagée, des certificats, ou un couple login-password. Il est basé sur la librairie d'OpenSSL, et emploie les protocoles SSLv3/TLSv1. L'IANA a assigné à OpenVPN le port 1194 comme port officiel. Cependant, il est bien sûr tout à fait possible d'utiliser n'importe quel port ouvert du firewall. On dispose alors d'un tunnel sûr pour exfiltrer de l'information de l'entreprise. Une fois mis en place, les administrateurs réseaux ne pourront plus du tout contrôler ce qui circule sur cette liaison, tous les protocoles pouvant y être utilisés.

Les Canaux cachés de la couche Transport

TCP

Le protocole de contrôle de Transmission ou TCP est un protocole de la couche de transport utilisé pour une transmission fiable des données. C'est évidemment un medium de choix pour les canaux cachés. L'en-tête d'un paquet TCP, comme indiqué dans la RFC 793, est décrit sur le schéma suivant:


Comment le protocole est-il détourné?

Le numéro de séquence, codé sur 32 bits, est normalement employé comme numéro d'identification pour réorganiser les paquets au niveau du récepteur lorsque ces derniers arrivent dans le désordre. Il permet et facilite les demandes de retransmission de paquet. Le premier paquet d'une session de TCP (un paquet de type SYN) contient un nombre d'ordre initial aléatoire, ISN. Le destinataire répond typiquement avec un paquet de type SYN/ACK, et en utilisant ISN+1. L' ISN doit être pris de manière aléatoire, cependant, ce champ peut également contenir une valeur non-aléatoire sans perturber le mécanisme de TCP. Il devient donc possible de cacher jusqu'à 32 bits des données dans ce champ et de les envoyer à n'importe quel autre système sur le réseau.

Le champ des options peut lui aussi être employé pour la transmission de données entre l'émetteur et le récepteur.

Logiciels pouvant être utilisés:

Le logiciel covert_tcp pourra être utilisé avec l’option TCP.



ICMP

Le protocole ICMP (Internet Control Message Protocol) est utilisé pour diffuser les informations, les erreurs et les messages de test liés à l’état du réseau. C'est un protocole essentiel pour diagnostiquer l'état du réseau, il n'est donc que très rarement filtré. L'entête d'un paquet ICMP est de la forme:

+

Bits 0-7

8 – 15

16 - 31

0

Type

Code

Checksum

32

Identifier

Sequence Number

64

DATA

Figure 5: Format d'un paquet ICMP

Comment le protocole est-il détourné?

Le Ping Tunnel est une application qui permet d'établir une connexion TCP vers un serveur à distance en utilisant le protocole ICMP. Montrons la puissance de cet outil : considérons que vous essayez de vous connecter dans un Hotspot, le réseau vous donne une adresse IP, mais ne vous laisse pas envoyer des paquets TCP ou UDP vers l'extérieur. Cependant le réseau vous permet de pinguer n’importe quel ordinateur de l’Internet. Il est possible de faire circuler de l'information dans le bloc data, sans que celle-ci soit vérifiée.

Logiciels pouvant être utilisés:

Les logiciels comme ptunnel et icmptx sont basés sur des paquets ICMP de type 8 (echo-request) et 0 (echo-reply). Le logiciel skeeve change le champ protocole de l'entête IP et met à 1 pour les faire ressembler à un paquet ICMP bien que ce dernier soit un paquet TCP.

Figure 6: Principe de fonctionnement



Il existe d’autres outils plus spécifiques, tels ICMP Shell1 qui permet de gérer une station linux en utilisant le protocole ICMP.


Les Canaux cachés de la couche Réseau

Le protocole Ipv4 est à la base des réseaux informatiques. Sa RFC définit un certain nombre de propriétés que doit remplir le protocole. Toutes ces propriétés se traduisent par des champs dans l'entête Ipv4. Ces champs ne sont parfois que partiellement utilisés et peuvent donc être modifiés en conséquence pour créer un canal caché.


+

Bits 0 - 3

4 - 7

8 - 15

16 - 18

19 - 31


0

Version

Header length

Type of Service

Total Length

32

Identification

Flags

Fragment Offset

64

Time to Live

Protocol

Header Checksum

96

Source Address

128

Destination Address

160

Options + Padding

160/192+


Data



Figure 3: Entête IP

Comment le protocole est-il détourné?

Le champ d'identification du paquet IP est codé sur 16 bits et est employé pour identifier un datagramme IP dans un même flot, c.-à-d. un ensemble de datagrammes IP partageant le même quatre-tuple de source et de destination (IP de source, IP de destination et ports source et de destination). La valeur pour ce champ doit être choisie aléatoirement par la source, mais peut également contenir une valeur non-aléatoire sans perturber le mécanisme d'IP. Il est alors possible de détourner ce champ pour cacher 16 bits de données et les envoyer à n'importe quel autre système sur le réseau. Remarquons qu'il a été proposé de cacher les informations transmises dans ce champ de telle manière qu'on garde les propriétés de suite pseudo-aléatoire du champ d'identification.

D'autre part, le champ de 3-bits utilisé pour gérer les problèmes de fragmentation est facultatif et sans conséquence sur le fonctionnement du protocole IP. Par conséquent c'est un medium intéressant pour les canaux secrets, quoiqu'il puisse seulement faire circuler quelques bits par paquet. Le champ de remplissage est normalement à 0, mais rien n'empêche de choisir un remplissage autre que 0 et donc d'exfiltrer ainsi de l'information.

Le champ option de l'entête du paquet IP est prévu pour les opérations de service requises ou utiles dans quelques situations bien précises mais inutiles pour les communications les plus communes. C'est un champ très intéressant pour pouvoir faire circuler des informations, car il offre un débit spatial très intéressant.

Logiciels pouvant être utilisés:

On pourra utiliser covert_tcp.c ou new-sob.c, en mode IP.

Dans les deux cas la communication entre l'expéditeur et le destinataire est directe. Les logiciels créent le trafic qu'ils utilisent pour créer un canal caché et inscrire de l'information dans chaque paquet utilisé, donc nous sommes dans le cas d'un trafic spatial.

Sous Ipv6, certaines implémentations sont déjà en cours, par exemple le logiciel de Thomas Graf.


10/27/2006

Modèle de réseau pour des tests de pénétration

Afin de pouvoir expérimenter les différentes techniques pour passer un firewall, il est nécessaire de disposer d’un mini réseau d'étude. Ne possédant pas suffisamment de machines, je me suis tourné vers une solution de virtualisation du type VMWare ou Qemu.

Figure 2: Mini réseau utilisé


Toutes les machines fonctionnent avec une Debian stable en mode texte. Pour économiser l’espace disque, les machines sont des clones d’une seule machine, c.-à-d que sur les disques de chacune des machines seule la différence par rapport à la machine de référence est stockée.

La configuration du firewall est assez simple : on interdit dans un premier temps toutes les connections forwardées :

iptables -P FORWARD DROP

On ouvre ensuite les protocoles voulus

iptables -A FORWARD -p icmp -j ACCEPT

On varie ensuite les règles d’iptables pour bloquer un port, un protocole, le forward…Sur la machine cible, un serveur apache est installé, sur le serveur procurateur est installé un serveur DNS (type bind9).

Les canaux cachés

Lors de leur création, les réseaux d’ordinateurs se destinaient essentiellement à l'échange de mails entre chercheurs ou, dans les locaux des entreprises, à échanger des données et partager une imprimante. Les enjeux de la sécurité étaient alors négligeables... Aujourd’hui, à l’heure où tous les services, tous les réseaux s’interconnectent, toutes les données de toute personne reliée à ce vaste réseau sont plus ou moins accessibles à n’importe qui... La sécurité des différents réseaux est devenue primordiale. Pour assurer la sécurité des informations, il a donc fallu restreindre le transit des données sur ces réseaux. Les autorisations de transit de données entre des réseaux interconnectés sont définies et implémentées au niveau du système de contrôle d’accès réseau (Network Access Control System (NACS)). En fonction de la configuration du NACS, il est pourtant possible d’utiliser les flux autorisés pour faire transiter des données arbitraires dont le trafic est interdit, mettant ainsi en place un canal de communication. Certains sont cachés dans les couches basses du modèles OSI alors que d’autres s’inscrivent dans les couches hautes.

Nous proposerons une classification des canaux cachés. Pour chacune de ces grandes familles, nous étudierons au cours de ce blog les techniques utilisées et les programmes les exploitant.

Le principe fondamental de ces "évasions" repose sur l’absence de vérification de la valeur intrinsèque des données qui transitent. Les diverses implémentations de systèmes de contrôle d'accès reposent, en effet, sur l’abstraction protocolaire, qui voudrait qu’un transfert de données s’appuyant sur les diverses couches du modèle OSI, ne puisse servir qu'à transporter les données prévues. Notre exposé ne se veut pas exhaustif mais tentera de fournir une nomenclature des canaux cachés aussi complète que possible. Si on s’appuie sur la pile TCP/IP, il devient possible de classer les différents types de canaux cachés en quatre grandes catégories :

  • Les Canaux cachés de la couche Réseau

  • Les Canaux cachés de la couche Transport

  • Les Canaux cachés au niveau des ports utilisés

  • Les Canaux cachés de la couche application

La famille de canal à utiliser correspondra au type de firewall utilisé applicatif ou couche réseau.

Afin de bien comprendre toutes les spécificités des canaux cachés et comment ces derniers peuvent être utilisés, il convient de se poser au moins deux questions pour chaque canal:

Comment se fait la communication entre l'expéditeur et le récepteur? De manière:
Direct : l'expéditeur communique directement avec le récepteur;
Indirect : l'expéditeur communique avec le récepteur via une machine interposée, un serveur procurateur, qui réexpédie le trafic vers la cible. Cette technique permet une plus grande furtivité que la méthode directe.
Multi-indirect : l'expéditeur envoie son flux vers un grand nombre d'ordinateurs, après quoi les différents flux convergent vers le récepteur. Une autre méthode moins gourmande en ressource, l'expéditeur peut envoyer les données vers un unique serveur, ayant des adresses IP multiples. Cette dernière technique est la plus furtive.

Quel est la quantité de bande passante pouvant être détournée par le canal caché?
En espace: correspond au nombre de bits pouvant être transmis par paquet détourné
En temps: correspond au nombre de bits pouvant être transmis par seconde.

Muni de ces outils de classement des canaux cachés, il nous faut aussi mettre en place un environnement de test pour mettre en pratique l'ensemble de ces outils, mesurer et juger de leurs possibilités de nuisance.

10/25/2006

Indigènes

Les principaux interprètes masculins (Sami Bouajila, Jamel Debbouze, Samy Naceri, Roschdy Zem et Bernard Blancan) sont qssez remarquables dans leur rôles mais l'histoire connait quelques longueurs... Même si ce film répond à un devoir de mémoire, il faudrait tout de même que les faits rapportés soient tous exactes... Ainsi ce ne sont pas les français qui ont pris le Mont Cassin... Je ne sais toujours pas si le film à profiter de la politique de M. De Villepin ou bien si c'est le contraire. Dans tous les cas je suis pour le paiement de ses pensions aux "Indigènes" mais il ne faut pas non plus prendre une position trop manichéenne. Les "Indigènes" n'étaient pas si nombreux que le sous entend le film et n'ont pas toujours fait preuve de la droiture qu'on leur prête dans le film. Pour moi, cela ne reste qu'un film intéressant à voir pour l'actualité et accessoirement l'histoire... Sinon passez votre chemin.

Problème avec le Hurd

Me voilà à nouveau à tenter d'installer le Hurd dans une machine virtuelle à partir d'une Debian virtuelle et de l'utilitaire Crosshurd. Pour pouvoir à la fin récupérer mon hurd, j'ai créer un second disque dur virtuel spécialement pour le Hurd . Normalement une fois crosshurd installé, il ne suffit plus de le lncer pour installer ke Hurd sur une partition... engagez vous qui disez... Je commence à devenir un hurd sceptique... Cette petite bête portait en elle tant de promesse dès 1990 mais l'absence de développeur et surtout l'absence d'un moyen simple de l'installer aura je pense raison du Hurd. Saleté de paquet libdb2!!!

Gmail et Greasemonkey

Si comme moi vous avez un compte Gmail et que vous êtes abonné à quelques mailing listes: vous allez comprendre l'intéret du script Gmail colorizee. En effet, Gmail devient rapidement illisible. Pour s'y retrouver, il y a bien le système de labels, mais c'est tout petit et en vert... et si vous commencez à accumuler les labels, ils ne sont plus très utiles... du moins dans la boîte de réception. Greasemonkey et le script Gmail colorize permet de donner un peu plus de relief à vos labels en colorant la ligne du message selon le label qui lui est appliqué. Cette fois vous savez tout de suite si un message qui vous est destiné personnellement.

10/24/2006

Comment tuer un ourson

enrobés de chocolat: j'en suis dingue ;-)



la seule question qui se pose avec ces petites nounours est comment les manger... En effet je prends un plaisir sadique à les manger: je leur arrache des oreilles une à une. Je passe ensuite aux pattes... Puis le corps et je finis par décapiter ce pauvre ourson. Que j'aime torturer ces petites bêtes ;-) Je pense que Brigitte Bardot va porter plainte si elle savait ça.

Desperate Housewives SAISON 3

ou Beautés désespérées.... SAISON 3
je sais, ce n'est pas un film... Mais cette serie est tellement bien: je suis accro. La troisième saison vient juste de débuter aux Etats Unis, apportant son lot de réponses (pas beaucoup), de surprises et de questions (vous ne serez pas déçus). Dans cette nouvelle saison, Lynette (Felicity Huffman alias Lynette Scavo)essaye de composer avec la nouvelle petite fille de Tom et surtout avec la mère histérique de cette petite fille... Gabrielle (Eva Longoria alias Gabrielle Solis) ne sera toujours pas maman, et Carlos vit toujours à l'hôtel... Suzanne (Teri Hatcher alias Suzanne Mayer) veille sur le pauvre Mike qui s'est fait renversé par Orson à la fin du dernier épisode de la dernière saison de Desperate Housewives... Quant à Bree (Marcia Cross alias Bree van de Kamp), elle va convoler avec Orson qui est soupçonné du meurtre de sa première femme... Elles ont bien raison d'être désespérées ces pauvres Desperate Housewives. enjoy