Stages et alternances 2014-2015

Quarkslab propose plusieurs stages, certains sujets pouvant aussi être aussi traités sous forme d'alternance. Ca touche à des tonnes de domaines : recherche de vuln, analyse de code, crypto, compilation, reconnaissance réseau, malware et réponse à incidents. Bref, il y en a pour tous les goûts.

Mise-à-jour : Nous n'avons plus de place disponible pour nos stages.

Comment répondre à une offre de stage selon Quarkslab

Si une offre vous tente, vous devez nous adresser :

  • un CV ;
  • une lettre de motivation : pas la "lettre type", mais plutôt une lettre expliquant pourquoi ce(s) sujet(s) vous intéresse(nt) particulièrement. Le tout par email à stages-AT-quarkslab-POINT-com, avec comme sujet la référence du stage.

N'oubliez pas de mettre en avant les choses que vous avez réalisées et que vous pensez être en rapport avec le sujet. C'est un des secrets d'une bonne candidature.

Pour vous y aider, Quarkslab vous propose 3 petits challenges :

1/ La spirale de la R&D : quand on se casse la tête sur un problème, on tourne souvent en rond avant que la lumière ne jaillisse. Le but du défi est de simuler cela en écrivant un programme (langage au choix) qui prend en entrée un entier N, puis remplit la grille de taille N x N en spirale à partir du centre et affiche le résultat. Par exemple, avec N = 5 :

20 21 22 23 24
19  6  7  8  9
18  5  0  1 10
17  4  3  2 11
16 15 14 13 12

2/ La bière : tourner en rond, ça donne soif. Écrire un petit programme (langage au choix) qui va chercher un maximum de noms de bières sur Internet.

3/ Trop de choix tue le choix : chaque jour, on goûte une ou plusieurs des bières tirées au sort parmi 20 bières extraites du résultat du challenge 2/. Pour éviter que ce ne soit trop répétitif, la probabilité qu'une bière soit tirée au sort est inversement proportionnelle au nombre de fois où on a déjà bu ladite bière. Ainsi, pour chaque bière, plus elle aura été tirée au sort, moins elle aura de chance d'être de nouveau sélectionnée pour la dégustation. Écrire un programme (langage au choix) qui dispose d'une liste de 20 bières, et prend en entrée un nombre N, puis sort N bières parmi les 20 (ainsi que la probabilité pour chaque bière d'être tirée au sort la prochaine fois), et ce chaque jour pendant 1 mois.

Il n'est pas forcément nécessaire d'écrire un programme complet avec une belle GUI, mais votre ingéniosité nous intéresse : ça fera une bonne base pour discuter lors de votre entretien.

Pour tous ses stages, Quarkslab cherche des personnes motivées, curieuses, autonomes mais aimant le travail en équipe, et créatives mais structurées. Vous évoluerez dans un environnement dynamique où ça fuse dans tous les sens...

Dans les offres ci-après, les pré-requis indiquent les connaissances à avoir pour le stage, tandis que les compétences indiquent celles que vous allez acquérir et utiliser tout au long de votre mission (donc les avoir, même un peu, c'est bien aussi).

Contact : stages-AT-quarkslab-POINT-com

Surveillance de commits pour la recherche de vulnérabilités

Description

L'objectif de ce stage est de mettre en place une plateforme de surveillance et d'analyse de serveurs de gestion de versions (svn/git/mercurial/...).

Le stagiaire devra développer une interface web permettant d'ajouter des dépôts et d'en gérer la surveillance. Il devra également participer à la recherche d'heuristiques pertinentes pour mettre en oeuvre un système d'alerte sur des commits suspects (modification d'une partie sensible du projet, auteur du commit connu pour ses échecs (cf heartbleed), utilisation de fonctions sensibles (strcpy,...)).

Il sera également possible d'utiliser le/de contribuer au projet interne SCAF : http://blog.quarkslab.com/scaf-source-code-analysis-framework-based-on-clang-pre-alpha-preview.html

Pré-requis

  • Bonne connaissance des systèmes de versioning
  • Vraies bases en recherche de vulnérabilités

Compétences

  • Audit de code
  • Python
  • Interface web

Référence

  • 14-stage-commit

Durée

  • 3 à 4 mois

SCAF : contribution à un framework d'analyse de code source

Description

Le but de ce stage est de contribuer au développement d'un framework interne d' analyse de code source C/C++/Objective-C (SCAF) pour la recherche de vulnérabilités.

Le stage est orienté programmation mais nécessite néanmoins des connaissances théoriques dans le domaine de l'analyse de code source. Le stagiaire sera amené à développer de nouvelles classes d'analyses, de développer des model checkers, d'améliorer le design de l'API/infra ou toute autre contribution pouvant enrichir la plateforme déjà existante.

Pré-requis

  • Program analysis (aliasing, data-flow, model checking, interprétation abstraite, exécution symbolique, ...)

Compétences

  • Python,
  • C/C++/Objective-C
  • Parsing (AST, CFG, ...)

Référence

  • 14-stage-scaf

Durée

  • 4 à 6 mois

Epona : mise à l'épreuve d'un outil d'obfuscation

Description

Epona est un obfuscateur de bytecode LLVM développé en interne à QuarksLab. L'objectif du stage est de fuzzer l'outil, sur deux aspects :

  • Génération de code correct. Epona est encore en phase de développement, et malgré de gros efforts de validation, le code produit n'est parfois pas équivalent au code d'entrée. Le but de cette partie est de compiler de gros projets avec epona et vérifier quand le code généré n'est pas correct, pour remonter les erreurs aux devs.
  • Génération de code obfusqué. En inspectant la sortie d'epona, on peut se rendre compte que certaines obfuscations ne sont pas aussi efficaces qu'elles pourraient l'être, par exemple parce que les optimisations appliquées après obfuscation simplifient le code, ou parce que les pré-requis d'une obfuscation sont trop contraignants. Le but de cette partie est de se plonger dans la peau d'un reverser et de regarder les abominations générées par epona.

Pré-requis

  • Petit bagage en reverse et/ou compilation

Compétences

  • Rigueur, C/C++, asm, Linux

Référence

  • 14-stage-epona

Durée

  • 2 à 4 mois

Analyse de crypto boîte blanche

Description

Dans certaines conditions, on est obligé de livrer des secrets (clés typiquement) avec les algo crypto supposés les utiliser. Or, il est plus sûr de considérer que l'attaquant dispose d'un contrôle complet sur l'environnement d'exécution de ladite crypto. En conséquence, il faut l'empêcher d'accéder aux secrets. Pour cela, on s'appuie fortement sur de l'obfuscation de code, afin de rendre compliqué l'analyse de la crypto, mais on protège aussi la crypto en la transformant pour que la clé ne soit pas directement visible : on parle de crypto boîte blanche.

L'objet du stage est double. D'une part, il s'agira étudier les propriétés mathématiques autour des boîtes blanches, et en déduire des faiblesses permettant de reconstruire des éléments des secret. D'autre part, il s'agira de transformer un algorithme dans sa version "whiteboxée" dans une version statique puis dynamique.

Pré-requis

  • Cryptologie, théorie des nombres, structures algébriques

Compétences

  • Python, C/C++
  • Compilation / LLVM

Référence

  • 14-stage-wb

Durée

  • 6 mois

Fuzzing pour environnements mobiles

Description

Le stage se découpe en deux phases : tout d'abord la conception de la plateforme matérielle puis le développement d'une interface de contrôle.

  • Conception d'une plateforme de fuzzing pour environnements mobiles : en accord avec les ingénieurs Quarkslab travaillant sur la problématique, sélection et acquisition des devices (écosystèmes iOS et Android) et des différents éléments matériels requis (câblage, hub, alimentation, etc.), prise en compte des contraintes matérielles (canal de contrôle, gestion de l'énergie, etc.)
  • Développement d'une interface (web) de contrôle : gestion et interrogation des devices attachés à la plateforme, déploiement et contrôle des campagnes de fuzzing, centralisation de la remontée des résultats.

Pré-requis

  • Environnements mobiles (Android voire iOS)

Compétences

  • Principes devops
  • Développement web (JS)
  • Python

Référence

  • 14-stage-fuzzmob

Durée

  • 3 à 4 mois minimum ; pour 6 mois, on ajoutera au moins l'intégration d'un fuzzer

Détection d'attaques par virtualisation

Description

L'objectif de ce stage est d'utiliser la virtualisation matérielle pour détecter l'exploitation de vulnérabilités dans un système virtualisé. Les 2 aspects principaux sont les suivants :

  • Analyse d'exploits pour déterminer les techniques employées pour exécuter un code arbitraire et garder un accès sur le système
  • Modification d'un hyperviseur pour implémenter la détection de ces attaques.

Pré-requis

  • Bonnes connaissances de l'architecture x86
  • Exploitation noyau Linux et/ou Windows

Compétences

  • C, asm x86, virtualisation

Référence

  • 14-stage-virtu

Durée

  • 3 à 6 mois

Ivy : développement de modules avancés pour un scanner Internet distribué

Description

Quarkslab développe un scanner modulaire et distribué visant à cartographier des réseaux à grande échelle. Les découvertes réseaux sont effectuées par un ensemble de machines réparties dans le monde entier, et une interface web permet de visualiser les résultats a posteriori.

Le but du stage est de développer de nouvelles sondes pour ce scanner. Dans un premier temps, pour se familiariser avec l'outil, des scripts seront à développer pour des protocoles spécifiques (ex : S7, Modbus, TS, RDP). Ensuite, en utilisant un moteur asynchrone développé pour l'occasion, des modules dédiés au niveau 7 comme :

  • récupération récursive du contenu d'un serveur FTP et/ou HTTP(S)
  • indexation de contenus de bases NoSQL
  • identification de serveurs NTP/DNS vulnérables à des attaques d'amplification
  • détection de C&C de botnets

Le moteur asynchrone fonctionne au layer 7 et doit garantir des performances élevées. Suivant les compétences du candidat, l'amélioration du moteur asynchrone pourra aussi être abordé.

Pré-requis

  • Compréhension des réseaux IP aux niveaux 3 et 4
  • Notions de routage dynamique
  • Concepts de programmation asynchrone et principe des coroutines

Compétences

  • Python hardcore
  • Programmation bas niveau C
  • Notions solides de C++ (STL, gestion mémoire, boost, meta-programmation)
  • Notions de base de données

Référence

  • 14-stage-ivy

Durée

  • 6 mois
  • Alternance possible autour de la reconnaissance réseau

IRMA : développement de plugins d'analyse en python

Description

IRMA est un projet open-source d'analyse de malwares qui permet de lancer le même fichier sur plusieurs plugins d'analyse et ensuite de présenter les résultats via une interface web.

Le stage consistera principalement au développement de nouveaux plugins d'analyse :

  • support de nouveaux antivirus (8 supportés pour l'instant)
  • support de probe comportementale (type Cuckoo sandbox)
  • plugin de metadata (détection de type, strings...)

Suivant les compétences du stagiaire, la partie représentation en AngularJS peut aussi être abordée.

Pré-requis

  • Python avancé
  • Maîtrise de git

Compétences

  • Bonnes connaissances de l'analyse de malwares et des informations intéressantes associées
  • Technologies devops (vagrant, ansible)
  • Celery

Référence

  • 14-stage-irma

Durée

  • 3 à 6 mois pour un stage
  • Alternance possible

Comments