Что делать вместо VirusTotal для тестирования?
Альтернативы:
Локальное тестирование:
- Инсталируй десяток антивирусов в изолированной VM-среде.
- Microsoft Defender
- Kaspersky
- BitDefender
- Avast
- Dr.Web
- ESET
- Обнови базы, отключи сеть.
- Смотри реакцию в реальном времени (RTS и on-demand scan).
- Используй PE-sieve для просмотра инъекций и модификаций памяти.
Emulated VirusTotal (анонимный):
- InQuest Labs — можно грузить частично и анализировать.
- Joe Sandbox (ограничено).
- AnyRun — в интерактивной песочнице видно, что делает файл, какие вызовы, и что детектится (можно вручную обфусцировать поведение).
- Self-hosted Cuckoo Sandbox — для продвинутых.
Что значат ложные срабатывания 4-5 AV?
Если ты
не шифруешь вредоносный payload, но получаешь 4–5 срабатываний — это значит:
- Твой криптор уже обладает подозрительными признаками:
- Обфускация IL-кода или runtime сборка
- Рефлексия (Assembly.Load, Invoke)
- Сжатие, шифрование, использование byte[] и MemoryStream без явного назначения
- Подмена EntryPoint и переинициализация AppDomain
Некоторые AV (особенно Qihoo, Jiangmin, VBA32, MaxSecure) —
рутинговые и выдают ложные срабатывания даже на HelloWorld.exe, если он обфусцирован. Такие можно
игнорировать,
если не срабатывают топовые:
Microsoft Defender
Kaspersky
BitDefender
ESET
Sophos
SentinelOne
Как добиться AV-safe уровня
- Изолировать stub и payload.
- Stub — не должен содержать вредоносной логики.
- Payload — загружается поздно, по запросу.
- Убрать reflection, AppDomain.Load, Assembly.Load(byte[]) в .NET.
- Это почти всегда флагуется.
- Вместо этого — C++ loader (или Native stub), а .NET грузить через COM/interop.
- Вариативность stub'а:
- Интегрируй полиморфизм (junk-код в IL, разные методы загрузки).
- Избегай однотипных IL-конструкций.
- Не использовать компрессоры типа ConfuserEx без модификаций.
- AV давно на них тренированы.
- Ротация ключей, salt, и конфигурации.
- Один и тот же криптор, даже без вирусного payload'а, начнут детектировать после пары-тройки заливов, если ты не меняешь шифрование.
VirusTotal ≠ тестовая среда. Используй
локальное тестирование и песочницы.
Срабатывание 4-5 noname движков можно игнорировать
только если топовые молчат.
Никогда не заливай свой stub/payload — это
гарантированное палево.
Делай
много stub-вариаций, не используй сырой Assembly.Load.
Протестируй свой билд в
отключённой среде с Defender'ом и Kaspersky как минимум.