Анализировать безопасность протоколов и ПО (системного и прикладного, 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