• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Как определить что файл вредоносный I СТАТЬЯ ДЛЯ НОВИЧКОВ и не только

SecuredCrypter

HDD-drive
Пользователь
Регистрация
10.11.2025
Сообщения
39
Реакции
24
Моя первая статья на форуме, не судите строго! ПРИСТУПАЕМ =)
В основе статья для тех людей, когда у тебя на руках подозрительный .exe / .dll / скрипт т.д и нужно честно ответить на вопрос:
«Это вообще норм софт или сейчас пол-диска утечёт куда-то в интернет и заодно зашифрует мою тачку под выкуп?»

Разберём как смотреть на файлы глазами аналитика:
от быстрых онлайн-тестов до ручного реверса через импорты и код (.NET + dnSpy) плюс песочницы вроде VirusTotal, Threat.Zone, ANY.RUN и Triage.

1. Общая схема проверки

Чтобы не тонуть в деталях. вот простой план:
  1. Быстрый триаж
    Тип файла, размер, хеш, базовая проверка через масс сервис проверок файлов.
  2. Статический анализ
    Импорты, строки, структура файла, признаки упаковщиков.
  3. Динамика в песочнице
    Что файл делает при запуске: процессы, файлы, сеть, автозапуск, выход в интернет.
  4. Ручной реверс
    Если файл на .NET — вскрываем через dnSpy; если нативный, смотрим логи/отчёты, иногда — дизассемблер/дебаггер.
По идее, в большинстве бытовых кейсов тебе хватит первых трёх шагов, даже первого шага достаточно но мы здесь собрались за подробностями.
До dnSpy и реверса руками доходят уже, когда нужно прям понять логику или стоит таинственный интерес как же этот негодяй тут оформил свою малварьку =)

2. Пробегаемся глазами: что можно понять за 1–2 минуты

Первое, что стоит сделать — понять, что это за файл вообще:
  • .exe, .dll, .sys — PE-файлы (Windows-исполняемые).
  • .js, .vbs, .ps1, .bat, .cmd — скрипты.
  • .docm, .xlsm — офисные документы с макросами.
  • .lnk — ярлык (часто используют для внушения чего-то безопасного — раз юзают, значит есть толк).
Опасность всех этих файлов в том, что в них может храниться вредоносный код, который эксплуатируют на вашей же тачке.
И неопытный пользователь компьютера может даже и не подозревать обо всех моментах, где и как его поджидает вирусняк, который вот-вот заскочит на его комп.

Простой пример: тебе скинули Счётзадекабрь.pdf.exe, а в проводнике отображаются только Счётзадекабрь.pdf ( по большой части у многих выключен показ расширения типа файлов .exe/.dll вы поняли)
Или же пакуют всё в .zip / .rar и дают название СчётзадекабрьИПБУДЕНОВ_ОПЛАТА_1C.pdf.exe. В самом архиве всё название не отображается, и обычно делают так, чтобы в конце виднелось только .pdf, а саму аббревиатуру .exe архив не покажет из-за длины названия файла.
Казалось бы, сразу видно, что какая-то лажа и муть, но вы не поверите — на такие уловки ведутся многие неопытные сотрудники компаний, которые вообще не разбираются в этом. У них в голове другое: отчёты сдать, поскорее бы рабочий день закончился и как дожить до долгожданной пятницы-развратницы, чтобы отдохнуть от рутинной работы офисного эклера.

2.2. Размер и метаданные​

Иногда уже по размеру видно странности:
  • 100-200 КБ “установщик игры” на 10 ГБ - явно какой-то лоадер/загрузчик.
  • 500 КБ “драйвер” - тоже мимо кассы.
  • 500-1500 МБ вес файла — подозрительно, часто это памп для обхода анализа на песочницах.
Ещё что можно мельком глянуть:
  • Наличие иконки / verison info
Часто никто по этому поводу не заморачивается, и нет таковой иконки,и никак не настроено описание файла (хотя у официалов с этим проблем нет).​
Но всё зависит от ленивости траффера: кто-то заморачивается, кто-то нет —​
тоже плюс-минус играет роль фактора.​

1764039528974.png

  • Цифровая подпись
Имеется ли она на файле вообще.Действительный ли сертификат (часто вешают фейковые серты, но, кликнув “подробнее”, они все невалид — так, обёртка на какашке).​
Соответствует ли издатель названию продукта.​

1764039494470.png

2.3. Поиск файлу по HASH​

Дальше — считаешь хеш файла (MD5 / SHA-256) и пробиваешь:
  • через VirusTotal;
  • или через похожие сервисы.
VirusTotal — это по сути агрегатор движков и песочниц: он собирает детекты от десятков антивирусов и поведение файлов при запуске.
Но тут важно понимать:
  • Много детектов ≠ сразу “опасный вирус”, часть может быть ложные срабатываниями.
    1764039572136.png
  • Ноль детектов ≠ чистый софт — не есть хорошо фулл-зелёнка на VT, признак насторожиться.
    1764039627119.png
На этом шаге твоя цель — понять:
  • заливался ли файл ранее;
  • как его в целом классифицируют;
  • какие есть имена семейств и теги.

3. Анализ через VirusTotal: не только сколько детектов на файле

3.1. Что важно в отчёте VirusTotal​

Когда смотрим на отчет сканера, нас мало волнует количество детектов. Смотрим шире:
  • Заголовок/Overview
    • Основное имя файла, размер, тип.
    • Детекты: не просто количество, а как его называют (например, Trojan.Injector, Lumma,Quasar,Stelac и т.п.).
  • Details
    • Тип файла, архитектура, секции.
    • PE-инфо: импортированные библиотеки, версия компилятора, подпись.
  • Behavior
    Это отчёт песочниц, куда файл запускали.
    Там обычно есть:
    • дерево процессов;
    • изменения в файловой системе;
    • изменения в реестре;
    • сетевые подключения;
    • MITRE ATT&CK-техники, с которыми сопало поведение.
  • Relations
    Этот раздел показывает связи:
    • с какими доменами и IP контактировал файл;
    • какие другие файлы связаны с этим доменом/IP;
    • какие вложения видели в письмах и т.д
  • Community
    • Комментарии других исследователей, в т.ч. AV-компаний;
    • Голосование “вирус / норм софт”.

3.2. На что конкретно смотреть​

Примеры того, что должно настораживать:
  • В Behavior:
    • файл используют powershell.exe, cmd.exe, wscript.exe, regsvr32.exe без явной причины;
    • создаёт/правит ключи автозапуска/реестра (Run, RunOnce, scheduled tasks);
    • лезет в %APPDATA%, %TEMP%, %ProgramData% и туда скидывает ещё что-то;
    • инжектится в легитивные процессы / explorer.exe / msbuild.exe / regasm.exe и т.д;
    • стиллеры также производят махинации с браузерами Chrome, Edge: перезапускают их, запускают с определёнными командлайнами.
      1764032881281.png
  • В Relations:
    • контакт с доменами, Telegram API, репозиториями GitHub, Bitbucket;
    • странные доменые зоны .xyz, .tech, однотипные имена доменов.
    • 1764032961840.png
  • В Community:
    • если файл загружен в базу больше 24 часов, то часто там пишут боты AV-компаний, что за малварь и её тип;
    • от AV-компаний бывают ссылки на другие сканеры, где более ясно описана работа файла.
      1764033103862.png

4. Песочницы: Threat.Zone, ANY.RUN, Triage и другие

VirusTotal сам по себе тоже использует песочницы, но иногда надо прям руками посмотреть, как живёт файл. Тут в ход идут отдельные сервисы.

4.1. Что такое песочница вообще​

Песочница — это изолированная виртуальная среда где:
  • запускают подозрительный файл;
  • наблюдают поведение (процессы, сеть, файлы);
  • снимают отчёт и выполняют поиск по соседним сервисам.
В таких сервисах мы можем наблюдать в режиме реально времени поведение нашего ехе файла: куда стучит, какие действия проводит в системе.

4.2. Threat.Zone​

Threat.Zone позиционирует себя как гипервизорную песочницу:
  • анализ в реалтайме на уровне гипервизора;
  • детальный разбор поведения и сетевой активности;
  • поддержка разных ОС (Windows, Linux, macOS, Android и др.)
Что тебе интересно в отчёте:
  • процесс-дерево;
  • какие файлы созданы/изменены;
  • какие ключи реестра трогались;
  • куда лезет по сети (домены, IP, URL, протоколы).
1764033501118.png

Доступно любому зеваке без проблем с регистраций, много трекереров и хуков по просмотру за поведением файла, очень удобный комплекстный сервис для анализа ваших файлов.
С PRO версией можно настроить более "тонко" + анализ MacOS, Android, Linux

4.3. ANY.RUN​

ANY.RUN — интерактивная песочница. Там фишка в том, что ты:
  • можешь сам кликать, открывать окна, вводить данные;
  • следить за процессами и сетью в реальном времени;
  • подстраивать условия, чтобы малварь “раскрылась”.
Это удобно, когда:
  • файл ждёт, что пользователь нажмёт “ОК” / откроет документ;
  • нагрузка идёт через макрос/скрипт (doc/xls);
  • нужен живой сценарий (например, открыть программу, потом кликнуть на кнопку в программе).

1764034794885.png

Единственное что скажу, доступ к этому сервису возможен только с Business-почт, проще говоря доступ только организациями с их видом почты т.е Gmail, Rambler тут не катят.
Я в своё время как-то урвал на каком-то temp-mail-сервисе, зарегал аккаунт — там оно заходило как бизнес-почта, так доступ и остался.
Функционал также подрезан для смертных людей, но и его в целом с головой хватит, чтобы проанализировать файл полноценно и сделать вердикт по его поведению.
С PRO доступна тонкая настройка + анализ Android, Linux (Debian, Ubuntu).

4.4. Triage​

Triage — это песочница, которая больше заточена под:
  • массовые заливки сэмплов;
  • автоматическое определение семейств;
  • мультплатформлпеный анализ Windows, Android, macOS, Linux.
Функционал у платформы не такой масштабный, где возможен дебаг, сниффинг, раскрытие поведения файла на малые кусочки, но, как по мне, она даёт всем в рот тем, что является бесплатной, и можно запускать сразу несколько сканирований с тонкими настройками и выбором разных платформ, будь то винда или же линукс, макос, андроид.
Можно настроить язык системы — очень помогает, когда стоят какие-то ограничения по региону системы. Можно ставить VPN на тачку и выбирать регион/страны, доступны пока что Бразилия, Канада, США, Индия, Франция.
Плюс выбор браузера на тачке и таймер на работу тачки.

1764036887368.png

4.5. На что смотреть в песочнице​

Чек-лист:
  1. Процессы
    • какие процессы стартуют после запуска файла;
    • появляются ли “стандартные” помощники малварей при инжектах в легал процессы: powershell.exe, cmd.exe, wscript.exe, mshta.exe, regsvr32.exe и т.д.;
    • есть ли инжекты в другие процессы, уже активные, по типу браузера.
  2. Файлы и реестр
    • создаёт/меняет ли файлы в %APPDATA%, %LOCALAPPDATA%, %TEMP%, %ProgramData%;
    • создаёт ли копии себя с другим именем;
    • прописывает ли себя в автозапуск (Run/RunOnce, scheduled task, сервис).
  3. Сеть
    • домены, IP, URL;
    • протоколы: HTTP(S), DNS-туннели, нестандартные порты;
    • повторяющиеся запросы к одному и тому же хосту.
  4. Артефакты
    • dropped files;
    • suspicious DLL;
    • скрипты, созданные на лету в основе это PowerShell, батники.

5. Статический анализ по импорту и строкам

Теперь к классике: что можно вытащить, даже не запуская файл.

5.1. Импорты как отпечаток поведения​

Когда смотришь PE-файл через любой PE-viewer, тебя интересуют:
  • какие DLL импортируются;
  • какие функции оттуда тянет бинарь.
Подозрительные группы:
  1. Работа с процессами / инжект
    • OpenProcess, ReadProcessMemory, WriteProcessMemory, CreateRemoteThread;
    • VirtualAllocEx, VirtualProtectEx;
    • SetWindowsHookEx, QueueUserAPC.
      1764038154528.png
  2. Сеть
    • WSAStartup, socket, connect, send, recv (WinSock);
    • InternetOpen, InternetConnect, HttpOpenRequest (WinINet);
    • WinHTTP-аналоги.
      1764038205953.png
  3. Регистрация / автозапуск / службы
    • RegCreateKeyEx, RegSetValueEx, работа с ветками Run, RunOnce, Services;
    • CreateService, StartService, OpenSCManager.
      1764038258654.png
  4. Шифрование / упаковка
    • CryptEncrypt, CryptDecrypt, CryptAcquireContext, BCrypt и т.п.
  5. Файловые операции
    • массовое создание/удаление, особенно по пользовательским каталогам.
Сама по себе любая функция ещё ничего не доказывает. Но комбинации дают картину.
Например:
  • Сеть + инжект + cryptmodule + автозапуск = очень похоже на малварек.
  • Только cryptmodule и чтение/запись файлов в одном каталоге = может быть норм софт (архиватор / упакованый / обфусцирован UPX и т.д).

5.2. Минимальный импорт и упаковщики​

Если у файла:
  • импорт всего из 1–2 библиотек (kernel32.dll, user32.dll);
  • или только LoadLibrary + GetProcAddress + пара функций —
    то высока вероятность, что он упакован/обусифицирован.
    1764038414485.png

    пример упакованого файла UPX.
Такие файлы часто:
  • распаковывают полезную нагрузку в память;
  • подтягивают функции динамически;
  • шифруют строки.
Вывод: по одному импорту часто мало информации, и приходится:
  • либо запускать в песочнице;
  • либо сначала разупаковывать (дампить, дебажить).

6. Разбор .NET через dnSpy
Если файл — .NET (обычно это .exe/.dll), то жизнь с dnSpy становится проще.
dnSpy позволяет:
  • открыть сборку;
  • увидеть дерево namespaces/классов/методов;
  • читать код C#;
  • править и сохранять.

6.1. Определяем, .NET это или нет​

Признаки:
  • утилиты (типа DIE, PEview) показывают, что это .NET/CLR;
  • в секциях видно CLR-метаданные;
в VirusTotal / песочницах прямо пишут, что это .NET-сборка.​
1764040213281.png
Плюс в DIE есть паттерны по которым он там сразу определяет какие есть защиты,упаковщики и стринги популярных вирусов типо Xworm прям в Die может написать​

6.2. Первые шаги в dnSpy​

Открываешь файл в dnSpy и дальше по шагам:
  1. Смотришь список сборок и пространств имён.
  2. Ищешь:
    • Program, Main, EntryPoint — то, с чего всё стартует, входная точка;
    • любые явно кричащие названия (Stealer, Grabber, Loader, Clipper, UpdateService и т.п.).
1764039180075.png
Часто уже по названиям методов видно, что из себя представляет код.

6.3. Подозрительные участки кода​

На что стоит обращать внимание:
  1. HTTP-клиенты и сеть
    • использование HttpClient, WebClient, HttpWebRequest;
    • ручная сборка запросов, странные заголовки, POST на непонятные URL;
    • логика повторных попыток/ротации доменов.
      1764039877527.png
  2. Работа с файлами и браузерами
    • перечисление директорий браузеров (Chrome, Firefox, Edge, профили);
    • чтение файлов с куками/сессиями/логинами;
    • сбор данных из мессенджеров/игр/криптокошельков.
      1764039992739.png
  3. Автозагрузка
    • работа с реестром (CurrentVersion\Run);
    • запись в папки автозапуска;
    • создание задач планировщика.
      1764040052832.png
  4. Строки и ресурсы
    • наборы зашифрованных или закодированных строк;
    • вызовы чего-то типа DecryptString, FromBase64 и т.п.;
    • ресурсы с бинарниками/конфигами внутри.
      1764040109002.png

6.4. Чтение логики по шагам​

Полезно буквально проговорить себе:
  • «Вот тут программа собирает список файлов в таких-то директориях».
  • «Вот здесь сериализует это в JSON».
  • «Вот здесь отправляет на https://какой-то-домен/api/upload».
После такого разбора можно четко описать, что делает файл, даже без запуска:
«Собирает определённые данные и отправляет на удалённый хост, плюс прописывает себя в автозапуск. Поведение вредоносное».

7. Ручные проверки без тяжёлых программ

Если ты сидишь на голой Windows без особого арсенала, всё равно кое-что сделать можно:
  • смотреть свойства файлов (подпись, версия, описание);
  • проверять хеши и забивать их в онлайн-сервисы;
  • запускать в отдельной виртуалке. В Windows 10 и выше есть встроенная песочница без доп. установок VMware/VirtualBox;
  • смотреть через диспетчер задач за процессами;
  • смотреть через встроенный брандмауэр/логирование за сетью.
    1764040622032.png
Но для нормального анализа лучше всё-таки иметь набор:
  • хотя бы одну песочницу (ANY.RUN / Triage / Threat.Zone);
  • VirusTotal;
  • одну-две PE-утилиты;
  • dnSpy для .NET.
Сейчас мы придем к живому примеру с разбором файла в ручном режиме и в реальном времени найдем файл и сделаем мини анализ заключительный.
Вот представим - мы обычный обыватель и решили скачать чит на игру, в моем случае я полезу на YouTube, где как раз самый сок и рассадник всякого впо под видом "читов, кряков" и прочей шняги.
Опустим момент, на каком ролике мы нашли файл, главное, что мы его скачали и получили.

Первые признаки после скачивания
  • Файлы в архиве под паролем;
  • В архиве лежат куча якобы "нужных" модулей, библиотек для пыли в глаз, мол так оно и нужно;
  • Суммарный вес архива большой тем что напичкан мусором для раздутия архива.

    1.PNG

Нас интересует здесь конкретно ЕХЕ файл, первым делом, куда полезем - в DIE.
Перед нами картина, что файл на C# и содержит обусификацию + виртуализацию + компрес(внутри PE cжат какой то массив данных)

2.PNG


Идем дальше и открываем карту памяти, чтобы посмотреть энтропию файла.
Видим что энтропия файла на самом высоком уровне 8, это признак что там находится сжатый массив данных или просто раздут мусором.

3.PNG


Переходим к следующей вкладке в DIE - это строки, там мы будем выяснять за счет чего такой вес.

4.PNG


Листаем чуть ниже, пока не увидим непонятный массив данных.
И вот мы наблюдаем, что в секции .text какие то данные, предполагаю что зашифрованный и упакованный пейлоад вируса
+ в копилку того, что какая мутная фигня:
5.PNG


Идем дальше и открываем PeStudio, чтобы посмотреть Import. В DIE реализована возможность смотреть импорты только нативных файлов.
PeStudo же дает возможность посмотреть импорты и увидеть ред-флаги на импортах, которые выделят, что используется и те, которые могут быть схожи на вирусное поведение.

6.PNG

Наблюдаем тут такую картину, схожую на RunPE, в этом файле дружно и совместно используются
  • OpenProcess, ReadProcessMemory, WriteProcessMemory, CreateRemoteThread;
  • VirtualAllocEx, VirtualProtectEx.
которые нам уже дают 100% показатель, что тут выделяется память и внутри памяти происходит инициализация вируса.

Дальше нам предстоит посмотреть содержимое нашего .NET файла через декомпилятор dnSpy.
После того, как закинули файл, перейдем в точке входа:
7.PNG


Перед нами точка входа и тут мы видим явную картину вирусного поведения, код лезет в реестр, перекидывает файл в AppData.
тому следствие RegistryKey registryKey = Registry.CurrentUser.OpenSubKey и Environment.SpecialFolder.ApplicationData),
Скорее всего, это модуль автозагрузки:
8.PNG

Листаем чуть ниже в точке входа.
Видим ServicePointManager.SecurityProtocol = (SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12);
это даем нам понять, что файл работает с интернетом и создает защищённое tls соединение для связи с сервером.
Чуть ниже видим зашифрованную строчку, предполагаю, что там ссылка, которую инициализирует файл
9.PNG

Полазив по другим блокам файла, нахожу очень интересный и в тоже время сам за себя говорящий кусочек кода.
Перед нами вызов импортов, которые вы уже видели в PeStudio, это уже 100% модуль RunPE.
10.PNG


Итог: перед нами обфусцированый RunPE загрузчик, который качает массив данных через интернет и запускается в памяти.

Встает вопрос, почему тогда файл весит 8.7 мегабайт, если все происходит через интернет.
А ответ банально прост, полазил в ресурсах находим файл, который как раз и дает такой вес файлу.
11.PNG

После извлечения этого файла, мы кидаем в DIE чтобы понять, что это вообще и это на удивление обычный mp3 файл, который использовали для увеличения веса.
Без этого сам файл ехе весит 20-30 килобайт.
12.PNG

Итог

Нет магической кнопки проверить на вирус.
Даже VirusTotal с сотней движков не даёт 100% ответа.
Зеленый VT не гарантирует чистоту, а красный — не всегда значит реальный показатель.
Работать нужно комплексно:
  • быстрый чек (тип файла, расширение, размер, хеш);
  • VT/агрегаторы (детекты, теги, связи, комьюнити);
  • песочницы (динамика: процессы, файлы, реестр, сеть);
  • статический анализ (импорты, строки, упаковщики);
  • при необходимости — разбор кода (.NET через dnSpy и т.п.).
Как бы файл красиво не выглядел с красивой иконкой, описанием, названием, сертификатом(даже валидным)
Как файл себя ведёт — это главный аргумент. Если он:
  • лезет в куки/браузеры/реестр,
  • прописывает себя в автозагрузку,
  • постоянно стучится на хост,
то как бы его ни называл антивирус — перед тобой вредонос.
По отдельности каждый шаг даёт кусок картины, но вердикт складывается из всех вместе
Главная задача это не быть жертвой и самим тестовым полигоном на тачке с файлами.


В целом всё, моя первая статья. Готов к конструктивной критике, надеюсь, кому-то это будет полезно и интересно.

Ссылки на ресурсы / soft
  1. VirusTotal - https://www.virustotal.com
  2. ANY.RUN -- https://any.run/
  3. Triage - https://tria.ge/
  4. Threat.Zone - https://threat.zone/
  5. dnSpy - https://dnspy.org/
  6. Detect-It-Easy - https://github.com/horsicq/Detect-It-Easy
  7. PeStudio - https://www.winitor.com/download
 

Вложения

  • 1764038372478.png
    1764038372478.png
    16.1 КБ · Просмотры: 13
  • 1764032947908.png
    1764032947908.png
    22.2 КБ · Просмотры: 19
Последнее редактирование модератором:
Отличная статья. Даже если строго судить) Нашёл для себя пару новых решений. Отдельный лайк за оформление. Обязательно продолжай писать!
 
Последнее редактирование:
Почему бы для статического анализа просто не использовать IDA(у). В ней же сразу можно понять принцип работы программы и тд.
По этой теме есть шедевральная книга - «Вскрытие покажет! Практический анализ вредоносного ПО» (Сикорски М.,Хониг Э.)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх