
Hoy compartiremos los resultados del cuarto programa de entrenamiento de verano Summ3r 0f h4ck en nuestra compañía en el departamento de investigación.
En los últimos años, los resultados se pueden encontrar aquí: 2016 , 2017 . El departamento de auditoría en un artículo separado aquí y un artículo conjunto para 2018 .
Entonces, comencemos con números, hechos y otra información interesante.
- 76 solicitudes de toda Rusia y países vecinos
- 10 candidatos seleccionados
- Los candidatos representaban ciudades como Saratov, Kaliningrado, Rostov del Don, Moscú, Vladivostok, San Petersburgo, Krasnodar.
- Universidades: SSU (llamado así por Chernyshevsky), BFU llamado así por I. Kant, Universidad Federal del Sur, HSE MIEM, Universidad Federal del Lejano Oriente (FEFU), Universidad Técnica del Estado de San Petersburgo, Universidad Técnica Técnica de Moscú con el nombre de N.E. Bauman, Universidad Politécnica de San Petersburgo de Pedro el Grande, Cruzada del Ministerio del Interior de la Federación de Rusia.
Durante el período de capacitación de nuestro departamento del 15 de julio al 15 de agosto, se dieron conferencias sobre temas como:
- Introducción a la búsqueda de vulnerabilidades en aplicaciones binarias y código fuente
- Análisis de seguridad estática de grandes proyectos de código abierto
- Recuperación de información simbólica durante la ingeniería inversa.
- Seguridad de firmware (Acerca de UEFI BIOS)
- Presentamos la herramienta de análisis binario Ghidra
- Fases con KLEE, libfuzz, AFL
- Introducción a los ataques de terceros contra la microarquitectura.
Uno de los estudiantes también dio una conferencia interna sobre el tema "Descripción general de la protección mediante la virtualización de código utilizando el ejemplo de VMProtect". Gracias a los chicos por preguntas interesantes, tormentoso interés en conferencias. Por separado, vale la pena señalar que los estudiantes de ambos departamentos podrían asistir a conferencias y participar en mini-CTF, que se puede leer con más detalle en un artículo del departamento de auditoría .
En cuanto a los temas de este año, hubo tales:
- Trazador basado en hardware de procesador Intel
- Plugin para Analizador de Clang
- Empoderando a Pigaios
- Marco de investigación de seguridad de firmware Uefi
- API difusa basada en estado
- Ataques de canal lateral en microcontroladores.
- Un marco para recuperar nombres de funciones automáticamente
- Adaptación de AFL Phaser para aplicaciones de red
- Descompilación de eBPF en Ghidra
Vale la pena señalar que en el proceso de trabajar en un tema, el tema en sí y su dirección a veces han evolucionado y modificado por una razón u otra. Podemos decir que todos los chicos son geniales y trataron de exprimir al máximo durante este período bastante corto del programa. Aunque lo más importante es adquirir nuevos conocimientos y experiencia (y citas).
Es importante entender que nuestro programa Summ3r 0f h4ck es un programa de capacitación, no un programa de pasantías (aunque por simplicidad, algunas personas lo llaman así). En el proceso, los chicos junto con los mentores hacen el tema del proyecto, escuchan conferencias, resuelven diferentes laboratorios, obtienen varios consejos sobre diferentes aspectos de la seguridad de la información y, por supuesto, responden sus preguntas.
Como siempre, recurrimos a las revisiones no editables de nuestros estudiantes sobre su mes dentro de nuestra empresa (que querían publicarlas).
Las preguntas para la mini entrevista fueron así
- ¿Por qué decidiste hacer una pasantía en Digital Security? ¿Qué te atrajo de la empresa?
- ¿Te gustó la pasantía? ¿Qué fue especialmente memorable? ¿Cómo coincidió la realidad con tus expectativas?
- Cuéntanos sobre tu tarea / tareas.
- ¿Le parecieron interesantes las tareas en las que trabajó durante la pasantía? ¿Hubo algo que quisiste hacer pero fracasaste?
- ¿Estás listo para regresar a la empresa para una pasantía o para trabajar?
Y aquí están algunas de las respuestas dadas por algunos de los estudiantes.
Novoseltseva Alyona

- Digital Security es una empresa líder en Rusia en el campo de la seguridad de la información con el equipo de inversores más grande y amigable. Siempre quise entrar en el ambiente de las personas cercanas a usted en espíritu. Aquí hay verdaderos profesionales y mucho que aprender de ellos. Además, en mi región no existen tales empresas y comunidades en general que al menos de alguna manera se relacionen con la ingeniería inversa.
- Realmente me gustó la pasantía. Lo más sorprendente es la atmósfera en la que opera la empresa. Los chicos especialmente atentos estarán de acuerdo conmigo: en los escritorios de los empleados no había un solo pedazo de papel, excepto su propio cuaderno con pensamientos e ideas. ¡Esto dice mucho y una tremenda rareza en nuestro mundo burocrático!
Se le proporcionan las mejores condiciones de trabajo: silencio, comodidad y, lo más importante, personas. El personal y su investigación son muy inspiradores. Realmente me gustó trabajar en un proyecto en un equipo con mentores: resolvimos problemas día y noche, juntos buscamos soluciones, juntos nos regocijamos cuando algo funcionaba. No he experimentado tanta felicidad en mucho tiempo. Sasha, Kolya. Me inclino ante ti. - Mi trabajo de investigación fue el desarrollo en Sleigh de un sistema de traducción de bytecode eBPF en pCode para la posibilidad de desmontar y descompilar. Era necesario desarrollar una extensión para Ghidra, que permitiera desmontar y descomponer los programas eBPF. Tuve que dominar el lenguaje de especificación del procesador Sleigh, comprender las características de la arquitectura eBPF y la interacción de los programas eBPF con el núcleo, adquirir experiencia en el desarrollo de extensiones para Ghidra y trabajar con Eclipse, y mucho más.
¡La tarea se completó con éxito! El proyecto está disponible públicamente y se publica en Github. Cualquiera puede probar el resultado descargando el ensamblaje de extensión desde el repositorio utilizando el siguiente enlace. Se pueden encontrar más detalles en un artículo separado. - Sí, las tareas eran complejas e interesantes, me gustó mucho el proceso de desarrollo y el trabajo en equipo. Me gustaría mucho estudiar el tema del análisis automático de programas y la búsqueda de vulnerabilidades binarias aún más profunda, interesante es la ejecución simbólica.
- Con mucho gusto! Como la universidad aún no ha estudiado durante varios años, ¡me prepararé para la próxima pasantía! Para trabajar, ciertamente y probablemente ya lo habría hecho
Enlace al proyecto
Bukovsky Victor

Decidí hacer una pasantía en Digital Security porque esta compañía fue la organizadora de mi conferencia favorita de seguridad de la información: ZeroNight.
La pasantía se hundió en el alma. Todo salió a la perfección. Ese caso raro cuando la realidad superó mis expectativas. Recordé especialmente cómo el último día de la pasantía realizaron un cuestionario sobre el conocimiento de la compañía y las habilidades psíquicas :), por la victoria en la que recibí una caja de galletas y una camiseta.
Mi tarea era escribir complementos para IDA PRO 7 usando la API Hex-Rays. La tarea de uno de ellos era mostrar en una tabla especial (Fig. 1) funciones que contenían funciones que no eran seguras a discreción del investigador (la tautología no podía ser ignorada). El propósito de otro, podría decirse, el complemento principal para esta pasantía, fue restaurar los nombres de las funciones a partir de archivos ejecutables despojados (-s) utilizando información de apoyo. En mi caso, tomamos los nombres de las funciones de los parámetros que se pasaron a las funciones de registro (Fig. 2).

Las tareas para mí fueron absolutamente no triviales, lo que solo alimentó el interés en su implementación. Irónicamente, fui una de las pocas personas afortunadas que tuvo el honor de trabajar con tres curadores. Al principio, fue Artem quien me presentó este tema, preparó Bitbucket para almacenar el proyecto, un tablero en Trello, con tareas y objetivos iniciales, y también me dijo cómo trabajar con el lenguaje de marcado Markdown. Luego, Dmitry Evdokimov se convirtió en mi curador, quien en el pasado reciente ya se había ocupado de la restauración de los nombres de las funciones, me llevó a los pensamientos necesarios y reveló más profundamente el problema. Bueno, Boris Ryutin, la persona que me entrevistó y gracias a quien terminé en esta pasantía, se convirtió en mi curador. Con él, ya recibí tareas precisas destinadas a obtener el resultado deseado. Todo sucedió a un ritmo muy vigoroso, y todo lo que planeamos fue implementado, por lo que muchas gracias nuevamente.
No estoy seguro de la pasantía, ya que me parecieron muy pocos meses en esta empresa. Quiero permanecer en él el mayor tiempo posible, así que sí, estoy listo para volver al trabajo.
Enlace al proyecto: https://github.com/o0Starley0o/HexRaysPlugins
Deseó permanecer en el anonimato
- ZeroNights / eran amigos
- Naturalmente, realmente me gustó. Las expectativas estaban justificadas y aún más.
Lo primero que vale la pena señalar es el tema que traté. Planeaba ver algo que no podría (no haría) en casa y, de hecho, el tema se correspondía perfectamente con esto.
Aunque no puedo decir que dediqué mucho tiempo a ella, estoy completamente satisfecho con el resultado y el conocimiento adquirido en el proceso (de hecho, un poco más de una semana y el resultado principal se obtuvo =).
Me alegra que para cualquier pregunta, una pregunta sobre el tema pueda obtener inmediatamente una respuesta del mentor (y la respuesta es "¿quieres probar / aprender más?").
El segundo es mucha gente interesante, no solo de empleados, sino también de pasantes, por quienes podemos juzgar el futuro de la seguridad de la información.
En tercer lugar, los pentesters hicieron una selección muy buena de máquinas con configuraciones / servicios vulnerables (desde tareas xss con bots, escalamiento de privilegios, hasta la captura secuencial de un administrador de dominio).
A todos se les permitió jugar y fue muy divertido durante otras 2 semanas. Los que no le dieron suficiente amor calcularon mal mucho.
Cuarto: conferencias, fue agradable llenar los vacíos de conocimiento o descubrir algo nuevo para usted.
Casi todas las conferencias inversas fueron muy serias; los Pentesters repartieron comida y tuvieron tareas interactivas. - La tarea de eliminar la pista de ejecución en modo SMM (anillo-2). No puede habilitar el seguimiento desde el modo menos privilegiado, necesita un código SMM para habilitarlo. Naturalmente, él no sabe cómo hacer esto.
Hicimos un parche, lo lanzamos a SMM (para esto era necesario actualizar el UEFI) y utilizando las herramientas existentes (WinIPT) pudimos registrar cómo se ejecuta el código en SMM. - Ahora hay una cantidad tan enorme de tecnologías que es imposible simplemente tomar y probar todo en una fila. Siempre necesitas un incentivo o una tarea que te haga mirar algo nuevo.
Entonces aparece un deseo natural: "¿Puedo usar esta tecnología para mis tareas? ¿Puede ser más fácil / más eficiente con ella?".
Por lo tanto, estoy satisfecho con mi tema.
Sin embargo, valió la pena llevar el proyecto al menos a un fuzzer primitivo. Esta es una de esas cosas que no puedo probar sin un estímulo externo. - sin comentarios
Khabarov Oleg
- En mi opinión, en Rusia, las compañías que usan ingeniería inversa en sus actividades profesionales son pocas, y aquellas que lo usan para encontrar vulnerabilidades, y no para el análisis de virus, y menos aún, son Digital Security y Positive Technologies.
- La pasantía ayudó a dar forma a las pautas sobre dónde ir si desea ser un revendedor, en lugar de un "especialista en seguridad de la información" abstracto. Recordé lo que eran conferencias relativamente simples sobre las conferencias pentest y de carga de la cabeza de los inversores.
- Mi tarea consistía en refinar la herramienta de ingeniería inversa de Pigaios. Su objetivo es encontrar funciones de biblioteca de código abierto en un binario compilado estáticamente en comparación. Sin embargo, no traté con el mecanismo de comparación en sí, sino con el refinamiento de esa parte de la funcionalidad que extrajo las definiciones de estructuras, tipos, asociaciones, etc. de las fuentes. Como resultado, finalicé el analizador de estos elementos y agregué soporte para proyectos que se crean utilizando make. Decidí no integrar estas mejoras en Pigaios, sino crear una herramienta separada, porque es más fácil desmontarla por separado que profundizar en el código de Pigaios.
- No puedo decir que me gustó la tarea, pero ayudó a mejorar la comprensión del código C, y gracias a esta tarea aprendí que puede analizar el código C sin comprender la teoría de la ingeniería del compilador, pero simplemente use libclang. Por lo tanto, es poco probable que modifique mi instrumento. Si alguien quiere, traté de escribir limpiamente y dejé comentarios en todas partes.
Gracias a las conferencias de los inversores, me di cuenta de lo que quería hacer, a saber, análisis binario dinámico (fuzzing, instrumentación). - Me alegrará si en el futuro logro conseguir un trabajo en Digital Security, ya que hay muchos profesionales en su campo.
Enlace al proyecto: https://github.com/Barkhat26/decl-exporter
Zabelina Margarita
- Anteriormente había completado una pasantía en otra compañía como empleado del servicio de seguridad de la información. Allí tuve que lidiar más con los problemas de seguridad web. Pero en el equipo de CTF, siempre resolvía tareas inversas, a menudo por interés que leía sobre ataques binarios. Me resultó interesante ver cómo funcionan los inversores, ver cómo voy a hacer frente a ese trabajo. Además, fue interesante ver el DSEC desde adentro.
- La pasantía es buena. Sobre todo me gustaron las conferencias. Porque Casi todo el tiempo estás ocupado con el proyecto, la oportunidad de distraerte y resolver pequeñas tareas, refrescando tu cabeza. Además, aprendí muchas cosas nuevas, en algún lugar consolidé viejos conocimientos.
Las expectativas / realidad coincidieron bastante. - Me ocupé de las implementaciones de verificador para Clang Static Analyzer. La tarea no es rocketsaines, sino los logros que puedo aplicar para mi tesis. En primer lugar, tuve que familiarizarme con la herramienta, ver qué puede hacer la lib de clag y aprender a recopilar verificadores de prueba simples. Se decidió además que iniciaría la implementación del verificador para el detector de desbordamiento de enteros. La idea de tal corrector se indicó en la lista de posibles correctores de clanes, pensé que la cosa era útil y tomé. Elegí un enfoque con análisis AST y verificación de reparto. Pero tal solución determina solo desbordamientos potenciales. Para una verificación precisa, puede usar análisis de contaminación y solucionadores SMT. No hay herramientas preparadas para trabajar con la corrupción en la biblioteca, hubo desarrollos de otros investigadores, que tomé como base. Desafortunadamente, no pude terminar mi tarea en un mes, pero voy a terminar el proyecto como parte de la tesis.
- La idea misma de que se dará cuenta de lo que luego será aplicable y útil en el trabajo real ya está alimentando el interés en el proyecto. Quiero reescribir el corrector de manchas para que luego pueda usarse no solo en mi proyecto.
- El equipo de DSEC es excelente, todos los expertos son geniales. Yo vendría a trabajar. Pero no me gustaría volver a hacer una pasantía, la tutoría fue decepcionante en mi opinión. Dado que solo teníamos un mes, en el momento adecuado, no recibí un comentario del mentor. Y dediqué mucho tiempo a la excavación autopropulsada, aunque pude obtener una respuesta de un mentor experimentado. Solo si no hay tutoría, entonces, ¿por qué necesito una pasantía? Puedo cortar mi propio proyecto en casa.
Enlace al proyecto: https://github.com/dR3m/IntOverflow-CSA-plugin
Sankin Nikita
- Digital Security atrajo temas de proyectos y comentarios de participantes de pasantías anteriores, así como muchos artículos sobre Habré escritos por empleados. En general, de una publicación en Habré también aprendí sobre la pasantía. También había un deseo de cambiar la situación, haber completado una pasantía en otra ciudad y haber probado proyectos que no hago en mi trabajo principal.
- La pasantía no salió como esperaba, principalmente debido a que el alquiler de un apartamento no tuvo éxito, lo que me impidió concentrarme en el proyecto y hacer todo a tiempo. Además, al principio era vergonzoso que la tarea consistiera más en escribir código que en investigar, pero aquí probablemente se trate de una falta de coincidencia de expectativas y otros factores personales.
- Necesitábamos implementar el marco de prueba de vulnerabilidad de firmware UEFI basado en la solución chipsec existente. El problema era que era difícil mantener el código chipsec, por lo que tenía que reescribir todo maravillosamente en python 3.xy posiblemente agregar alguna funcionalidad nueva.
- En la tarea, me pareció interesante no tanto escribir código como estudiar las tecnologías con las que tuve que trabajar. Quería terminar el proyecto hasta la etapa HAL (capa de abstracción de hardware) y estudiar con más detalle el funcionamiento de los dispositivos de hardware y sus interfaces. Desafortunadamente, las razones mencionadas en el párrafo 2 lo impidieron, pero planeo continuar el proyecto después de la pasantía.
- Estoy listo para volver a la pasantía para completar y mostrar el proyecto actual, o si surge una idea interesante. Definitivamente consideraré a la compañía como una de las primeras en empleo en San Petersburgo, pero por el momento no la necesito.
Komarov Nikita
- He estado siguiendo a Digital Security durante algún tiempo, comenzó desde el momento en que escuché por primera vez sobre Zeronights, pensé que solo una compañía realmente genial puede hacer esto. No de inmediato, pero noté que se realizaban pasantías, sin embargo, al principio no pude ir. En el mismo año, accidentalmente vi que en el cartel publicitario justo en el centro estaba mi amigo desconocido que había llegado allí, pensé que era una gran señal para finalmente asistir a una pasantía.
- Resultó realmente interesante, y lo más importante, el tiempo estaba constantemente lleno de algo. Recuerdo, por supuesto, los informes y el servicio con las waveboxes. De hecho, no esperaba que hubiera tantas cosas, cada noche había algo que hacer además del proyecto principal, esto diluía bien la atmósfera y daba una variedad de tareas.
- Como parte de la pasantía, mi tarea era escribir el marco de prueba de seguridad de uefi. El tema es interesante, especialmente considerando el hecho de que en el marco de las actividades ordinarias aún no he tenido que profundizar tanto en este nivel de abstracción.
- Las tareas eran, por supuesto, interesantes, muy probablemente por el hecho de que tenía que aprender muchas cosas nuevas o que me habían olvidado por mucho tiempo como innecesarias. Desafortunadamente, hubo cosas que no tuvieron éxito, pero ahora hay un incentivo para continuar trabajando en el proyecto durante un año.
- Espero visitar la pasantía el año que viene. Muchas gracias
Uvarov Kirill

- Leí el blog de la compañía en Habré. Por lo tanto, esta primera opción era donde podías sentir la esfera desde adentro
- Me gustó la pasantía. Me gustó mucho el ambiente. No había estado involucrado con la seguridad antes. Por lo tanto, realmente quería tocar todo "con mis manos".
- Participó en un ataque a canales de terceros en microcontroladores. Implementación de algoritmos criptográficos, análisis de energía y adquisición de claves.
- La tarea está muy cerca de mis intereses, así que traté el tema con gusto.
- Gracias a la pasantía, sé dónde desarrollarme, así que definitivamente estoy listo para regresar a la empresa :)
Palabra final
Durante el programa de verano, también hubo circunstancias de fuerza mayor, de las cuales nadie está a salvo, pero todos los estudiantes reaccionaron a esto con comprensión (por lo que agradecen), y lo tomamos a lápiz para minimizar esto en el futuro.
¡Espera el anuncio de Summ3r 0f h4ck 2020 el año que viene!
PD: Más adelante, en varios proyectos de chicos, publicaremos sus artículos técnicos por separado.