Insomni’hack 2016 teaser results

Last weekend saw the year’s CTF competitions begin with our very own Insomni’hack teaser. Given some of the recent absurdities (http://weputachipinit.tumblr.com/) we decided to go with the Internet of Things as our theme this year.

Before going into some of the details, we’d like to congratulate Dragon Sector for taking the first place once again, finishing in front of Tasteless and KITCTF who complete our podium.

Screenshot from 2016-01-18 10:54:48

The full scoreboard can be found here: https://teaser.insomnihack.ch/scoreboard, and also on CTFtime.

When entering the contest, participants were greeted by a kitchen, where several connected objects (tasks) could be attacked.

Screenshot from 2016-01-18 10:13:00
Nearly 850 teams registered for the teaser, with 245 of them scoring at least once.

Overall, 8 tasks were given in Web, Crypto and Pwning fields, and teams had 36 hours (from 9h UTC, the 16th of January until 21h on the 17th) to complete as many as possible (and as quickly as possible) to get the top spots.

To give an idea of the complexity of each task, the following list shows which team was the first to solve it and at what time:

  • smartcat1: solved by dcua after 16 minutes
  • Bring the noise: solved by 217 after 27 minutes
  • Greenbox: solved by Dragon Sector after 1 hour and 7 minutes
  • smartcat2: solved by dcua after 1 hour and 10 minutes
  • Fridginator 10k: solved by n0n3m4 after 3 hours and 32 minutes
  • toasted: solved by 0x8F after 6 hours and 1 minute
  • rbaced1: solved by Dragon Sector after 6 hours and 25 minutes
  • rbaced2: solved by Dragon Sector after 20 hours and 19 minutes

We quickly notice that smartcat1 and Bring the noise were the easiest tasks, while the two rbaced tasks were the toughest. This also shows with the number of times each task was solved over the course of the weekend:

  • smartcat1 (Web): 209
  • Bring the noise (Crypto): 173
  • smartcat2 (Web): 132
  • Fridginator 10k (Web/Crypto): 52
  • Greenbox (Web): 33
  • toasted (Pwning): 15
  • rbaced1 (Pwning): 12
  • rbaced2 (Pwning): 2

After completing all the tasks, your kitchen looked like this:

Screenshot from 2016-01-18 11:27:45

Writeups for some of the challenges can be found here:

https://github.com/ctfs/write-ups-2016/tree/master/insomnihack-teaser-2016

The event ran rather smoothly, with only a few services needing to be restarted every now and then.

Do note that this is not a qualification round, as anyone can participate in the finals (18th of March, Geneva, Switzerland) and it is entirely free. We’re looking forward to seeing you there!

SCRT @ DEFCON 2015

Cet été, 4 ingénieurs de l’équipe se sont rendus à Las Vegas pour les finales du concours de Capture the Flag (CTF) organisé par Legit BS à DEFCON. Ils se sont qualifiés en 10ème position avec l’équipe 0daysober.

Sur place, le concours s’est déroulé sur 3 jours, où chaque équipe était responsable d’un serveur sur lequel tournaient plusieurs services différents. Chacun d’entre eux était vulnérable à une ou plusieurs vulnérabilités. Le but du concours est donc de patcher ses propres services et d’exploiter les failles chez les autres équipes pour marquer des points.

Les services rencontrés cette année tournaient sur différentes architectures. Un premier binaire linux x86_64, “rxc”, suivit ensuite d’un autre service “ombdsu” tournant sur mips32le. Nous avons pu rapidement rejouer un exploit sur ce dernier, nous permettant de scorer quelques points. Un troisième service x86 “tachikoma” a été fournit à la fin de la première journée, ou nous terminons en 3ème position.

Aidé par plusieurs personnes à distance, nous avons pu patcher et exploiter une faille dans “rxc”, une nouvelle faille dans “ombdsu” et rejouer un exploit dans “tachikoma” dès le début de la deuxième journée. Un challenge ARM64 hébergé sur l’infrastructure de LegitBS a été proposé afin de séléctionner les 4 équipes les plus rapides. Nous avons heureusement été séléctionné, et les 4 équipes finalistes devaient s’affronter dans un livectf ou une personne représentait l’équipe et le gagnant remportait 1000 points. Etant extrêmement proche du but, notre coéquipier s’est malheureusement fait dépasser par un membre des PPP, qui nous devance ainsi de 7 points au terme de la deuxième journée, ou nous terminons en troisième position.
Trois autres services ont été mis en place sur cette deuxième journée:
– “hackermud”, une sorte de jeu d’aventure en Linux x86
– “badlogger”, un service de journalisation en Windows arm32
– “irkd”, un client IRC en Linux mips32le

Le troisième jour, nous avions corrigés 2 failles dans badlogger, nous évitant ainsi l’exploitation immédiate faite par DEFKOR et PPP. Nous n’avons malheureusement pas réussi à l’exploiter faute de matériel (Raspberry Pi 2) pour mieux analyser l’exploitation. Nous avions cependant deux nouveaux exploits dans tachikoma et ombdsu, nous permettant de scorer encore quelques équipes n’ayant pas patché toutes les failles. Pour préserver le suspens, ni score ni classement n’était affiché. Seule l’animation 3d tournant sur Unreal Engine de Legit BS permettait de voir si les équipes validaient beaucoup de flag. C’était aussi un bon moyen de voir si on se faisait voler des flags et par qui, les fusées représentant un flag ou exploit validé sur une équipe :

Au final, l’équipe sur place s’est en grande partie concentrée sur la défense, en patchant les binaires et en analysant les captures réseau. D’après ce que nous avons pu observer, nous n’avons eu que quelques vols de flag entre le samedi 12h et la fin du CTF le dimanche à 14h.

Autre nouveauté cette année, une version customisée de xinetd par LegitBS. En gros les fonctionnalités ajoutées sont :
– Limitation du nombre de connexions par source (2)
– Limitation de la durée d’exécution du service
– Limitation des syscalls autorisés pour le service
Les deux premières fonctionnalités étaient parfaites pour éviter les DoS. Pas besoin de surveiller la charge de la machine ni la durée des processus, ce qui était relativement couteux en temps et en SLA l’an passé.
Concernant la limitation des syscalls, le service xinetd créait une sorte de sandbox SECCOMP pour limiter les appels fait par le service. Le but principal étant d’empêcher que les équipes mettent en place leur propre sandboxing au moyen de qemu ou autre.

Cette année encore, nous avons utilisé Kibana pour grapher quelques indicateurs, tel que la validation de chaque flag par équipe et par service. Le pie chart suivant rassemble la totalité des flags que nous avons pu valider :
flags
Vous pouvez cliquez sur le lien pour visualisez les détails.

Au final, l’équipe a terminé en 3ème position, juste derrière DEFKOR et PPP.