Приветствую всех. Одно из моих хобби — исследовать malware и следить за вялой технологической гонкой av и malware -вендоров.
Давно уже не секрет, что существует множество троянов, которые блокируют обновления антивирусов, чтобы остаться жить в системе подольше,
оттянув срок своего детекта антивирусом.
Я хотел бы рассказать только об одном из способов, который показался мне забавным из-за того, что не требует прав администратора, давая возможность запущенному из под Guest-аккаунта трояну заблокировать обновление баз некоторых AV.
Многие антивирусы при обновлении своих баз используют временные файлы, расположенные в директориях, которые доступны для записи всем пользователям включая Guest. В процессе обновления ошибка доступа к одному из таких файлов расценивается антивирусом как критическая
и процесс обновления завершается с ошибкой. Таким образом, трояну нужно всего лишь заблокировать временный файл, то есть открыть
с ShareAccess == 0. Я приведу три примера, хотя их, конечно, можно насчитать больше. Кроме того, некоторые антивирусы используют msiexec,
который сам по себе тоже может «упасть», не имея возможности записать временный файл.
Итак, примеры.
Во время обновления использует временный файл:
%ProgramData%\Avira\AntiVir Desktop\TEMP\UPDATE\webcat\common\int\webcat0.dat.gz
Avira скачивает туда содержимое одноименного файла с сервера обновления.
Любой пользователь, включая гостя, может открыть этот файл с эксклюзивным доступом до обновления Avira.
Вот результат:

Два продукта. Во время обновления используют временный файл:
%ProgramData%\AVG2014\SetupBackup\COREx64.msi
Если продукт AVG натыкается на ошибку, открывая этот файл на запись, обновления не выполняется,
антивирус даже предлагает обновиться, что не помогает — обновление всё равно висит как failed:

«Уязвимы» оба продукта — ESET NOD32 и ESET SmartSecurity. Тут временных файлов больше.
Для NOD32 путь будет такой:
%ProgramData%\ESET\ESET NOD32 Antivirus\updfiles\temp\em0XX_YY.dat
Для SmartSecurity название директории меняется название директории в \ESET\, путь будет такой:
%ProgramData%\ESET\ESET Smart Security\updfiles\temp\em0XX_YY.dat
XX и YY — это, соответственно, значения 00..23 и 32|64.
То есть em000_32.dat, em00_64.dat, em001_32.dat и так далее.
Необходимо заблокировать все эти файлы, тогда мы видим:

Для антивирусов, использующих msiexec в процессе обновления баз я могу предложить угадывание имени случайного файла
в %windir%\temp и его блокировки. Возможно, это реализуемо.
Я не проверял все, но за эти могу сказать точно: Avast и KIS. Не используют доступных всем пользователям временных файлов
в процессе обновления.
Avira: 14.0.1.759
AVG: AVG Free (14.0.0.4259) and AVG InternetSecurity Trial (14.0.0.4259)
ESET: Eset Smart Security 7 (7.0.302.26)
Давно уже не секрет, что существует множество троянов, которые блокируют обновления антивирусов, чтобы остаться жить в системе подольше,
оттянув срок своего детекта антивирусом.
Я хотел бы рассказать только об одном из способов, который показался мне забавным из-за того, что не требует прав администратора, давая возможность запущенному из под Guest-аккаунта трояну заблокировать обновление баз некоторых AV.
Многие антивирусы при обновлении своих баз используют временные файлы, расположенные в директориях, которые доступны для записи всем пользователям включая Guest. В процессе обновления ошибка доступа к одному из таких файлов расценивается антивирусом как критическая
и процесс обновления завершается с ошибкой. Таким образом, трояну нужно всего лишь заблокировать временный файл, то есть открыть
с ShareAccess == 0. Я приведу три примера, хотя их, конечно, можно насчитать больше. Кроме того, некоторые антивирусы используют msiexec,
который сам по себе тоже может «упасть», не имея возможности записать временный файл.
Итак, примеры.
Avira
Во время обновления использует временный файл:
%ProgramData%\Avira\AntiVir Desktop\TEMP\UPDATE\webcat\common\int\webcat0.dat.gz
Avira скачивает туда содержимое одноименного файла с сервера обновления.
Любой пользователь, включая гостя, может открыть этот файл с эксклюзивным доступом до обновления Avira.
Вот результат:

AVG Free, AVG InternetSecurity
Два продукта. Во время обновления используют временный файл:
%ProgramData%\AVG2014\SetupBackup\COREx64.msi
Если продукт AVG натыкается на ошибку, открывая этот файл на запись, обновления не выполняется,
антивирус даже предлагает обновиться, что не помогает — обновление всё равно висит как failed:

NOD32
«Уязвимы» оба продукта — ESET NOD32 и ESET SmartSecurity. Тут временных файлов больше.
Для NOD32 путь будет такой:
%ProgramData%\ESET\ESET NOD32 Antivirus\updfiles\temp\em0XX_YY.dat
Для SmartSecurity название директории меняется название директории в \ESET\, путь будет такой:
%ProgramData%\ESET\ESET Smart Security\updfiles\temp\em0XX_YY.dat
XX и YY — это, соответственно, значения 00..23 и 32|64.
То есть em000_32.dat, em00_64.dat, em001_32.dat и так далее.
Необходимо заблокировать все эти файлы, тогда мы видим:

Дополнительно
Для антивирусов, использующих msiexec в процессе обновления баз я могу предложить угадывание имени случайного файла
в %windir%\temp и его блокировки. Возможно, это реализуемо.
Какие AV этому не подвержены?
Я не проверял все, но за эти могу сказать точно: Avast и KIS. Не используют доступных всем пользователям временных файлов
в процессе обновления.
Версии рассматриваемого ПО
Avira: 14.0.1.759
AVG: AVG Free (14.0.0.4259) and AVG InternetSecurity Trial (14.0.0.4259)
ESET: Eset Smart Security 7 (7.0.302.26)