Реверс-инженер

Обязанности

  • Анализировать безопасность протоколов и ПО (системного и прикладного, Windows и Linux);
  • Разрабатывать средства проверки защищенности и концептов имитации атак (C/C++ или Python);
  • Разрабатывать прикладное и системное ПО в области ИБ (системные утилиты или отдельные компоненты);
  • Взаимодействовать с командой разработки;
  • Формировать отчеты по проведенному исследованию;
  • Анализ защищенности и поиск уязвимостей в устройствах и компонентах: ICS / IoT / Automotive и т.д., а также в программных продуктах, применяемых на промышленных предприятиях;
  • Анализ двоичного иисходного кода с целью поиска ошибок реализации, уязвимостей и/или восстановления логики работы программ;
  • Установление причин их появления и написание РОС - кода;
  • Анализ защищенности микропроцессорных устройств (участие в работах по извлечению прошивок из устройств, анализу их содержимого, восстановление логики работы);
  • Анализ промышленных протоколов, разбор проприетарных протоколов, создание диссекторов;
  • Участие в разработке отчетов по результатам оказания услуг анализа защищенности;
  • Участие в работах Компании по созданию систем защиты промышленной автоматизации от кибернетических угроз;
  • Формирование стендов для тестирования и демонстрации возможностей продуктов Компании.
  • Анализ логики работы отдельных частей приложения;
  • Написание функциональных прототипов, повторяющих работу реконструированного кода;
  • Анализ изменений, вносимых патчами;
  • Обнаружение логических ошибок и уязвимостей в двоичном коде;
  • Разработка PoC-эксплойтов и способов безопасной проверки на наличие/отсутствие уязвимости;
  • Анализ функционала вредоносного кода и документирование способов его взаимодействия со средой выполнения;
  • Документирование обнаруженных проблем;
  • Исследование мобильных устройств с целью воспроизведения алгоритмов шифрования, схем опробования пароля, а также проприетарных протоколов взаимодействия с устройствами различных производителей;
  • Исследование PoC различных уязвимостей с целью решения задач масштабирования на более широкий класс устройств;
  • Возможно участие в исследованиях направленных на поиск уязвимостей и написания для них PoC;
  • Возможно участие в исследованиях направленных на разработку методов извлечения данных из мобильных устройств;
  • Анализ продуктов конкурентов и продуктов с открытым исходным кодом на предмет оценки способа и качества реализации функционала по извлечению данных из мобильных устройств, составления отчетов о преимуществах и недостатках по сравнению с нашими продуктами, разработки рекомендаций для команды для повышения качества наших продуктов;
  • Анализ ПО на НДВ по методике ФСТЭК;
  • Анализ поведения ПО в песочнице на предмет наличия НДВ;
  • Исследование ПО методами реверс-инжиниринга (Reverse engineering);
  • Исследование сетевых протоколов;
  • Проведение фаззинг-тестирования (Fuzzing);
  • Участие в процессе автоматизации тестирования ПО;

Знания и навыки

  • Знание типов уязвимостей в бинарном коде, причины их появления, способы обнаружения и эксплуатации;
  • Знание архитектуры и опыт разработки приложений для *nix-систем.
  • Знание языка Assembler для различных архитектур (x86-64, ARM);
  • Знание одного из языков ассемблера (x86/amd64/arm/arm64/mips/mips64);
  • Знание Windows Internals (Native API) и/или Linux Internals;
  • Знание принципов работы современных механизмов безопасности Windows и/или Linux;
  • Знаний основных типов программных уязвимостей;
  • Хорошее знание архитектуры и внутреннего устройства OC хотя бы одной популярной операционной системы (Windows/UNIX/Linux/MacOS);
  • Хорошее знание языка ассемблера для как можно большего числа архитектур процессоров (x86, AMD64, ARM, AArch64, MIPS);
  • Умение “читать” и понимать код на популярных языках программирования (С/C++/C#/Delphi/Java/Python/PHP/JavaScript);
  • Знание особенностей кодогенерации современных компиляторов;
  • Умение программировать на C/C++ и, желательно, на Python (для прототипирования);
  • Понимание особенностей применения криптографии и возникающих при этом проблем;
  • Знание алгоритмов и структур данных;
  • Знание форматов файлов и методов компрессии;
  • Знание сетевых протоколов и методов их анализа, стека TCP/IP (WireShark);
  • Знание протоколов HTTP, SOAP;
  • Знание инструментов и методов анализа кода;
  • Владение IDA Pro и средствами ее расширения (плагины, IDAPython);
  • Навыки отладки двоичного кода;
  • Представление о MITRE ATT&CK, технике и тактике атакующих;
  • Умение самостоятельно разрабатывать недостающий инструментарий;
  • Опыт реверс инжиниринга и дебаггинга (знание Assembler для архитектур ARM, MIPS, x86, и т.д.);
  • Профессиональное владение основными инструментами дизассемблирования и отладки: IDA Pro / Ghidra / WinDbg и т.д.;
  • Знание стека протокола TCP/IP и понимание принципов работы прикладных протоколов;
  • Понимание принципов и реализации различных алгоритмов криптографии;
  • Практический навык отладки (windbg, GDB, x64dbg и др.) и реверс-инжиниринга (IDA, Radare2, Ghidra) приложений архитектуры x86 и ARM с умением расширять функционал отладчика и дизассемблера собственными скриптами в случае необходимости;
  • Навыки программирования С/С++, понимание структуры и принципов работы исполняемых файлов Windows и Linux;
  • Уверенное знание shell Windows и Linux/macOS;
  • Способность разобраться в работе системы без начальных знаний (BlackBox-тестирование);
  • Опыт реверс-инжиниринга программного обеспечения с использованием одного или нескольких отладчиков: WinDbg, OllyDbg/ X64Dbg, и статических анализаторов IDA Pro/Ghidra, а также средств динамического анализа и трассировки;
  • Опыт разработки на C/C++ или Python;
  • Опыт реверс инжиниринга в ОС Android;
  • Опыт в разработке необходимого для исследования инструментария на скриптовых языках программирования (python, ruby или др.);

Дополнительно

  • Наличие сертификатов (OSED, etc);
  • Наличие полученных публичных уязвимостей (CVE, БДУ);
  • Успешное участие в программах bug bounty;
  • Наличие собственных исследований и публичных выступлений;
  • Участие в CTF;
  • Желательно базовое знание байткода популярных сред выполнения (IL, Java);
  • Желательно знание архитектуры и внутреннего устройства хотя бы одной популярной мобильной операционной системы (Windows/Android/iOS);

Примеры вакансий

  • Поиск по ключевому слову Reverse engineering на hh.ru
  • Поиск по ключевому слову Ghidra на hh.ru
  • Поиск по ключевому слову IDA Pro на hh.ru