Никогда не исследовали, как вирустотал сканит файлы? Понятно, что для каждого антивируса заведена отдельная виртуалочка, но меня интересует другое. Ведь он поддерживает кучу аверов и у каждого забирает текстовое значение сигнатуры/детекта. То бишь есть какой то универсальный интерфейс у всех аверов, чтобы попросить мол "мистер авер, проверь плиз этот файл и скажи, какая у него сигнатура"?
У каспарова и ole-интерфейс есть и в журнал событий виндовый он отчитывается. Скорей всего второй вариант для большинства антивирусов применим. --- Сообщение объединено, 31 мар 2020 --- Хз что мешает для каждого антивируса сделать отдельное решение, например петон-скрипт, который как надо скормит антивирусу файл и как получится заберет результат. Без универсального инструмента.
Пока нашел такой вариант, пишут, что многие аверы реализуют у себя такой интерфейс: https://docs.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-iattachmentexecute --- Сообщение объединено, 31 мар 2020 --- Ну и как вариант можно попробовать через AMSI. --- Сообщение объединено, 31 мар 2020 --- https://github.com/colinbull/AMSI-VirusChecker/blob/master/src/VirusChecker/VirusChecker.cs https://github.com/jsakamoto/AntiVi...VirusScanner/COMInterop/IAttachmentExecute.cs
Можно загрузить Metadefender (который Core) и посмотреть, как там это реализовано. Там и окна и пингвин.
Rel, мне больше интересно, как работает динчек. Напомню, это сервис который проверяет малварь в динамике сразу на 30+ аверах, т.е. не просто просканил как виртотал (в таком случае можно и виртуалки поднять, и консольные аверы), а именно вот запускает и ждет до 10 минут, выводя лог. Представьте, что одновременно ресурсом пользуется, скажем, 50 человек, выходит 50 х 30 - полторы тыщи виртуалок, что слишком много и нереально. А как по-иному? ведь использовать 2 антивируса на одной виртуалке нельзя.. точнее, можно... но они будут мешать друг другу, + аверы надо обновлять еще, в общем задача сложная. Поскольку ко внутренностям динчека доступа нет, а проект свой они продавали за 100к, думал сам как оно может быть. Предполагаю, тут используется технология абстрактной виртуализации. Что-то типа того, что предлагает VMware horizon. Итак. у нас есть 5 разных операционок. Начнем с абстрактности их уровня. Мы создаем 5 виртуальных машин с разными операционками и имеем 5 разных файлов. Это первый уровень абстракции.. далее. эти файлы становятся рид-онли. Итак 5 файлов -образов виртуальных машин с разными операционками. Далее у нас есть 30 антивирусов. Мы запускаем 5 образов виртуалок, только они находятся в режиме рид-онли.. то есть все изменения в процессе работы, проходят в других файлах. это второй уровень абстракции.. на этих виртуалках мы инсталлируем 30 антивирусов. Таким образом у нас получаются еще 30*5=150, но уже мелких относительно файлов.. это второй уровень абстракции.. но это уровень - файловый! С текущего момента, мы уже можем запустить чисто теоретически 150 виртуальных машин, в которых будет 5 операционок и в каждой по 30 копий антивирусов. Далее, у нас есть 10 пользователей. у каждого есть 10 файлов итого, на каждого пользователя по 100 виртуалок + 5 операционок + 30 антивирусов. Звучит ужасно, а на самом деле? А на самом деле, мы стартуем всего 5 образов операционок, разных. + 30 образов к каждой антивирусов.. и тут вступает в силу абстракция памяти! ведь, у нас всего 5 операционок? значит, чисто теоретически, они будут одинаково занимать память.. значит. можно использовать всего один образ памяти! а разница между 5-ю операционками будет выделяться в отдельной области памяти.. что с того? а с того, что у нас всего 5 блоков статичной памяти + 30 блоков динамических измнений в памяти.. сюда же догладываем 10 пользователей и 10 файлов, которые должны проверять 30 антивирусов.. в итоге, чем выше мы поднимаемся по уровню абстрактности вирутальной среды, тем меньше изменений что в файловой части, что в области памяти+.. есть еще такое понятие, как дедупликация.. когда в файловой системе и в памяти находят идентичные блоки. и оставляют один лишь блок, а к нему кучу индексов с тех мест, где этот блок должен быть! Вот к примеру! mfc32.dll - оно одно, так зачем 5 раз его держать в памяти? достаточно сохранить один образ, а в 5 операционок дать его ссылку.. в смсыле, это файловый блок бери там.. и считай, что он - твой. единственный.. и так, сколько нужно раз. Таким образом, мы имеем возможность, развернуть безумное количество виртуалок, на вполне себе вменяемых физических ресурсах. Хз, может там както иначе, я не спец в этом всем деле.
Так а где его взять то? На гитхабе только всяческие клиенты для его апи. Есть семпл, который можно зареверсить? Или есть сорсы? Я чет не понимаю. --- Сообщение объединено, 20 июл 2020 --- По хорошему нельзя, тк это не чистый тест будет. --- Сообщение объединено, 20 июл 2020 --- Я тоже. В QubesOS была некая подобная схема, насколько я помню, но на базе Xen'а. Типа ядро виртуальной оси одно, а для приложений создаются отдельные виртуальные домены над этим ядром. Но с аверами не совсем понятно, тк у авера может жить какой-то критичный компонент в ядре. И как тогда быть с одним отдельным ядром не понятно. Ну может это мне не понятно, тк я не шарю.
не представляю конечно какая у вас криптлаба - но с утечками семплов в вирустотал надо быть готовыми к апдейтам каждые 15 минут --- Сообщение объединено, 20 июл 2020 --- а у многих (нод, битдеф итд) еще и облако --- Сообщение объединено, 20 июл 2020 --- у богини кстати вроде тоже, но хрень из оперы касперского, которая детектит разве что злые батники --- Сообщение объединено, 20 июл 2020 --- Синтез, это баг, поправь - я себя не комментировал.