Pull to refresh

Comments 3

Спасибо, ятебяненавижу, за интересный кейс!

Переписать на rust - hell gate, на новую идею не тянет, имхо. Один вопрос, а ав реально в статик анализе считают легитимным GetProcAddress? По-моему там всё несколько сложнее, и зачастую эта апишка вызовет Алерт )

P.s. без негатива, круто , спасибо за статью.

Спасибо за вопрос. Вы правы, что GetProcAddress может быть триггером в динамическом или эвристическом анализе, но в статическом анализе он легитимен на 100% по нескольким причинам.

Статические сигнатуры строятся на паттернах - уникальных байт-кодах, хэшах участков кода, специфичных последовательностях API. Одиночный вызов GetProcAddress встречается в миллионах легитимных приложений (от драйверов принтеров до игр Steam). Внедрение сигнатуры на него даст миллион ложных срабатываний - ни один вендор этого не сделает

GetProcAddress(“NtCreateThreadEx”) + вызов полученного адреса + отсутствие цифровой подписи + работа из временной директории - да, это повод для алерта. Но в нашем случае GetProcAddress используется для VirtualAlloc, LoadLibrary, GetProcAddress (рекурсивно для самой себя) функций, которые легитимный рантайм Rust или любой инсталлятор вызывает на раз

Sign up to leave a comment.

Articles