Многие хают цитадель или зевсоподобные за низкий отстук, порой даже не подозревая что отстук в админку еще не гарантирует полноценной работы их любимой коняшки.
Так получилось и в моем случае, после теста на живых АВ, банально берем виртуалки, ставим всё подряд, начинаем тестить. Без особых проблем оказавшись внутри IE я не думал что GData может принести хлопоты. на большинстве других АВ логи стабильно шли, тут же меня ждал вот такой облом(на чексумму не смотрим, с этим подробнее):
Оказывается, это модуль BankSafe, суперпупер мера противодействия и удаления известных и не очень банковских троев. Не буду сюда копипастить то вранье что написано на офф сайте, лучше расскажу правду о работе этого модуля.
Дллка подгружается в браузеры из ядра с помощью notify routine и из под юзера я не знаю как можно помешать ей загрузиться (может она не защищает свои файлы, но тут помешает УАК + могут чекаться CRC).
После подгрузки дллка определяет в каком же она находится процессе, и если это один из известных браузеров - начинается проверка модулей типа wininet, nspr, chrome итд, тоесть тех, на чьи функции так часто любят ставить хуки. Как говорил Инде-Клерк "кодопатч есмь зло". Авторы Gdata с ним согласны и выпиливают абсолютно любую попытку пропатчить кодовую секцию. Пару слов о чексумме на скриншоте, нули получены уже после пошагового трейса и моих изменений, обычно же там флаги и смещения, по которым были записаны байты, наверное так можно отслеживать старые и новые малварки.
Вобщем это всё хорошо, но вопрос как с этим бороться. Сначала я попробовал сделать банальный FreeLibrary(). Увы и ах, толи дллка на это не рассчитана, толи глюки, она не выгружается.
Посмотрел что происходит после детектирования хуков. Подгружается BankSafeRemoval из папки GData, эта либа как видно из названия очистит хуки и попытается снести ваш троянчик, если его удалось определить. Так зачем давать ей это сделать?
Самое быстрое и веселое что пришло мне в голову - поставить хук на LoadLibrary, а в нем сравнивать название дллки с негодной, если они совпадают, то такой поток надо усыпить. Навечно.
Сказано - сделано
Проверил, работает, репорты исправно идут, никаких окон не показывается.
Вот так вот просто обойти защиту которой в гугле посвящена аж целая статья.
PS
На статью эта заметка не претендует, тем не менее поднималась тема статей, и вот как я вижу статью, готового кода-нет, киддисы-мимо, есть задача, решение представлено, можно обсуждать
Так получилось и в моем случае, после теста на живых АВ, банально берем виртуалки, ставим всё подряд, начинаем тестить. Без особых проблем оказавшись внутри IE я не думал что GData может принести хлопоты. на большинстве других АВ логи стабильно шли, тут же меня ждал вот такой облом(на чексумму не смотрим, с этим подробнее):
Оказывается, это модуль BankSafe, суперпупер мера противодействия и удаления известных и не очень банковских троев. Не буду сюда копипастить то вранье что написано на офф сайте, лучше расскажу правду о работе этого модуля.
Дллка подгружается в браузеры из ядра с помощью notify routine и из под юзера я не знаю как можно помешать ей загрузиться (может она не защищает свои файлы, но тут помешает УАК + могут чекаться CRC).
После подгрузки дллка определяет в каком же она находится процессе, и если это один из известных браузеров - начинается проверка модулей типа wininet, nspr, chrome итд, тоесть тех, на чьи функции так часто любят ставить хуки. Как говорил Инде-Клерк "кодопатч есмь зло". Авторы Gdata с ним согласны и выпиливают абсолютно любую попытку пропатчить кодовую секцию. Пару слов о чексумме на скриншоте, нули получены уже после пошагового трейса и моих изменений, обычно же там флаги и смещения, по которым были записаны байты, наверное так можно отслеживать старые и новые малварки.
Вобщем это всё хорошо, но вопрос как с этим бороться. Сначала я попробовал сделать банальный FreeLibrary(). Увы и ах, толи дллка на это не рассчитана, толи глюки, она не выгружается.
Посмотрел что происходит после детектирования хуков. Подгружается BankSafeRemoval из папки GData, эта либа как видно из названия очистит хуки и попытается снести ваш троянчик, если его удалось определить. Так зачем давать ей это сделать?
Самое быстрое и веселое что пришло мне в голову - поставить хук на LoadLibrary, а в нем сравнивать название дллки с негодной, если они совпадают, то такой поток надо усыпить. Навечно.
Сказано - сделано
Код:
HMODULE WINAPI LoadLibraryAhandler(LPCSTR lpFileName)
{
if(StrStrIA(lpFileName,"BankSafeRemoval")!=false)
{
Sleep(-1);
}
return LoadLibraryA(lpFileName);
}
Вот так вот просто обойти защиту которой в гугле посвящена аж целая статья.
PS
На статью эта заметка не претендует, тем не менее поднималась тема статей, и вот как я вижу статью, готового кода-нет, киддисы-мимо, есть задача, решение представлено, можно обсуждать