HackBBS
Cours « HackBBS

Archive for the ‘Cours’ Category

Installation, Configuration, Utilisation Serveur Mysql Linux

Monday, January 12th, 2009

Bonjour,

Dans ce petit cours je vais vous expliquer comment installer et configurer un serveur Mysql sous Debian le tout en étant connecté à votre machine en SSH.

Il est important de rappeler que lorsque vous vous connecter à votre Machine en SSH, ne vous connecté pas en “ROOT”, mais en utilisateur ayant des droits limités.

Si vous êtes sous Windows , pour vous connecter en SSH vous pouvez utiliser “Putty”

Si vous êtes sous Linux , pour vous connecter en SSH vous pouvez utiliser le shell en tapant : “ssh xx.xx.xx.xxt -l login”

Une fois que vous serez en face du prompt de votre shell, on va pouvoir commencer, mais avant ça une petite introduction sur ce qu’est Mysql et ses caractéristiques…

Introduction :

Mysql est un SGBD , oula mais qu’est ce qu’un SGBD !

Un SGBD est un Gestionnaire de bases de données. Il permet un accès SQL à une base de données en Client/Serveur.

Ce logiciel est gratuit, il fonctionne sous Linux , mais aussi sous Windows et OS/2. Il existe deux types de licence pour Mysql , une version Commerçiale et une Version OpenSource. ( Voir licence GPL)

Ces Caractéristiques :

Le serveur Mysql à été conçu en multi-thread (Oula les cours !) , il est donc très rapide.

Sa principale utilisation et son utilisation dans les applications web, cette application est activé par un serveur Apachesur Linux vous vous en doutez.

On peut accéder à une base Mysql avec des applications en langage C, en Perl , en PHP, en Java ou encore Python…

Pour comparer aux autres bases de données, comme Oracle ou Informix, Mysql apporte les restrictions suivantes:

* Pas de transactions
* Pas de Triggers
* Pas de procédures stockés
* Pas de sous-sélections
* Pas d’aproches objet

En résumé dans le monde des bases de données libres sous UNIX, Mysql est une très bonne alternative.

Un petit peut d’Histoire sur Mysql :

En 1994, Michael Widenius, de la société suédoise TcX, adapte mSQL pour accéder aux fichiers ISAM de la base maison UNIREG, mSQLavait été créé par David Hughes à l’université Bond en Australie. Il s’était insipiré de la base Postgres (qui succédait à Ingres), mais avec une interface SQL. A l’époque Postgres ne connaissait pas SQL. En 1995, TcX met mysql 1.0 à disposition sur le web.

La Structure de Mysql :

Dans le répertoire “/var/lib/mysql/” il y à différents répertoires qui sont en réalité les bases de votre serveur Mysql

Prenons par exemple la base mysql que vous devez voir si vous faites un “cd /var/lib/mysql” puis un “ls”

Voici ce que j’obtient quand je vous fait ça :

Code:
ks364345:/# cd /var/lib/mysql
ks364345:/var/lib/mysql# ls
debian-5.0.flag  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql_upgrade_info
ks364345:/var/lib/mysql#

Comme vous pouvez le voir, il y à le répertoire “mysql”, ce répertoire représente donc la base “mysql” qui renferme les tables d’administrations de mysql (utilisateurs, ordinateurs, bases de données,…)

Si on va dans ce répertoire ou plutôt base nous allons voir ceci :

Code:
ks364345:/var/lib/mysql/mysql# ls
columns_priv.frm   help_relation.MYI  time_zone_leap_second.frm
columns_priv.MYD   help_topic.frm     time_zone_leap_second.MYD
columns_priv.MYI   help_topic.MYD     time_zone_leap_second.MYI
db.frm             help_topic.MYI     time_zone.MYD
db.MYD             host.frm           time_zone.MYI
db.MYI             host.MYD           time_zone_name.frm
func.frm           host.MYI           time_zone_name.MYD
func.MYD           proc.frm           time_zone_name.MYI
func.MYI           proc.MYD           time_zone_transition.frm
help_category.frm  proc.MYI           time_zone_transition.MYD
help_category.MYD  procs_priv.frm     time_zone_transition.MYI
help_category.MYI  procs_priv.MYD     time_zone_transition_type.frm
help_keyword.frm   procs_priv.MYI     time_zone_transition_type.MYD
help_keyword.MYD   tables_priv.frm    time_zone_transition_type.MYI
help_keyword.MYI   tables_priv.MYD    user.frm
help_relation.frm  tables_priv.MYI    user.MYD
help_relation.MYD  time_zone.frm      user.MYI

Selon les versions, on utilise des fichiers ISAM ou MyISAM. Dans chaque cas une table s’exprime sous la forme de trois fichiers.

ISAM : http://fr.wikipedia.org/wiki/Organisation_s%C3%A9quentielle_index%C3%A9e

MyISAM : http://en.wikipedia.org/wiki/MyISAM

ISAM

* latable.ISD -> Le fichier de données

* latable.ISM -> Le fichier qui contient les clés

* latable.frm -> Le fichier qui contient la structure de la table

MyISAM

* latable.MYD -> Le fichier de données
* latable.MYI -> Le fichier qui contient les clés
* latable.frm -> Le fichier qui contient la structure de la table

Passons maintenant à l’administration , installation et configuration de Mysql

Installation :

Il faut donc installer les paquetages de Mysql

Pour RedHat et autes distributions qui utilise le gestionnaire de paquet RPM

Code:
# rpm -ivh mysql-server-*.rpm

#rpm -ivh mysql-3*.rpm

Pour les utilisateurs de Debian vous pouvez procéder de la manière suivante :

Code:
# apt-get install mysql-server

Puis en complément installer phpmyadmin et les plugins mysql pour PHP

Code:
# apt-get install php5-mysql
# apt-get install phpmyadmin

Mais avant si vous avez oublier vous devez faire une mise à jour de votre serveur en faisant ceci en root :

Code:
# apt-get update
# apt-get dist-upgrade

Démarrage et Arrêt de MySQL :

Le démarrage de Mysql, ce déroule très facilement en activant un script RC :

Code:
# /etc/init.d/mysql start
Code:
# /etc/init.d/mysql stop
Code:
# /etc/init.d/mysql restart

Le script de démarrage active le démon mysqld , dans certaines distribution il existe un journal de bord ou plutôt fichier “log” de mysql qui nous détail les dernières actions du démon mysqld, ce fichier se situe dans “/var/log/mysqld.log” ou “/var/log/mysql.log”

Pour éteindre le serveur Mysql on peut aussi passer par la commande de supervision du serveur, la commande “mysqladmin”.

Code:
# mysqladmin shutdown -u root -p

L’option “-u” permet d’identifier l’utilisateur

L’option “-p” permet de définir le password

Changement du password de l’utilisateur root :

Après avoir installé votre serveur Mysql , le password du DBA ( Data base Administrator) est vide. par défaut le DBA s’appel root. la commande mysqladmin permet de changer le password

Voir l’exemple ci-dessous:

Code:
# mysqladmin -u root password votre_password

Si vous désirez plus atrd supprimer le password, on va utiliser l’option “-p” pour que la commande vous demande le mot de passe actuel

Code:
# mysqladmin -u root -p password “”

Si vous voulez mettre à jour votre password root par exemple et que vous êtes déjà connecté à Mysql vous pouvez entrer cette commande SQL dans le prompt de mysql qui fera la mise à jour de votre password :

Code:
UPDATE user SET password=PASSWORD(’nouveaumotdepasse’) WHERE user=”root”;

Création et destruction d’une base :

Code:
# mysqladmin -p create TEST
Code:
# mysqladmin -p drop TEST

Lorsque vous entrez ces commandes, le shell vous proposeras de confirmer votre action, vous répondez par O/N ou Y/N

Affichage d’informations :

Pour afficher l’état du serveur rien de plus simple on passe toujours par notre commande “mysqladmin”

Code:
# mysqladmin -p status

Enter password:
Uptime: 6870  Threads: 1  Questions: 132  Slow queries: 0  Opens: 135  Flush tables: 1  Open tables: 17  Queries per second avg: 0.019

Pour afficher la version du serveur toujours aussi simple, je pense même que vous pouvez deviner :

Code:
# mysqladmin -p version
Enter password:
mysqladmin  Ver 8.41 Distrib 5.0.32, for pc-linux-gnu on i486
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Server version          5.0.32-Debian_7etch6-log
Protocol version        10
Connection              Localhost via UNIX socket
UNIX socket             /var/run/mysqld/mysqld.sock
Uptime:                 1 hour 54 min 42 sec

Threads: 1  Questions: 133  Slow queries: 0  Opens: 135  Flush tables: 1  Open tables: 17  Queries per second avg: 0.019

Pour afficher les Threads actifs ou les processus :

Code:
# mysqladmin -p processlist
Enter password:
+—-+——+———–+—-+———+——+——-+——————+
| Id | User | Host      | db | Command | Time | State | Info             |
+—-+——+———–+—-+———+——+——-+——————+
| 8  | root | localhost |    | Query   | 0    |       | show processlist |
+—-+——+———–+—-+———+——+——-+——————+

Et une dernière pour finir , vérifier si le serveur répond :

Code:
~# mysqladmin -p ping
Enter password:
mysqld is alive

Sauvegarde, Exportation et Importation des données :

Généralement la sauvegarde sous linux se fait avec des outils traditionnels comme “tar” ou autres mais ici nous allons utiliser “mysqldump”

L’outil “mysqldump” permet de transférer le contenu d’une table dans un fichier sous forme de requêtes SQL.

Voici un exemple d’utilisation de mysqldump :

Code:
# mysqldump –password=”" –opt TEST > TEST_Sauvegarde.sql

Cette commande fait la sauvegarde de tous le contenu de la base TEST et redirige le flux vers un fichier qui se nomme “TEST_Sauvegarde.sql”

Pour la restauration ou l’importation d’une sauvegarde de base de données, vous allez voir que c’est très simple et logique :

Code:
# mysql –password=”" TEST < TEST_Sauvegarde.sql

Il existe aussi l’outil “mysqlimport” qui permet de remplir une table à partir d’un fichier, en voici un exemple :

Code:
# mysqlimport –fields-terminated-by=”,” –fields-encoded-by=”\” –local TEST fichier.txt

Gestion des fichier ISAM et MyISAM :

la commande “isamchk” permet de manipuler les fichiers ISAM

la commande “myisamchk” permet elle de manipuler les fichiers MyISAM

ces commandes permettent de gérer les informations sur les tables …

Pour plus d’informations sur ces deux commandes qui ont beaucoup d’options que je ne détaillerais pas dans ce cours, vous pouvez faire :

Code:
# myisamchk –help

# isamchk –help

La sécurité :

Les comptes utilisateurs et les droits d’accès aux bases sont stockés dans les tables de la base “mysql”

* user = Définit les utilisateurs
* db = définit les accès aux tables
* host = définit les hôtes qui peuvent accéder aux tables
* tables_priv …
* columns_priv …

La procédure de connexion à la base de données Mysql est la suivante :

1. A la connexion mysql se sert de la table user pour vérifier si l’utilisateur est autorisé et existe
2. Une fois connecté, Mysql vérifie les accès en se basant sur les tables user, db, host, tables_priv et columns_priv
3. Si authentification réussie -> OK sinon vérification dans les autres tables.

Utilisation de Mysql avec quelques notions de SQL :

Pour vous débrouiller avec Mysql et donc gérer votre base de données avec aisance vous devez connaître le langage SQL

Pour le langage SQL je vais vous donner quelques liens pour vous initier ou maitriser !

Je vous ferais un cours sur le langage SQL plus tard mais en attendant vous pouvez consulter les liens suivants:

* Introduction à SQL : http://sqlpro.developpez.com/cours/sqlaz/fondements/
* Les normes de SQL : http://sqlpro.developpez.com/SQL2008/
* Les fonctions SQL : http://sqlpro.developpez.com/cours/sqlaz/fonctions/
* Les erreurs les plus fréquentes du SQL : http://sqlpro.developpez.com/cours/sqlaz/erreurs/
* Les jointures (Notions Avancé) : http://sqlpro.developpez.com/cours/sqlaz/jointures/
* Création , Supression ou Modification de Bases et Tables : http://sqlpro.developpez.com/cours/sqlaz/ddl/
* Manipulation de données : http://sqlpro.developpez.com/cours/sqlaz/dml/
* Récupération de données : http://sqlpro.developpez.com/cours/sqlaz/select/

Utilisation de Mysql :

Pour se connecter à votre base de données, il vous suffit que le démon mysqld soit lancé et que vous tapez la commande suivante pour vous identifier sur le serveur :

Code:
# mysql -u login -p

En voici un exemple :

Code:
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.0.32-Debian_7etch6-log Debian etch distribution

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.

mysql>

Il faut savoir que le nom du DBA par défaut est comme nous l’avons dit plus tôt dans ce cours est le compte “root” qui n’ à pas de password à l’instalation du serveur, donc n’oubliez pas de le définir.

Une fois connecté à mysql , vous devez normalement avoir un prompt qui ressemble à “mysql>” ça veut dire que vous êtes bien identifier et que le serveur mysql attend vos instructions.

Pour avoir une liste de tout les commandes que vous pouvez entrer dans le shell “mysql” vous pouvez faire la commaned suivante :

Code:
mysql> help

For information about MySQL products and services, visit:
http://www.mysql.com/
For developer information, including the MySQL Reference Manual, visit:
http://dev.mysql.com/
To buy MySQL Network Support, training, or other products, visit:
https://shop.mysql.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ‘;’
?         (\?) Synonym for `help’.
clear     (\c) Clear command.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter. NOTE: Takes the rest of the line as new delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don’t write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don’t show warnings after every statement.

For server side help, type ‘help contents’

Donc comme vous pouvez le voir, il y en a pas mal donc je vais pas toutes vous les expliquer mais justes les principales commandes.

Pour utiliser une base de données, voici la commande à utiliser :

Code:
# mysql> use NOM_BASE;

(Ah j’ai oublier de vous dire votre instruction doit toujours se terminer par un “;” pour que le prompt puisse valider votre instruction et passer à la suivante)

Pour quitter le prompt mysql et donc fermer la connexion au serveur mysql, vous devez entrer la commande suifvante :

Code:
# mysql > exit;

Le serveur vous répondra “Bye” et terminera la connexion avec le vous.

Lister les bases de données :

Code:
mysql> show databases
-> ;
+——————–+
| Database           |
+——————–+
| information_schema |
| mysql              |
+——————–+
2 rows in set (0.00 sec)

Lister les tables de la base mysql :

Code:
mysql> show tables from mysql
-> ;
+—————————+
| Tables_in_mysql           |
+—————————+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+—————————+
17 rows in set (0.00 sec)

Listes les champs de la table user de la base de données mysql :

Code:
mysql> show columns from user
-> ;
+———————–+———————————–+——+—–+———+——-+
| Field                 | Type                              | Null | Key | Default | Extra |
+———————–+———————————–+——+—–+———+——-+
| Host                  | char(60)                          | NO   | PRI |         |       |
| User                  | char(16)                          | NO   | PRI |         |       |
| Password              | char(41)                          | NO   |     |         |       |
| Select_priv           | enum(’N',’Y')                     | NO   |     | N       |       |
| Insert_priv           | enum(’N',’Y')                     | NO   |     | N       |       |
| Update_priv           | enum(’N',’Y')                     | NO   |     | N       |       |
| Delete_priv           | enum(’N',’Y')                     | NO   |     | N       |       |
| Create_priv           | enum(’N',’Y')                     | NO   |     | N       |       |
| Drop_priv             | enum(’N',’Y')                     | NO   |     | N       |       |
| Reload_priv           | enum(’N',’Y')                     | NO   |     | N       |       |
| Shutdown_priv         | enum(’N',’Y')                     | NO   |     | N       |       |
| Process_priv          | enum(’N',’Y')                     | NO   |     | N       |       |
| File_priv             | enum(’N',’Y')                     | NO   |     | N       |       |
| Grant_priv            | enum(’N',’Y')                     | NO   |     | N       |       |
| References_priv       | enum(’N',’Y')                     | NO   |     | N       |       |
| Index_priv            | enum(’N',’Y')                     | NO   |     | N       |       |
| Alter_priv            | enum(’N',’Y')                     | NO   |     | N       |       |
| Show_db_priv          | enum(’N',’Y')                     | NO   |     | N       |       |
| Super_priv            | enum(’N',’Y')                     | NO   |     | N       |       |
| Create_tmp_table_priv | enum(’N',’Y')                     | NO   |     | N       |       |
| Lock_tables_priv      | enum(’N',’Y')                     | NO   |     | N       |       |
| Execute_priv          | enum(’N',’Y')                     | NO   |     | N       |       |
| Repl_slave_priv       | enum(’N',’Y')                     | NO   |     | N       |       |
| Repl_client_priv      | enum(’N',’Y')                     | NO   |     | N       |       |
| Create_view_priv      | enum(’N',’Y')                     | NO   |     | N       |       |
| Show_view_priv        | enum(’N',’Y')                     | NO   |     | N       |       |
| Create_routine_priv   | enum(’N',’Y')                     | NO   |     | N       |       |
| Alter_routine_priv    | enum(’N',’Y')                     | NO   |     | N       |       |
| Create_user_priv      | enum(’N',’Y')                     | NO   |     | N       |       |
| ssl_type              | enum(”,’ANY’,'X509′,’SPECIFIED’) | NO   |     |         |       |
| ssl_cipher            | blob                              | NO   |     |         |       |
| x509_issuer           | blob                              | NO   |     |         |       |
| x509_subject          | blob                              | NO   |     |         |       |
| max_questions         | int(11) unsigned                  | NO   |     | 0       |       |
| max_updates           | int(11) unsigned                  | NO   |     | 0       |       |
| max_connections       | int(11) unsigned                  | NO   |     | 0       |       |
| max_user_connections  | int(11) unsigned                  | NO   |     | 0       |       |
+———————–+———————————–+——+—–+———+——-+
37 rows in set (0.00 sec)

Afficher le contenu d’une table , ici de la table user de la base de données mysql :

Code:
mysql> select * from user
-> ;

[Liste tronqué]

Passons rapidement sur l’utilisation de PHP et Mysql et PERL et Mysql :

Mysql et PHP :

Il existes à ce jour beaucoup d’applications qui sont écrites avec PHP. Ce langage est un langage dynamique qui permet d’avoir un contenu mise à jour sans intervention du développeur et propriétaire du site internet.

Ce langage nous permet de communiquer avec une base de données de type Mysql pour y stocker des informations, il faut cependant le paquetage php-mysql que nous avons pris soin d’installer au début de ce cours.

Je vais vous donner un exemple de script PHP qui fait appel à une base de données lorsqu’il est exécuté par le serveur web Apache.

Code:
</hmtl>

<head><title>Script de démonstration PHP - Mysql</title></head>

<body>

<?php

if(!($database = mysql_connect(”localhost”,”root”,”")))

{

mysql_error();

exit();

}

if(!(mysql_select_db(”TEST”,$database)))

{

mysql_error();

exit();

}

$resultat = mysql_query(”SELECT * FROM matable”, $database);

while($ligne = mysql_fetch_array($resultat, MYSQL_ASSOC))

{

print(”Nom: ” .ligne["nom"].”<br>\n”);

print(”Age: ” .ligne["age"].”<br>\n”);

}

?>

</body>

</html>

Pour tester ce script vous devez l’enregistrer dans un fichier avec l’extension “.php” puis le mettre dans le répertoire Apache , puis de lancer votre navigateur et d’aller à cette adresse : http://localhost/mon_script.php

Comme navigateur en mode texte sous linux vous avez le navigateur “Lynx” qui est assez simple d’utilisation et très efficace.

Perl et Mysql :

Le langage Perl grâce ç la bibliothèque DBI (Data Base Interface) peut accéder à une base de données.

Dans le cas de mysql, vous devez installer les paquets perl-DBI et perl-DBD-Mysql

Le script que je vais vous donner ci-dessous à pour fonction de se connecter à la base de données TEST sous le login root avec comme password vide et d’afficher le contenu de la table “matable”.

Code:
#!/usr/bin/perl -w

use DBI;

$database = DBI -> connect(”DBI:mysql:TEST:localhost”,”root”,”");

if(not $database)

{

print $DBI::errstr,”\n”;

exit(1);

}

$requete = $database -> prepare(”SELECT * FROM matable”);

$requete -> execute;

print DBI::dump_results($requete);

Pour exécuter votre script perl vous devez avoir installer les paquetages necessaire et bien évidement lancer l’interpréteur Perl.

Code:
# perl mon_script.pl

Voila le cours est terminé, j’espère vous avoir appris quelques choses, si vous avez des questions vous savez ou me trouver.

Dans un prochain cours je vous ferais un cours sur l’instalation, la configuration de SSH ainsi que sur son utilisation.

Merci.

Exploitation des flux de données alternatifs

Monday, January 12th, 2009

Exploitation des flux de données alternatifs

Bon je préviens, ne vous fiez pas au titre. Ce post n’a rien de sorcier. Le flux de données alternatifs, malgré son nom barbare, est une chose vraiment simple.

Tout d’abord qu’est qu’un “flux de donnés alternatif” ? (ou ADS = alternative data stream pour les anglophones)

Très en gros, ce terme évoque la possibilité d’attacher des données à n’importe quel fichier (les données attachées constituent le stream ou flux en français). On peut par exemple attacher des données à un txt, mais comme vous le savez peut-être, tout étant fichier, aussi à des exe et des dossiers. Il faut savoir que ce concept a été introduit avec le système de fichiers NTFS ((amis) windowsiens, prenez garde!). C’est donc relativement récent, et bien que les applications soient potentiellement importantes, les malwares utilisant les ADS sont peu répandus. Bien mais dans la pratique, comment faire?

Sous Windows, un ADS est défini comme suit C:\nomDuChemin\fichier:nomDuStream

Par exemple, on va éditer un stream avec notre bon vieux bloc notes. Créons ensemble un petit fichier txt de test à la racine du disque. Ici on l’appellera test.txt

C:\test.txt Ce fichier est vide. Donc il fait 0 octets (vérifiez grâce au bouton droit ==> propriétés)

Bien, maintenant, attachons-y des données. Pour ce faire:
Demarrer ==> Executer
On exécutera la ligne suivante:

notepad.exe C:\test.txt:StreamName.txt

Voulez vous créer le fichier? Oui

On vien de créer notre premier fichier de flux de données. Remplissons-le avec n’importe quoi. Par exemple “Ceci est une jolie tortue <3″ Puis on sauvegarde et on ferme le bloc notes.

Observons notre test.txt. Il fait toujours… 0 octets. par contre la date de modification a changé. Et si on essaye de l’ouvrir le fichier est toujours vide. En fait, notre phrase se trouve dans StreamName.txt qui est invisible à l’utilisateur et qui n’est pas pris en compte dans le calcul de l’espace disque de test.txt. Normal, ce n’est pas le même fichier.

Donc notre “J’aime les tortues <3″ rangée dans StreamName.txt est invisible, mais rassurez vous, rien n’a disparu. Refaites un exécuter et retapez la ligne précédente:

notepad.exe C:\test.txt:StreamName.txt

Et oh miracle, nous retrouvons notre superbe flux de données “J’aime les tortues <3″

C’est bien joli tout-ça me direz vous, mais quel intérêt?
1 - Pour l’utilisateur non averti, l’ADS est totalement invisible. (donc on peut y cacher n’importe quoi)
2 - On peut y cacher une très grosse quantité de données et ce de façon totalement transparente. (par exemple des fichiers sensibles que l’on stoke ou le log d’un keylogger ou un binaire ou quoi que ce soit d’autre) En effet, ni l’explorateur ni la commande dir n’afficheront quoi que ce soit.
3 - C’est très facile à faire, et en plus c’est sympa.
4 - Si on transfert le fichier d’origine sur un FAT, on perd l’ADS. Donc on peut y cacher des fichiers sensibles pour éviter une copie.
5 - On peut exécuter un flux de données alternatif via des méthodes variées.
6 - On peut attacher autant d’ADS que l’on veut à un fichier
7 - Pour les vicieux, on peut attacher un ADS à un dossier ou à un fichier ET un dossier.

Alors je vous avait bien dit que c’était pas compliqué.

Utilisations malveillantes de l’ADS

Comme un flux de données peut contenir n’importe quoi, on pourrait très bien imaginer par exemple un virus qui remplace un exe original par un exe viral et qui attache l’original à l’ADS. Puis l’exe viral est renommé comme l’original. Résultat: quand l’utilisateur croît lancer son programme original, il lance le virus qui à son tour balance l’exe original. Le pauvre utilisateur est berné. Ou alors on peut aussi imaginer un virus (ou une portion de son code) qui se cacherait dans l’ADS etc.

Pour illustrer les possibilités de l’ADS, on va faire un petit script.

Que diriez-vous si on remplaçait notepad.exe par un autre exécutable? Par exemple, aller, soyons fou, par paint !
Pour ce faire on va utiliser un .batch qui va modifier le registre (pour ceux qui ne savent pas ce qu’est le registre ==> Google)

(Faites une sauvegarde de votre registre avant d’exécuter ce .bat)

Code:
echo “Ceci est un script trivial qui montre comment utiliser les ADS”
Type %SystemRoot%\system32\mspaint.exe>C:\test.txt:mspaint.exe
echo “On attache mspaint.exe a notre ADS”
Type %SystemRoot%\system32\notepad.exe>C:\test.txt:notepad.exe
echo “On fait de même pour notepad.exe”
reg delete HKCR\txtfile\shell\open\command /f
echo “on efface la clé correspondant au programme par défaut a utiliser pour les fichiers textes a savoir le notepad.exe”
reg add HKCR\txtfile\shell\open\command /ve /t REG_EXPAND_SZ /d c:\test.txt:mspaint.exe
echo “On utilisera a présent l’exe dans le stream pour ouvrir les fichiers textes.”

echo “Voila la bidouille est terminée. Ouvrez un fichier texte et paint s’exécutera. Appuyez sur une touche pour restaurer le registre.”
pause
reg add HKCR\txtfile\shell\open\command /ve /t REG_EXPAND_SZ /d
“%SystemRoot%\system32\notepad.exe %1″ /f

Je vous l’accorde, ce script est débile et les manipulations de registres sont détectées par n’importe quel antivirus. Mais je vous ai montré qu’il était possible d’exécuter un binaire quelconque et de le cacher facilement avec 4 pauvres lignes de batch…

En gros comme on peut cacher n’importe quoi, toutes les possibilités sont envisageables.

La solution pour lutter contre ce genre de menaces? Scanner les fichiers un à un en utilisant des programmes spécialisés.

Voici un aperçu très bref des possibilités qu’offrent les ADS. J’espère ne pas avoir été trop compliqué. A plus pour de nouvelles aventures! Smile

La tortue.

Création Serveur PsyBNC

Monday, January 12th, 2009

Bonjour,

Dans ce cours je vais vous apprendre à mettre en place un serveur BNC avec psyBNC et vous expliquer quelques procédures ainsi que les réglementations.

I) Qu’est ce qu’un BNC ?

psyBNC est un serveur proxy mandataire (un bouncer) il permet de se connecter sur un serveur irc par son intermédiaire, en gros il sert de relais.

Hé oui se connecter à un serveur irc par le biais d’un “proxy” comporte certains avantages et inconvénients :

Nous allons les détaillés ci dessous :

Les avantages :

- De nos jours beaucoup d’internautes souhaitent surfer en cachant leur identité. Si votre serveur psyBNC a une IP différente de la votre alors vous serez connu sur irc avec l’ip du serveur, votre ip sera donc cachée et vous serez donc anonyme.

Vous restez connecté sur irc aussi longtemps que votre serveur sera activé. En effet, même si votre ordinateur est éteint, tant que votre serveur est actif vous restez connecté sympa non ?!

Lorsque vous n’êtes pas connecté, avec un minimum de configuration vous pouvez lui faire faire des auto-op, kick, ban etc …

Quand vous êtes absent il enregistre les message dans des logs qui peuvent être consulter plus tard.

Si un contact vous envoi un fichier avec une taille conséquente et que par poisse votre ordinateur plante comme d’habitude et bien le telechargement ne sera pas interompu car c’est votre serveur bnc qui prendra le relais et terminera le téléchargement, il ne vous restera qu’à mettre en place un ftp partage nfs ou autres pour récupérer vos données.

Bref je ne vais pas tout vous résumer il y en a des tonnes d’options, mais je pense qu’avec ça vous êtes convaincu de son utilité et que vous êtes excité d’installer et configurer cette chose !

Les inconvénients :

Utiliser un proxy ba à ralentie votre connexion
Si votre serveur bnc plante ça vous déconnecte de IRC
Sur certains serveur l’utilisation de proxy est interdit

II) Instalation et Configuration :

Vous allez voir c’est très rapide !

Dans un premier temps vous vous connecté à votre dédiée je ne vais pas re expliquer a, si vous ne savez pas le faire faut déjà vous poser la question du pourquoi vous avez un dédiée et il y à une tonnes de documentation sur le net.

Une fois connecté vous devez télecharger psyBNC à l’adresse suivante :

http://www.psybnc.at/download/beta/psyBNC-2.3.2-7.tar.gz

Vous devez donc faire :

Code:
wget http://www.psybnc.at/download/beta/psyBNC-2.3.2-7.tar.gz

Une fois ceci réalisé vous devez maintenant l’extraire :

Code:
tar xzvf psyBNC-2.3.2-7.tar.gz

Puis vous déplacer dans le répertoire “psybnc”

Code:
cd psybnc

et faire un petit make pour la compilation :

Code:
make

Et voila c’est terminé rapide non ?!

Passons maintenant à la configuration

Vous devez éditer le fichier de configuration de psybnc qui se nomme “psybnc.conf”.

Code:
nano psybnc.conf

Vous devez changer le port et l’adresse ip

Dans l’adresse ip vous devez mettre celle de votre serveur dédiée ou mutualisé.
Dans le port vous pouvez mettre un port supérieur à 10000 il me semble.

Code:
PSYBNC.SYSTEM.PORT1=xxxxx
PSYBNC.SYSTEM.HOST1=xx.xx.xx.xx
PSYBNC.HOSTALLOWS.ENTRY0=*;*

La configuration est terminé quand je vous disais que c’était rapide vous ne pouvez pas me dire le contraire !

Passons maintenant à l’utilisation.

III) Utilisation :

Pour lancer le serveur vous devez allez dans le dossier “psybnc” , une fois dedans vous devez exécuté le script en faisant :

Code:
./psybnc

Maintenant que votre serveur bnc est lancé on va se connecter dessus pour ça entrer cetet commande sur votre client IRC :

Code:
/server adresse_ip_serveur port

Une fois connecté sur le serveur BNC vous devez définir votre mots de passe !

Vous devez avoir ça qui apparait devant vous :

Code:
<-psyBNC> psyBNC2.3.2-7 Help (* = BounceAdmin only)
<-psyBNC> ————————————-
<-psyBNC> BHELP   BWHO            - Lists all Users on the Bouncer
<-psyBNC> BHELP   PASSWORD        - Sets your or another Users Password(Admin)
<-psyBNC> BHELP   BVHOST          - Sets your vhost to connect thru
<-psyBNC> BHELP   PROXY           - Sets your proxy to connect thru
<-psyBNC> BHELP   SETUSERNAME     - Sets your User Name
<-psyBNC> BHELP   SETAWAY         - Sets your away-Text when you leave
<-psyBNC> BHELP   SETLEAVEMSG     - Sets your Leave-MSG when you leave
<-psyBNC> BHELP   LEAVEQUIT       - If set to 1, parts all channels on quit
<-psyBNC> BHELP   SETAWAYNICK     - Sets your nick when you are offline
<-psyBNC> BHELP   JUMP            - Jumps to the next IRC-Server
<-psyBNC> BHELP   BQUIT           - Quits your current Server Connection
<-psyBNC> BHELP   BCONNECT        - Reconnects a bquitted Connection
<-psyBNC> BHELP   AIDLE           - Enables/Disables Antiidle
<-psyBNC> BHELP   AUTOREJOIN      - Enables/Disables Auto-Rejoin
<-psyBNC> BHELP   ADDSERVER       - Adds an IRC-Server to your Serverlist
<-psyBNC> BHELP   DELSERVER       - Deletes an IRC-Server by number
<-psyBNC> BHELP   LISTSERVERS     - Lists all IRC-Servers added
<-psyBNC> BHELP   ADDNETWORK      - Adds a seperate Network to your client
<-psyBNC> BHELP   DELNETWORK      - Deletes a Network from your client
<-psyBNC> BHELP   SWITCHNET       - Switches to a given Network
<-psyBNC> BHELP   ADDOP           - Adds a User who may get Op from you
<-psyBNC> BHELP   DELOP           - Deletes an added User who got Op
<-psyBNC> BHELP   LISTOPS         - Lists all added Ops
<-psyBNC> BHELP   ADDAUTOOP       - Adds a User who gets Auto-Op from you
<-psyBNC> BHELP   DELAUTOOP       - Deletes an added User who got Op
<-psyBNC> BHELP   LISTAUTOOPS     - Lists all added Auto-Ops
<-psyBNC> BHELP   ADDBAN          - Adds a ban (global or to a channel)
<-psyBNC> BHELP   DELBAN          - Deletes a ban by Number
<-psyBNC> BHELP   LISTBANS        - Lists all bans
<-psyBNC> BHELP   ADDASK          - Adds a host/bot to ask Op from
<-psyBNC> BHELP   DELASK          - Deletes a host/bot to ask Op by Number
<-psyBNC> BHELP   LISTASK         - Lists the hosts/bots to ask Op from
<-psyBNC> BHELP   ADDIGNORE       - Adds a hostmask/contentfilter to the ignores
<-psyBNC> BHELP   DELIGNORE       - Deletes a hostmask/contentfilter from the ignores
<-psyBNC> BHELP   LISTIGNORES     - Lists the currently added ignores
<-psyBNC> BHELP   ADDDCC          - Adds a DCC-Connection to a bot
<-psyBNC> BHELP   LISTDCC         - Lists all added DCC-Connectionc
<-psyBNC> BHELP   DELDCC          - Deletes a DCC-Connection by number
<-psyBNC> BHELP   DCCCHAT         - Offers a DCC Chat to a given IRC User
<-psyBNC> BHELP   DCCANSWER       - Answers to a DCC Chat-Request
<-psyBNC> BHELP   DCCENABLE       - Enables/Disables DCC thru psybnc
<-psyBNC> BHELP   DCCSEND         - Sends a file to a given IRC User
<-psyBNC> BHELP   DCCGET          - Gets a DCC Send File from an IRC User
<-psyBNC> BHELP   DCCSENDME       - Sends the bouncer User a File
<-psyBNC> BHELP   AUTOGETDCC      - always get offered Files
<-psyBNC> BHELP   DCCCANCEL       - Cancels a dccchat or a transfer
<-psyBNC> BHELP   PLAYPRIVATELOG  - Plays your Message Log
<-psyBNC> BHELP   ERASEPRIVATELOG - Erases your Message Log
<-psyBNC> BHELP   ADDLOG          - Adds a Log source / filter
<-psyBNC> BHELP   DELLOG          - Deletes a Log source by number
<-psyBNC> BHELP   LISTLOGS        - Lists all added Log sources/filters
<-psyBNC> BHELP   PLAYTRAFFICLOG  - Plays the Traffic Log
<-psyBNC> BHELP   ERASETRAFFICLOG - Erases the Traffic Log
<-psyBNC> BHELP   ENCRYPT         - Encrypts talk to a given channel/user
<-psyBNC> BHELP   DELENCRYPT      - Deletes an encryption entry by number
<-psyBNC> BHELP   LISTENCRYPT     - Shows a List of encrypted talks
<-psyBNC> BHELP   TRANSLATE       - Adds a translator to/from channels/users
<-psyBNC> BHELP   DELTRANSLATE    - Deletes a translator by number
<-psyBNC> BHELP   LISTTRANSLATE   - Shows a List of translated talks
<-psyBNC> BHELP * BREHASH         - Rehashes the proxy and resets all Connections
<-psyBNC> BHELP * MADMIN          - Gives a User an Admin flag
<-psyBNC> BHELP * UNADMIN         - Removes the Admin flag from a User
<-psyBNC> BHELP * BKILL           - Kills a User from the proxy
<-psyBNC> BHELP * SOCKSTAT        - Shows/Logs the current Connections
<-psyBNC> BHELP * ADDUSER         - Adds a new User to the Bouncer
<-psyBNC> BHELP * DELUSER         - Deletes a User from the Bouncer
<-psyBNC> BHELP * NAMEBOUNCER     - Names your bouncer (needed for linking)
<-psyBNC> BHELP * LINKTO          - Adds a bouncer Link to the Host/Port
<-psyBNC> BHELP * LINKFROM        - Adds a bouncer Link from your Bouncer
<-psyBNC> BHELP * RELAYLINK       - Allows or disables a relayable Link
<-psyBNC> BHELP * DELLINK         - Deletes a Link to a bouncer
<-psyBNC> BHELP   LISTLINKS       - Lists all Links to/from the Bouncer
<-psyBNC> BHELP * RELINK          - Resets a link to a bouncer by number
<-psyBNC> BHELP * PLAYMAINLOG     - Plays the Connection Log
<-psyBNC> BHELP * ERASEMAINLOG    - Erases the Connection Log
<-psyBNC> BHELP * ADDALLOW        - Adds a host allow to connect
<-psyBNC> BHELP * DELALLOW        - Deletes a host allow
<-psyBNC> BHELP * LISTALLOW       - Lists the host allows on your proxy
<-psyBNC> BHELP   SRELOAD         - Reloads the Script for the User
<-psyBNC> BHELP   LISTTASKS       - Lists the current running tasks
<-psyBNC> BHELP * SETLANG         - Sets the language  (global)
<-psyBNC> BHELP   BHELP           - Lists this help or help on a topic
<-psyBNC> BHELP Use /QUOTE bhelp <command> for details.

Pour vous Identifier :

Code:
/quote pass mon-mot-de-passe

Voici comment ajouter où supprimer un utilisateur :

Code:
Ajouter un Utilisateur
/adduser pseudo:password

Supprimer un Utilisateur
/deluser votrepseudo

Voici comment ajouter où supprimer le flag admin à un utilisateur:

Code:
Ajouter un Admin
/madmin pseudo

Supprimer un Admin
/unadmin pseudo

Voici comment ajouter, supprimer où voir la liste de vos serveurs :

Code:
Ajouter le Serveur
/addserver irc.2600.net:9999
Code:
Ajouter un Serveur avec un mot de passe
/addserver irc.2600.net:9999 password_serveur
Code:
Voir la liste des Serveurs
/listservers
Code:
Changer de Serveur
/jump serveur
Code:
Supprimer un Serveur
/delserver serveur

Vous pouvez changer votre mot de passe de connexion à votre bnc :

Code:
Changer votre Mot de passe
/password new_password

Vous pouvez définir un message de away et votre pseudo :

Code:
Pseudo de Away
/setawaynick pseudo_abstent
Code:
Message de Away
/setaway Absent !

Voila le tutoriel est terminé pour plus d’informations vous avez le documentation de psyBNC et l’aide avec les commandes.

WinSSLMiM

Monday, January 12th, 2009

SOURCE: SecuriteInfo.com

WinSSLMiM

Introduction

Le protocole HTTPS, basé sur SSL (voir la fiche SSL pour plus d’explication), apporte la confidentialité, l’intégrité et l’authentification des échanges de données entre un site Web et un navigateur. Contrairement à toutes les indications de ces mêmes sites dit sécurisés, l’utilisation de ce protocole n’est pas infaillible et ne doit pas empêcher d’être vigilant. En effet, il existe un attaque, le Man in the Middle, applicable au HTTPS. Succinctement, ce type d’attaque consiste pour un pirate à ce mettre entre le client qui utilise son navigateur et le site Web en question :

La conséquence immédiate est la perte des trois critères précédemment cités, à savoit que le pirate a la possibilité de lire en clair et/ou de modifier les données échangées. WinSSLMiM met en oeuvre cette attaque dite du Man in the Middle SSL (ou HTTPS plus précisément)

Ce type d’attaque est connue maintenant depuis plusieurs années et les outils adéquates sont déjà disponibles sur Linux (sslmim, sslsniff ou webmitm du package dsniff). Il existe biensûr un moyen de détecter une attaque de ce genre. Grâce au SSL, le serveur Web est authentifié via un certificat X509 (l’équivalent d’une identité numérique). Ce certificat est signé par une autorité de certification (Certification Authority ou CA) reconnue internationalement et surtout par les navigateurs. Ainsi lorsqu’un certificat n’est pas conforme ou signé par une CA connue, le navigateur émet une alerte de ce type :

Dans le cas de l’attaque, le pirate doit substituer son propre certificat (signé par lui même et non par une CA) à celui du vrai serveur. Le navigateur alerte donc l’utilisateur sur la non conformité de ce certificat. La sécurité du mécanisme repose alors uniquement sur le clique de souris de l’utilisateur sur le bouton “non”. Pour le certificat de notre pirate, il est assez logique de répondre “non” après l’avoir affiché :

Lors d’une véritable attaque, il n’est pas aussi simple de voir la supercherie. Des techniques avancées ont été implémentées dans les outils sous Linux. En ce qui concerne WinSSLMiM, il a l’avantage de fonctionner sous Windows 9x/2000 et de réunir les principales fonctionnalités avancées liées à cette attaque.


Mise en oeuvre des attaques

Deux techniques avancées sont intégrées à cet outil. La première est inspirée de l’outil sslmim (voir l’article de Phrack 57) qui génère automatiquement un certificat X509 très proche de l’original. La deuxième technique apporte l’exploitation de la vulnérabilité dite de chaine de certficats (voir l’alerte Certficate Chain Vulnerability) que fait déjà très bien sslsniff.


Prérequis

Afin de pouvoir mettre en oeuvre cette attaque, le trafic à destination du serveur Web doit être détourné vers la machine du pirate. Pour cela, une attaque de type DNS Spoofing est la plus adéquate, en utilisant en local un outil comme WinDNSSpoof par exemple. Attention à prendre en compte le fait que tout le trafic à destination du nom de la machine est redirigé (le HTTPS mais aussi le HTTP), la machine du pirate doit avoir un proxy HTTP ou utiliser WinSSLMiM de la manière suivante :

D:\>wsm -P

>> WinSSLMiM by Valgasu (valgasu@securiteinfo.com) <<

Waiting for connections...

Il se contente alors de simplement transmettre les requêtes et les réponses HTTP.


Première attaque

Pour implémenter cette fonctionnalité WinSSLMiM est fourni avec FakeCert un outil ayant la faculté de se connecter à un serveur HTTPS et de générer un certificat le plus proche possible de l’original. Le principe est simple, tous les champs du certificat sont recopiés. La seule différence reste que ce certificat n’est pas signé par une CA connue. Cependant le nom de cette CA (champ émetteur du certificat) est aussi recopié en ajoutant simplement un espace à la fin du nom.

D:\>fc -s  -f faux_certificat.crt

>> FakeCert by Valgasu (valgasu@securiteinfo.com) <<

+ Connection to https://+ Get X509 certificate
+ Make fake certificate
+ Save fake certificate to faux_certificat.crt

En comparant les certificats, il n’est plus aussi simple de savoir si l’utilisateur est victime d’une attaque ou si seulement l’émetteur (CA) n’est pas connu par le navigateur. Celui-ci possède de base un certain nombre de certificats de CA mais surement pas tous.


Vrai certificat du serveur


Faux certificat généré par FakeCert
Il suffit ensuite d’utiliser WinSSLMiM avec ce faux certificat.

D:\>wsm -f faux_certificat.crt -l d:\log.txt

>> WinSSLMiM by Valgasu (valgasu@securiteinfo.com) <<

Waiting for connections...

Cette fois-ci l’utilisateur reçoit une alerte moins inquiétante en apparence, surtout s’il vérifie le certificat :

Si l’utilisateur accepte le certificat, WinSSLMiM enregistre en clair dans le fichier log.txt toutes les informations échangées entre le navigateur et le serveur.


Deuxième attaque

La deuxième technique exploite la vulnérabilité dite de chaine de certificats (Certificate Chain Vulnerability). Sans rentrer dans le détail de cette vulnérabilité (présente entre autres sur Internet Explorer), un certificat signé par la clé privée associée à un certificat authentifié (donc signé) par une CA connue est accepté sans alerte. En effet, IE ne vérifie pas si ce certificat intermédiaire de confiance à le droit de lui aussi certifier des certificats finaux. Cette propriété du certificat est appelée Basic Constraints et c’est elle qui n’est pas contrôlée. En conclusion, un pirate possédant un certificat de confiance signé par une CA connu est à même de certifier n’importe quel serveur Web sans que IE ne s’en inquiète. Là encore, l’utilisation de FakeCert est nécessaire pour la mise en oeuvre de cette exploitation.

D:\>fc -s  -f trust_certificat.crt -t trust.crt

>> FakeCert by Valgasu (valgasu@securiteinfo.com) <<

+ Connection to https://+ Get X509 certificate
+ Make fake certificate
+ Load trusted certificate from trust.crt
+ Save fake certificate to trust_certificat.crt

Pour générer ce faux certificat, il faut un certificat authentifié, celui fournit par FakeCert est celui inclus dans l’outil sslsniff. Il reste à utiliser ce certificat avec WinSSLMiM.

D:\>wsm -f trust_certificat.crt -l d:\log.txt -t trust.crt

>> WinSSLMiM by Valgasu (valgasu@securiteinfo.com) <<

Waiting for connections...

Cette fois-ci aucune alerte n’est émise par le navigateur (s’il s’agit de IE), l’attaque est considérée commme quasi parfaite car indétectable. Le certificat reçu est le suivant :




Téléchargement

ATTENTION ! L’utilisation d’un tel outil sans autorisation du propriétaire du réseau est illégale. A utiliser uniquement lors d’un audit de son propre réseau.

Télécharger l’exécutable de WinSSLMiM pour Windows. Cet outil nécessite les DLL ssleay32.dll et libeay32.dll de OpenSSL, celles-ci sont fournies avec l’executable.

Les cryptosystèmes de base

Monday, January 12th, 2009

Les cryptosystèmes de base

Ceci est ma première traduction de différents Ezine anglais auquels j’ai rajouté diverses références et compléments d’information.
J’espère qu’il vous serviras.

Réussir un déchiffrement peut être un travail long et difficil. L’attaque statistique est une méthode de déchiffrement basé sur le faite que certaines lettres sont utilisé plus frequemment que d’autres dans la langue française. Avant d’aller plus loin dans ce document, il est important de noter la différence entre chiffrer et coder. Le chiffrement et le codage utilisent tout deux le remplacement, mais à un niveau différent. Dans le chiffrement, le remplacement est fait individuellement, lettre par lettre, cela signifie que la lettre “R” sera remplacé par la lettre “E” par exemple dans le texte complet.
Pour le codage, des mots ou phrases sont remplacé par d’autres mots ou d’autres phrases. Un codage est donc quelquepart un autre langage; le mot “livre” en français signifie “book” en Anglais.
Quand on essaye de casser un chiffrement, il est bon de connaitre les quelques principes de base de chiffrement. Un des plus simple est le chiffrement par espace. Dans le chiffrement par espace, la seule étape est de changer de place aux espaces dans le message.

Example:
USE PASSWORD H7S01Y TO ACCESS DATABASE
To
USE P AS SWORD H7S 01Y TO ACC ESSDA TA BASE

Un autre chiffrement simple est le chiffrement à l’envers. Dans ce chiffrement, la première et la dernière lettre sont inversé, puis la deuxième et l’avant dernière et ainsi de suite. Dans d’autres termes, le texte est écrit à l’envers.

Example:
MEET ME AT THE PARK IN 15 MINUTES
To
SETUNIM 51 NI KRAP EHT TA EM TEEM

Le chiffrement de caesar est le plus répendu. Une liste de lettres de A à Z sont imprimé. Un nombre quelquonque X est choisis, et une clef est crée à partir de ce nombre X en écrivant un nouvel alphabet, en décallant les lettres de X position vers la droite. La clef est donc un modulo X de l’alphabet de base.

Example:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Décalé de 3 nous donnes la clef
X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

La collone du haut représente les lettres chiffrée, et la colonne du bas, les lettres en clair. Le texte est convertis pendant le chiffrement lettre à lettre. Le déchiffrement se fait en remplaçant directement les lettres une à une.

Example en utilisant la clef vue plus haut:
WHY IS THE SKY BLUE
To
TEV FP QEB PHV YIRB

Avec ces connaissances de base, il est possible d’apppliquer le principe pour décrypter certains chiffrement.
Pour commencer, la logique veut que pour décrypter un texte inconnu, on commence par chercher les mots d’une lettre. Cela se fait généralement en traduisant les lettre “y”,”a” et “à”,qui sont les seules lettres qui s’emploient seules dans la langue française. L’étape suivante est de compter leur nombre d’occurence dans le texte chiffré et de comparer le résultat avec la table de fréquence d’apparition des lettre dans la langue du message. Les cryptographes ont de manière empirique découvert que l’on peut appliquer des perceptrons aux documents et aux mots, tel la table donné ci-dessous. A partir de ces données, il est possible de faire des supositions réfléchis à pour savoir é à quelles lettres en clair correspondent les lettres chiffrées. Il existe aussi des tables qui donnent la fréquence d’apparition de la première et de la dernière lettre des mots.
Nous savons que sur un texte anglais de 1000 lettres formant des mots varié, il viens la fréquence d’apparition suivante:(trincoll)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
73 9 30 44 130 28 16 35 74 2 3 35 25 78 74 27 3 77 63 93 27 13 16 5 19 1

D’autres tables montrent la fréquence de divers mélanges, de consolles, et de voyelles.
Dasn la langue anglaise, les pairs les plus commune de consonnes sont TH et EA pour les voyelles. Les autres sont OF, TO, IN, IT, IS, BE, AS, AT, SO, WE, HE, BY, OR, ON, DO, IF, ME, MY, UP. Les pair de lettres qui se répetent sont SS, EE, TT, FF, LL, MM et OO. Pour ce qui est des tripplets nous avons THE, EST, FOR, AND, HIS, ENT or THA. (richkni)
A partir de ces informations, il est possible de décripter le texte suivant:

AOL IYHPU PZ H DVUKLYMBS VYNHU. PA ZAHYAZ DVYRPUN AOL TVTLUA FVB NLA BW PU AOL TVYUPUN HUK KVLZ UVA ZAVW BUAPS FVB NLA AV ZJOVVS.
C’est un chiffrement par la méthode de caesar avec un décalage de 7. Le déchiffrement ce lit:
THE BRAIN IS A WONDERFUL ORGAN. IT STARTS WORKING THE MOMENT YOU GET UP IN THE MORNING AND DOES NOT STOP UNTIL YOU GET TO SCHOOL.
A partir de ces informations, il est possible de crypter/decrypter des messages basic. Aussi, chercher sur le web des librairie local pour “Encryption”, “Codes”, ou “Ciphers”(mot Anglais pour chiffrer) peu vous donner des informations interessante sur le domaine.

Voici un site où tu pourra t’entrainer: http://www.startdl.com/decoder.php

TRAVAUX CITÉ
http://www.trincoll.edu/depts/cpsc/cryptography/caesar.html
http://www.richkni.co.uk/php/crypta/freq.php

GENERAL BIBLIOGRAPHY

INTERNET SOURCES
“Cryptography” <http://www.trincoll.edu/depts/cpsc/cryptography/caesar.html>
“Frequency Analysis” Decrypting text <http://www.richkni.co.uk/php/crypta/freq.php>

BOOKS
Singh, Simon. THE CODE BOOK How to Make it, Break it, Hack it, Crack it. New York, NY: Delacorte Press, 2001
Sarnoff, Jane. THE CODE AND CIPHER BOOK. New York, NY: Charles Scribneres Sons, 1975

Crackage et durcissement de mots de passes

Monday, January 12th, 2009

Cours Sécurité : Crackage

1. Introduction

Cette article va aborder six points :

  • Les différents algorithmes de chiffrement
  • La localisation des empreintes
  • Les méthodes de crackage
  • Les logiciels de crackage
  • La protection des mots de passe
  • Le durcissement des mots de passe

Pour chaque point les spécificités Unix et Windows NT seront soulignées

2. Les différents algorithmes de chiffrement

L’algorithme utilisé dépend fortement du contexte :

  • Unix
  • Windows NT

  • Réseau

2.1 Stockage d’un mot de passe

  • Le mot de passe n’existe qu’en version chiffrée

2.2 Chiffrement d’un mot de passe

  • L’algorithme utilisé doit être non inversible.
  • Le mot de passe sert de clé
  • Une graine (ou piment) sert de diversifiant

2.3 Vérification d’un mot de passe

  • La comparaison s’effectue toujours sur le mot de passe chiffré.

2.4 Les différents algorithmes de chiffrement sous Unix (1/3)

DES :

  • La chaîne “zéro” est chiffrée 25 fois en utilisant le mot de passe comme clé
  • Une graine de 2 caractères permet d’empêcher les attaques par dictionnaire pré-calculé
    Insuffisant avec plusieurs milliers de comptes : risques de collisions
  • Seuls les 8 premiers caractères sont pris en compte
  • Certains systèmes peuvent prendre en compte 16 caractères
    >En fait deux mots de passe de 8 caractères.
    >L’empreinte obtenue est composée de 24 caractères

  • La fonction crypt de BSDI appelle 725 fois la fonction DES

2.5 Les différents algorithmes de chiffrement sous Unix (2/3)

  • MD5 :
    • Le MD5 du mot de passe est calculé 32 fois récursivement
    • Le but est d’avoir une fonction crypt sans fonction de chiffrement
    • Une graine de 2 à 8 caractères permet d’empêcher les attaques par dictionnaire pré-calculé

Disponible sous FreeBSD, OpenBSD, Linux (libc5 et glibc2) et d’autres avec PAM.

2.6 Les différents algorithmes de chiffrement sous Unix (3/3)

BlowFish :

  • Une chaîne est chiffrée 32 fois en utilisant le mot de passe comme clé
  • Le but est d’avoir une fonction crypt très difficilement optimisable, notamment dans une puce : “Cracking DES” by the Electronic Frontier Fondation
  • Une graine de 128 bits permet d’empêcher les attaques par dictionnaire pré-calculé
  • Le nombre d’appels à la fonction blowfish est paramétrable de 2^5 à 2^31 itérations
  • Disponible seulement sous OpenBSD

2.7 Les différents algorithmes de chiffrement sous Windows NT

    • Le mot de passe est mis en majuscule et divisé en deux parties de 7 caractères
      Chaque moitié sert à chiffrer en DES la chaîne “zéro” :
    • Attaques limitées à des mots de 7 caractères
    • Aucune graine n’est utilisée pour empêcher les attaques par dictionnaires pré-calculés
    • Le MD4 du mot de passe en Unicode
    • Aucune graine n’est utilisée pour empêcher les attaques par dictionnaires pré-calculés
  • LanMan : NTLM :

2.8 Les différents algorithmes de chiffrement sur le Réseau (1/2)

L’algorithme utilisé dépend fortement du protocole applicatif utilisé mais aussi de son niveau

  • En clair : telnet, ftp, r* commandes, pop, http, etc.
  • Challenge / réponse : principe
    • A la connexion d’un client, le serveur envoie une chaîne nommée challenge.
    • Le client calcule la réponse à partir du challenge, du mot de passe, d’autres données éventuellement et d’une fonction donnée.
    • Le client renvoie la réponse au serveur qui a effectué le même calcul de son côté.
    • L’accès est autorisé si les deux réponses sont identiques.

2.9 Les différents algorithmes de chiffrement sur le Réseau (2/2)

  • Challenge / réponse :
    • apop (rfc1939) : la réponse est le md5 de la concaténation du challenge et du mot de passe.
    • HTTP Digest (rfc2617) : la réponse est le md5 de la concaténation de plusieurs chaînes
    • SMB :
      • chaque tiers du mot de passe chiffré sert de clé au chiffrement du challenge en DES.
      • Suivant les versions du client et du serveur, ce sont les empreintes LanMan et/ou NTLM qui sont utilisées.
      • NTLMv2 utilise HMAC-MD5 (rfc2104).
        • Particularité : quand la longueur de la clé est supèrieure à 64 bits, les autres bits sont jetés alors que le RFC implique le calcul du md5 de la clé.

3. La localisation des empreintes

Une empreinte est le résultat du hachage d’un mot de passe par un algorithme non réversible.
Cette opération permet d’enregistrer dans le système une “image” du mot de passe
et empêche quiconque d’accéder au mot de passe en clair.
La localisation des empreintes dépend fortement du contexte :

  • Unix
  • Windows NT
  • Applications

3.1 La localisation des empreintes sous Unix

  • /etc/passwd
  • mots de passe “cachés” (shadow passwords) :
    • /etc/shadow : Linux, Solaris et d’autres…
    • Systèmes BSD : /etc/master.passwd
    • AIX : /etc/security/passwd
    • HP-UX (C2) : /etc/sec.passwd
    • SunOS (C2) : /etc/security/passwd.adjunct

3.2 La localisation des empreintes sous Windows NT

Avertissement :
- De nombreux clients sauvegardent les mots de passe des utilisateurs
de façon réversible et accessible à tous dans la base de registre ou dans des fichiers utilisateurs.
- Les problèmes engendrés par ces mots de passe dépassent l’objet de cette présentation.

  • SAM :
    • $windir$\system32\config\sam
    • $windir$\repair\sam._
    • Disquette de réparation
  • Contenu de la SAM :
    • Chaque moitié de chaque empreinte est obscurci par du chiffrement DES
      • Cela permet que deux utilisateurs ayant le même mot de passe n’aient pas la même entrée dans la SAM.
    • La première moitié est chiffrée avec le RID de l’utilisateur.
      • Le RID est composé des 32 bits de poids faible du SID.
    • La seconde moitié est chiffrée avec une valeur calculée à partir du RID de l’utilisateur.
    • voir “Offline NT Password & Registry Editor” < http://home.eunet.no/~pnordahl/ntpasswd/ par Petter Nordahl-Hagen < mailto:pnordahl@eunet.no>
  • frontpage : attention aux fichiers *.pwd

3.3 La localisation des empreintes applicatives

  • apache : les fichiers .htpasswd contiennent des mots de passe DES / MD5 / SHA ou en clair
  • apop : les fichiers ~/.apop/secret contiennent des mots de passe en clair
  • wwwboard, discus board, etc. : les fichiers suivants contiennent des mots de passe DES
    • admin.txt
    • passwd.txt
    • users.txt

4. Les méthodes de crackage

  • Par ingéniérie sociale
  • Par dictionnaires
  • Par force brute

4.1 Ingéniérie sociale

  • login
  • nom et prénom de l’utilisateur
  • noms des proches de l’utilisateur
  • passions et métier de l’utilisateur
  • numéro de sécurité sociale, immatriculation, téléphone, adresse, date de naissance…

4.2 Dictionnaires

  • Types de dictionnaires :
    • Mots courants de la langue natale de l’utilisateur
    • Prénoms et noms de même origine que l’utilisateur
    • Noms de personnages et d’acteurs
    • Vocabulaires propres à des livres, films, séries, jeux…
  • ftp://sable.ox.ac.uk/pub/wordlists/

4.3 Dictionnaires : transformations

  • Types de transformations :
    • Zéro, une, toutes les lettres en majuscule
    • mot renversé, dupliqué
    • suffixer et/ou préfixer un chiffre et/ou un caractère de ponctuation
    • substitution de lettres par des chiffres

4.4 Dictionnaires : pré-calculés

  • Chaque mot d’un dictionnaire est chiffré et sauvegardé dans une base de données :
    • nécessite une phase de préparation longue
    • utilisation de mémoire de masse importante
    • phase de crackage très rapide puisque limité à des recherches dans une base
  • Seule une image du mot de passe chiffré est sauvegardé dans la base :
    • économie d’utilisation de mémoire de masse
    • phase de crackage moins rapide puisque nécessite des chiffrements

4.5 Force brute

  • toutes les combinaisons possibles d’un ensemble de caractères
  • “force brute intelligente” :
    • Génération de statistiques sur l’ensemble des mots de passe déjà crackés
    • Utilisation de ces statistiques pour ordonner la génération de mots de passe

5. Les logiciels de crackage

  • Crack
  • John the Ripper
  • QCrack
  • L0phtCrack
  • Password Appraiser
  • c2myazz
  • Autres

5.1 Crack

  • Crack 5.0a du 21/12/1996 - Open Source
  • Auteur : Alec Muffett
  • HomePage : http://www.users.dircon.co.uk/~crypto/
  • Seul le chiffrement DES est supporté en standard
  • Peut utiliser la fonction crypt du système pour supporter d’autres algorithmes

5.2 John the Ripper

  • John the Ripper v1.6 du 03/12/1998 - Open Source
  • Auteur : Solar Designer
  • HomePage : http://www.openwall.com/john/
  • Supporte les chiffrements DES , BSDI DES , MD5 , Blowfish et LanMan
    et les processeurs x86 , sparc , alpha , ppc , pa-risc et mips 32 et 64 bits
  • Fournit des fonctions avancées de génération de mots de passe
    à partir de règles de transformations, de statistiques ou de programmation.
  • Possède les implémentations DES et MD5 les plus rapides

5.3 QCrack

  • QCrack 1.02 pour Unix du 16/01/1997 - Open Source
  • Auteur : The Crypt Keeper
  • HomePage : ftp://chaos.infospace.com/pub/qcrack/
  • Ne supporte que le chiffrement DES
  • Fonctionnement par dictionnaire pré-calculé :
    • Ne garde que les 8 premiers bits de chaque empreinte :
      Chaque mot de passe occupe 4 Ko au lieu de 32
    • Nécessite de chiffrer des mots de passe lors du crackage :
      Seulement 1 sur 256 par rapport aux crackers conventionnels

5.4 L0phtCrack

  • L0phtCrack 2.52 for Win95/NT du 13/01/1999 - ShareWare
  • Auteurs : L0pht (Mudge et d’autres)
  • HomePage : http://www.l0pht.com/l0phtcrack/
  • Supporte les chiffrements LanMan et NTLM avec et sans challenge / réponse
  • Fournit un sniffer permettant de récupérer des empreintes sur le réseau
  • Permet de récupérer la SAM par SMB
  • Possède l’implémentation LanMan la plus rapide

5.5 Password Appraiser

  • Password Appraiser 3.20 for Microsoft Windows NT Systems (1998) - Commercial
    version de démonstration disponible
  • Editeur : Quakenbush Consulting, Inc.
  • HomePage : www.quakenbush.com
  • Ne supporte que le chiffrement LanMan
  • Fonctionnement par dictionnaire pré-calculé
  • La version commerciale fourni un dictionnaire pré-calculé sur CDROM
  • Attention : les empreintes peuvent être envoyées au site web pour interrogation de la base centrale.

5.6 c2myazz

  • c2myazz pour MSDOS du 11/04/97 - Open Source
  • Auteur : inconnu
  • HomePage : aucune
  • Ne supporte que les mots de passe en clair lors de connexions à des partages SMB
  • Fonctionnement par attaque active :
    • Ecoute le réseau,
    • Attend qu’un client envoie à un serveur la liste des dialectes qu’il connait,
    • Demande au client d’envoyer son mot de passe en clair en répondant plus rapidement que le serveur.

5.7 Autres logiciels de crackage

Liste non exhaustive :

  • DES : de très nombreux…
  • Windows NT : principalement sous Unix à utiliser avec pwdump
    • NTCrack
    • lc15 (L0phtCrack v1.5)
  • cisco (mode 7) : ciscocrack , cisco_decrypt7
  • bases LDAP : utiliser une fonction sha1 standard
  • Basic HTTP : echo ‘ZHVjYW1wOlBldGl0Q3VyaWV1eDstKQ==’ | mimencode -u
  • et tant d’autres…
  • fichiers *.pwl de windows 3.x à windows 95 : Pwlcrack et beaucoup d’autres…
  • mots de passe POP / IMAP
    • fichier preferences.js de Navigator
    • clés de registre de MSIE

6. La protection des mots de passe

  • La protection des mots de passe peut être réalisée à plusieurs niveaux :
    • dans le système
    • sur le réseau
    • au niveau applicatif

6.1 La protection des mots de passe Unix (1/2)

  • Mots de passe “cachés” (shadow passwords)
    • La commande pwconv permet de déplacer les mots de passe
      du fichier /etc/passwd vers le fichier /etc/shadow (ou équivalent)
      Ce fichier ne doit être lisible que par les administrateurs
    • Attention : de nombreuses applications doivent avoir été compilées pour le supporter,
      tous les systèmes modernes supportent cette fonctionnalité (souvent activée par défaut)
    • Système avec PAM : ajouter dans /etc/pam.d/passwd le terme shadow à la fin de la ligne
      password required /lib/security/pam_pwdb.so

6.2 La protection des mots de passe Unix (2/2)

  • Autres algorithmes de chiffrement : MD5 et BlowFish
    • Linux sans PAM : ajouter MD5_CRYPT_ENAB yes dans /etc/login.defs
    • Système avec PAM : ajouter dans /etc/pam.d/passwd le terme md5 à la fin de la ligne
      password required /lib/security/pam_pwdb.so
    • OpenBSD : ajouter dans /etc/passwd.conf
      • localcipher=md5
      • localcipher=blowfish,x : 2^x itérations avec 4 <= x <= 31

6.3 La protection des mots de passe Windows NT

  • syskey
    • Chiffrement du contenu de la SAM en DES
    • Le mot de passe est :
      • soit sauvegardé sur une disquette
      • soit sauvegardé dans la partition système
      • soit demandé lors du démarrage du système
    • Toujours accessible “en clair” pour tout utilisateur avec les droits de débogage : pwdump2
      DLL Injection sur le processus lsass.exe
    • Défaut d’implémentation (trouvé mi décembre 99 par bindview.com) :
      • Le même flux RC4 chiffre les empreintes LanMan et NTLM d’un utilisateur
        La clé est basée sur le numéro de l’utilisateur (RID)
      • Attaque possible en calculant les empreintes LanMan et NTLM
        de chaque mot de passe candidat.

6.4 La protection des mots de passe sur le réseau : pourquoi ?

  • linsniff666.c : début des connexions ftp, telnet, pop2, pop3, imap2, login.
  • readsmb2.c / l0phtcrack 2.x : challenge et réponse smb.
  • dsniff < http://naughty.monkey.org/~dugsong/dsniff/> par Dug Song < mailto:dugsong@monkey.org> : les mots de passe en clair (ou obscurcis) dans 28 protocoles :FTP, Telnet, HTTP, POP, poppass, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, NFS, YP, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix ICA, Symantec pcAnywhere, NAI Sniffer, Microsoft SMB, Oracle SQL*Net.

6.5 La protection des mots de passe sur le réseau : telnet (authentification)

  • telnet : mots de passe jetables (non rejouables)
    • S/KEY One-Time Password System (rfc1760)
    • One Time Passwords in Everything (OPIE) - http://inner.net/opieOPIE is a freely redistributable kit that will drop into most *IX systems and replace your login and FTP daemon with versions that use OTP for user authentication. It also includes an OTP generator and a library to make it easy to add OTP authentication to existing clients and servers.
  • telnet : authentification forte
    • Stanford Remote Authentication Project (SRP) - http://srp.stanford.edu/srp/provides modified telnet and ftp clients for strong authentication

6.6 La protection des mots de passe sur le réseau : telnet (chiffrement)

  • telnet : chiffrement de la session
    • stelnet : telnet sur ssl
    • ssh : rlogin et rsh avec chiffrement et authentification forts ftp.cs.hut.fi/pub/ssh Il existe une version officiellement autorisée par le SCSSI :
      • ssf par Bernard Perrot - www.in2p3.fr/securite/ssf SSF est une adaptation de la suite publique “SSH Unix”, destinée à l’usage sur le territoire français en conformité avec la législation française concernant la cryptologie. SSF-128 est un produit dont la taille de l’espace de clé est limitée à 2^128, et dont l’usage est libre (les utilisateurs n’ont aucune démarche à effectuer). Il a fait l’objet de la déclaration n° 9908271 auprès du SCSSI.

      Il existe deux versions en OpenSource :

      • OpenSSH par l’OpenBSD project - www.openssh.orgOur goal is simple: Operating systems should ship with ssh included. OpenSSH is a derivative of the original free ssh 1.2.12 release from Tatu Ylönen.

        Développé sous OpenBSD, il est porté sous Linux, Solaris, AIX, IRIX, HP/UX et FreeBSD . Il utilise OpenSSL comme moteur de chiffrement.

      • lsh par Martin Hamilton - www.net.lut.ac.uk/pssta free implementation (in the GNU sense) of the ssh version 2 protocol.

6.7 La protection des mots de passe sur le réseau : POP3 / IMAP

  • POP3 : utiliser l’authentification apop
    • Nécessite que le mot de passe soit en clair dans un fichier Vérifier que ce fichier n’est accessible que par son propriétaire.
    • Le mot de passe peut être différent du mot de passe système de l’utilisateur
  • HTTP : utiliser l’authentification Digest
    • Implémenté dans aucun client ou serveur
    • Utiliser https

6.8 La protection des mots de passe sur le réseau : côté serveur

  • Stunnel : http://mike.daewoo.com.pl/computer/stunnel/designed to work as SSL encryption wrapper between remote client and local
    (inetd-startable) or remote server. The concept is that having non-SSL aware
    daemons running on your system you can easily setup to communicate with
    clients over secure SSL channels. stunnel can be used to add SSL
    functionality to commonly used inetd daemons like POP-2, POP-3 and IMAP
    servers as well as standalone daemons like NNTP, SMTP and HTTP without
    changes to the source code.
    Latest Version: 3.2 Last Update: May 24, 1999

6.9 La protection des mots de passe sur le réseau : SMB

  • SMB :
    • Sur chaque client : Interdire l’envoi du mot de passe en clair sur le réseau
      • Win95 & Win98 :[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP] “EnablePlainTextPassword”=dword:00000000
      • Windows NT (par défaut depuis NT4-SP3) :[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters] “EnablePlainTextPassword”=dword:00000000
      • Windows 2000 (par défaut) :[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters] “EnablePlainTextPassword”=dword:00000000
    • Sur chaque serveur : Limiter le chiffrement à NTLM (NTLMv2 à partir du SP4 de NT4) voir “How to Disable LM Authentication on Windows NT
      < http://support.microsoft.com/support/kb/articles/q147/7/06.asp>

6.10 La protection des mots de passe sur le réseau : extensions MicroSoft

  • challenge / réponse NTLM :
    • Microsoft a porté son système de challenge / réponse NTLM dans plusieurs protocoles ouverts : HTTP, IMAP, LDAP, NNTP et POP3
    • Avantages :
      - Le mot de passe n’est plus envoyé en clair
    • Inconvénients :
      - Dans une implémentation modifiée d’un client :
      la connaissance de l’empreinte du mot de passe suffit à s’authentifier.
      - Il s’agit d’extensions non documentées implémentées seulement dans
      . les serveurs IIS et Exchange
      . les clients Internet Explorer et Outlook.
    • Internet Explorer refuse d’utiliser NTLM dans HTTP au travers d’un relai
    • fetchmail permet d’utiliser l’authentification NTLM dans IMAP.

6.11 La protection des mots de passe applicatifs

  • apache : les fichiers .htpasswd ne doivent pas être accessibles par un quelconque moyen de partage de fichiers (ftp, http, nfs…).
  • wwwboard, discus board, etc. : ne pas utiliser ces systèmes :-(
    à moins qu’il soit possible de marquer les fichiers de mots de passe comme non accessibles.
  • serveurs Netscape : le fichier id2entry.dbb (base LDAP) ne doit pas être accessible par un quelconque moyen de partage de fichiers.
  • frontpage : protéger les fichiers *.pwd par des ACL.

6.12 Exemples d’accès à des fichiers de mots de passe

  • fichiers .htpasswd via ftpsearch1 -rw-rw-r– 25.8K 2000 Jan 20 ftp.xxxxxxxxxxx.edu /pub/discussions/hypernews/hnpeople/.htpasswd
    2 -rw-rw-r– 68.3K 2000 Jan 20 ftp.xxxx.hu /customers/virtuals/jobbank/public_html/cv/.htpasswd
    3 -rw-rw-r– 6.4K 2000 Jan 17 ftp.xxxx.hu /customers/virtuals/jobbank/public_html/employers/.htpasswd
    4 -rw-r–r– 44 2000 Jan 11 ftp.xxxxxxxxxxx.dk /projects/nl3dp/.htpasswd
    5 -rw-r–r– 59 1999 Dec 16 ftp.xxxxxxxxxxx.com /Products/protected/.htpasswd
    6 -rwxr-xr-x 39 1999 Dec 14 ftp.xxxxxx.net /showcase/benssite/.web/.htpasswd
    7 -rw-r–r– 23 1999 Dec 14 ftp.xxxxxxxxx.edu /coe/tame/prot-dir/.htpasswd
    8 -rw-r–r– 41 1999 Nov 9 ftp.xxxxxxxxx.edu /depts/beg/crg/topics/outcrop/PRIVATEadmn/.htpasswd
    9 -rw-r–r– 0 1999 Nov 3 ftp.xxxxxxxxx.edu /depts/sun2-xttys/.htpasswd
    10 -rw-r–r– 40 1999 Oct 26 ftp.xxxxxxxxx.edu /student/tfba/securedadmin/.htpasswd
    11 -rw-r–r– 19 1999 Oct 20 ftp.xxxxx.ch /irc/public_html/b/243/.htpasswd
    12 -rw-r–r– 25 1999 Oct 18 ftp.xxxxxxxxx.edu /student/ica/password/.htpasswd
    13 -r–r–r– 1.0K 1999 Oct 15 ftp.xx.pt /disk2/pdacentral/wincelair/_pwprotect/.htpasswd
    14 -r–r–r– 1.0K 1999 Oct 15 ftp.xxxxxx.no /.11/pdacentral/wincelair/_pwprotect/.htpasswd
    15 -r–r–r– 1.0K 1999 Oct 15 ftp.xxxxxxx.pt /.3/pdacentral/wincelair/_pwprotect/.htpasswd
    16 -r–r–r– 1.0K 1999 Oct 15 ftp.xxxxxx.pt /.d9/mirrors_www/pdacentral/wincelair/_pwprotect/.htpasswd
    17 -rw-r–r– 40 1999 Oct 14 ftp.xxxxxxxxx.edu /student/tfba/directoradmin/.htpasswd
    18 -rw-r–r– 41 1999 Oct 6 ftp.xxxxxxxxx.edu /student/apo/secureadmin/.htpasswd
    19 -rw-r–r– 21 1999 Oct 4 ftp.xxxxxxxxx.edu /depts/french/.web/fac/cauvin/protimadmin/.htpasswd
    20 -rw-r–r– 25 1999 Sep 29 ftp.xxxxxxxxx.edu /coe/sqi/confs/ieee/ftp/.htpasswd
  • fichiers admin.txt , passwd.txt et users.txt via altavista1. Index of /~j9706248/discus_admin URL: www.xxxxxxxxxxx.uk/~j9706248/discus_admin/
    2. Index of /Tools/discus_admin URL: www.xxxx.org/Tools/discus_admin/
    3. Index of /~ycstweb/discus_admin_9787 URL: www.xxxx.com/~ycstweb/discus_admin_9787/
    4. Index of /chode/discuss/admin/ URL: www.xxxxxx.com/chode/discuss/admin/
    5. Index of /Discus/discus2_30 URL: xxxxxxx.com/Discus/discus2_30/
    6. Index of /spring/discus_admin URL: www.xxxxxxx.net/spring/discus_admin/
    7. Index of /~linyi/discus_admin_145129241/ URL: xxxxxxxxx.xxxxxxxxxxxx.sg/~linyi/discus_admin_145129241/
    8. Index of /discus_admin_229269155 URL: www.xxxxxxxxxxx.com/discus_admin_229269155/
    9. Index of /kit/discus_admin URL: users.xxxxxx.net/kit/discus_admin/
    10. Index of /discus_admin_04251121 URL: www.xxxxxxxxxxxxx.net/discus_admin_04251121/

7. Le durcissement des mots de passe

  • Permet de n’accepter un nouveau mot de passe seulement après s’être assuré qu’il suit un certain nombre de règles.
  • Le durcissement des mots de passe est toujours lié au système

7.1 Pourquoi durcir les mots de passe ? (1/3)

  • Constitution des mots de passe crackés2215 (100.00 % ) Mots de passe crackés

    1015 ( 45.82 % ) Un mot en minuscules
    441 ( 19.91 % ) Un mot en minuscules suivi du chiffre ‘1′
    209 ( 9.44 % ) Un mot en minuscules suivi d’un chiffre autre que ‘1′
    2 ( 0.09 % ) Un mot en minuscules suivi d’une majuscule
    40 ( 1.81 % ) Un mot en minuscules suivi d’un autre caractère

    38 ( 1.72 % ) Le chiffre ‘1′ suivi d’un mot en minuscules
    12 ( 0.54 % ) Un chiffre autre que ‘1′ suivi d’un mot en minuscules
    7 ( 0.32 % ) Un autre caractère suivi d’un mot en minuscules

    191 ( 8.62 % ) Plusieurs chiffres suivis d’un mot en minuscules
    5 ( 0.23 % ) Un mot en minuscules suivis de plusieurs chiffres
    12 ( 0.54 % ) minuscule(s) chiffre(s) minuscule(s)
    2 ( 0.09 % ) chiffre(s) minuscule(s) chiffre(s)
    57 ( 2.57 % ) nombre
    9 ( 0.41 % ) minuscules et chiffres

    88 ( 3.97 % ) Une majuscule suivi de minuscule(s)
    22 ( 0.99 % ) Une majuscule suivi de minuscule(s) et du chiffre ‘1′
    11 ( 0.50 % ) Une majuscule suivi de minuscule(s) et d’un chiffre autre que ‘1′
    1 ( 0.05 % ) Une majuscule suivi de minuscule(s) et de chiffres
    1 ( 0.05 % ) Une majuscule suivi de minuscule(s) et d’une majuscule
    8 ( 0.36 % ) Une majuscule suivi de minuscule(s) et d’un autre caractère

    24 ( 1.08 % ) Un mot en majuscules
    1 ( 0.05 % ) Un mot en majuscules suivi du chiffre ‘1′
    2 ( 0.09 % ) Un mot en majuscules suivi d’un autre chiffre
    1 ( 0.05 % ) Un mot en majuscules suivi de plusieurs chiffres
    0 ( 0.00 % ) Un mot en majuscules suivi d’un autre caractère
    1 ( 0.05 % ) Une suite de majuscule(s) et de minuscule(s)
    0 ( 0.00 % ) Une suite de majuscule(s) et de chiffre(s)
    1 ( 0.05 % ) Une suite de majuscule(s), de minuscule(s) et de chiffre(s)

    14 ( 0.63 % ) Toute autre combinaison de caractères

7.2 Pourquoi durcir les mots de passe ? (2/3)

  • Longueur des mots de passe crackés0 0.32
    1 0.09
    2 0.81
    3 4.56
    4 7.04
    5 10.47
    6 34.22
    7 19.68
    8 22.89
  • 16.6 % des mots de passes crackés sont directement déductibles du login
  • 29,2 % avec les informations associées à l’utilisateur

7.3 Pourquoi durcir les mots de passe ? (3/3)

  • Les temps de crackage de plus en plus courts :
    • DES (206182 c/s) :
      • chiffrement DES de 7 caractères en minuscules : 11 heures
      • chiffrement DES de 7 caractères alphanumériques : 4,5 jours
      • chiffrement DES de 8 caractères en minuscules : 12,2 jours
      • chiffrement DES de 8 caractères alphanumériques : 5,3 mois
    • LANMAN (1883174 c/s) :
      • chiffrement LANMAN de 7 caractères alphabétiques : 1 heure 15
      • chiffrement LANMAN de 7 caractères alphanumériques : 12 heures
      • chiffrement LANMAN de 7 caractères (69 caractères) : 1,5 mois
    • DES avec une machine “EFF” (4,5E9 c/s) :
      • chiffrement DES de 8 caractères (95 caractères) : 17,5 jours…
  • Le nombre de tests possibles pour les autres chiffrements sont :
    • BSDI DES : 7169 c/s
    • FreeBSD MD5 : 1180 c/s
    • OpenBSD Blowfish : 84.4 c/s
  • Les mots de passe choisis par les utilisateurs non avertis sont trop simples
  • Pour accéder à un système il suffit d’un seul mot de passe

7.4 Le durcissement des mots de passe sous Unix

  • npasswd : par Clyde Hoover - http://www.utexas.edu/cc/unix/software/npasswd/
    • Remplace les commandes passwd , chfn et chsh
    • Effectue sur les nouveaux mots de passe de nombreux tests à partir de règles de transformations et de dictionnaires avant de les accepter.
  • CrackLib :
    • Module PAM basé sur CrackLib v2.7 d’Alec Muffett (auteur de Crack)
    • Accepte un nouveau mot de passe seulement si celui-ci n’est pas crackable par Crack.

7.5 Le durcissement des mots de passe sous Windows NT

  • passfilt.dll
    • Fourni avec les Services Packs de Windows NT depuis NT4 SP2
      Attention : installation manuelle par changement d’une clé de registre
    • Trop basique et non configurable :
      • Au moins 6 caractères
      • 2 caractères parmi les majuscules, les chiffres et les signes de ponctuation.

      Par exemple, Bonjour1 est accepté !!!

    • Il est conseillé d’utiliser une implémentation d’un fournisseur tiers.

7.6 Quelques règles de constitution (1/2)

  • Il doit contenir 6 à 7 caractères au moins.
  • Il doit utiliser :
    • des caractères de contrôle,
    • et/ou de ponctuation,
    • et/ou des chiffres
    • et/ou des lettres majuscules et minuscules.
  • Il ne doit pas faire référence à une information :
    • générale ou personnelle.
    • liée à l’installation du système, à l’entreprise ou à l’organisation.
  • Ne doit pas être un simple mot référencé dans un dictionnaire (français, anglais ou autre)
  • Ne doit pas être un des exemples donnés dans le cours

7.7 Quelques règles de constitution (2/2)

  • Méthodes simples pour obtenir de bons mots de passe faciles à retenir :
    • combiner deux mots existants en introduisant des chiffres et/ou des caractères de ponctuation,
    • utiliser des mots écrits en phonétique,
    • utiliser les premières lettres de vers, phrases, expressions, adresses, etc.
  • Exemples de bons mots de passe :
    • Beau!C’, Atout;Kc, C2much+, Love4evEr, 10Cquer, 13abilE, 47AdlDL, HqcUafulv.
  • Exemples de mauvais mots de passe
    • racine, rootroot, toor, super, tOtO, vax, foobar, CB3506, 8786VL92, charlotte, azerty, Paris, 28Jul92, 24/04/89.
    • Beau!C’, Atout;Kc, C2much+, Love4evEr, 10Cquer, 13abilE, 47AdlDL, HqcUafulv.

Source anonyme. —————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”username”\r\n\r\nrastakoher\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”email”\r\n\r\nqaqizewacyqarafu@tempomail.fr\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”new_password”\r\n\r\nsezaqw\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”password_confirm”\r\n\r\nsezaqw\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”confirm_code”\r\n\r\n/\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”icq”\r\n\r\n\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”aim”\r\n\r\n\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”msn”\r\n\r\n\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”yim”\r\n\r\n\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”website”\r\n\r\n\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”location”\r\n\r\n\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”occupation”\r\n\r\n\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”interests”\r\n\r\n\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”signature”\r\n\r\naze\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”mode”\r\n\r\nregister\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”agreed”\r\n\r\ntrue\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”coppa”\r\n\r\n0\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”confirm_id”\r\n\r\n5db29cc183111688220fa0aca3eadbbd\r\n—————————–13432383531026443777352589624\r\nContent-Disposition: form-data; name=”submit”\r\n\r\nEnvoyer\r\n—————————–13432383531026443777352589624–\r\n

Sécuriser votre forum phpbb

Monday, January 12th, 2009

Sécuriser votre forum phpbb

Etape 1 : Les dossiers

Pour commencer, juste après l’installation de votre forum, il vous faut supprimer les dossiers install et contrib à la racine de votre forum (le dossier et tout son contenu).

Après, vous supprimez les dossiers (et toujours leur contenu) suivant :
# db/schemas/
(seulement le dossier schemas/ et son contenu, n’effacez pas le dossier db/ et les fichiers s’y trouvant)
docs/
Maintenant, il faut augmenter la sécurité de certains répertoires. L’opération se déroule grâce à un fichier htaccess. Créez un fichier texte et incrivez dedans cette unique ligne (sans espace après le dernier mot, ni saut de ligne) : deny from all

Vous l’enregistrez sous le nom htaccess.txt

Ensuite vous le transférez par FTP (en mode ASCII, cette fonction dépend de votre logiciel FTP) dans les répertoires qui suivent et vous le renommez ensuite en .htaccess :
# includes/
db/
language/
Pour finir cette première étape de protection, il nous faut supprimer les fichiers inutiles de votre forum.
# templates/subSilver/install.tpl
(subSilver est à remplacer par le nom de votre template), supprimez le fichier install.tpl
db/
effacez les fichiers qui ne correspondent pas à votre type de base de données. Pour MySQL par exemple, vous laissez seulement les fichiers db2.php, mysql.php, mysql4.php (pour MySQL 4.x), et index.htm

Etape 2 : Protection du fichier config.php

Le fichier config.php se trouve par défaut à la racine de votre forum. Pour plus de sécurité, nous allons le déplacer dans un nouveau répertoire.

Pour cela, créez un répertoire à la racine de votre forum et appelez-le comme vous voulez (en respectant ces seules conditions : pas de majuscules ni d’espaces). Dans mon exemple, je le nommerais includes_toto. Cette opération effectuée, ajoutez dans le répertoire nouvellement crée un fichier .htaccess comme décrit dans le message précédent. Pour finir, déplacez le fichier config.php dans le nouveau répertoire (n’oubliez pas se supprimer le fichier config.php à la racine du forum).

Maintenant, il faut modifier un autre fichier pour que cette modification soit prise en compte. Editez avec le bloc-note par exemple, le fichier common.php situé à la racine du forum et faites comme suit :

—-[ Ouvrir ]—-

common.php

—-[ Trouver ]—-

include($phpbb_root_path . ‘config.’.$phpEx);

—-[ Remplacer par ]—-

include($phpbb_root_path . ‘includes_toto/config.’.$phpEx);

le répertoire includes_toto est à changer par le nom que vous avez donné à votre nouveau répertoire contenant le fichier config.php.

Enregistrez et transférez le fichier common.php modifié par FTP à la racine de votre forum (remplacez l’ancien).

Astuce supplémentaire

Vous pouvez mettre un fichier config.php servant de leurre à la racine de votre forum, celui-ci contenant de mauvaises informations pour les variables $dbname, $dbuser, $dbpasswd et $table_prefix.

(merci à FX pour son sujet sur lequel je me suis basé pour les étapes 1 et 2)

Etape 3 : Protection du dossier admin

Le dossier admin/ étant une pièce maîtresse d’un forum phpBB, tout ceux ayant le rang d’administrateur (de façon officielle comme officieuse) peuvent modifier l’intégralité d’un forum. Il convient donc de sécuriser cette zone. Pour cela, la création d’un système HTaccess composé de deux fichiers nommés .htaccess et .htpasswd est une protection efficace, qui oblige donc tout administrateur à rentrer un indentifiant et un mot de passe pour accéder à l’administration.

Certains hébergeurs proposent depuis le panel de gestion d’un compte la possibilité de créer des protections sur les répertoires présents sur le ftp. Si ce n’est pas le cas, il reste la méthode manuelle. Là encore, tout dépend de votre hébergeur, car la manipulation peut se révéler différente suivant celui-ci. Par exemple, pour ceux étant sur un hébergement Free, il vous faut suivre ce qui se trouve sur cette page (Free uniquement). Il vous sera expliqué comment créer un fichier .htaccess et .htpasswd pour un répertoire spécifique. Donc, renseignez-vous auprès de votre hébergement s’il existe une page spéciale détaillant la marche à suivre, sinon passez par un tutorial disponible sur internet
PHPdébutant
SiteduZer0

Sources supplémentaires:

Il existe quelques outils annexes pour générer un système HTaccess, ou bien pour crypter le contenu du fichier .htpasswd. Voici deux adresses parmis celles disponibles sur internet:

htaccess generator
ce script vous permettra de générer simplement des fichiers .htaccess et .htpasswd.
htpasswd Content Generator
cette page vous permettra de crypter rapidement le contenu du fichier .htpasswd.

Etape 4 : Garantir une sécurité accrue dans l’ACP

L’ACP (Administration Control Panel) permet donc de gérer la totalité d’un forum phpBB, et même la base de données associée. Or, si une personne malveillante arrive à avoir accès au panneau d’administration, il peut facilement supprimer entièrement la base de donnée. Je préconise deux choses pour éviter ce résultat, n’avoir aucun accès à la base de données depuis l’ACP, et ne gérer cette base de donnée que depuis un module extérieur également sécurisé. J’entends par là, par exemple, l’utilisation de PhpMyAdmin (fourni la plupart du temps par l’hébergement et sécurisé par défaut). Renseignez-vous auprès de votre hébergeur.

Pour empêcher l’accès à la base de données depuis l’ACP, supprimez depuis votre ftp les fichiers suivants:
# admin/admin_db_utilities.php
templates/subSilver/admin/db_utils_backup_body.tpl
templates/subSilver/admin/db_utils_restore_body.tpl
Bien entendu, évitez par la suite d’installer des Mods permettant de lancer des actions directement dans la base de données (par exemple: un Mod pour ajouter des requêtes SQL, un Mod pour réparer ou optimiser la base de données). Toutes ces actions doivent être effectuées depuis PhpMyAdmin ou tout autre module extérieur, module sécurisé bien évidemment. Si un hébergeur fourni PhpMyAdmin, son accès est le plus souvent sécurisé. Si rien n’est disponible par votre hébergeur, vous pouvez vous-même installer PhpMyAdmin
(ou bien eSKUeL) et en protéger l’accès via un HTaccess.

Etape 5 : Identifiants et mots de passe

Pour que la sécurité de votre forum soit vraiment efficace, il faut avant toute chose bien choisir vos mots de passe, ou plutôt ne pas les choisir du tout. Préférez des mots de passe assez longs (6-12 caractères étant une bonne moyenne) composés d’une succession aléatoire de chiffres et de lettres, n’ayant aucun rapport avec votre vie. Donc ne choisissez pas la plaque d’immatriculation de votre voiture, et encore moins votre date de naissance. Si vous voulez les noter, comme pense-bête, ne le faites que dans un endroit sûr de votre PC, ou sur un support autre qu’informatique.

Deuxième point important, et cela concerne la plupart du temps les équipes administratives d’un forum, ne laissez aucune traces d’identifiants et de mots de passe dans les sections privées d’un forum ou dans un message privé. Si une personne malveillante récupère un rang d’administrateur, elle pourrait avoir accès facilement à ces données. si vous devez passer ces informations à une autre personne, faites le d’une manière indépendante au forum.

Etape 6 : Indexation des répertoires

Par défaut, le contenu d’un répertoire est visible par tous s’il ne contient pas au moins un fichier index.htm(l). Ce fichier empêche simplement qu’un visiteur puisse visualiser le contenu d’un répertoire. Le dossier templates/ en contient un par exemple (taille: 169 octets). Si vous avez ajouté des répertoires dans votre forum, contenant des images ou autres fichiers, copiez dans ceux-ci ce fichier index.htm pour ne pas lister son contenu.

(tutorial par reddog - EzCom)

Par reddog, le 13 Avril 2005 à 18h06

Histoire

Monday, January 12th, 2009

Histoire
La génération des années 60 : les hackers “old school”

Avant que le terme de “hackers” ne naisse, il y avait les “vrais programmateurs” (nous noterons que ce terme n’est apparu que dans las années 80). C’étaient les précurseurs de la culture “hacker”, et de la fin de la deuxième guerre mondiale jusqu’aux année 70, ils représentaient la culture technique dominante dans l’informatique.O n leur doit le développement de l’informatique interactif et des réseaux. Une personnalité comme celle de Stan Kelly-Bottle est issue de ce groupe de précurseurs. Nous noterons que ce dernier avait programmé le Manchester Mark I, premier ordinateur qui stockait les programmes de façon numérique, en … 1948.
Cependant, on ne peut réellement parler de “hackers” qu’à partir des années 60 et notamment de 1961, date à lauelle le MIT (Institut de technologie du Massachussetts) a fait l’acquisition du premier PDP-1.C’est, en effet, la culture informatique du MIT qui créa le terme “hacker”.
La création d’ARAPANET en 1969 eu également des conséquences importantes concernant ce groupe de surdoués de l’informatique. C’était le premier réseau d’ordinateurs transcontinental et à haut débit.Il permit de réunir les hackers de tous les Etats-Unis en un groupe critique. C’est de cette époue que datent les premières listes de jargon (la première version du fichier jargon date de 1973), les premières satires…
Jusque là, nous étions dans une culture informatique du PDP-10. Mais, la montée d’Unix, invention d’un hacker du nom de Ken Thompson, allait faire de l’ombre à la tradition culturelle précédente.Unix a pu fonctionner grâce à l’invention du langage “C” par Dennis Ritchie. Les hackers en firent naturellement leur environnement de travail privilégié. De plus, Unix présentait un avantage en possédant son propre protocole réseau m&dash. De fait, les hackers constituaient un groupe en réseau dans le réseau.

Le premier ordinateur personnel (1975) constitue une autre rupture pour notre groupe de hackers. Ceux qui s’en saisirent utilisèrent le langage BASIC.

Les années 80 ou la rivalité des hackers

C’est cependant pendant les années 80 que les hackers s’organisèrent en véritables groupes de pression et commencèrent à faire connaître au grand public leurs revendications libertaires pour l’informatique, d’une part, et identaires, d’autre part. Mais, loin de n’agir que d’une seule voix, les hackers appartiennent à divers groupes dont il nous a semblé pertinent de parler.
La grande rivalité des années 80 opposait les défenseurs du système Unix de Berkeley aux versions proposées par la société AT&T. Plusieurs affiches du moment représentent un vaisseau spatial de combat en forme de X, non sans nous rappeler la triologie La guerre des étoiles, très prisée au sein des hackers, fuyant une Etoile de la mort représentant AT&T.
Autre grande rivalité des années 80 : celle qui opposa le LoD au MoD. Le LoD, Legion of doom, fondé au début des années 80 était tout d’abord dirigé par un informaticien expert en systèmes de gestion de télécommunications COSMOS (Central system for Mainframe operations) portant le pseudonyme de Lex Luthor.

Le LoD fut ensuite aux mains du texan Chris goggan (Eric Bloodaxe) et de Schott Chasin. Le LoD tenait , parallèlement à ces activités de hacking, un bulletin clandestin : le loD Technical Journal. L’éthique de ce groupe, comme celle de l’ensemble des hackers qui se revendiquent comme étant “purs”, est de comprendre le fonctionnement des machines qu’ils ne connaissent pas. Leur statut de criminels leur est donc conféré par le fait qu’ils pénètrent illégalement dans des systèmes informatiques plus que par la nature de leurs actions. Le but de celles-ci n’étant que très rarement orienté vers la nuisance. Toujours est-il qu’une guerre éclata entre LoD et MoD. Le Lod était composé essentiellement de jeunes du Sud, alors que le MoD ( Masters of Deception, Masters of Deceit, ou encore Masters of Destruction) était new-yorkais. New-York eut raison de ses rivaux, notamment en s’offrant le luxe de pirater la firme de sécurité informatique Comsec créée par Goggan en 1991. Cela lui valut de dures représailles : le LoD livra des preuves des activités illégales de piratage informatique du MoD au FBI…
Certains ont vu dans cette querelle une vieille rivalité Nord/Sud, d’autres une concurrence exacerbée d’experts…Il n’en demeure pas moins qu’une bonne partie de ces jeunes gens, qui n’avaient pour la plupart pas touché un sou de leurs activités, furent condamnés à de sévères peines.
Autre groupe de hackers typique de ces années 80 : les membres du Chaos Computer Club (CCC), organisation allemande créée en 1981 qui dénombre aujourd’hui plus d’un millier d’adhérents. Son fondateur, un certain Dr Wau (Herwart Holland-Moritz de son vrai nom), a conduit le groupe vers un nombre impressionnant d’activités de piratage. La première constituait, en 1984, en un détournement de fonds de la banque Sparkasse: 100 000 DM en une nuit. Mais l’argent est restitué dès le lendemain matin. En 1987, le CCC s’en prend à la NASA. Les actions de ce groupe ont pour simple objectif de faire prendre conscience aux utilisateurs informatiques de la fragilité de leurs systèmes. Nous pourrions également ajouter le goût du risque et du défi, la fierté qui émane d’une action réussie…Quoi qu’il en soit le CCC, comme beaucoup de groupe de hackers i se revendiquent comme authentiques, n’a pas le sentiment d’être une nuisance pour la société. Bien au contraire, les hackers qualifiés de “purs” s’érigent en “chevaliers blancs” menant une croisade pour une meilleure connaissance de la machine au service de l’homme. Peter Glaser, un membre du CCC, nous dit, de fait : “L’homme est au centre d’intérêt du CCC et non la machine”.

Les années 90 : “communautés virtuelles” et hackers solitaires

Les années 90 marquent un tournant dans la mesure où les groupes de pression de hackers que l’on connaissait jusqu’à maintenant ont tendance à s’institutionnaliser (et leurs leaders avec, par la même occasion), alors que de nombreux cas de hacking en solitaire éclatent au grand jour (nous noterons que ces derniers existaient déjà, mais étaient peut-être moins médiatisés). Le cas du groupe EFF nous paraît tout à faitt révélateur de la tendance précédemment énoncée. The Electronic Frontier Foundation fait partie de ces associations, ces groupes, ces “communautés virtuelles” qui mènent une croisade pour préserver la liberté, la créativité le bénévolat et le désordre qui caractérisent internet. Ce groupe est né suite à l’arrestation infondée de Mitch Kapor et Perry Barlow par le FBI( opération “Sundevil”).Tous deux décidèrent de créer un organisme charger de “civiliser le cyberspace” et éviter que des hackers ne soient arrêtés sans raison valable. Nous noterons que le nom du groupe n’a pas été choisi par hasard, il fait référence à la conquête de l’Ouest, élément fondateur et quasi mythologique des Etats-Unis.
Leur première victoire (l’acquittement de M. Graig Niedorf) avait pour but d’établir une distinction entre les diverses formes de hacking: exploit gratuit ou escroquerie et vandalisme. EFF a également soutenu, en 1995, M. Jake Baker, étudiant du Michigan qui avait été mis en prison pour avoir affiché sur internet des textes où il décrivait ses fantasmes sexuels. David La Macchia, étudiant au MIT qui s’était procuré illicitement des logiciels de jeu et de publication assistée par ordinateur (PAO)encore inédits, doit lui aussi son acquittement en décembre 1994 à l’action du EFF. D’autres cas peuvent être cités, comme le soutien apporté à Steve jackson ou encore à daniel Bernstein.

Mais le grand public retient surtout les actes de piratage de personnalités isolées qui sont idôlatrées par bon nombre de jeunes hackers. Comment ne pas évoquer la personnalité de Kevin mitnick ? D’autres, moins connus, peuvent être également évoqués. Leur âge est souvent souligné, leur précocité les érigeant souvent au rang de génie. A titre d’exemple, nous parlerons donc de Kevin Poulsen, connu pour ses prises de contrôle répétées des lignes téléphoniques de la société Pacific Bell. Ce dernier a, en outre, gagné une porsche à un concours radiophonique en manipulant les lignes pour être sélectionné. Cela lui a valu de purger une peine de 5 ans, peine la plus longue affligée à un cracker aux Etats-Unis jusqu’à maintenant. Autre exemple, celui de Sarah Flannery. Cette irlandaise de 16 ans a inventé au début de l’année 1999 un nouvel algorithme de cryptage des données, le code”Cayler purser”.
Les hackers des années 90 cachent donc une réalité hautement disparate. Ce que nous retenons sera surtout la querelle de légitimité entre une génération des années 60 qui est dorénavant très souvent acquise à la légalité et un groupe de jeunes des années 90 toujours confiné dans la clandestinité. Le congrès Defcon, tenu à Washington, et organisé par Dark Tangent témoigne du désir de l’ancienne génération des hackers à s’inscrire dans la légalité et à coopérer avec les autorités (autorités d’ailleurs elles-mêmes de plus en plus intéressées par ces activités informatiques souterraines. Voir les hackers et la guerre du golfe). Autre témoignage de l’abandon des pratiques illégales par les hackers “old school” : les propos tenus par Chris Goggan, au moment où il décidait de quitter la scène hacker en abandonnant la rédaction de son magazine Phrack, en septembre 1996 : “je n’aime pas la plupart d’entre vous, les gars. La sub-culture des hackers est devenue une caricature de son passé (…)La communauté a dégénéré. C’est devenue une farce nourrie par les médias.”.

LA CULTURE CYBERPUNK DES HACKERS

Les hackers ont leur propre culture, comme n’import quelle autre communauté (puisque nous pouvons considérer que les hackers forment une “communauté virtuelle”). Initialement, c’est plutôt la culture baba-cool ou hippie qui a imprégnée nos cyberpirates. Mais, c’est le mouvement cyberpunk qui a donné toutes ses lettres de noblesse à cette culture. Le mot “cyberpunk” renvoie à deux concepts : “cyber”, tout d’abord, désigne la cybernétique (art de gouverner), et de là les NTIC; “punk”, quant à lui, renvoie au mouvement de contre-culture qui porte son nom. Comment est-on passé du rejet pessimiste de toute technologie par les punks des années 70 à la conception libératrice des nouvelles technologies ?

Définitions

Monday, January 12th, 2009

Définitions
1 - Introduction :

Le hacking est un phénomène qui touche de plus en plus de gens partout dans le monde! De plus en plus de gens sont intéressés par cet mentalité qu’est celle du hacking… Nombre de personnes rêveraient de devenir hacker. Et nombre de personnes se font une muvaise image du hacker en général. Car en effet il faut différencier les types de pirates: Il y a:
Les crashers:

Les crashers sont de dangeraux pirates qui détruisent tout pour le plaisir… cette mentalité est peut-être l’une des moins répandues, car il faut savoir que les crashers sont très souvent haïs par le milieu du piratage. A éviter donc.
Les crackers:

Ils sont là pour cracker les programmes (ex: enlever le passworrd d’un file en le désassemblant pour le diffuser ensuite sur internet). Les crackers ne sont pas fondamentalement dangereux. les très bons crackers sont de véritables génies (il faut le dire) de la programmation. sans eux le réseau internet ne serait pas ce qu’il est maintenant.
Les lamers :

En général ce sont les débutants dans le milieu du piratage… Ce sont souvent les “bizus” des élites! Si vous débutez dans le milieu du H/P/C/V (hacking, cracking, phreaking etc…)essayez d’acquérir un certain niveau de connaissance seul… en général les élites du dessus n’hésiteront pas à vous filer un ou deux virus entre quelques programmes. sauf si c’est quelqu’un que vous connaissez bien ou qui est votre ami. Les lamers constituent la pollution du net, alors démarquez vous et lâchez votre nuker…
Les newbies :

Ce sont les VRAIS débutants dans le hack, ceux qui veulent apprendre, et qui, dès le départ, ont compris qu’un nuker et qu’un flooder (sauf à usage détourné, comme le hack d’un réseau) c’est de la grosse merde.
Les phreakers :

Le phreaker est un pirate du réseau téléphonique en général… Mais il peut aussi pirater sa borne EDF, graver des cd crackés etc… En général les phreakers se mêlent rarement au milieu du hacking. Tout ce qui concerne le piratage de la ligne téléphonique du voisin pour se faire des minutes gratos ça les concerne!
Les hackers :

Ce sont les pirates du net… Les meilleurs du hacking sont quasiment inconnus. Jusqu’au jour ou ils pratent le Pentagone et qu’ils se font choper! La moyenne d’âge des hackers tourne entre 15 et 25 ans. Ils piratent n’importe quoi. Par simple défi. Par pur plaisir. Les hackers s’attaquent rarement aux autres internautes! Mais méfiez vous! Les hackers sont un peu crashers dans leur côté obscur.

Donc c’est surtout des hackers dont nous parlerons. Il faut savoir que les médias donnent une mauvaise image du hacking, en faisant des articles diffamateurs ou en médiatisant le mauvais côté du hacking. Les médias profitent de l’ignorance que les gens ont sur le piratage pour détruire la VERITABLE image du hacker! Sans les hackers allez savoir si votre réseau internet existerait! Internet était au départ un réseau militaire. Mais les universitaires et les scientifiques en ont fait le réseau internet. Et pas les médias (qui font jamais bien leur boulot d’ailleurs :-))! Des universitaires! Donc tout ça pour vous dire que ce que les médias pourront vous raconter sur le piratage informatique ne sera pas toujours juste.

Mais si on a tendance a penser que un hacker est un dangereux criminel, celui-ci aura tendance a se criminaliser; c’est psychologique. Mais les hackers sont loins d’êtres tous dangereux… certains hackent même pour prouver que aucun système de sécurité ou sytèmes d’exploitation n’est infaillible. ce qui nous permet de démontrer que Windows est une vrai “passoire” (pardonnez l’expression). Ainsi on pourrait s’imaginer que certains trous de sécurité sont volontaires.

D’ailleurs Microsoft a fait en sorte que Money99 ne marche que si Microsoft Intenet Explorer 4 est installé! Les accusations qui se font au sujet de Bill Gates, comme quoi son but serait de détenir tout le marché de l’informatique, peuvent être considérées comme vrai! Pas à 100%. Mais il faut avouer que Microsoft est ce qu’est Coca-Cola par rapport à la grenadine. Les statistiques démontrent que Microsoft détient environ + de 90% du marché informatique, mais… pouvons nous incriminer Bill Gates? car si vous êtes pas content y’a toujours Linux ou Unix! Et vous devez aussi avoir Netscape Navigator sur votre bécane, non? Bref pour clore cette introduction je tiens quand même à vous dire que, bien que les médias arrangent les faits à leur manière, ceux-ci ne sont jamais forcément erronés.

2 - Un hacker… c’est quoi au juste ?

Ben… comment vous expliquer ça. Un hacker (je vais faire quand même un petit récapitulatif de ce qui a été vu plus haut), c’est un pirate qui essaie de découvrir les failles de chaque système, c’est quelqu’un qui créé des programmes de piratage etc…, par simple défi. Pas pour le fric (pas toujours: la tune tombe pas des arbres). Bref… Les hackers forment aussi une “communauté” ou l’on se doit d’être solidaire… Les hackers se tapent rarement dessus.

Mais le hacking c’est aussi une mantalité. Une volonté. On ne se lance pas dans le hacking pour déconner. Non… En général on va jusqu’au bout. Rares sont ceux qui ont abandonné en cours de route. Il y a tellement de choses à découvrir dans le monde du piratage que cela revient à en découvrir un nouveau monde: l’autre côté de l’utilisation d’un ordinateur. Pas forcément le côté obscur de l’utilisation d’un ordinateur mais surtout les possibilités que ce côté peut nous offrir (si vous voyez ce que je veux dire!).

Il faut savoir qu’il y a différents aspects dans le hacking! On peut facilement se les imaginer : études des différents systèmes de sécurité, création de programmes, piratage du pc d’un pauvre internaute etc… en général les très bons hackers sont appelés: Elite et sont quasiment inconnus! Si jamais vous en rencontrez un ou que vous avez judicieusement su en reconnaitre un, eh ben gardez ça pour vous. Rien de pire que de s’attirer des emmerdes, de toute la communauté hacker, qu’en dénoncant ” un de l’élite”. Mais un hacker c’est aussi une personne comme vous et moi! On ne doit pas s’imaginer que parce que une personne pirate elle se différencie forcément de la société dans laquelle vous vivez. Elle est contribuable, regarde la télé (Eh oui! Ca lui arrive!), dort dans un lit, etc… mais un hacker c’est aussi une personne aimable, courtoise et pas forcément belliqueuse! Loin de toutes les idées reçues ce serait plutôt le contraire: tendance pacifique. Mais bon… Y’a des exceptions hein! Faudrait pas s’faire des illusions !
3 - Savoir reconnaitre un hacker et devenir hacker :

Bon… Il faut savoir que ce sera pour vous un honneur si vous rencontrez dans votre vie une personne de l’élite.

Donc il sont très très difficilement reconnaissable, de plus c’est pas lui qui vous le dira! Comptez pas là-dessus! Il vous faudra vous contenter de reconnaitre les hackers (je dirais pas les moyens), mais ceux qui ont dépassé ce stade de débutant. Ceux qui savent des trucs, ceux qui peuvent vous apprendre des trucs mais pas des débutants (bien qu’il ne sache pas tout). Donc je vais vous expliquer comment reconnaitre un hacker… Mais d’abord un petit point que je voudrais éclaircir…

J’avais lu un e-mag qui disait: “pour être un hacker il faut mettre des 3 à la place des E, des 5 à la place des S, des 0 à la place des O, de mettre des Z à la fin de chaque mot au pluriel etc…” ce qui pouvait donnait des phrases totalement absurdes. Cet E-mag disait aussi qu’un hacker est fier d’avoir une orthographe complètement nulle et il le montre. Inutile de vous dire que ces informations m’ont donné envie de vomir. rien de pire que de prendre les gens pour des cons. Si une personne arrive sur le chat avec une orthographe pas possible et une écriture de dément, inutile de vous poser trop de questions: CETTE PERSONNE N’EST PAS HACKER ET ELLE LE MONTRE. Rien de moins sérieux qu’une personne faisant exprès d’avoir une orthographe éxecrable et une écriture pas possible. Car un hacker (en général) est quelqu’un de sérieux et essaie d’avoir au maximum la meilleure orthographe et écriture possible! Mais on peut aussi se dire que l’habit ne fait pas le moine. Que les hackers n’ont pas forcément une bonne orthographe. c’est vrai! Il ne faut pas préjuger! mais sachez faire la différence. Mais inutile de vous dire que si un mec arrive sur un chat en gueulant à qui veut l’entendre: “Je suis hacker! Je suis le meilleur des pirates” et autres insanités, cette personne n’a même pas du se poser la question une fois dans sa vie, ce qu’était un hacker… encore un blaireau… Inutile de demander son chemin à cette espèce là! Il y a aussi le mec qui répond n’importe quoi ou qui se ramène avec des nicks trop évidents (ex: hack-man), qui lui doit en savoir un peu plus que l’autre blaireau mais bon… Un peu trop orgueuilleux!

J’ai souvent vu marqué qu’un vrai hacker se devait d’avoir Linux (dans d’autres E-mags Unix), si il voulait devenir un VRAI hacker… Mais pour en revenir à notre premier E-mag (c.f. début chapitre), celui-ci disait: “vous devez aoir Linux sinon c’est inutile d’essayer d’être hacker. Là j’ai vomi :-). Comment peut-on dire des choses aussi absurdes! On peut très bien être hacker et ne pas être sous Linux ou Unix! Pourquoi pas sous Windows. Bien que Linux n’est absolement pas négligeable pour hacker! Mais de là à dire que c’est l’outil qu’on se DOIT d’avoir, là non!!! Rien de plus faux! je le dis, je le répète! Et je continuerais de le répéter! J’avais aussi remarqué que les hackers (les bons et les débutants), mettaient souvent des petits signes distinctifs, dans certains mots, tel que: Micro ou transformait des mots pour en faire des: zindaube, winfuke, microdobe, etc… Nous sommes loin des critères débiles du E en 3 et du O en 0! Non… Là ça a surout un caractère humouristique qui tient à démontrer que l’on se moque bien de windows et de ses trous de sécurité!

Donc pour se démarquer de tous ces débiles qui prenne ça à la légère! Je vais aborder un autre type de personnes qui existent: les lamers. Les lamers sont loin d’être des gros cons… Au contraire. ce sont en général des personnes qui débutent dans le milieu! Il n’est pas exclu de les aider! Il sauront vous le rendre tôt ou tard! Les lamers disent qu’ils aimeraient être hacker et demanderont au premier venu de leur enseigner pour peu que celui-ci s’y connaisse un peu. c’est pourquoi, vous recevrez souvent des messages de lamers qui vous demanderont de leur apprendre le hacking. Evitez de les envoyer balader! Il vous on rien fait ;-). Vous aussi vous avez été lamers au tout début de votre période! Vous aussi vous avez demandé à des gens de vous apprendre! Alors??? Bref… Essayez de vous démarquer des blaireaux sans pour autant ne pas vous amuser à glisser un petit Zindaube dans la conversation :-)!!! (Non. en fait je dis ça car j’aimais pas trop qu’on m’envoie promener au début de mon apprentissage!)

4 - Quels conséquences peut avoir le hacking sur le monde informatique :

Prenons un exemple: vous avez piraté un site quelconque, pris quelques infos modifié une page HTML en mettant des images pornos à la place, etc… En général le résultat ne se fait pas attendre: mise à jour du site, modifications et autres…
Mais le créateur de ce site sait très bien par ou vous êtes entré si il fait une recherche plus appronfondie! Vous pouvez être certain que si tel est le cas, au bout de deux jours, le chemin que vous avez emprunté pour rentrer sur le site sera inaccessible. Mais si vous hacker un site plus important, tels les providers ou les sites de l’état…
Il y aura un soulèvement au niveax des Webmasters. Ils trouveront la faille. De plus vous risquez d’être tracé! donc selon la gravité de la faute vous pourrez rester peinard sur votre chaise, ou vous retrouvez dans la même cellule que K.Mitnick (façon de parler!).

Maintenant à la création d’un nouveau virus, ou d’un nouveau trojan (comme cela a été le cas pour Back Orifice!), celui-ci sera mis a votre disposition sur le net! Au départ aucun anti-virus ne pourra le détecter! Ensuite des ant-virus et autres no-trojans auronts pour but de l’arrêter, enfin, si il est dangereux, ils sera déclaré comme illicite…

Petit à petit les gens seront obligés de s’immuniser, encore et toujours contre une menace invisible, donc incontrôlable… certains sont de vrais paranos du net! Je ne dis pas qu’il ne faut pas s’immuniser! Mais éviter de tomber dans une paranoïa! Bien que ces protections soit néfastes pour les hackers, elles sont bien entendu bénéfiques pour les entreprises et particuliers…
La création de virus et de trojans créé une immunité générale! Si le monde d’internet reste passif et ignorant à cet menace, le jour ou y’aura un gros trojan, vous s’rez pas dans la merde! Vous êtes en quelques sorte protégé pour l’avenir! Comme une maladie dont on trouve par la suite le remède! Que penser donc…?

Quel but ont les hackers (en général!)… Il faut d’abord savoir que certains se prétendent hackers, car ils savent juste nuker, d’autres se disent hacker alors que ils ne sont que des crashers, etc… Le hacker pour une grande partie des hackers, hacke surtout par simple plaisir, et par renfrognement à se trouver face à une protection qui semblerait infranchissable. Par défi aussi. Si on regroupe les 3 ensembles on pourrait dire que c’est le plaisir d’affronter un défi, qui est celui de passer une protection…
Les hackers trouvent ça assez grisant! Ils tiennent aussi à prouver par leurs explois, que rien n’est infaillible! Qu’à chaque nouveau programme, il y a une faille! Que chaque nouveau système d’exploitation a une faille… Que TOUT a une faille (rien n’est infaillible, si vous préférez). Certains (minorité) essayeront de faire progresser les débutants dans ce domaine (en écrivant des E-mags, par l’envoi de mails, par icq etc…). Certains essayent aussi de casser les préjugés que certains hackers ont sur d’autres! Je prends l’exemple d’un mec du nom de Mx (raccourci pour garder en toute intégralité son anonymat). Je l’ai intercepté par icq, en ayant son UIN grâce à un de mes contacts (il est important d’avoir des contacts). Donc j’ai fais 3 requêtes de chat, ensuite je suis venu il m’a presque “ejecté”…
J’ai essayé de lui parler, mais c’est une vraie tête d’âne! J’ai eut le droit a tous les compliments: lamer, débutant, t’es louche, je te fais pas confiance, qui tu es pour m’aborder comme ça??? Ce mec là devait avoir des préjugés du tonnerre de dieu! J’ai bien essayé de lui montrer qu’il ne devait pas se méfier de tout le monde, mais j’en suis toujours au même stade avec lui…
Bon, d’accord ce n’est qu’un exemple et y’en a d’autres. Ah oui! Dernier point pour clore cette introduction: un hacker a pour habitude de ne pas faire chier les gens, sauf nécessité, avec ses techniques de hack et ses programmes! Donc si un jour un mec se ramène vous menaçant de tout et n’importe quoi, et en prétendant être hacker, ne vous y trompez pas: ce n’est point un hacker, mais un emmerdeur! pigé?

Vi ou Vim MiniFaq

Monday, January 12th, 2009

utilisation de vi ou vim
mini faq des commandes de base
on ne parlera pas de copy de bloc ni de tampon dans cette mini faq

//ouvrire editer
pour editer un fichier                        : vi nomdefichier
pour visioner un fichier (lecture seul)                : view nomdefichier
pour Recupere un fichier et le edition apres un crash de vi    : vi -r nomdefichier

//deplacement
pour se deplacer dans un fichier                : Echap + h => gauche;Echap + j => bas;Echap + k => haut;Echap + l =>Droite;
: (les touches de direction marche aussi)
: Echap + H => Deplacement premiere ligne de l’ecran
: Echap + M => Deplacement mediane de l’ecran
: Echap + L => Deplacement derniere ligne de l’ecran

pour se deplacer a la ligne X                    : Echap :x(numero de ligne)

pous se deplacer dans un fichier a la Xn ligne            : Echap + n(nombre)H

//Recherches
pour rechercher un pattern dans un fichier vers l’avant        : Echap + /pattern
pour rechercher un pattern dans un fichier vers l’arriere    : Echap + ?pattern
pour repeter la recherche                     : Echap + n

//Numero de ligne
affiche le numero de la ligne courante                : [Ctrl + g];

//Insertion
Insere du texte avant le curseur                : Echap + i
Insere du texte apres le curseur                : Echap + a
Insere du texte avant le commencement de la ligne        : Echap + I
Insere du texte apres la fin de la ligne            : Echap + A

Insere uen nouvelle ligne en dessous du curseur            : Echap + o
Insere une nouvelle ligne au dessus du curseur             : Echap + O

//Modifier
Remplace un caractere                         : Echap + r
Modifie un mot                             : Echap + cw
Modifie la ligne courante                     : Echap + cc

//Effacer
efface le caractere sous le curseur                : Echap + x
efface le caractere avant le curseur                 : Echap + X

efface un mot                             : Echap + dw
efface la ligne courante                     : Echap + dd

//copier Coller
copie un mot                             : Echap + yw
copie la ligne courante                     : Echap + yy

Colle le texte(ou ligne) copier apres le curseur        : Echap + p
colle le texte(ou ligne) copier avant le curseur         : Echap + P

//Autres commandes
Repete la derniere commande d’edition                : Echap + .
Annule la derniere commande d’edition                : Echap + u
Restaure la ligne courante                     : Echap + U

//Sauvegarder et quitter
sauvegarde et quitte le fichier                    : Echap + ZZ
sauvegarde et quitte le fichier                    : Echap + :x
sauvegarde et quitte le fichier                    : Echap + :wq
sauvegarde  le fichier                        : Echap + :w
sauvegarde le fichier en ecrasant la protection            : Echap + :w!
quitte le fichier sans sauvegarder                : Echap + :q
quitte le fichier en ecrasant la protection            : Echap + :q!