-

Сообщение от
Зайцев Олег
Это исторически сложившаяся методика. Причина - см. лог в аттаче - это список функций kernel32.dll с эталонной XP SP2, адреса которых не совпадают с заявленными у нее в таблице экспорта, их там штук 30. В принципе, сейчас легко пойти "от противного" - т.е. запретить анализировать эти 30 и разрешить все остальное - это достигается настройкой, так что в принципе перенастроить очень легко
Ну, если это просто "дань истории", то может уже стоит все вернуть на свои места, чтобы исключить дальнейшие сомнения (и с остальными проверяемыми библиотеками тоже - т.к., полагаю, там тоже есть "исключения")?
Ну а что касается этого "списка 30-ти", то, как мне помнится, эти ф-ции - это прямая переадресация на соответствующие эквиваленты в ntdll, к примеру там kernel32.AddVectoredExceptionHandler -> ntdll.RtlAddVectoredExceptionHandler и т.п., т.е. "разрулить" это, мне кажется, вообще не составляет труда - взгляни на их экспорты, сам все сразу поймешь! 
Добавлю еще вот что: мне кажется, что уже настало время сделать отображение имени перехватчика для ф-ций user mode - естественно для случаев, когда адрес перехватчика вычисляется и принадлежит одному из модулей (благо их список уже есть) в адресном пр-ве процесса - т.е. сделать нечто подобное, что сделано для перехваченных ф-ций в SDT.
Последний раз редактировалось aintrust; 22.05.2005 в 23:00.
-
-
Будь в курсе!
Будь в курсе!
Надоело быть жертвой? Стань профи по информационной безопасности, получай самую свежую информацию об угрозах и средствах защиты от ведущего российского аналитического центра Anti-Malware.ru:
-

Сообщение от
aintrust
Ну, если это просто "дань истории", то может уже стоит все вернуть на свои места, чтобы исключить дальнейшие сомнения (и с остальными проверяемыми библиотеками тоже - т.к., полагаю, там тоже есть "исключения")?
Ну а что касается этого "списка 30-ти", то, как мне помнится, эти ф-ции - это прямая переадресация на соответствующие эквиваленты в ntdll, к примеру там kernel32.AddVectoredExceptionHandler ->
ntdll.
RtlAddVectoredExceptionHandler и т.п., т.е. "разрулить" это, мне кажется, вообще не составляет труда - взгляни на их экспорты, сам все сразу поймешь!
Добавлю еще вот что: мне кажется, что уже настало время сделать отображение имени перехватчика для ф-ций user mode - естественно для случаев, когда адрес перехватчика вычисляется и принадлежит одному из модулей (благо их список уже есть) в адресном пр-ве процесса - т.е. сделать нечто подобное, что сделано для перехваченных ф-ций в SDT.
Да, kernel32 логично перевести на общую схему (я, честно говоря, просто забыл про нее). Аналогичная вещь есть в ntdll.dll - там проверяется все, за исключением определенных "функций".
Насчет поиска модуля-перехватчика UserMode я думал, но шансы обысно невелики (т.е. при перехвате "по Рихтеру" - с внедрением DLL - это сработает).
-
-

Сообщение от
Зайцев Олег
...
Насчет поиска модуля-перехватчика UserMode я думал, но шансы обысно невелики (т.е. при перехвате "по Рихтеру" - с внедрением DLL - это сработает).
Нет, это касается не только перехвата "по Рихтеру", естественно!
А как же WriteProcessMemory/CreateRemoteThread с созданием потока, а как же WriteProcessMemeory/SetThreadContext, а как же SetWindowsHookEx, а внедрение через InitDLLs и пр. - и это только то, что сразу пришло в голову! 
Полагаю, что методика поиска модуля перехвата и его отображение в AVZ должны быть похожи как для kernel mode, так и для user mode. Ты сейчас это уже сделал (почти) для km, осталось перенести методику на user mode, почему нет?
-
-
Олег, вот такой вопрос, в среднем антивирусы весят от 8 до 12 мегабайт плюс базы около 2, а твоя АВЗ такая крохотная, и при этом позволяет работать не хуже них, с чем этот феномен связан.
Кстати хочу поздравить, твоя АВЗ засветилась в журнале хакер, ура товарищи!!!
-

Сообщение от
egik
Олег, вот такой вопрос, в среднем антивирусы весят от 8 до 12 мегабайт плюс базы около 2, а твоя АВЗ такая крохотная, и при этом позволяет работать не хуже них, с чем этот феномен связан.
Кстати хочу поздравить, твоя АВЗ засветилась в журнале хакер, ура товарищи!!!
Ну, на самом деле размер антивиря не должен быть большим - у AVP размер раширенной базы 5.5 мб ... а там у них и движок, и базы. Размер очень сильно зависит от количества вирусов, поддерживаемых упаковщиков ... если AVZ сьанет поддерживать упаковщики (что возможно), размер возрастет на 300-500 кб - появится unpack.avz 
А в каком номере хакера и что пишут
?
-
-

Сообщение от
Зайцев Олег
Ну, на самом деле размер антивиря не должен быть большим - у AVP размер раширенной базы 5.5 мб ... а там у них и движок, и базы. Размер очень сильно зависит от количества вирусов, поддерживаемых упаковщиков ... если AVZ сьанет поддерживать упаковщики (что возможно), размер возрастет на 300-500 кб - появится unpack.avz

А в каком номере хакера и что пишут

?
в этом номере
http://www.xakep.ru/articles/magazin...sp?magazine=xa
в статье про руткиты я попробую сделать копию и выложить здесь
-

Сообщение от
egik
Ну, здесь наверное не стоит - а то издатели "хакера" наедут еще из-за нарушения авторских прав ... лучше почтой. Кстати, вышла моя статья на аналогичную тематику в КомпьютеПресс №5 "RootKit — принципы и механизмы работы".
-
-
это не та, что была здесь напечатана?
кстати очень интересная тема эти руткиты, надо побольше почитать, а как твое мнение по этому ресурсу www.rootkit.com
-

Сообщение от
egik
это не та, что была здесь напечатана?
кстати очень интересная тема эти руткиты, надо побольше почитать, а как твое мнение по этому ресурсу
www.rootkit.com
Ресурс www.rootkit.com я знаю давно, у меня скачаны все имеющиеся там программы и я постоянно отслеживаю материалы этого сайта - там много интересных и толковых вещей.
-
-

Сообщение от
aintrust
Возможность восстановления SDT - это только первый шаг на пути борьбы с km руткитами, пусть не самый удачный (пока что, как мы видим в этой ветке, все начали "бороться" с файерволлами и антивирусами), но уже это - "хоть что-то"
Это именно борьба с самыми примитивными руткитами. Вопрос в том, что примитивными они ещё будут очень недолго. Причин на то много. А то, что грядёт (rootkit.com)- даже меня пугает.

Сообщение от
aintrust
(acshield - это acshield.dll - компонента DefencePlus, подключаемая через SetWindowsHookEx):
Неправильно. Она загружается во все процессы при их старте. Иначе консоль была бы обделена.....
-
-

Сообщение от
rav
Это именно борьба с самыми примитивными руткитами. Вопрос в том, что примитивными они ещё будут очень недолго. Причин на то много. А то, что грядёт (rootkit.com)- даже меня пугает.
Полагаю, что "технологий" будет много, как примитивных (типа различных вариантов модификации SDT), так и непримитивных. Одно другого совсем не исключает. А какова вероятность того, что AVZ сразу же будет иметь smart-технологию поиска руткитов (ну, хотя бы что-то BlackLight- или RootkitRevealer-подобное) и, в дальнейшем, борьбы с ними? Ну, Олегу, как я понимаю, надо было с чего-то начать, чтобы расширить возможности поиска user mode руткитов, дальше (я надеюсь) будет больше.
Но, на сколько я знаю, он себе и не ставил задачу полноты охвата - иными словами, AVZ всегда будет иметь некие ограниченные возможности в этом смысле. И причин этому множество: начиная от большого разнообразия технологий и кончая чисто физическими - ему же просто за всем не угнаться! 

Сообщение от
rav
Неправильно. Она загружается во все процессы при их старте. Иначе консоль была бы обделена.....
Да, каюсь, я детально не смотрел на способ внедрения (да и писал уже после удаления с компьютера
) - увидел экспорт функций hook-ов в этой dll и наличие ее во многих процессах - вот и предположил. Про консольные приложения (точнее, цель внедрения dll), естественно, не подумал - меня больше интересовали моменты, связанные с перехватом функций.
-
-

Сообщение от
aintrust
кончая чисто физическими - ему же просто за всем не угнаться!

Эта проблема решается двумя путями: лобо OpenSource- проект, либо коммерциализация его. Других путей нет и не будет.
-
-
По поводу руткитов могу заметить, что есть некая грань - RootKit как специализированная/изощренная программа, или некий троян/adware/SpyWare с руткит механизмом. AVZ нацелен именно на последнюю категорию - а на этом фронте 90% "зверей" применяют маскировку на уровне UserMode (а это достаточно корректно лечится), либо простейшие KernelMode - как тот-же Haxdoor. Вот на поиск таких зверей AVZ и заточен ...
Но это отвлечение - вышел новый AVZ - 23.05.2005 (13564 сигнатуры, 1 нейропрофиль, 52 микропрограммы лечения, 234 микропрограммы эвристики, 2 микропрограммы восстановления настроек системы, 30065 подписей безопасных файлов
В нем:
1. Появилась опция "Восстановление системы" (меню Файл). Назначение - исправление всяких изменение в настройках IE, рабочего стола ... там пока две микропрограммы восстановления, но в ближайшее время их станет штук 20 ... (МП хранятся в базе, там для этого выделен отдельный файл repair.avz)
2. Переработан менеджер автозапуска
3. Переделан антируткит - теперь он может ловить перехваты за счет модификации кода ядра
4. Появилось окно для просмотра модулей пространства ядра - к нему естественно подключена база безопасных файлов ...
Последний раз редактировалось Зайцев Олег; 23.05.2005 в 16:18.
-
-
Visiting Helper
- Вес репутации
- 76
W3k SP1 Server Eng, W2k SP4 Server Eng
В "Диспетчер процессов" не для всех процессов отображается список DLL.
Насколько я понял не отображается для тех, что получены через Native API. Это так и должно быть?
-
-
Нет, это не совсем правильно - для обнаруженных через Native API процессов поиск DLL тоже должен идти через Native ... а идет судя по всему штатным образом ... это неправильно, сейчас подправлю
-
-

Сообщение от
Зайцев Олег
3. Переделан антируткит - теперь он может ловить перехваты за счет модификации кода ядра
Неплохо бы вывести бы адрес jmp-а, и (для начала) если этот адрес не попадает в пределы к.-л. из драйверов, то написать что-то типа "перехватчик не определен/неизвестен". То же самое неплохо бы сделать и для user mode перехватов.

Сообщение от
Зайцев Олег
4. Появилось окно для просмотра модулей пространства ядра - к нему естественно подключена база безопасных файлов ...
Логичнее было бы, наверное, сделать значение колонки "Размер..." в 16-ричном виде, а не в десятичном, плюс (обязательно!
)сделать сортировку по всем колонкам (и не только в этом окне), а то вывод ф-ции ZwQuerySystemInformation(SystemModuleInformation, ...), мягко говоря, не слишком презентабелен. 
И еще: а как в этот список попала ntdll.dll с адресом в нижней половине адресного пр-ва?
Последний раз редактировалось aintrust; 24.05.2005 в 08:57.
-
-

Сообщение от
aintrust
1. Неплохо бы вывести бы адрес jmp-а, и (для начала) если этот адрес не попадает в пределы к.-л. из драйверов, то написать что-то типа "перехватчик не определен/неизвестен". То же самое неплохо бы сделать и для user mode перехватов.
2. Логичнее было бы, наверное, сделать значение колонки "Размер..." в 16-ричном виде, а не в десятичном, плюс (
обязательно!

)сделать сортировку по всем колонкам (и не только в этом окне), а то вывод ф-ции ZwQuerySystemInformation(SystemModuleInformation, ...), мягко говоря, не слишком презентабелен.
И еще: а как в этот список попала ntdll.dll с адресом в нижней половине адресного пр-ва?

1. Сделано. Если JMP найден, то идет попытка найти драйвер по адресу. Если найдется, то выводится его имя. Если нет - то выводится "Перехватчик неизвестен. Адрес xxxxx"
2. Я сделал вывод в виде (hex (dec)) - место на экране есть ... Плюс сортировка по автомату по имени модуля или по любому столбцу
3. ntdll.dll "официально" значится как "модуль пространства ядра", это единственная DLL в этом списке с адресом менее 800000h - ее возвращает ZwQuerySystemInformation ... кстати она, судя по адресу, лежит на границе ... наверное, в MS ее посчитали "полуядреной"
-
-

Сообщение от
Зайцев Олег
1. Сделано. Если JMP найден, то идет попытка найти драйвер по адресу. Если найдется, то выводится его имя. Если нет - то выводится "Перехватчик неизвестен. Адрес xxxxx"
Может стоит адрес jmp выводить всегда, независимо от того, найден ли для него сооветствующий драйвер или нет - это упростило бы процесс дальнейшего анализа.
2. Я сделал вывод в виде (hex (dec)) - место на экране есть ... Плюс сортировка по автомату по имени модуля или по любому столбцу
А что, адрес в десятичном формате может кому-то понадобиться? Народ, откликнитесь, есть такие?
3. ntdll.dll "официально" значится как "модуль пространства ядра", это единственная DLL в этом списке с адресом менее 800000h - ее возвращает ZwQuerySystemInformation ... кстати она, судя по адресу, лежит на границе ... наверное, в MS ее посчитали "полуядреной"
Ну, это-то известно (про ntdll.dll в этом списке - в виде исключения), также как и интуитивно понятна логика MS в данном случае, однако это никак не причисляет ее к "модулям пространства ядра", и тем более "официально".
Можно еще согласился с трактовкой "системный модуль" (именно такую трактовку мы видим у Гари Неббетта). А что, разве NtQuerySystemInformation(SystemModuleInformation.. .) где-то официально документирована?
Впрочем, это я так - для уточнения позиции!
-
-

Сообщение от
aintrust
1. Может стоит адрес jmp выводить всегда, независимо от того, найден ли для него сооветствующий драйвер или нет - это упростило бы процесс дальнейшего анализа.
2. А что, адрес в десятичном формате может кому-то понадобиться? Народ, откликнитесь, есть такие?
3. Ну, это-то известно (про ntdll.dll в этом списке - в виде исключения), также как и интуитивно понятна логика MS в данном случае, однако это никак не причисляет ее к "модулям пространства ядра", и тем более "официально".

Можно еще согласился с трактовкой "системный модуль" (именно такую трактовку мы видим у Гари Неббетта). А что, разве NtQuerySystemInformation(SystemModuleInformation.. .) где-то официально документирована?
Впрочем, это я так - для уточнения позиции!

1. В принципе можно и так ... в хвосте строки, в скобках ... тогда имеет смысл сделать аналогично для UserMode.
2. Нет, адрес то я конечно в Hex оставил, адреса в dec формате - извращение. Я поле "размер" имел в виду ...
3. NtQuerySystemInformation(SystemModuleInformation ...) прописана у Неббета - это уже "официальное" документирование
- все-таки печатное издание, это уже что-то. А у MS я в свою бытность перерыл весь MSDN - куцое описание NtQuerySystemInformation там есть, но про SystemModuleInformation там нет ровным счетом ничего ...
-
-
Вопрос по АВЗ 3.45
Программа выдаёт у меня ошибку с таким текстом: Access violation at Address 0051987B in module "avz.exe" Read of adress 00A53FF8. ???
И как понимать такую фразу в логе: ... ошибка чтения машинного кода.
И получаеться вот такой лог:
-