Wednesday, October 6, 2010

Ma première application Android

Suite à la rédaction de mon précédent article, j'ai voulu m'essayer au développement sous l'OS mobile de Google : Android. Cet article a donc pour but de partager ma petite application avec les rouennais et rouennaises pouvant en avoir besoin.

Lien de téléchargement : http://code.google.com/p/rouentransport/downloads/detail?name=TCAR.apk&can=2&q=


Application
L'application et le widget

Tout d'abord je souhaite préciser plusieurs choses concernant mon projet :
 - le design de l'application n'était pas ma priorité
 - la fiabilité des horaires affichés par l'application et le widget ne dépend pas de moi mais de la TCAR (société des Transports en Commun de l'Agglomération de Rouen). De plus les horaires de certaines lignes sont "en temps réel" alors que d'autres sont fixes et ne tiennent donc pas compte des retards possibles.


L'application affiche l'heure de passage prévue suivant la direction (terminus) que vous avez choisi ainsi que à la station à laquelle vous vous trouvez.


Configuration du widget
Widget

Le widget affiche les mêmes informations que l'application avec la possibilité en plus de le rafraichir automatiquement toutes les X minutes.


PS : les tests ont été réalisés sur un Motorola Milestone uniquement, il est donc possible que des bugs existent sur d'autres modèles.



L'installation

Puisque mon application n'est pas disponible sur l'Android Market, il faudra pour l'installer, autoriser l'installation d'applications de sources inconnues (Préférences>Applications>Sources inconnues). 
Ensuite pour l'installer, vous pouvez utiliser par exemple AppMonster (disponible sur le Market). Cette application vous permettra d'installer une application à partir du fichier .apk. Pour celà, dans le menu d'AppMonster, faites Install>Whole SD puis sélectionner TCAR et cliquer sur Install.



Si mon application vous a plu, si vous souhaitez faire des critiques, si vous trouvez des bugs ... n'hésitez pas à me laisser un commentaire.

Friday, September 17, 2010

Profiter du code d'un widget iGoogle

Ayant récemment déménagé à Rouen pour mes études, un de mes premiers besoin était de pouvoir consulter les horaires des transports en commun de la ville. Malheureusement, je n'ai pas trouvé d'application remplissant ce rôle pour mon téléphone sous Android. La seule chose que j'ai trouvé, c'est un lien vers un widget iGoogle. Ce widget permet de connaître les différentes perturbations du réseau de transport ainsi que les horaires des prochains métros, tramways, bus... J'ai donc observé son fonctionnement pour pouvoir obtenir ce que je recherche, c'est-à-dire les horaires des transports.


1 - Analyse du widget

Le widget se situe à l'adresse suivante (http://www.tcar.fr/gadget/gadget.xml). Ce fichier contient un certain nombre de choses dont les adresses d'images, d'une feuille de style, d'un fichier javascript ... Ce dernier est d'ailleurs l'élément le plus important du widget, car c'est au sein de ce fichier que l'on trouve toute les fonctions permettant au widget d'être interactif et de renvoyer des informations à l'utilisateur.

Les fonctions intéressantes du fichier javascript (http://www.tcar.fr/gadget/_js/widgetEngine.js) sont les suivantes :

- getLines() retourne des informations (id de la ligne, numéro de ligne, type, pictogramme) sur chaque ligne du réseau (métro, THEOR, bus, taxi ...)
www.tcar.fr/gadget/getAllLinesWithType.asp

- getDirections() retourne le numéro de ligne, les noms des terminus, et la direction suivant le terminus
www.tcar.fr/WebServices/xgoatService/xLine/getDirections.asp?uId=TCAR01&ligID=6 (exemple pour la ligne de métro)

- getStops() retourne tous les arrêts d'une ligne
www.tcar.fr/WebServices/xgoatService/xLine/getLineStops.asp?uId=TCAR01&ligID=6&ligSens=1 (exemple pour la ligne de métro avec en terminus l'arrêt Technopôle)

- getLineCode() retourne plusieurs informations dont le code de la ligne qui nous sera utile pour récupérer ensuite les horaires
www.tcar.fr/WebServices/xgoatService/xLine/getLineInfos.asp?uId=TCAR01&ligID=6

- callbackLineCode() permet de sélectionner les "identifiants transporteurs" de la ligne à partir du code retourné par getLineCode(). Cette fonction récupère seulement les deux derniers chiffres du code de la ligne.

- updateScheduleData() retourne les horaires de tous les métros, bus ... passant après l'heure actuelle (jusqu'à la fin de la journée). Suivant la ligne, les horaires peuvent être actualisé en tant réel ou non.
www.tcar.fr/SiriSoapClient/getStopTimetable.aspx?uId=INEO:Operator:Cityway:LOC&ligno=90&ptano=10126&sens=1 (en temps réel)
www.tcar.fr/WebServices/xgoatService/xHour/getLineStopNextHours.asp 


2 - Script python

J'ai fait un petit script en python afin de tester les éléments de la partie précédente. Le script n'est pas du tout flexible car il récupère l'horaire du prochain métro en direction du sud de Rouen et passant à l'arrêt le plus proche de chez moi. Lorsque le script à trouvé l'horaire du prochain métro, la synthèse vocale annonce l'horaire et la destination de celui-ci (fonctionnel sous Mac grâce à la commande "say").



Si tout se passe bien vous devriez entendre (sous Mac) une phrase semblable à celle-ci : "Next subway is at 20 hours 45 minutes for Technopôle."

Cet article et ce script ne me permettent pas de consulter les horaires des prochains métro à partir de mon téléphone comme je le souhaite, mais cela me permet d'avoir une meilleure idée de comment je pourrais  faire pour développer un widget ou une application pour Android (si je trouve le temps).

Maj : Il existe un site internet adapté aux téléphones mobiles pour consulter les horaires, cependant il faut entrer le nom de l'arrêt pour en connaître les horaires, ce qui est peu pratique lorsque l'on n'est pas sûr du nom, de l'orthographe ... 

Saturday, July 24, 2010

Obtenir l'accès à un réseau Wifi sans effort ou presque

Il y a quelques mois, suite à un problème de carte graphique sur mon macbook (et oui, il est équipé de la fameuse 8600M GT, victime d'un problème de surchauffe) je l'ai emporté chez un réparateur agréé par Apple pour faire un diagnostique. Par chance, la réparation fût gratuite grâce à la reconnaissance d'Apple du problème sur les cartes graphiques Nvidia. Enfin bref, ceci n'est guère important, venons en à la partie la plus "fun" de l'histoire.


Donc quelques semaines après avoir récupéré mon mac, je suis allé dans l'application "Keychain Access", fournie avec Mac OS, qui stocke tous les mots de passe saisis dans les applications et que l'on ne souhaite pas ressaisir à chaque instant, mais aussi ceux des partages réseaux (ex : serveur SMB ...) et les clés des points d'accès Wifi. C'est ainsi que j'ai pu trouver celui utilisé dans le centre de réparation où mon petit macbook avait séjourné quelques jours.




Quelques infos concernant la clé, elle fait dix caractères (lettres et chiffres) dont le nom du réparateur ce qui est pas top niveau sécurité (en plus d'entrer cette clé sur les ordinateurs des clients ...). J'espère pour eux qu'ils n'enregistrent pas la clé de leur réseau Wifi sur tous les ordinateurs qu'ils réparent, autrement ils se mettent réellement en danger.

Pour conclure, on pourrait se poser la question si au niveau de la loi, sachant que la clé m'a été (involontairement) communiquée, j'ai le droit d'utiliser leur réseau pour accéder à Internet ?

Saturday, July 10, 2010

Ann's Aurora, un challenge d'investigation numérique proposé par le SANS

Au mois de juin, le SANS a proposé sur son site un challenge d'investigation numérique sur une capture de traffic réseau. Ce challenge n'est pas le premier que le SANS organise, mais c'était d'après eux l'un des plus compliqué.
Le but de ce challenge était donc de répondre a un peu plus de 10 questions en analysant le fichier evidence06.pcap. Dans cette capture, seulement 2 machines intéragissent entre elles, l'une est victime (10.10.10.70) d'une attaque similaire à "l'opération Aurora" et l'autre (10.10.10.10) est la machine contrôlée par l'attaquant.

Si vous souhaitez faire ce challenge, ne lisez pas la suite avant d'avoir cherché, car je vais vous donner les réponses et indiquer les erreurs que j'ai commis.



1) What was the full URI of Vick Timmes' original web request? (Please include the port in your URI.)
Answer : http://10.10.10.10:8080/index.php

2) In response, the malicious web server sent back obfuscated JavaScript. Near the beginning of this code, the attacker created an array with 1300 elements labeled "COMMENT", then filled their data element with a string. What was the value of this string?
Answer : vEI

3) Vick's computer made a second HTTP request for an object.
   a) What was the filename of the object that was requested?
Answer : index.phpmfKSxSANkeTeNrah.gif

   b) What is the MD5sum of the object that was returned?
Answer : df3e567d6f16d040326c7a0ea29a4f41

4) When was the TCP session on port 4444 opened? (Provide the number of seconds since the beginning of the packet capture, rounded to tenths of a second. ie, 49.5 seconds)
Answer : 1.3 seconds

5) When was the TCP session on port 4444 closed? (Provide the number of seconds since the beginning of the packet capture, rounded to tenths of a second. ie, 49.5 seconds)
Answer : 87.6 seconds

6) In packet 17, the malicious server sent a file to the client.
   a) What type of file was it? Choose one:
  • Windows executable
  • GIF image
  • PHP script
  • Zip file
  • Encrypted data
Answer : Windows executable

   b) What was the MD5sum of the file?
Answer : b062cb8344cd3e296d8868fbef289c7c

7) Vick's computer repeatedly tried to connect back to the malicious server on port 4445, even after the original connection on port 4444 was closed. With respect to these repeated failed connection attempts:
   a) How often does the TCP initial sequence number (ISN) change? (Choose one.)
  • Every packet
  • Every third packet
  • Every 10-15 seconds
  • Every 30-35 seconds
  • Every 60 seconds
Answer : Every third packet

   b) How often does the IP ID change? (Choose one.)
  • Every packet
  • Every third packet
  • Every 10-15 seconds
  • Every 30-35 seconds
  • Every 60 seconds
Answer : Every packet

   c) How often does the source port change? (Choose one.)
  • Every packet
  • Every third packet
  • Every 10-15 seconds
  • Every 30-35 seconds
  • Every 60 seconds
Answer : Every 10-15 seconds

8) Eventually, the malicious server responded and opened a new connection. When was the TCP connection on port 4445 first successfully completed? (Provide the number of seconds since the beginning of the packet capture, rounded to tenths of a second. ie, 49.5 seconds)
Answer : 123.7

9) Subsequently, the malicious server sent an executable file to the client on port 4445. What was the MD5 sum of this executable file?
Answer : b062cb8344cd3e296d8868fbef289c7c

10) When was the TCP connection on port 4445 closed? (Provide the number of seconds since the beginning of the packet capture, rounded to tenths of a second. ie, 49.5 seconds)
Answer : 198.4


J'ai donc commis 2 erreurs : l'une à la question 2 et l'autre à la question 7a. 
Pour la seconde question, j'avais indiqué une chaine de caractères commençant par "\u0c0f\u0c0d..." car au début, le tableau est bien initialisé avec "vEI" mais plus loin dans le code javascript cette chaine de caractère est remplacée par celle que je croyais être la bonne réponse. 
Concernant la question 7a), Wireshark m'indiquait "Sequence number : 0 (relative sequence number) ce qui m'a induis en erreur. Pour trouver le numéro de séquence correct, il fallait que je regarde le contenu du paquet au format héxadécimal puis que je convertis en décimal, la valeur correspondant au numéro de séquence recherché. Une autre solution plus intuitive aurait été de désactiver l'option "Relative sequence numbers and window scaling" en faisant un clic droit dans la partie affichant une vue détaillée du paquet puis en allant dans le sous-menu "Protocol Preferences".

J'ai trouvé ce petit challenge très intéressant et j'espère que d'autres suivront, afin que cette fois-ci je sois dans les finalistes :)

Billet annonçant les gagnants du challenge : http://forensicscontest.com/2010/07/09/puzzle-6-winners

Thursday, June 17, 2010

OpenOffice en mode pare-feu : OOwall

Début avril 2009, lors de la création du projet de loi Hadopi, Christine Albanel, notre (ex) ministre de la culture nous apprenait que son ministère était protégé par le pare-feu OpenOffice. A l'époque cet événement a fait un gros buzz sur le net, car des millions de personnes utilisent la suite bureautique OpenOffice, mais personne ne savait comment l'utiliser comme pare-feu (a part Christine).


Depuis hier, la technique utilisée par le ministère de la culture (joke inside) a été révélée par Pierre Chifflier (alias Pollux), un expert en sécurité français.

Pour faire fonctionner ce pare-feu next-gen, on a besoin de :
- OpenOffice qui permet de choisir les ports à filtrer et de générer en temps réel des graphiques récapitulant les paquets bloqués et ceux autorisés
- python-uno pour manipuler OpenOffice
- nfqueue afin de filtrer les paquets en langage de haut niveau
- netfilter

Ci-dessous, un schéma montrant les relations entre les différents composants de ce pare-feu :
Sur le schéma, on peut remarquer une communication client-serveur XML-RPC, elle permet aux outils de la partie "pare-feu" exécutés en root, de communiquer avec la Console d'administration sans que cette dernière ne soit elle-même exécutée en root.

Ci-dessous, un aperçu de l'interface "d'administration" du pare-feu OpenOffice :



Pour ceux qui souhaitent avoir plus d'informations et télécharger les sources d'OOwall, cela se passe sur le blog de Pollux.

Thursday, May 27, 2010

Tabnabbing, the future of phishing attacks

Aza Raskin has discovered a new kind of phishing attack which permits to deceive the user when he navigates on the attacker's website and he determines to look a website in an other tab. Actually, it works also if the user use multiple browser windows but it's less stealthy. This attack works on all browsers (there is a little bug with the favicon on Safari).

Tabnabbing is very simple to understand and implement. So when the user navigates on the attacker's website, a javascript code is executed and wait that the user go on an other tab (without close the first). If the first tab has lost the focus for more than 5 seconds, in the second tab, the favicon, title and content of the webpage change thanks to the javascript code. There is little chance that the user see the title and favicon changement because he is navigating the second website. When the user come back to his first tab, he will see the "new page" wich can look-like to his webmail. And if he logs on it, the attacker will get his credentials.

If you want to test this you can go here or you can see his Proof of Concept in video :


This new phishing attack can be improved with an other technique (using Javascript and CSS), which permits to know some websites the user has visited before.


Raskin's article :  http://www.azarask.in/blog/post/a-new-type-of-phishing-attack/
His Wikipedia's page : http://en.wikipedia.org/wiki/Aza_Raskin
His Twitter : http://twitter.com/azaaza
POC : http://www.azarask.in/projects/bgattack.js

Tuesday, May 11, 2010

Analyse comportementale d'un malware



1 - Mise en situation

Depuis quelques jours déjà, lorsque je me connecte avec mon logiciel de messagerie instantanée préféré (Adium :)) sur MSN je reçois de la part d'un de mes contacts des messages me proposant d'aller voir des photos. Je pense que vous avez déjà reçu des messages de ce type car malheureusement beaucoup de gens tombent dans le panneau et cliquent sur ces liens. Puisque ce type de messages m'agace, j'ai voulu regarder de plus près comment cela fonctionne et pourquoi tant de gens se font contaminer par ce type de malwares utilisant les logiciels de messagerie instantanée tel que MSN pour se répandre.

Dans le cas de ce malware, j'ai reçu par l'intermédiaire de mon contact plusieurs messages du type "regardez cette photo :D http://tinyurl.com/###" ou ### varie d'un message à l'autre. Ces liens ont rapidement été identifiés comme une utilisation illégale du service TinyURL et ne sont plus actifs. Les 2 liens TinyURL que j'ai testé renvoyais vers des URLs différentes et proposaient donc de télécharger des fichiers différents : un nommé IMAGE.JPG.exe et l'autre pict20100501_jpg.scr (format des écrans de veille Windows). Ces 2 fichiers sont hébergés sur le même serveur hébergé au Royaume Uni.

On peut remarquer que l'auteur du malware essaie de tromper l'utilisateur quand au type réel du fichier. Par exemple, le premier est nommé IMAGE.JPG.exe ce qui lorsque l'on active pas l'affichage des extensions sous Windows donne IMAGE.JPG, donc l'utilisateur croit avoir affaire à une vraie image et l'ouvre inconsciemment. Concernant le second fichier, l'icone utilisée est la même que celle des images de type JPEG et comme pour le premier fichier, l'auteur ruse sur le nom de fichier, ce qui donne un fichier visuellement très proche d'une vraie image. Cependant, je ne comprend pas pourquoi l'auteur n'a pas utilisé l'icône des fichiers JPEG pour le fichier exécutable et pourquoi il a terminé le nom du second fichier par _jpg.scr et pas par .jpg.scr afin de tromper plus facilement la victime... 

Petit conseil : si vous recevez un message écrit en anglais d'une personne française (ou qui ne parle pas anglais) ou si le message vous vouvoie alors que le message provient d'un contact proche qui habituellement vous tutoie (comme c'est le cas ici), il y a de grandes chances pour que ce message provienne d'un malware.


2 - Analyse comportementale du malware

2.1 - Au niveau du système de fichiers

Pour comprendre le fonctionnement de ce malware, j'ai utilisé un Windows XP SP2 Professionnel de base (sans mises à jour) dans une machine virtuelle (VMware Fusion) afin de pouvoir facilement contrôler le risque lié à ce logiciel malveillant. VMware permet aussi de faire des snapshots ce qui est très pratique pour jongler entre plusieurs "états" de la VM.

J'ai commencé par observer ce que faisait ce malware lorsqu'on le lançait. Je me suis donc muni d'outils tels que Regshot et CaptureBAT ce qui m'a permis de voir que le malware modifiait le registre Windows et créait le fichier C:\WINDOWS\secfil.exe. Celui-ci est invisible dans explorer.exe (même avec l'affichage des fichiers cachés activé) et dans l'interpréteur de commande cmd.exe par contre l'autocomplétion dans cmd.exe révèle sa présence. On y a également accès à partir d'un liveCD linux de type Backtrack ou autre.


Ce malware utilise des techniques de dissimulation semblables à celles utilisées par les rootkits afin de se cacher dans le système de fichiers, cependant il est visible dans la liste des processus en cours (ex : Gestionnaire des tâches).
Le fichier secfil.exe est exactement le même que IMAGE.JPG.exe, car ce dernier lors de sa première exécution s'est auto-copié dans C:\WINDOWS afin que le système victime soit toujours infecté après la suppression du fichier original.


2.2 - Dans le registre Windows

Au niveau du registre Windows, le malware s'autorise auprès du pare-feu Windows grâce à l'ajout de ces valeurs :

HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\C:\Documents and Settings\Administrateur\Bureau\IMAGE.JPG.exe: "C:\Documents and Settings\Administrateur\Bureau\IMAGE.JPG.exe:*:Enabled:Userinit"

HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\C:\Documents and Settings\Administrateur\Bureau\IMAGE.JPG.exe: "C:\Documents and Settings\Administrateur\Bureau\IMAGE.JPG.exe:*:Enabled:Userinit"

Si on déchiffre ceci, on voit que le malware s'autorise à accéder à n'importe quel machine accessible sur le réseau local et sur Internet (*), que la règle est activée au niveau du pare-feu (Enabled) et que son nom est "Userinit".

Il modifie également une valeur du registre pour être exécuté au démarrage de Windows (avant explorer.exe) :

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit: "C:\WINDOWS\system32\userinit.exe,C:\WINDOWS\secfil.exe"


2.3 - Mais comment communique t-il ? 

En analysant les paquets sortants avec Wireshark j'ai pu voir qu'au démarrage de ma VM, le malware se connecte à un serveur IRC qui permet au botmaster de donner des ordres à tous les bots dont ma VM. Le malware ne se connecte pas toujours sur le même serveur IRC, ainsi j'en ai trouvé 3 :

- 2.nomdedomaine.com (situé au Royaume-uni, et enregistré le 22-03-2010)
- irc.nomdedomaine0.com (situé à Chicago, USA)
- irc.nomdedomaine000.com (situé en Serbie Monténégro)

Il en est de même pour le port de destination qui est soit 1234 soit 1241.



Sur certains serveurs IRC auxquels il se connecte, une phase d'authentification a été mise en place grâce à la commande IRC "PASS". Après, le malware choisit un nickname au format suivant [CODE_PAYS|CODE_OS]NOMBRE_ALÉATOIRE.  Pour mon cas un des nicknames fut : [FRA|XP]5531626, puis il se connecte au canal "#dl#". Ensuite, le malware reçoit à plusieurs reprises un message privé (PRIVMSG) envoyé par différents nicknames (botmasters) dont un fi2ani, contenant un lien vers d'autres fichiers exécutables situés sur des serveurs en Allemagne et aux Etats Unis (à Saint Louis et Chicago). 



Un des liens déclenche le téléchargement d'un fichier exécutables situé sur un serveur web qui une fois enregistré dans le répertoire des fichiers temporaires du compte local, s'exécute et commence a exploiter ma VM. Il se connecte notamment à un second serveur IRC de contrôle (irc.nomdedomaine00.com, encore situé à Chicago) et télécharge d'autres fichiers exécutables. Lui aussi modifie le registre afin de s'autoriser auprès du pare-feu et de se lancer au démarrage grâce à l'ajout d'une valeur dans la clé de registre suivante : HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run.


3 - Remarques

J'ai testé ce malware au service VirusTotal pour avoir un aperçu des différents anti-virus reconnaissant ce fichier comme un malware, et à ma grande surprise seulement 10 des 41 testés identifient le fichier comme une menace potentielle. A ce jour, AntiVir, Avast, BitDefender, ClamAV, DrWeb, GData, Kaspersky, McAfee, Microsoft, Symantec, TrendMicro ne reconnaissent pas ce malware alors qu'ils sont très présent sur le marché des solutions antivirales, ce qui est relativement inquiétant. Si vous souhaitez accéder au rapport généré par VirusTotal, il y a un lien à la fin de l'article.

Il y a une chose que je n'ai pas comprise, c'est pourquoi l'autorisation au niveau du pare-feu est attribuée au fichier IMAGE.JPG.exe (fichier exécuté par l'utilisateur) alors qu'à chaque démarrage c'est le fichier secfil.exe qui est automatiquement exécuté. De plus, quand je rétablie les paramètres par défaut du pare-feu (donc IMAGE.JPG.exe n'a plus d'autorisation), la communication entre secfile.exe et les différents serveurs IRC est toujours possible. Si vous avez des réponses à mes questions, n'hésitez pas à laisser un commentaire, je vous en serais très reconnaissant. 


4 - Conclusion

Ce qu'il faut retenir de cette analyse comportementale c'est que les cybercriminels (je préfère utiliser ce mot plutôt que "pirates" car il est plus clair aux yeux de tous) rusent afin de piéger l'utilisateur qui, s'il n'est pas conscient des risques auxquels il est exposé sur Internet, sera une proie très facile. Ici, l'utilisation de l'ingénierie sociale (social engineering) pour répandre le malware de type "bot" en est un bon exemple. De plus, le nombre de serveurs utilisés et leur dispersion montrent à quel point ces cybercriminels sont organisés. Pendant cette phase d'analyse, je n'ai pas observé d'activité de propagation  de la part du logiciel malveillant présent dans ma machine virtuelle. Les prochaines étapes seront (peut-être) l'analyse du code afin de mieux comprendre son fonctionnement et découvrir les techniques utilisées par les développeurs et l'analyse d'un des fichiers téléchargés par le malware.



Localiser une ip : http://www.ip2location.com/


Vidéo sur le même sujet (en anglais) :

Friday, April 16, 2010

Hackito Ergo Sum, Day 3

The last day of HES has begun with a conference about new generation of botnets presented by Itzik Kotler and Ziv Gadot from Radware. According to their presentation, lots of technologies have been introduced by botnets so it's one reason why they are interested. Of course, botnets are also re-using technologies invited by researchers and others people. Botnet masters use different kinds of protocols to communicate with theirs botnets, for example HTTP (Twitter...), IRC or P2P network architecture can be used. If we analyse Conficker, we can see that in its 3 first versions (A, B, C), it was based on HTTP and random domain name to communicate. Last versions (D, E) was based on a more flexible communication way : the P2P.
An important thing that a botnet master wants for his botnet is that it is SPOF (Single Point Of Failure) resilient. The utilization of protocols like HTTP permits to blend botnet traffic into the common traffic which will pass organization security policy, work behind NAT and minimize potential network footprint.
Their aim was to do a blend botnet with SPOF resilience, so they have looked to communication methods which respond to this criteria :
- Internet clipboard e.g. pastebin.com
- Disposable E-mail Address (DEA)
- User generated content e.g. comments on cnn.com
- Url shortening e.g. tinyurl.com

They have introduced the "room concept" which correspond to the communication method. It's possible to use private room to communicate with one bot, this will send an unicast message. The negotiation of the room between the bot and the bot master is a 4 steps action, I advise you to look slides it's very well explained. Their proof of concept is written in python and is called Turbot (this name has no relation with the speed of their botnet, because at this moment it's quite slow). We didn't have a demonstration of their botnet POC because of a network problem at the conference. [Slides]



 After the lunch, Renaud Lifchitz has started the afternoon with a very interesting talk which was the first in french (2 others will follow). First, I will define "clock-skewing". This is a little clock variation in comparison to a reference clock. The aim is to create a footprint from clock-skewing (because all clock are different), so the measure precision is very important.
A computer has 2 clocks :
- hardware clock (Real Time Clock)
- software/system clock managed by the OS
Here, it's the second clock which is interesting. To measure clock-skewing, Renaud takes an interest in NTP protocol which contact atomic clock using UDP on port 123. According to the time difference between the atomic clock and the system clock, NTP will increase or slow down clock rate to put right the time (if time changements will be curt, some processes could be disturbed). NTP is the most precise method to measure time, but it's also possible by sniffing packets or by sending ICMP Timestamp request (Type 13, Code 0) and answer is ICMP Timestamp reply (Type 14) wich return number of millisecond after midnight. So Renaud has chosen NTP for its precision.
These are steps to fingerprint a machine :
- every 5 seconds, adjust the clock (of your computer) with a NTP server and save victim's timestamp
- after 1 or 2 minutes, you will be able to have a precise fingerprint (which correspond to an average skew).

"more imprecise is victim's clock, more precise is fingerprint"

This method can be used to identify a stolen hardware on a LAN (even if IP address, MAC address and hard drive have changed it works, but not if operating system has changed), detect virtual machines (all VM can have the same clock than host machine) ... But there are some disadvantage with this method, it's imprecise on the Internet and results can be affected by network latency, temperature variation, altitude and victim's activity. To protect you against this fingerprint method, you can often sync your clock (every 5-10 seconds) and disabled TCP/ICMP Timestamp Request/Replies. [Slides]



This talk has been followed by another french one named "A5/1 application & crack via GPU" and presented by Gloire Gwendal (Kalkulator’s Knights Project). He has presented the A5 protocol family :
- A5/1 http://en.wikipedia.org/wiki/A5/1
- A5/2 http://en.wikipedia.org/wiki/A5/2
- A5/3 http://en.wikipedia.org/wiki/A5/3
A5/1 is a weak encryption algorithm wich use only a 64 bits key in theory (and 54 in practice because 10 are fixed to zero). Because of its weakness, lots of researcher have tried to owned A5/1 :
- 1997 : first attack, A5/1 complexity reduction
- 1999 : publication of A5/1 which has been discovered by Reverse Engineering
- 2000 : some complexity reductions
- 2003-2004 : attacks on the key
- december 2009 : Karsten Nohl announced his attack during the Chaos Computer Congress. It's a rainbow table attack which can be done in 30 minutes. A demonstration will be done in august 2010.
There is few risks to see attacks on A5/1 in a near future, because a superpower calculation is needed (GPU cluster, FPGA cluster ...) and rainbow table generation needs some months. [Slides]


Then Julien Vanegue from Microsoft has talked about "Automated vulnerability analysis of zero-size heap allocations" [Slides] and this conference day ended with the conference "Stack Smashing Protector in FreeBSD" presented by Paul Rascagneres (in french). [Slides]


These 3 days at Hackito Ergo Sum in Paris was very interesting, I'm very happy to have assisted to these different talks and I think that I'll be present at HES2011. I want thank HES team for its work and I want to say : "See you in 2011 ;)".

If you read some errors or want make some remarks, don't hesitate comments are here for that.


Tuesday, April 13, 2010

Hackito Ergo Sum, Day 2

The first speaker of the second day was Jorge Luis Alvarez Medina from Core Security. His talk was named "Internet Explorer turns your personal computer into a public file server" and it was the same theme that he has presented at the Black Hat DC 2010 (February 2-3th 2010). His talk explained how it is possible to blindly read every files (navigation history, cookies ...) on the victim's hard drive.

He has begun by presenting security implementations of IE : security zones, zone elevation attack (a web page in a given security zone loads a page from a less restrictive zone) and MIME type detection. The simplest scenario he has described is the following :
1- The attacker put a specific HTML file in the victim's shared folders
2- The attacker send a link to a malicious site to the victim
3- The malicious webpage redirects the navigation flow towards the uploaded file
4- HTML/script code runs in the context of 127.0.0.1

He has continued with a demo with a BeEf module specially developed for this vulnerability. So if you want to protect your computer about this vulnerability, you can for example :
- Set to high the security level of Internet and Intranet zones
- Use Internet Explorer in Protected Mode
- Disable administrative shares
- Change your browser :)

Jonathan Brossard @ HES2010 on TwitpicThe last talk of the morning was presented by Jonathan Brossard from P1 Security and was entitled "Breaking Virtualization by switching to Virtual 8086 mode". He has begun his talk by the definition of virtualization and the presentation of the different kinds of it (full virtualization, paravirtualization). Then he has presented an overview of the different kinds of virtualization vulnerabilities like :
- privilege escalation in a virtual machine
- from one VM, attack an other VM
- do a DOS attack on the host to disrupt VMs
- inside a VM to access the host
During his researchs, Jonathan has fuzzed Virtual Box in which he has found 2 bugs in the hypervisor and a bug concerning the guest machine in Virtual PC. He ended his presentation with a demonstration in which the exploitation of a bug he has found in vserver crash the host machine (his laptop in this case). [Slides]


During the lunch time, I've assisted to the lockpicking workshop which was mainly based on practice. I've learned how to build lockpicks and I've successfully lockpicked one lock.


The afternoon has begun with a conference of Matthieu Suiche from MoonSols about Mac OS X Physical Memory Analysis. He was talking about physical memory analysis on x86/x64 Intel processors macintosh (not PowerPC) running Mac OS 10.5 (Leopard) or 10.6 (Snow Leopard). Lots of informations can be found during analysis of memory like syscalls, processes, machine informations (minor & major OS version, kernel version) ... He is also able to found the password of an user account (used to log on his mac) just in analysing the memory. [Slides]


The next talk was presented by Sandro Gauci and was named "Attacking VoIP – attacks and the attackers".  He has introduced the SIP, SIP scanning and tools like SIPVicious and VoiPPack for CANVAS. [Slides]


Then Laurent Gaffié has started his "Fuzzing the SMB case" conference by the presentation of this old protocol. His approach for his research was the following :
- RFC, books and Microsoft documentation reading
- Set a lab representing a company network with Windows 3.1 to Windows 7
- Fuzz the different implementations of SMB
During his demonstration, the bug discovered has permitted to him to cause a bluescreen from a remote pc in few seconds on a victim Windows 7 machine. At this moment, he's working with Microsoft teams to resolve this bug and it should be patched next Tuesday (MS10-020). He has also discovered lots of other bugs in Vista, XP, 7, 2008 Server, Samba and Netware 6.5 SP8. Because packets are very small, all these bugs have taken less than 2 minutes to be found by Laurent's tools. [Slides]


Lutz Böhne has presented the last talk of the second day which was entitled "Peeking into Pandora’s Bochs: instrumenting a full system emulator to analyse malicious software".  Pandora’s Bochs is an automated unpacker written in python. [Slides]


Sunday, April 11, 2010

Hackito Ergo Sum, Day 1

Hackito Ergo Sum is a conference in IT security and hacking during 3 days in Paris. This year, it was the first edition of HES and it was from April 8th to 10th 2010. Between 50 and 70 of professionnal or passionnate people were present to assist to this event.



The first day began with Jeremie Zimmerman from "La quadrature du net" which is an organization which defense citizen rights and freedoms on the Internet. This organization have been founded in 2008 by 4-5 persons. They tell them "law hackers" i.e. they search incoherence in french and european laws. According to Jeremie, there is one Internet, but for example, in China, internet users aren't using the Internet but the "Chinternet" because of the censorship applied by the autorities (see the Tiananmen case). The second example that he has quoted was about mobile Internet. He said that's not the Internet because we can't use P2P, newsgroups and some operators decrease traffic rate.


The second talk of the morning was named "Getting in the SS7 kingdom: hard technology and disturbingly easy hacks to get entry points in the walled garden" and was presented by Philippe Langlois from P1 Security. SS7 (Signaling System 7) is a group of phone protocols which are used in most of phone network in the world. At the moment, pentests are very rare on phone networks, like on IP networks in the 80's but should increase in the next 10 years. It's possible to scan and inject on these networks, for exemple we can use SCTPscan tool (developed by Philippe and included in Backtrack 4) to scan SCTP equipments. SCTP (Stream Control Transmission Protocol) is a protocol of transport layer of the OSI model like UDP or TCP protocols. To scan a SCTP equipment, we need to send an "INIT" packet. If the port is closed, it replies by an "ABORT", otherwise it replies with an "INIT-ACK" for a legitimate client and it doesn't reply to the attaquer. [Slides]


The afternoon began by a conference about the FPGA security challengeSebastien Bourdeauducq aka lekernel has briefly explained what is FPGA and then talked about the challenge which was available during the 3 days of HES 2010. If you need more informations on FPGA, I recommend you to go on Wikipedia. The challenge was composed of 6 levels with an incrementation of the difficulty level. [Slides]


The conference following the Sebastien one's was presented by Benjamin Henrion. He has talked about the modifying/hacking of one of the most widespread Linux equipement in Belgium : the Belgacom Box 2. This box is made by Sagem and have a similar hardware with Orange's Livebox. It runs an OpenRG Linux and is equipped of a VDSL interface, VoIP and an Atheros card. By default, telnet is opened and a default combinaison of login/password is used (admin/BGCVDSL2). He has also found a method to have a full admin access on the web interface just by putting login and password in the url as GET parameters. It is possible to load custom code on it, via USB key, telnet or tftp. For example, Benjamin has successfully transformed his box in a torrent box with Transmission with cli and web access, and has installed tools like Tcpdump and Airodump ... [Slides]


The third conference of the afternoon was about the utilization of artificial intelligence techniques to improve pentesting automation. The author of this talk, Carlos Sarraute, came directly from Argentina and works in Core Security, editor of the penetration testing product Core Impact. His talk has begun by a quick overview of pentests frameworks, the evolution of pentests and the description of an attack planning. He has talked about the PDDL (Planning Domain Description Language) and how we can use AI for pentests. For example, we can use different object types (host, network, port ...) and use predicates like TCP connectivity ... [Slides]


The last conference of this day was entitled "Evolution of Microsoft security mitigations" and was presented by Tim Burrell from Microsoft. Because I haven't assisted to it, I can't present you this talk. [Slides]


All comments about what I've written are welcome.


Conference's Website : http://hackitoergosum.org/
FPGA security challenge : http://lekernel.net/blog/?p=975

Saturday, April 3, 2010

My first post ...

Welcome to my blog :)
Here I will post some articles on computer security and computer science in general. Some posts will be in english, others in french and maybe some in both languages.

Here some links about me :

In few weeks I'll assist to Hackito Ergo Sum, an IT security conference in Paris, so next posts will talk about this event that promise to be awesome.
Thank you to read my blog.