> Наоборото, не детектируется упакованный nProtect'ом внимательнее Оригинал: Код (Text): Norman 2009.04.30 W32/Pinfi.A nProtect 2009.1.8.0 2009.05.03 - Panda 10.0.0.14 2009.05.03 W32/Parite.B Пакованный: Код (Text): Norman 6.06.06 2010.09.19 - nProtect 2010-09-20.01 2010.09.20 Win32.Parite.F Panda 10.0.2.7 2010.09.19 Suspicious file
так вот оно что кстати, открой военную тайну - кто придумал имя детекта Katusha? Какой подтекст именно такого названия. Т.е. не по чем палят, а почему решили дать именно такое имя?
Понятия не имею, но есть даже заметка в блоге. http://www.securelist.com/ru/blog/32891/Packed_Win32_Katusha_n
n0name Короче, да, с nProtect'ом все понятно, наверняка автодятлом сделали сигнатуру украв детект, а оригинал тупо не знают. Что такое за продукт nProtect я в душе не чАю. Насчет ЛК, я проверил нашим внутренним эмулятором и запакованный успешно распаковался и после этого задетектировался и даже вылечился. Видать была какая-то бага с проходом такого пакера/криптора
> Насчет ЛК, я проверил нашим внутренним эмулятором и запакованный успешно распаковался и после этого задетектировался и даже вылечился ну это совсем не удивительно как бы. там эмулируй на здоровье, даже 4-5 летние движки справились бы наверняка. Поэтому и удивил касперский.
n0name В x64 если описать диспетчер исключений в IMAGE_DIRECTORY_ENTRY_EXCEPTION и разбить хидер, тогда хэндлер получит управление при инициализации загрузчика, тоесть это теневой вызов кода, по типу тлс ?
У кала эвристик примитивнейший, однако есть подрубаемый модуль от AVZ. Эмулятор там тоже далек от совершенства.
Вот поэтому я сюда и захожу раз в несколько месяцев, т.к. школота не считает своим долгом обосновать мнение
> В x64 если описать диспетчер исключений в IMAGE_DIRECTORY_ENTRY_EXCEPTION и разбить хидер, тогда хэндлер получит управление при инициализации загрузчика, тоесть это теневой вызов кода, по типу тлс ? Насколько я помню RtlLookupFunctionEntry() не чекает то что границы функции из RtlpUnwindHistoryTable попадают в границы модуля. В теории можно попробовать, но там подводные камни скорее всего встретятся.
n0name Вроде нет подводных камней никаких.. sww_ Если определить фиксап для IMAGE_NT_HEADERS.OptionalHeader.AddressOfEntryPoint как это обработают аверы ? Загрузчик так в начале читает ссылку в LdrpFetchAddressOfEntryPoint(), а затем выполняет релокацию и настройку импорта.
> Вроде нет подводных камней никаких.. завтра напишу тестовый примерчик. > Загрузчик так в начале читает ссылку в LdrpFetchAddressOfEntryPoint(), а затем выполняет релокацию и настройку импорта. угу, это печалит немного, ибо несколько интересных фишек можно на этом нюансе сделать было бы. только это лишняя черта для эвристика - нормальные проги редко фиксапят заголовок
Я правильно понимаю, что исключение произойдет в ntdll? Если так, то вызовется обработчик для функции ntdll из таблицы эксепшенов ntdll, а не экзешника.
> Я правильно понимаю, что исключение произойдет в ntdll? Если так, то вызовется обработчик для функции ntdll из таблицы эксепшенов ntdll, а не экзешника. почему это? пробегаем же тупо по функциям и смотрим на то попадает ли адрес сепшна в регион. при этом регион мы можем задать и 0x00..00-0xFF..FF. Главное чтоб наша функция была выше в RtlpUnwindHistoryTable чем ntdll'шная.
RtlLookupFunctionTable (full source ->wrk, правда там для ядра с PsInvertedFunctionTable) сначала находит описание модуля, в котором произошло исключение, в InvertedFunctionTable, следовательно возвращается FunctionTable того модуля, в котором произошло исключение (а у ntdll есть запись в InventedFunctionTable). Каким образом тогда может получить управление наш обработчик? В любом случае это теоретически, конечно. Практика все разрулит.
Хороший вопрос, кстати. К сожалению я уже дома и не могу посмотреть наши сорцы, но думаю, что ничего хорошего не будет Вопрос обхода эмуляторов через использование различных структур (PEB/TEB и т.п.) и фишек различных ставился уже ни раз. Все поддержать невозможно физически, однако, не стоит забывать о том, что иногда проще задетектить способ, т.к. в нормальных программах такого нет.