
Aujourd'hui, nous partagerons les résultats du quatrième programme de formation d'été Summ3r 0f h4ck dans notre entreprise au sein du département de recherche.
Pour les années passées, les résultats peuvent être trouvés ici: 2016 , 2017 . Le service d'audit dans un article séparé ici et un article conjoint pour 2018 .
Commençons donc par des chiffres, des faits et d'autres informations intéressantes.
- 76 candidatures de toute la Russie et des pays voisins
- 10 candidats sélectionnés
- Les candidats représentaient des villes telles que Saratov, Kaliningrad, Rostov-sur-le-Don, Moscou, Vladivostok, Saint-Pétersbourg, Krasnodar.
- Universités: SSU (nommé d'après Chernyshevsky), BFU nommé d'après I.Kant, Université fédérale du Sud, HSE MIEM, Université fédérale d'Extrême-Orient (FEFU), Université technique d'État de Saint-Pétersbourg, Université technique technique de Moscou nommée d'après N.E. Bauman, Université polytechnique Saint-Pétersbourg de Pierre le Grand, croisade du ministère des Affaires intérieures de la Fédération de Russie.
Pendant la période de formation de notre département du 15 juillet au 15 août, des conférences ont été données sur des sujets tels que:
- Introduction à la recherche de vulnérabilité dans les applications binaires et le code source
- Analyse de sécurité statique des grands projets open source
- Récupération d'informations symboliques lors du reverse engineering
- Sécurité du micrologiciel (à propos du BIOS UEFI)
- Présentation de l'outil d'analyse binaire Ghidra
- Phasing avec KLEE, libfuzz, AFL
- Introduction aux attaques de tiers sur la microarchitecture
Un des étudiants a également donné une conférence interne sur le thème «Présentation de la protection à l'aide de la virtualisation de code en utilisant l'exemple de VMProtect». Merci aux gars pour leurs questions intéressantes, leur intérêt houleux pour les conférences. Par ailleurs, il convient de noter que les étudiants des deux départements pourraient assister à des cours magistraux et participer à un mini-CTF, qui peut être lu plus en détail dans un article du département d'audit .
Quant aux sujets de cette année, il y en avait:
- Traceur basé sur le matériel du processeur Intel
- Plugin pour Clang Analyzer
- Renforcer les Pigaios
- Cadre de recherche sur la sécurité du firmware de l'UEFA
- Fuzzing API basé sur l'état
- Attaques par canal latéral contre les microcontrôleurs
- Un cadre pour récupérer automatiquement les noms de fonction
- Adapter AFL Phaser pour les applications réseau
- Décompilation de eBPF dans Ghidra
Il convient de noter que dans le processus de travail sur un sujet, le sujet lui-même et son orientation ont parfois évolué et modifié pour une raison ou une autre. On peut dire que tous les gars sont super et ont essayé de faire le maximum pour cette période assez courte du programme. Bien que la chose la plus importante soit d'acquérir de nouvelles connaissances et expériences (et rencontres).
Il est important de comprendre que notre programme Summ3r 0f h4ck est un programme de formation, pas un programme de stage (bien que par souci de simplicité, certaines personnes l'appellent ainsi). Dans le processus, les gars avec les mentors font le thème du projet, écoutent des conférences, résolvent différents laboratoires, obtiennent divers conseils sur différents aspects de la sécurité de l'information et, bien sûr, répondent à leurs questions.
Comme toujours, nous nous tournons vers les avis non modifiables de nos étudiants sur leur mois au sein de notre entreprise (qui souhaitait les publier).
Les questions pour la mini interview étaient comme ça
- Pourquoi avez-vous décidé de faire un stage chez Digital Security? Qu'est-ce qui vous a attiré dans l'entreprise?
- Vous avez aimé le stage? Qu'est-ce qui a été particulièrement mémorable? Comment la réalité a-t-elle coïncidé avec vos attentes?
- Parlez-nous de votre tâche / tâches.
- Les tâches sur lesquelles vous avez travaillé pendant le stage vous ont-elles semblé intéressantes? Y avait-il quelque chose que vous vouliez faire mais qui a échoué?
- Êtes-vous prêt à retourner dans l'entreprise pour un stage ou pour travailler?
Et voici quelques-unes des réponses données par certains étudiants
Novoseltseva Alyona

- Digital Security est une entreprise leader en Russie dans le domaine de la sécurité de l'information avec la plus grande et la plus sympathique équipe d'inverseurs. J'ai toujours voulu entrer dans l'environnement des gens proches de vous en esprit. Il y a de vrais professionnels ici, et beaucoup à apprendre d'eux. De plus, dans ma région, il n'y a pas de telles entreprises et communautés en général qui seraient liées au moins en quelque sorte à la rétro-ingénierie.
- J'ai vraiment aimé le stage. La chose la plus étonnante est l'atmosphère dans laquelle l'entreprise opère. Les gars particulièrement attentifs seront d'accord avec moi - sur les bureaux des employés, il n'y avait pas un seul morceau de papier, sauf leur propre cahier avec des pensées et des idées. Cela en dit long et une rareté énorme dans notre monde bureaucratique!
Vous bénéficiez des meilleures conditions de travail - silence, confort et surtout - des personnes. Le personnel et leurs recherches sont très inspirants. J'ai vraiment aimé travailler sur un projet dans une équipe avec des mentors - nous avons résolu les problèmes jour et nuit, ensemble nous avons cherché des solutions, ensemble nous nous sommes réjouis quand quelque chose a fonctionné. Je n'ai pas connu un tel bonheur depuis longtemps. Sasha, Kolya - Je m'incline devant vous. - Mon travail de recherche a été le développement dans Sleigh d'un système de traduction d'un bytecode eBPF en pCode pour la possibilité de démontage et de décompilation. Il était nécessaire de développer une extension pour Ghidra, qui permettrait de démonter et de décomposer les programmes eBPF. J'ai dû maîtriser le langage de spécification du processeur Sleigh, comprendre les caractéristiques de l'architecture eBPF et l'interaction des programmes eBPF avec le noyau, acquérir de l'expérience dans le développement d'extensions pour Ghidra et travailler avec Eclipse, et bien plus encore
La tâche s'est terminée avec succès! Le projet est accessible au public et publié sur Github. Le résultat peut être testé par n'importe qui en téléchargeant l'assembly d'extension à partir du référentiel en utilisant le lien ci-dessous. Plus de détails peuvent être trouvés dans un article séparé. - Oui, les tâches étaient complexes et intéressantes, j'ai vraiment aimé le processus de développement et le travail d'équipe. J'aimerais beaucoup approfondir le sujet de l'analyse automatique des programmes et la recherche de vulnérabilités binaires encore plus profondément, intéressante est l'exécution symbolique.
- Avec grand plaisir! L'université n'ayant pas encore étudié depuis plusieurs années, je me préparerai pour le prochain stage! Pour travailler - aurait certainement et probablement déjà
Lien vers le projet
Bukovsky Victor

J'ai décidé de faire un stage chez Digital Security car cette société était l'organisatrice de ma conférence préférée sur la sécurité de l'information - ZeroNight.
Le stage s'est enfoncé dans l'âme. Tout s'est parfaitement déroulé. Ce cas rare où la réalité a dépassé mes attentes. Je me suis surtout souvenu comment, le dernier jour du stage, ils ont organisé un quiz sur la connaissance de l'entreprise et les capacités psychiques :), pour la victoire dans laquelle j'ai reçu une boîte de cookies et un T-shirt.
Ma tâche consistait à écrire des plugins pour IDA PRO 7 à l'aide de l'API Hex-Rays. La tâche de l'un d'eux était d'afficher dans un tableau spécial (Fig.1) des fonctions contenant des fonctions dangereuses à la discrétion du chercheur (la tautologie ne pouvait pas être contournée). Le but d'un autre plug-in principal, pourrait-on dire, pour ce stage, était de restaurer les noms de fonction à partir de fichiers exécutables supprimés (-s) à l'aide d'informations de support. Dans mon cas, nous avons pris les noms des fonctions des paramètres transmis aux fonctions de journalisation (Fig. 2).

Les tâches pour moi étaient absolument non triviales, ce qui n'a fait que susciter l'intérêt pour leur mise en œuvre. Ironiquement, j'étais l'une des rares personnes chanceuses à avoir eu l'honneur de travailler avec trois conservateurs. Au début, c'est Artem qui m'a présenté ce sujet, a préparé Bitbucket pour stocker le projet, un tableau dans Trello, avec les tâches et les objectifs initiaux, et a également expliqué comment travailler avec le langage de balisage Markdown. Puis Dmitry Evdokimov est devenu mon conservateur, qui dans le passé récent avait déjà traité de la restauration des noms de fonction, m'a conduit aux réflexions nécessaires et a révélé plus profondément le problème. Eh bien, Boris Ryutin, la personne qui m'a interviewé et grâce à qui je me suis retrouvé à ce stage, est devenu mon conservateur. Avec lui, j'ai déjà reçu des tâches précises visant à obtenir le résultat souhaité. Tout s'est passé à un rythme très vigoureux, et tout ce que nous avions planifié a été mis en œuvre, pour lequel merci encore beaucoup.
Je ne suis pas sûr du stage, car il me semblait trop peu de mois dans cette entreprise. Je veux y rester le plus longtemps possible, alors oui, je suis prêt à retourner au travail.
Lien vers le projet: https://github.com/o0Starley0o/HexRaysPlugins
Souhaite rester anonyme
- ZeroNights / étaient amis
- Naturellement, j'ai vraiment aimé ça. Les attentes étaient justifiées et encore plus.
La première chose à noter est le sujet que j'ai traité. J'avais prévu de voir quelque chose que je ne pouvais pas (ne voulais pas) faire à la maison et, en fait, le thème correspondait parfaitement à cela.
Bien que je ne puisse pas dire que je lui ai consacré beaucoup de temps, je suis entièrement satisfait du résultat et des connaissances acquises dans le processus (en fait - un peu plus d'une semaine et le résultat principal a été obtenu =).
Je suis heureux que pour toute question, une question sur le sujet puisse obtenir immédiatement une réponse du mentor (et la réponse est "voulez-vous essayer / en savoir plus?").
Le second est plein de gens intéressants autour, non seulement des employés, mais aussi des stagiaires, par qui nous pouvons juger de l'avenir de la sécurité de l'information.
Troisième - les pentesters ont fait une sélection très cool de machines avec des paramètres / services vulnérables (des tâches xss avec des bots, une élévation de privilèges à la capture séquentielle d'un administrateur de domaine).
Tout le monde était autorisé à jouer et c'était très amusant pendant encore 2 semaines. Ceux qui ne lui ont pas donné assez d'amour ont beaucoup mal calculé.
Quatrième - conférences, c'était agréable de combler les lacunes dans les connaissances ou de découvrir quelque chose de nouveau par vous-même.
Presque toutes les conférences inversées étaient très sérieuses; les Pentesters ont distribué de la nourriture et ont eu des tâches interactives. - La tâche de supprimer la piste d'exécution en mode SMM (anneau-2). Vous ne pouvez pas activer le suivi à partir d'un mode moins privilégié, vous avez besoin du code SMM pour l'activer. Naturellement, il ne sait pas comment procéder.
Nous avons fait un patch, l'avons jeté dans SMM (pour cela, il était nécessaire de mettre à niveau l'UEFI) et en utilisant les outils existants (WinIPT), nous avons pu enregistrer comment le code est exécuté dans SMM. - Maintenant, il existe un si grand nombre de technologies qu'il est impossible de simplement prendre et essayer tout de suite. Vous avez toujours besoin d'une incitation ou d'une tâche qui vous amènera à regarder quelque chose de nouveau.
Puis un désir naturel apparaît: "Puis-je utiliser cette technologie pour mes tâches? Peut-elle être plus facile / plus efficace avec elle?".
Par conséquent, je suis satisfait de mon thème.
Cela valait néanmoins la peine d'amener le projet au moins à un flou primitif. C’est une de ces choses que je ne peux pas essayer sans stimulus externe. - aucun commentaire
Khabarov Oleg
- À mon avis, en Russie, les entreprises qui utilisent la rétro-ingénierie dans leurs activités professionnelles sont peu nombreuses, et celles qui l'utilisent pour trouver des vulnérabilités, et non pour l'analyse de virus, sont encore moins la sécurité numérique et les technologies positives.
- Le stage a aidé à définir les lignes directrices pour savoir où aller si vous voulez être un revendeur, plutôt qu'un «spécialiste de la sécurité de l'information» abstrait. Je me suis souvenu de ce qui étaient des conférences relativement simples sur le pentest et des conférences à chargement par la tête des inverseurs.
- Ma tâche consistait à affiner l'outil de rétro-ingénierie Pigaios. Son objectif est de trouver des fonctions de bibliothèque open-source dans un binaire compilé statiquement par comparaison. Cependant, je n'ai pas traité du mécanisme de comparaison lui-même, mais du raffinement de cette partie de la fonctionnalité qui a extrait les définitions des structures, des types, des associations, etc. des sources. En conséquence, j'ai finalisé l'analyseur de ces éléments et ajouté le support pour les projets construits à l'aide de make. J'ai décidé de ne pas intégrer ces améliorations dans Pigaios, mais de créer un outil séparé, car il est plus facile de le démonter séparément que de creuser dans le code Pigaios.
- Je ne peux pas dire que j'ai aimé la tâche, mais cela a aidé à améliorer la compréhension du code C, et grâce à cette tâche, j'ai appris que vous pouvez analyser le code C sans comprendre la théorie de l'ingénierie du compilateur, mais utilisez simplement libclang. Par conséquent, il est peu probable que je modifie mon instrument. Si quelqu'un veut, j'ai essayé d'écrire proprement et j'ai laissé des commentaires partout.
Grâce aux conférences des inverseurs, j'ai réalisé ce que je voulais faire, à savoir l'analyse binaire dynamique (fuzzing, instrumentation). - Je serai heureux si à l'avenir je parviens à obtenir un emploi chez Digital Security, car il y a beaucoup de professionnels dans leur domaine.
Lien vers le projet: https://github.com/Barkhat26/decl-exporter
Zabelina Margarita
- J'avais auparavant effectué un stage dans une autre entreprise en tant qu'employé du service de sécurité informatique. Là, j'ai dû m'occuper davantage des problèmes de sécurité Web. Mais dans l'équipe de la CTF, j'ai toujours résolu les tâches inverses, souvent par intérêt que j'ai lu sur les attaques binaires. Il est devenu intéressant pour moi de voir comment fonctionnent les inverseurs, de voir comment je vais faire face à un tel travail. De plus, c'était intéressant de voir la DSEC de l'intérieur.
- Le stage est bon. J'ai surtout apprécié les conférences. Parce que presque tout le temps que vous êtes occupé avec le projet, l'occasion d'être distrait et de résoudre de petites tâches, très rafraîchissant votre tête. De plus, j'ai appris beaucoup de nouvelles choses, quelque part où j'ai consolidé d'anciennes connaissances.
Les attentes / la réalité coïncidaient assez. - J'ai traité des implémentations de vérificateur pour Clang Static Analyzer. La tâche n'est pas rocketsaines, mais les réalisations que je peux appliquer pour ma thèse. Tout d'abord, je devais me familiariser avec l'outil, voir ce que la bibliothèque de clag peut faire et apprendre à collecter des vérificateurs de test simples. Il a également été décidé que je reprendrais la mise en œuvre du vérificateur pour le détecteur de débordement d'entier. L'idée d'un tel vérificateur a été indiquée dans la liste des vérificateurs potentiels de clang, j'ai pensé que la chose était utile et a pris. J'ai choisi une approche avec analyse AST et vérification de plâtre. Mais une telle solution ne détermine que les débordements potentiels. Pour une vérification précise, vous pouvez utiliser l'analyse des souillures et des solveurs SMT. Il n'y a pas d'outils prêts à l'emploi pour travailler avec la souillure dans la bibliothèque, il y a eu des développements par d'autres chercheurs, que j'ai pris comme base. Malheureusement, je n'ai pas réussi à terminer ma tâche en un mois, mais je vais terminer le projet dans le cadre de la thèse.
- L'idée même que vous réaliserez ce qui sera plus tard applicable et utile dans le travail réel alimente déjà l'intérêt pour le projet. Je veux réécrire le vérificateur de souillures afin qu'il puisse plus tard être utilisé non seulement dans mon projet.
- L'équipe DSEC est excellente, tous les experts sont cool. Je venais travailler. Mais je ne voudrais pas recommencer un stage, le mentorat a été décevant à mon avis. Étant donné que nous n'avions qu'un mois, au bon moment, je n'ai pas reçu de feedback du mentor. Et j'ai passé beaucoup de temps à creuser, même si j'ai pu obtenir une réponse d'un mentor expérimenté. Juste s'il n'y a pas de mentorat, alors pourquoi ai-je besoin d'un stage, je peux couper mon propre projet à la maison.
Lien vers le projet: https://github.com/dR3m/IntOverflow-CSA-plugin
Sankin Nikita
- La sécurité numérique a attiré des sujets de projets et des retours d'expérience des participants des stages précédents, ainsi que de nombreux articles sur Habré rédigés par des employés. En général, à partir d'un poste sur Habré, j'ai également entendu parler du stage. Il y avait aussi un désir de changer la situation, après avoir effectué un stage dans une autre ville et avoir essayé des projets que je ne fais pas dans mon travail principal.
- Le stage ne s'est pas déroulé comme prévu, principalement en raison d'une location d'appartement infructueuse, ce qui m'a empêché de me concentrer sur le projet et de tout faire à temps. De plus, au début, il était gênant que la tâche soit davantage de rédiger du code que de rechercher, mais ici, il s'agit probablement d'une inadéquation des attentes et d'autres facteurs personnels.
- Nous avions besoin d'implémenter le cadre de test de vulnérabilité du firmware UEFI basé sur la solution chipsec existante. Le problème était qu'il était difficile de maintenir le code chipsec, vous avez donc dû tout réécrire magnifiquement en python 3.x et éventuellement ajouter de nouvelles fonctionnalités.
- Dans la tâche, il m'a semblé intéressant non pas tant d'écrire du code que d'étudier les technologies avec lesquelles je devais travailler. Je souhaitais achever le projet jusqu'à l'étape HAL (couche d'abstraction matérielle) et étudier plus en détail le fonctionnement des équipements matériels et de leurs interfaces. Malheureusement, les raisons mentionnées au paragraphe 2 ont empêché cela, mais je prévois de poursuivre le projet après le stage.
- Je suis prêt à retourner au stage soit pour terminer et montrer le projet en cours, soit si une idée intéressante se présente. Je considérerai certainement la société comme l'une des premières à Saint-Pétersbourg, mais pour le moment je n'en ai pas besoin.
Komarov Nikita
- Je suis en train de suivre la sécurité numérique depuis un certain temps, cela a commencé dès que j'ai entendu parler de Zeronights pour la première fois, je pensais que seule une entreprise vraiment cool pouvait le faire. Pas immédiatement, mais j'ai remarqué que des stages avaient lieu, mais au début, je ne pouvais pas y aller. La même année, j'ai accidentellement vu que sur l'affiche publicitaire en plein centre se trouvait mon ami inconnu qui était arrivé, pensant que c'était un bon signe pour enfin assister à un stage.
- Cela s'est avéré vraiment intéressant, et surtout le temps était constamment plein de quelque chose. Je me souviens, bien sûr, des rapports et du service avec les boîtes à vagues. En fait, je ne m'attendais pas à ce qu'il y ait autant de choses, chaque soir il y avait quelque chose à faire en plus du projet principal, cela diluait bien l'atmosphère et donnait une variété de tâches.
- Dans le cadre du stage, ma tâche consistait à rédiger le cadre des tests de sécurité de l'UEFA. Le sujet est intéressant, surtout compte tenu du fait que dans le cadre d'activités ordinaires je n'ai pas encore eu à aller aussi loin dans ce niveau d'abstraction.
- Les tâches étaient, bien sûr, intéressantes, très probablement du fait que je devais apprendre beaucoup de nouvelles choses ou que j'étais depuis longtemps oublié comme inutile. Malheureusement, il y a eu des choses qui n'ont pas réussi, mais maintenant il y a une incitation à continuer à travailler sur le projet pendant un an.
- J'espère visiter le stage l'année prochaine. Merci beaucoup.
Uvarov Kirill

- J'ai lu le blog de l'entreprise sur Habré. Par conséquent, cette première option était l'endroit où vous pouviez sentir la sphère de l'intérieur
- J'ai aimé le stage. J'ai beaucoup aimé l'atmosphère. Je n'avais jamais été impliqué dans la sécurité auparavant. Par conséquent, je voulais vraiment tout toucher moi-même "avec mes mains".
- Engagé dans une attaque sur des canaux tiers sur des microcontrôleurs. Implémentation d'algorithmes cryptographiques, analyse d'énergie et acquisition de clés.
- La tâche étant très proche de mes intérêts, j'ai donc traité le sujet avec plaisir.
- Grâce au stage, je sais où me développer, donc je suis définitivement prêt à retourner dans l'entreprise :)
Le dernier mot
Pendant le programme d'été, il y a eu aussi des circonstances de force majeure, dont personne n'est en sécurité, mais tous les étudiants ont réagi à cela avec compréhension (dont ils vous remercient), et nous l'avons pris au crayon pour minimiser cela à l'avenir.
Attendez l'annonce de Summ3r 0f h4ck 2020 l'année prochaine!
PS Plus tard, sur un certain nombre de projets de gars, nous publierons leurs articles techniques séparés.