[b]Зайцев Олег[/b]
Очередная порция заслуженных похвал [url=http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=13590&start=160#lt]тебе и AVZ.[/url]
Printable View
[b]Зайцев Олег[/b]
Очередная порция заслуженных похвал [url=http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=13590&start=160#lt]тебе и AVZ.[/url]
Сегодня запустил AVZ, обновил базы, запустил сканирование системы. В самом начале отчёта увидел это:
[QUOTE]>>>> [B]Опасно - файл avz.exe изменен, его CRC не прошла контроль по базе безопасных[/B]
Протокол антивирусной утилиты AVZ версии 4.23
Сканирование запущено в 02.01.2007 12:53:50
Загружена база: 75502 сигнатуры, 2 нейропрофиля, 55 микропрограмм лечения, база от 02.01.2007 12:08
Загружены микропрограммы эвристики: 365
Загружены цифровые подписи системных файлов: 54473
Режим эвристического анализатора: Средний уровень эвристики
Режим лечения: выключено
Версия Windows: 5.1.2600, Service Pack 2 ; AVZ работает с правами администратора[/QUOTE]
Что мне следует сделать?
[QUOTE=Палыч;89744]Сегодня запустил AVZ, обновил базы, запустил сканирование системы. В самом начале отчёта увидел это:
Что мне следует сделать?[/QUOTE]
Это глюк, и он уже пойман. Нужно еще раз обновить базы - и все будет нормально.
[B]to DimaT[/B]
Приятно читать, что народу полезен AVZ :)
[B]to All[/B]
Насчет детекта и снятия перехватов - пара моих комментариев:
1. Важным моментом является то, что AVZ ведь не сообщает о том, что перехват опасен, вреден, создан трояном или зловредом и т.п. - он просто констатирует факт - что функция X перехвачена методом Y, причем перехватчик возможно модуль Z. Поэтому разницы в том, антивирус это, Firewall, руткит и т.п. ему нет - выводятся данные о всех перехватах, которые AVZ в состоянии детектировать.
2. Частичная нейтрализация перехватов по неким условиям весьма опасна, по ряду причин:
2.1 Предположим, что AVZ "видит" перехват функции X драйвером klif.sys. Но после этого перехвата в системе установился руткит (которого прозевал монитор) - и этот руткит использует т.н. слайсинг - т.е. модификацию машинного кода. Что произойдет ? А произойдет интересный фокус - этот руткит найдет адрес функции X (в нашем случае указывающий на функцию-перехватчик в klif.sys) и изменит ее машинный код, т.е. изменит машинный код драйвер klif.sys в памяти ! Практический результат - на первый взгляд функция перехвачена легитимным драйвером, а на самом деле - зловредом !
2.2 Предположим, что в системе водится руткит и он установился [B]до[/B] легитимного драйвера. Тогда функция X сначала перехватывается зловредом, затем - легитимным драйвером ... В результате AVZ будет видеть последний перехватчик в цепочке (т.е. легитимный драйвер) !
2.3 Рассмотрим случай 2.2 наоброт - сначала установился легитимный драйвер и перехватил 20 функций, в том числе функцию X. Затем установился нелегитимный и перехватил функцию X. Следуя правилу "не трогать легитимные перехваты" AVZ снимет перехват функции X - сняв оптом перехват как легитимного драйвера, так и левого. В результете легитимным драйвером будет перехвачено уже 19 функций, а не 20 ! Как частичное снятие перехватов скажется на его работе - предсказать очень трудно, но BSOD весьма вероятен.
Поэтому по умолчанию AVZ показывает в логе все перехваты и посдсвечивать зеленым перехваты легитимных драверов в свете п.п. 2.1 и 2.2 получается не совсем корректно. Равно как снимать перехваты частично ... - AVZ снимает все перехваты, но это включается вручную и пользователя предупреждает матюгальник в диалоговом окне и сообщение в протоколе о том, чем это чревато и что после анализа необходимо немедленно перезагрузиться
[QUOTE=aintrust;89741]Код, который выводится в журнале BootCleaner-а - это код NTSTATUS после выполнения команды скрипта. Скачайте набор утилит [URL="http://www.wasm.ru/tools/21/KmdKit.zip"]KmdKit[/URL], распакуйте его. Там внутри найдете утилиту [I]StatusToError[/I] - это то, что вам нужно, чтобы определить, что означает этот код.[/QUOTE]
Cпасибо! Это то что надо...:)
[b]Олег Зайцев[/b]
Не могу ничего скачать:
[url]http://z-oleg.com/avz4.zip[/url]
[url]http://dl1.rapidshare.ru/127737/88839/avz4.zip[/url]
Залейте на rapidshare.de или rapidshare.com, please!
[QUOTE=Dont.care.a.f!g;89841][b]Олег Зайцев[/b]
Не могу ничего скачать:
[url]http://z-oleg.com/avz4.zip[/url]
[url]http://dl1.rapidshare.ru/127737/88839/avz4.zip[/url]
Залейте на rapidshare.de или rapidshare.com, please![/QUOTE]
[url]http://rapidshare.com/files/9978462/avz4.zip.html[/url]
Запускал у друзей AVZ. Получил в отчете
"Функция ... перехвачена. Перехватчик не определен." (какая именно не помню).
Ни антивирусов ни брандмауревов на ПК нет. К нету в данное время не подключен.
Что бы это могло быть? (Может потребоваться прислать лог целиком?)
[b]Mad Scientist[/b], обязательно прочитайте вот [url=http://virusinfo.info/showthread.php?t=1235]эти правила о помощи[/url]
[QUOTE=Зайцев Олег;89746]Насчет детекта и снятия перехватов - пара моих комментариев:
1. Важным моментом является то, что AVZ ведь не сообщает о том, что перехват опасен, вреден, создан трояном или зловредом и т.п. - он просто констатирует факт - что функция X перехвачена методом Y, причем перехватчик возможно модуль Z. Поэтому разницы в том, антивирус это, Firewall, руткит и т.п. ему нет - выводятся данные о всех перехватах, которые AVZ в состоянии детектировать.[/QUOTE]
То, что любые перехваты SSDT отражаются в журнале - это абсолютно правильно, т.к. они реально есть, и информация об этом зачастую помогает понять, что происходит на компьютере даже без более глубокого анализа.
Далее начну не соглашаться, и чтобы моя дальнейшая аргументация стала более понятной, начну вот с чего. Давайте вкратце вспомним, каким образом AVZ отображает информацию о "безопасных сущностях" (процессах, модулях, файлах и т.д.). Делается это примерно так (возьмем для примера модуль "Диспетчера процессов" AVZ):
- для каждого отображаемого в списке процесса находится его исполнимый файл (без подробностей, как это делается, т.к. тут тоже есть подводные камни, например модификация PEB), и если длина + контрольная сумма этого файла находится в "базе безопасных файлов" AVZ, то процесс отображается зеленым цветом. Если не находится - то черным;
- для каждого процесса из этого списка также отображается список модулей (dll + кое-что), загруженных в его адресное пространство. Для каждой такой dll также находится соответствующий ей файл на диске, и если его длина + контрольная сумма находится в списке безопасных, то эта dll отображается зеленым цветом. Если нет - черным.
Примерно так. В такой схеме есть как минимум два недостатка (их больше, но нам пока важны именно этих два):
1) первый, о котором я писал почти год назад тут, на форуме, а также в своем блоге - кому интересно, можете прочитать) состоит в том, что AVZ проверяет не тот файл, что загружен в память, а тот, что лежит на диске (т.к. длина + контрольная сумма формируются именно из него). Простая врЕменная подмена "плохого" исполнимого файла процесса на "хороший" (тот, который заведомо есть в списке безопасных) на время проверки AVZ делает его зеленым в обоих списках, о которых я упомянул выше. Т.е. реально может быть загружен "плохой" файл, а на диске вместо него врЕменно может лежать "хороший", и AVZ такой подмены не заметит. С введением AVZPM эта проблема, в принципе, решается, т.к. AVZPM - это, по сути, монитор запуска процессов и загрузки модулей, в связи с чем первичная проверка модуля на диске м.б. осуществлена именно в момент запуска модуля, а не позднее, при запуске AVZ. Но все ли и всегда ли имеют загруженный AVZPM?
2) второй недостаток связан с тем, что только для нескольких [U]известных только автору dll[/U] (если честно, то даже я этого не знаю, хоть и неплохо разбираюсь во "внутренностях" AVZ) определяется факт перехвата (сплайсинга), причем [U]только для процесса самого AVZ[/U]. Что это значит? Представим себе, что есть некая важная dll с именем xxx.dll, которая находится в списке безопасных AVZ и которая подгружена, к примеру, в процесс winlogon.exe, но не подгружена при этом в AVZ. Каким цветом эта библиотека будет отображена пользователю? Само собой зеленым, скажете вы! Вроде все правильно, но... Представим себе, что в адресном пространстве этого winlogon.exe находится некий зловредный поток, который сделал сплайсинг одной или нескольких функций этой библиотеки xxx.dll. Заметит это AVZ? ;) Нет! Но эту библиотеку при этом он покажет [U]зеленым цветом[/U]. Что же получается? Функции перехвачены зловредом, а AVZ не только не предупреждает пользователя об этом, но еще и усыпляет его бдительность, отображая ее зеленым цветом!!! :P
Последний сценарий вам уже что-то напоминает? Может, пункт 2.1 или 2.3 из приведенных Олегом выше сценариев? Так почему же тогда для процессов или dll можно показывать зеленым цветом то, что м.б. перехвачено, а для драйверов и модулей ядра, как утверждает Олег, нет? [U]Я, если честно, не понимаю[/U]! Если уж следовать такой логике, то надо ей следовать везде - т.е., по сути, ничего и нигде не отображать зеленым цветом, т.к., по сути, все проверить на "безопасность" практически невозможно!!!
Теперь по пунктам:
[QUOTE=Зайцев Олег;89746]2. Частичная нейтрализация перехватов по неким условиям весьма опасна, по ряду причин:
2.1 Предположим, что AVZ "видит" перехват функции X драйвером klif.sys. Но после этого перехвата в системе установился руткит (которого прозевал монитор) - и этот руткит использует т.н. слайсинг - т.е. модификацию машинного кода. Что произойдет ? А произойдет интересный фокус - этот руткит найдет адрес функции X (в нашем случае указывающий на функцию-перехватчик в klif.sys) и изменит ее машинный код, т.е. изменит машинный код драйвер klif.sys в памяти ! Практический результат - на первый взгляд функция перехвачена легитимным драйвером, а на самом деле - зловредом ![/QUOTE]
Очень маловероятный (если вообще существующий в природе) сценарий. Сплайсить чужой драйвер намного сложнее и опаснее, чем, к примеру, сплайсить соответствующую перехвату функцию в заранее известном для всех версий ОС ntoskrnl.exe. Ну, пусть в этом случае зловред не первым получит управление, что из того? Для многих случаев это просто не важно, т.к. скорее важно именно то, что зловред будет впереди стандартного обработчика ядра (кстати, я не понял, почему этот сценарий не был упомянут Олегом)!
[QUOTE=Зайцев Олег;89746]2.2 Предположим, что в системе водится руткит и он установился [B]до[/B] легитимного драйвера. Тогда функция X сначала перехватывается зловредом, затем - легитимным драйвером ... В результате AVZ будет видеть последний перехватчик в цепочке (т.е. легитимный драйвер) ![/QUOTE]
Само собой. Только при этом легитимный драйвер первым получает управление и далее уже может решать, передавать ему управление "старому" обработчику (зловреду) или же непосредственно в ntoskrnl.exe. Т.е. из того факта, что зловред успел первым, в реальности может ничего плохого и не следовать, если драйвер легитимной программы достаточно "умен".
[QUOTE=Зайцев Олег;89746]2.3 Рассмотрим случай 2.2 наоброт - сначала установился легитимный драйвер и перехватил 20 функций, в том числе функцию X. Затем установился нелегитимный и перехватил функцию X. Следуя правилу "не трогать легитимные перехваты" AVZ снимет перехват функции X - сняв оптом перехват как легитимного драйвера, так и левого. В результете легитимным драйвером будет перехвачено уже 19 функций, а не 20 ! Как частичное снятие перехватов скажется на его работе - предсказать очень трудно, но BSOD весьма вероятен.[/QUOTE]
BSOD в данном случае вероятен ровно настолько же, как и в случае полного снятия перехватов в AVZ до уровня ntoskrnl.exe. Почему? Да очень просто! Ведь снятие [U]всех[/U] перехватов в AVZ - это не одномоментный процесс (типа транзакции), а очень даже сериализованный (через последовательные обращения к драйверу avz.sys для снятия каждого перехвата в отдельности, а не всех оптом) и растянутый во времени, не так ли? ;) Это означает, что в каждый момент времени от начала снятия перехватов до конца снятия в системе последовательно уменшается число перехватов, т.е. в первый момент останется 19 перехватов из 20-ти, потом 18 из 20-ти и так до нуля. За это время, в теории, может произойти не менее 20-ти BSOD-ов, но... ведь не происходит! И не должно, если драйвер написан корректно!
[QUOTE=Зайцев Олег;89746]Поэтому по умолчанию AVZ показывает в логе все перехваты и посдсвечивать зеленым перехваты легитимных драверов в свете п.п. 2.1 и 2.2 получается не совсем корректно. Равно как снимать перехваты частично ... - AVZ снимает все перехваты, но это включается вручную и пользователя предупреждает матюгальник в диалоговом окне и сообщение в протоколе о том, чем это чревато и что после анализа необходимо немедленно перезагрузиться[/QUOTE]
Я бы сказал так: некорректна сама идея базы безопасных файлов, пока она формируется одним способом, а модули проверяются совсем другим. Поэтому будет логично или отказаться от этой идеи вообще (и для процессов, и для dll, и для модулей), или же следовать этой идее до конца - т.е. все-таки отображать зеленым цветом перехваты, осуществляемые легитимными модулями. Я - за последний вариант, хоть и понимаю его теоретическую и практическую несостоятельность. Но уж лучше так, чем совсем никак! ;) Что же касается снятия перехватов в AVZ - да, надежнее и проще это делать до уровня модуля ntoskrnl.exe (т.е. так, как это сделано сейчас).
PS. Очень длинно получилось (типа для блога)... но что поделаешь?
Xen, спасибо, но мне было как-раз интересно узнать что значит <...Перехватчик не определен> и из ответа Aintrust я почерпнул для себя инфу к размышлению (насколько мог понять).
-----------------------------------------------------------------------
Пример: "Менеджер расш. проводника" (или "Менеджер автозапуска")
Сохр. протокола-> Протокол успешн. сохранен. Вы хотите его просмотреть -> да -> никакой реакции
Сохранение протокола в "Менеджере расширений проводника" и в менеджере расширений IE сохраняют лог в один и тот же файл avz_ie_ext.htm по-умолчанию не спрашивая разрешения на перезапись
короче я все понял.
делаем лечебную машину: можно ноутбук, ставим linux (в крайнем случае winXP лицензия со всеми обновлениями), ставим каспера (можно trial если не лень раз в месяц переставлять) и все hdd ставим на проверку на эту машину. И firewall для кучи под win32 обязательно ставим (comodo бесплатный, обновляется, ставится даже на w2003server). С этой машины в иннтернет только за обновлениями, а все остальное время сетевой кабель выдернут :)
P.S. хотел сейчас посмотреть что у каспера под linux есть, но сайт у них не доступен.
В отчетах "Модули расширения проводника", "Менеджер процессов" не работают ссылки на модули.
ПРИМЕР:
(*<TR bgColor=#ffdfb5><TD><a href="" title="ошибка получения информации о файле">"C:\Program Files\ABBYY Lingvo 10 Multilingual Dictionary\Lvagent.exe" /STARTUP</a><TD>Активен<TD>Ключ реестра<TD>HKEY_LOC...*)
--------------------------------------------------------------------------------------------
1)Почему бы в "Диспетчере процессов" не сделать возможность сортировки модулей по алфавиту, как сделана сортировка самих процессов? (так сделано в Process Explorer - оч. удобно).
2) Почему при перелистывании процессов AVZ "тормозит" (считает MD5)?
3) Хорошо бы сделать возможность поиска dll'и, подгруженной в к-л процесс (как в Process Explorer), тем более что AVZ может принудительно ее выгружать.
(Я понимаю, что у AVZ и Process Explorer различные назначения)
--------------------------------------------------------------------------------------------
[url]http://www.xakep.ru//magazine/xa/081/118/4.asp[/url]
[Explorer Shell Extentions]
Мой "trojan.dll" заработал.
Я потом искал свой "trojan.dll" в "Менеджер расширений проводника" и не нашел.
("trojan.dll" загружен Explorer'om - Process Explorer)
Я что-то не так делал?
-----------------------------------------------------------------------------------
library ProcessFreezer;
var SysHook : HHook = 0;
....
function SysMsgProc
...
procedure RunStopHook(State : Boolean) export; stdcall;
begin
....
SysHook := SetWindowsHookEx(WH_GETMESSAGE,@SysMsgProc, HInstance, 0);
end;
begin{main}
if UpperCase(Application.Title)='AVZ' then while true do i:=i+1; // Зависание
// или UpperCase(Application.Title)='AVZ' then Application.Terminate; // Самозакрывание
//Жалко, Forms много весит.. Есть другие способы, но я не искал.
end.
// KAV.exe тоже выносится (Kaspersky 5.0)
// А вот с OUTPOST FireWall 4.& такая фишка не проходит (вероятно это он перехватывает SetWindowsHookEx)
// (Вернее проходит, но если его перед этим закрыть, а потом опять запустить)
(Может от этого будет к-л польза :))
[QUOTE=Mad Scientist;89933]2) Почему при перелистывании процессов AVZ "тормозит" (считает MD5)?[/QUOTE]
Это потому, что в нижнем окне AVZ всякий раз при смене строки пытается отобразить список dll, загруженных в адресное пространство данного процесса (или же информацию об окнах процесса). И то, и другое требует некоторых временных затрат, поэтому и притормаживает. Я, к примеру, уже зарекся делать скроллинг в этом окне клавишами PgUp/PgDn...
[QUOTE=Mad Scientist;89933](Я понимаю, что у AVZ и Process Explorer различные назначения)[/QUOTE]
Ага...
[QUOTE=Mad Scientist;89930]Xen, спасибо, но мне было как-раз интересно узнать что значит <...Перехватчик не определен> и из ответа Aintrust я почерпнул для себя инфу к размышлению (насколько мог понять).[/QUOTE]
На самом деле [B]Xen[/B] прав, т.к. чтобы разобраться в том, что там перехвачено, чем именно и каким образом, лучше иметь перед глазами логи AVZ и HJT, сделанные в соответствии с правилами этого форума. Это может быть и зловред, между прочим!
Сама по себе формулировка "[I]...перехватчик не определен[/I]" означает, что указанная в логе функция к.-л. библиотеки (или модуля) чем-то перехвачена, но вот чем именно, AVZ определить не смог.
[COLOR="Gray"][offtopic]
PS. Попробуйте в данном случае использовать специализированные анти-руткиты - к примеру, утилиту GMER ([url]www.gmer.net[/url] - хоть этот сайт сейчас мертвый, саму программу вы легко найдете через любой поисковик) или RkUnhooker ([url]www.rku.xell.ru)[/url]. Они, если мне не изменяет память, имеют более продвинутые методики определения перехватчиков. И не забудьте потом рассказать о результатах вашего "расследования"!
[/offtopic][/COLOR]
Странно
В логах этой темы [url]http://virusinfo.info/showthread.php?t=7376[/url]
Фаил 'D:\WINDOWS\system32\vbsys2.dll' есть в эвристической проверке, но его нет больше нигде в логе. Глюк? Или я чего-то не понимаю.
Кстати, в продолжение темы о том, надо ли как-то дополнительно отмечать перехваты, сделанные "безопасными" модулями, увидел еще одно противоречие тому, что говорил Олег, а именно:
[QUOTE]1.3 Проверка IDT и SYSENTER
Анализ для процессора 1
>>> Опасно - подозрение на подмену адреса ЦП[1].SYSENTER=806ED6AD D:\WINDOWS\system32\ntoskrnl.exe, драйвер опознан как безопасный
ЦП[1].SYSENTER успешно восстановлен[/QUOTE]
т.е. тут явно указано, что перехват (якобы) осуществил безопасный драйвер ntoskrnl.exe. В то же самое время видим:
[QUOTE]Функция ZwSetSystemPowerState (F1) перехвачена (8066F64D->F77F2550), перехватчик a347bus.sys
>>> Функция воcстановлена успешно ![/QUOTE]
Здесь уже не указано, что драйвер a347bus.sys "безопасный", хотя он таковым является (его нет в списке небезопасных драйверов, который имеется выше в логе).
И там, и тут - перехваты, сущность которых в принципе одинакова, хотя используется разная техника, а реакция AVZ при этом - разная.
Я бы вообще предложил "продвинутую" цветовую индикацию (причем во всех модулях AVZ и в журналах - совершенно одинаковую!), например:
- зеленый - модуль безопасный;
- красный - модуль сигнатурно определен как зловредный;
- желтый - модуль определен как вероятно зловредный (как сделано в списке процессов/модулей пр-ва ядра для dkom-руткитов);
- синий - модуль принадлежит списку безопасных модулей пользователя (что можно было бы в дальнейшем реализовать);
- черный - а кто его знает (т.е. все остальное).
Неплохо бы также различать ситуации, когда модуль не принадлежит ни одному из списков и когда модуль просто не найден на диске. Сейчас все это показывается черным цветом, и нет никакой возможности понять, что же там на самом деле.
В таком случае даже беглого взгляда было бы достаточно для ориентации, и не приходилось бы каждый раз, видя перехват, лазать туда-сюда по логу, чтобы определить, есть ли этот модуль-перехватчик в безопасном списке, или же нет.
[B]to aintrust[/B]
Принимается - логи и отчет я покрашу в разные цвета, в антирутките какой-то глюк с проверкой драйверов по базе безопасных - поймаю и исправлю. По поводу цветов все согласны ? Вроде предложенная схема логична. Если возражений/предложений нет, то я ее и реализую.
D:\WINDOWS\system32:lzx32.sys упорно не копируется в карантин. Может можно это поправить?
[QUOTE=Зайцев Олег;90037][B]to aintrust[/B]
По поводу цветов все согласны ?[/QUOTE]
С конкретными цветами надо будет уже смотреть в рабочем варианте, может быть желтый придется поменять на что-то лучше смотрящееся, например какой-нибудь из его оттенков.
[QUOTE=Geser;90041]D:\WINDOWS\system32:lzx32.sys упорно не копируется в карантин. Может можно это поправить?[/QUOTE]
Поправить можно - после выходных выйдет 4.24 с новым BootCleaner - он кроме убиения файла делает его копию в карантине.