CCTT - Covert Channel Tunneling Tool v0.1.6 - LISEZMOI
Copyright (C) Simon Castro - scastro@entreelibre.com
$Id: LISEZMOI,v 1.9 2003/05/13 14:35:19 simsim Exp $

---

  This file is part of CCTT - Covert Channel Tunneling Tool v0.1.6 (C) Simon Castro.
  Cctt is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
  Cctt is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
  You should have received a copy of the GNU General Public License along with Cctt; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

---

Introduction
I) Pourquoi la dnomination CCTT ?
  A) Covert Channel Tunneling Testing
  B) Covert Channel Testing Tool
  C) Exemples d'utilisation
II) Pourquoi CCTT ?
  A) Quel type de transfert de donnes ?
  B) Quel type de canaux ?
  C) Extension des fonctionnalits ?
  D) Licence ?
  E) Plateformes ?
  F) Langue ?
  G) Pourquoi tant d'options ?
  H) Pourquoi sortir une version alpha ?
III) Avertissements
  A) Scurit de CCTT
  B) Dispositions lgales
IV) Extensions et modifications prvues
V) Bibliographie / Webographie
  A) Bibliographie
  B) Webographie
  C) Forum de discussion
VI) Remerciements

---

Introduction
--

Exploitation des flux autoriss par un systme de contrle d'accs rseau pour un transfert de donnes arbitraires - Version 1.0 - Simon Castro - scastro@entreelibre.com

  Les autorisations de transit de donnes entre des rseaux interconnects via un (des) systme(s) de contrle d'accs sont dfinies et mises en place conformment  une politique de scurit. Une politique de scurit exemplaire relative aux contrles d'accs rseau s'appuie sur le postulat qui consiste  interdire tous les flux de donnes qui n'ont pas t strictement prvus.
  Autrement dit:  Nous interdisons tout, puis nous ouvrons des accs spcifiques et prcis. 

  Les systmes de contrle d'accs rseau les plus frquents reposent sur l'utilisation, conjointe ou non, d'outils effectuant un filtrage au niveau des diffrentes couches du modle OSI (quipements rseau : niveau 2 et 3, routeurs : niveau 3, pare-feu/Firewall : niveaux 3, 4 et parfois 5). 
  A ces quipements peuvent tre associs d'autres outils dont les interactions avec les flux rseaux se positionnent au niveau des couches hautes du modle OSI : serveurs mandataires (proxy), anti-virus, systmes de dtection d'intrusion (Intrusion Detection System), outils de filtrage de contenu, systmes de dtection d'anomalie (Anomaly Detection System), etc.

  Toutefois, malgr l'emploi de ces systmes de contrle d'accs rseau, il est  l'heure actuelle possible, via diffrentes mthodes d' "vasion", d'utiliser les flux autoriss par la politique de scurit pour faire transiter des donnes arbitraires dont le trafic est imprvu/interdit.
  Ces possibilits d'vasion permettent l'ouverture de canaux de communication (covert channel, canaux subliminaux) donnant accs  des services externes  partir du rseau interne ou accs  des ressources internes  partir du rseau externe. 

  Le principe fondamental de ces "vasions" repose sur l'absence de vrification de la valeur intrinsque des donnes qui transitent. 
  Les diverses implmentations de systmes de contrle d'accs reposent, en effet, sur l'abstraction protocolaire qui voudrait qu'un transfert de donnes s'appuyant sur les diverses couches du modle OSI ne puisse servir qu' transporter les donnes prvues par le(s) protocole(s) sous-jacent(s).

  Bien qu'il soit possible de dtecter certains flux anormaux transitant au travers du systme de contrle d'accs rseau, il peut tre tenu pour acquis que l'utilisation de certains types de canaux de communication est  l'heure actuelle indtectable.

I) Pourquoi la dnomination CCTT ?
--

  Cctt, pour "Covert Channel Tunneling Testing" ou "Covert Channel Testing Tool" est un outil prsentant divers types d'exploitation des flux autoriss par un systme de contrle d'accs rseau de faon  raliser un transfert de donnes arbitraire.

  A) Covert Channel Tunneling Testing

     CCTT permet l'encapsulation de canaux de communications dans des protocoles prsents au niveau des couches hautes du modle OSI de manire  ce que le transfert de donnes souhait soit en mesure de passer au travers des systmes de contrle d'accs rseau installs.

  B) Covert Channel Testing Tool

    CCTT permet de mettre en place des canaux subliminaux au travers des systmes de contrle d'accs rseau de faon  tablir des transferts de donnes du type :
     Obtention d'un Shell d'un serveur externe  partir d'une station localise sur le rseau interne.
     Obtention d'un Reverse-Shell d'une station localise sur le rseau interne  partir d'un serveur externe.
     Cration de canaux permettant la circulation de trafics TCP (Ssh, Smtp, Pop, etc...) entre un serveur externe et une station localise sur le rseau interne.

  En resume, Cctt, que je prefere nommer "Covert Channel Tunneling Tool", permet donc d'etablir des canaux subliminaux dans un flux autoris de faon  passer outre les systmes de contrle d'accs reseau mis en place.

  C) Exemples d'utilisation

   Voir le fichier EXEMPLES.

Et pour jouer avec les mots, CCTT, 2C2T signifie galement 2 chapeaux, 2 teintes ... Comprenne qui voudra :).

II) Pourquoi CCTT ?
--

  Il existe  l'heure actuelle un certain nombre d'implmentations ralisant les tches que remplit CCTT (ou celles qui sont prevues dans le developpement de CCTT) - Vous pouvez obtenir dans V) Bibliographie / Webographie, un bon point de dpart pour une tude sur le sujet.

  Aprs 1 an et demi de rflexion sur le sujet (et l'utilisation plus ou moins pousse des outils prsents dans V) Bibliographie / Webographie), il m'est pass par la tte qu'il n'existait pas d'implmentation permettant d'exploiter facilement toutes les ides de contournement auxquelles je pensais.

  J'ai donc dcid d'implmenter CCTT dans une optique prsente ci-aprs... Et pour tre tout  fait honnte, galement dans l'ide que j'aurais plus de facilit  tendre les fonctionnalits de l'outil si le code tait le mien :)

    A) Quel type de transfert de donnes ?

        Le serveur devait tre capable de grer des clients multiples.
        Le serveur devait tre capable d'offrir des shells aux clients.
        Le client devait tre capable d'offrir un reverse-shell au serveur.
        Serveur et client devaient tre capable de fonctionner dans un mode "proxy" : le client CCTT accepte des connexions de clients applicatifs, les encapsule, les envoie au serveur CCTT qui se charge de les transmettre au service concern.
        Le serveur CCTT devait tre capable d'accepter divers demandes de service "proxy" sur le mme port niveau 4 OSI.

         Ex: 
	 Le sens des fleches indique la destination de connexion

         Client  SSH  --> Client CCTT -------> Internet --> Serveur CCTT  --> Serveur SSH
	 <_________reseau_interne______A.C.S_> Internet <______x_reseaux_externes_______>

        Depuis la v0.1.5, a ete ajoute le concept d'une fonctionnalite de 'mode proxy inverse'.

         Ex: 
	 Le sens des fleches indique la destination de connexion et les numeros les etapes dans le temps.

		     2               3                1            1                           4 
	 Client SSH --> Client CCTT --> Serveur CCTT <-- Internet <-- Client CCTT Inverse -----------> Serveur SSH
	 <_____________x_reseaux_externes______________> Internet <______reseau_interne_____><__reseau_interne_ou_externe__>


    B) Quels types de canaux ?

       Sachant que les flux rseau situs au niveau des couches 3 et 4 du modle OSI sont susceptibles d'tre modifis par les quipements traverss, j'ai dcid de rserver la premire version de l'implmentation aux protocoles prsents dans les couches hautes du modle OSI et susceptibles d'tre largement utiliss  l'heure actuelle.

    C) Extension des fonctionnalits ?

       J'ai tent de rendre l'ajout de fonctionnalit le plus simple possible : Il est, en effet, possible d'ajouter des fonctionnalits  plusieurs endroits du code, sans avoir besoin de regarder/modifier l'ensemble.

       Consultez LISEZMOI.developpeurs pour plus d'informations.

    D) Licence ?

       Bien entendu que cet outil est sous licence... Vous devriez vous en tre rendu compte...

    E) Plateformes ?

       Le plus possible :)

       Pour l'instant, et sous rserve d'installation des librairies requises, CCTT a t test sous :
         # Linux : Debian 2.2 et 3.0 stable, Mandrake 8.
	 # BSD : OpenBSD 3.0 et 3.2.
	 # Mac Os X : 10.2.

    F) Langues ?

       Le Franais en priorite... L'Anglais bien sr... Le Russe avec un grand merci  Alex...
       D'autres si quelqu'un veut se lancer ?

    G) Pourquoi tant d'options ?

       Parce que je suis autant interess par la dtection de ce genre de trafic que par son exploitation. 
       Il m'apparaissait donc ncessaire de raliser un outil permettant de 'simuler' le comportement des autres outils disponibles (et qui me permettrait galement d'implmenter mes propres idees) et non de raliser un outil n'tant que difficilement dtectable a l'heure actuelle.
    
    H) Pourquoi sortir une version alpha ?

       Pour plusieurs raisons :
         * Pour que Cctt puisse tre test de faon  supprimer les bugs.
         * Existe-t'il dj un outil effectuant la mme chose en 'tout en un' ? 
         * Pour que n'importe qui puisse se servir de l'existant pour ajouter ses propres fonctionnalits.
         * Parce qu' force de retarder la sortie de version alpha, on arrive  rien (?) ?

III) Avertissements
--

    A) Scurite de CCTT

    CCTT est un outil de test. Je ne recommanderais donc pas son utilisation comme front-end  un service quelconque avant qu'un audit propre n'ait permis de le vrifier.

    Dans une optique de test, il n'est donc pas recommand d'utiliser des logins/passwords de service de production lors d'une utilisation de CCTT... Sauf peut tre, si vous faites du Ssh en mode-proxy :)

   En somme, j'ai essay de ne pas sombrer dans la facilit et de coder d'une faon "propre". cependant, l'eau a parfois t froide et j'tais, sur la fin, press de parvenir  une premire version stable (au niveau du dveloppement) :)

    B) Dispositions lgales

    Je tiens  insister auprs de l'utilisateur (*) de CCTT, qu'en plus des dispositions lgales propres  la licence GPL par laquelle CCTT est protg, l'utilisation (**) de CCTT est assujetie  toutes les dispositions lgales propres au pays de distribution et/ou d'utilisation (**).

    CCTT est d'abord un outil de test implmentant plusieurs concepts prsents dans le domaine public. Son objectif est de permettre aux responsables scurit de vrifier par la pratique l'tat de scurit des rseaux dont ils ont LEGALEMENT la charge.

    J'insiste lourdement pour les lecteurs/utilisateurs mal-comprennant :
    CCTT n'a pas pour vocation d'tre utilis pour contrevenir aux articles 323-1 a 323-3 du nouveau Code Pnal ou  tout autre article s'y rapportant (ou ne s'y rapportant pas videmment) - qu'il soit actuellement disponible, en cours d'laboration ou ajout dans le futur.

   (*) Par utilisateur, j'entend un utilisateur de CCTT (xcutable compil  partir des sources que je fournis et  partir de celles-la uniquement) ou tout autre personne se servant pour rflchir, discuter ou mettre en oeuvre tout ou partie d'un code source ou xcutable  partir du code que je fournis ou de tout autre fichier de documentation, de configuration, etc. prsents dans la distribution que je fournis.

   (**) Par utilisation, j'entend l'utilisation de CCTT (xcutable compil  partir des sources que je fournis et  partir de celles-la uniquement) ou toute rflxion, discussion ou mise en oeuvre de tout ou partie d'un code source ou xcutable  partir du code que je fournis ou de tout autre fichier de documentation, de configuration, etc. prsents dans la distribution que je fournis.

   Note aux lecteurs Francais : Je ne peux que recommander la lecture difiante des articles 323-1 a 323-3 du nouveau Code Pnal, ou de tout autre article s'y rapportant - y compris le projet de loi pour la confiance dans l'conomie numrique prsent  la mi-janvier 2003 par la Ministre dlgue  l'Industrie.

IV) Extensions et modifications prvues
--

    Voir les fichiers AFAIRE.xxx :)

V) Bibliographie / Webographie
--

  Tout d'abord, n'hsitez pas  consulter le site http://www.gray-world.net qui est consacr  l'tude des mthodes de contournement des systmes des contrle d'accs rseau (NACS : Network Access Control System).

  A) Bibliographie

    Architectural Implications of Covert Channels - N. E. Proctor / P. G. Neumann (1992)
    http://www.csl.sri.com/users/neumann/ncs92.html

    A guide to understanding covert channel analysis of trusted systems - National Computer Security Center (1993)
    http://www.radium.ncsc.mil/tpep/library/rainbow/NCSC-TG-030.html

    Covert Shells - J.C. Smith (2000):
    http://www.sans.org/infosecFAQ/covertchannels/covert_shells.htm

    Les systmes de dtection d'intrusions: principes algorithmiques - J. Zimmermann & L. M (2002)
    Revue Misc N3 - Juillet/Aot 2002

  B) Webographie

     Aucun ordre de prfrence n'est prsent dans cette liste qui, de plus, ne saurait tre exhaustive.
     
     Ps : Une petite note pour indiquer l'intrt que je porte  WebShell (bon d'accord, j'y contribue ;>).

     CorskScrew  : 	http://www.agroman.net/corkscrew/
     CryptCat    : 	http://farm9.com/content/Free_Tools/Cryptcat
     Httptunnel  : 	http://www.nocrew.org/software/httptunnel.html
     IcmpTunnel  : 	http://www.detached.net/icmptunnel/
     IcmpShell   : 	http://peter.eluks.com/code/Unix/C/ICMP-Shell/
     MailTunnel  : 	http://www.detached.net/mailtunnel/
     Netcat11NT  : 	http://www.atstake.com/research/tools/nc11nt.zip
     OpenSSL     : 	http://www.openssl.org
     ProxyTunnel : 	http://www.maniac.nl/proxytunnel.html
     Socat       :      http://www.dest-unreach.org/socat/
     Stunel      :	http://stunnel.mirt.net/, http://www.stunnel.org/
     TunnelShell : 	http://www.geocities.com/fryxar/ 
     WebShell    :      http://freshmeat.net/projects/wsh/

  C) Forum de discussion

    Grce  Alex, vous pouvez maintenant poster vos requtes de fonctionnalits, des rapports de bugs ou tout simplement discuter de CCTT sur un forum de discussion.
    Ce forum est accessible sur http://gray-world.net/board/viewforum.php?f=4

VI) Remerciements
--

  Modu : Pour toutes les discussions sur les fonctionnalits, l'implmentation, etc...
  Hadi : Pour avoir accept de se lancer dans la traduction anglaise et avoir corrig mes fautes d'orthographe :)
  Alex : Pas seulement pour la traduction russe et pour le forum de discussion...

  Consultez le fichier CHANGEMENTS pour plus d'informations sur les contributions.

Simon Castro - scastro@entreelibre.com
