imagelogo
actualite

Concours Insomni'hack : Ethical Hacking contest 2009

bullet Insomni'Hack 09

Le 6 février 2009, SCRT a organisé  la  deuxième édition du  concours de Ethical Hacking de Suisse romande.

Le concours est maintenant terminé.

Plus d'une centaine de participants se sont affrontés sur différentes épreuves touchant à divers domaines de la sécurité des systèmes d'information.







gf

 
           g


 
                nm



                         


bulletTop 10 participants

#PseudoPoints
1 racinedestyle 3750
2 DC4131 3450
3 Samsa 3050
4 Balda 2350
5 pseudo 2150
6 Q 2050
7 ak 2050
8 FUN 2050
9 Flav 2050
10 gfo 2050

bulletSolutions des épreuves

Les solutions de plusieurs épreuves du concours sont présentées ci-dessous.
Epreuve Téléchargement
1.1 Sammy -
Solution présentée pendant le concours
2.2 Porte 1 Download
Cliquez ici pour dévoiler le code source du crackme.
1.3 Porte 2 Download
Cliquez ici pour dévoiler le code source du crackme.
 
2.1 Henry Payr -
Solution présentée pendant le concours
2.2 Comptabilite -
???
2.3 Mémoire++ -
???
2.4 inserta -
 
3.1 Contre-espionnage -
Solution présentée pendant le concours
3.3 Trinity est la clé Download
En utilisant la même technique qu' à l'épreuve 3.2 (accès direct à un fichier contenu dans le répertoire include), il était aisément possible d'accéder au compte de l'agent xt739kn. Sur ce compte il était alors possible de récupérer trois fichiers: vsc.py, cipher.txt et key.txt. Le premier de ces fichiers est un scipt (python) implémentant un algorithme de chiffrement, le deuxième est un message chiffré à l'aide de ce script et le troisième dissimule (stéganographie) la clé de chiffrement utilisée pour chiffrer le précédent. C'est ce troisième fichier (key.txt) qui nous intéresse. En prenant les caractères qu'il contient par blocs de trois, sans chevauchement - trinity est la clé - on note que tous les trigrammes observés apparaissent une seule fois, à l'exception du trigramme sBl qui apparaîl;t 22 fois. En comptant le nombre de trigrammes (c'est à dire, le nombre de caractères, divisé par trois) entre les occurences de sBl on observe alors des valeurs qui correspondent à des charactères ASCII imprimables. La concaténation de ces caractères révèle la clé de chiffrement: /*pr3veren9esR0x0rz*/. Le procédé est illustré ci-dessous, pour les deux premiers caractères de cette clé:

... OQosBlmvtYEVNFiXjnJLfJqmWtFCQljmLpvlSQJXSxJjBDbmLSrEpBdKzQFfHivRdYXehtFy YkRKThuyWsjhAhvaJiypXpMQkYFpXHlwGMtuqD lisOjLRhexrxyFmmrBmJQJzmDoyXMAsMdU
    PedsBlZhieeCxksdjarYRvZwbtjZwfIQQeWCIrLaTrbadgtManwfPIZXjK nJSOyqkepixayBbVfiMCKtipnlnVbMthVynEJXaXCYmLkyilLrINKXwj SbYsstZOCwAHFXarCXsBlhEAapfeZrxoH ...

[*] len("mvtYEVNFiXjnJLfJqmWtFCQljmLpvlSQJXSxJjBDbmLSrEpBdKzQFfHivRdYXehtFyYkRK ThuyWsjhAhvaJiypXpMQkYFpXHlwGMtuqDlisOjLRhexrxyFmmrBmJQJzm DoyXMAsMdUPed") = 141
[*] (141 / 3) = 47
[*] ASCII(47) = "/"

[*] len("ZhieeCxksdjarYRvZwbtjZwfIQQeWCIrLaTrbadgtManwfPIZXjKnJSOyqkepixayBbVfiMCK tipnlnVbMthVynEJXaXCYmLkyi lLrINKXwjSbYsstZOCwAHFXarCX") = 126
[*] (126 / 3) = 42
[*] ASCII(42) = '*'


Cette clé peut ensuite simplement êl;tre utilisée pour déchiffrer le fichier cipher.txt, à l'aide de vsc.py, révélant ainsi la clé de l'épreuve: Y3T4N0TH3RKEY1028.
 
4.1 A l'aide! Download
En visualisant les logs Apache, il est possible de retrouver la trace d'une exploitation d'une faille include qui a permis à l'attaquant de tout d'abord créer un shell php (fichier pwn3d.php).

Suite à cela, en utilisant ce shell, l'attaquant rajoute une ligne à la fin du fichier .bashrc qui redéfinit la commande "sudo".

La nouvelle commande ressemble fortement à l'ancienne, mais au lieu d'effectuer un vrai sudo, le mot de passe est rajouté dans un des fichiers du site web. Lorsque l'utilisateur légitime se connecte ensuite et effectue la commande sudo, il copie sans le savoir son mot de passe dans le fichier que l'attaquant peut ensuite consulter quand bon lui semble.
4.2 Webmail -
En arrivant sur le webmail du hacker, on se rend compte qu'il y a peu de possibilités. La seule fonctionnalité du site, mis à part la connexion en utilisant un mot de passe inconnu, est la récupération d'un mot de passe perdu. Ceci est fait en répondant à la question secrète "Quel est mon surnom?".

Pour trouver la réponse à cette question, il fallait trouver "Alain Mowat" dans la salle et la lui poser. Suite à cela, le mot de passe est révélé et on a accès aux mails du hacker.
4.3 Qu'est-ce? Download
L'un des messages trouvés dans les emails est encrypté. Il s'agit de l'encryption de vigènère avec une clé relativement courte qui était récupérable via une analyse statistique. En déchiffrant le message avec cette clé, on trouve le lieu de rencontre des hackers.
4.4 l33tforum -
Le forum est protégé par un "IPS" qui apparament n'est pas très bien configuré. On remarque rapidement qu'il bloque les tentatives d'injections SQL par le biais des paramètres GET et POST. Par contre, les paramètres envoyés par COOKIE ne sont pas filtrés et permettent une attaque à travers le formulaire d'authentification qui est vulnérable à une attaque par injection SQL en aveugle.

Grâl;ce à cela on peut retrouver le mot de passe de l'admin et se connecter à son compte pour découvrir les quelques posts de la section privée oûl; l'on découvre son nom.
4.5 C'en est trop Download
En analysant rapidement le binaire fourni, on se rend compte que lorsqu'il est lancé, il s'attend à recevoir une connection sur le port 58623. Lorsque la connexion est établie, il faut entrer un nom d'utilisateur et mot de passe.

Le nom d'utilisateur se trouve en clair dans le fichier et est "h4x0r". Pour ce qui est du mot de passe, il faut retrouver la routine d'encryption du mot de passe et comprendre qu'il va incrémenter et décrémenter successivent les caractères entrés et ensuite comparer cela avec le mot de passe encrypté. Si on refait la manipulation inverse, on trouve que le mot de passe à entrer est "roxxyfoxy".

Une fois connecté à l'application, il n'y a qu'une seule commande disponible qui prend un seul paramètre. Ce paramètre est vulnérable à un "Buffer Overflow".

Le port 58623 n'est pas choisi au hasard, car ce chiffre correspons au byte code d'un "JMP ESP". Il suffit alors de remplacer EIP par l'adresse de cette fonction et avoir son shellcode à l'adresse suivante sur la stack.
 
5.1 Java & Co. -
Solution présentée pendant le concours
5.2 Javascript inside -
Solution présentée pendant le concours
5.3 Javanoscript -
En analysant le comportement de l'applet on se rend compte qu'il envoie les données à la page http://192.168.1.12/javaSocool/pass.php. Cependant cette page n'existe pas, par contre la page /javanoscript/pass.php elle existe et renvoie tout le temps false. A partir de là il faut deviner que si cette page renvoie true, l'applet authentifiera l'utilisateur. Pour faire cela, il faut soit modifier la réponse du serveur, soit substituer le serveur par un autre renvoyant tout le temps true.
5.4 Wannabe hacker -
Mis à part le livre d'or, il n'y a pas grand chose à attaquer sur ce site. C'est donc sur cette fonctionnalité que l'on s'attarde. Le champ nom et message sont correctement traités et ne permettent aucune injection. On remarque par contre un troisième champ "ip". Il n'est affiché que pour sa propre ip. On se doute par contre que l'administrateur a accès à ces informations également. De plus, il est possible de modifier la valeur affichée en rajoutant le champ HTTP X-FORWARDED-FOR et en y insérant un code quelconque. On sait que l'administrateur du site visite réguliérement la page et il suffit alors d'insérer un petit code javascript qui va envoyer son cookie à l'attaquant. En récupérant le sessionid qui est dans le cookie il est alors possible de se connecter à la partie administration du site.
 
6.1 Zero Absolu -
La solution de cette épreuve se trouve ici.
Actualités
cronertopright
 
cornerbottomleft