Расследование киберпреступлений
Иногда возникает задача определить архитектуру программы. Конечно, продвинутые пользователи спросят: “Что в этом сложного? Есть же PE заголовки в бинаре, все очевидно…”. Киберкриминалисты, конечно, расскажут, что нарушители могут запросто модифицировать этот заголовок или вообще оставить неопределенным. Обсудим, зачем вообще знать этот заголовок? Для проведения реверс-инжиниринга программ используется дизассемблер. Как правило, он использует как раз этот заголовок, чтобы правильно восстановить ассемблерные команды, которые затем восстановит в язык более высокого уровня. Если заголвок изменен, он выберет неправильный дизассемблер, собственно, ничего у него не выйдет. Конечно, он может попытаться угадать и предложит пользователю выбрать самому архитектуру процессора. Но что, если пользователь понятия не имеет какая это архитектура? Пользователь попробует методом перебора все архитектуры ( учтем, что не все фреймворки поддерживают все архитектуры). Этот способ займет достаточное количество времени. Как же нам сократить это время ? Можно использовать метод частотно байтовых сигнатур. Идея в том, что в разных архитектурах используются разные байты, которые представляют собой машинные команды. Построив статистическую модель исследуемого файла можно попробовать определить его арихитектуру. https://cyberleninka.ru/article/n/identifikatsiya-arhitektury-protsessora-vypolnyaemogo-koda-na-baze-mashinnogo-obucheniya-chast-1-chastotno-baytovaya-model/viewer Реализовал свой вариант программы, опираясь на статьи и материал Израилова К.Е. Используется 3 метода классификации: K ближайших соседей, логистическая регрессия и случайный лес. Оптимизировал программу под консольное использование (для true экспертов) Заходите, пользуйтесь! https://github.com/Loftven/arch_detect Всем киберзащищенности 🪲