Скрытый fileless malware в памяти процесса ищут не как обычный вирус. Файла может не быть на диске, а вредоносный код уже работает внутри легитимного процесса: PowerShell, rundll32, mshta, svchost, explorer или даже Word. Поэтому задача не просто «найти подозрительный файл», а понять, какой процесс ведёт себя неправильно, где он запускается после перезагрузки и как убрать его из системы без повторного заражения.
Если это рабочий сервер, доменный компьютер, бухгалтерская машина или система с важными данными, лучше сначала изолировать её от сети и обратиться к специалисту по инцидентам. Неправильное удаление может стереть следы, но не убрать доступ злоумышленника.
- Что такое fileless malware и почему он прячется в памяти
- Первые признаки, что проблема именно в памяти процесса
- С чего начать: не удалять сразу, а зафиксировать картину
- Инструменты, которые реально помогают
- Шаг 1. Найдите подозрительные процессы
- Шаг 2. Проверьте командные строки процессов
- Шаг 3. Проверьте сетевые соединения
- Шаг 4. Посмотрите, где malware может запускаться снова
- Шаг 5. Отдельно проверьте WMI persistence
- Шаг 6. Проверьте память процесса
- Как удалять: порядок действий, чтобы не вернуть заражение
- Что выбрать в зависимости от ситуации
- Частые ошибки при удалении fileless malware
- Практические рекомендации после удаления
- Когда лучше не чистить вручную
- Короткий итог
Что такое fileless malware и почему он прячется в памяти
Fileless-атака использует уже установленные в системе инструменты: PowerShell, WMI, scheduled tasks, regsvr32, rundll32, mshta, certutil, bitsadmin. Сам вредоносный код может быть загружен из сети, внедрён в память процесса или сохранён в реестре/WMI без полноценного файла на диске.
Главная сложность в том, что процесс может выглядеть «нормально». Например, открыт обычный powershell.exe, но внутри него выполняется obfuscated-скрипт, который подключается к удалённому серверу, скачивает следующий модуль и внедряет его в другой процесс. На диске при этом может не быть ничего похожего на вирус.
Первые признаки, что проблема именно в памяти процесса
Не стоит сразу считать malware всё, что выглядит странно. Но сочетание нескольких признаков уже повод для проверки.
- Подозрительная командная строка: PowerShell с параметрами
-enc,-nop,-w hidden,DownloadString,Invoke-Expression,FromBase64String. - Необычный родительский процесс: например,
winword.exeзапускаетpowershell.exe, а тот запускаетcmd.exeилиrundll32.exe. - Процесс без понятного пути: имя вроде svchost.exe есть, но путь нестандартный или путь отсутствует.
- Сетевое соединение из странного процесса: Office, PowerShell, wscript, mshta или rundll32 обращаются к неизвестным IP-адресам.
- Процесс перезапускается после завершения: убили процесс, а через несколько секунд он появился снова.
- Антивирус молчит, но система ведёт себя странно: тормозит, открываются окна, растут исходящие соединения, появляются новые задачи или службы.
С чего начать: не удалять сразу, а зафиксировать картину
Первое действие — изолировать компьютер от сети. Не выключать, не перезагружать, а именно отключить кабель или Wi-Fi. Перезагрузка может уничтожить часть следов в памяти, а выключение — закрыть активный процесс, который потом не получится исследовать.
Дальше нужно понять три вещи:
- какой процесс подозрителен;
- откуда он запустился;
- есть ли механизм автозапуска, который вернёт его после удаления.
Если компьютер домашний и данные не критичны, можно идти по шагам ниже. Если это корпоративная среда, лучше параллельно сохранить логи, дамп памяти и список подозрительных процессов для дальнейшего разбора.
Инструменты, которые реально помогают
| Инструмент | Что помогает найти | Когда использовать | Ограничение |
|---|---|---|---|
| Process Explorer | Дерево процессов, путь к файлу, подписи, DLL, сетевые соединения процесса | Для быстрой ручной проверки подозрительного процесса | Не всегда покажет код, уже внедрённый в память |
| Autoruns | Автозапуск, службы, WMI, задачи, драйверы, расширения | Когда процесс возвращается после завершения | Нужно аккуратно отличать системные записи от вредоносных |
| PowerShell и Event Viewer | Команды запуска, события PowerShell, WMI, службы, задачи | Для поиска следов запуска и persistence-механизмов | Если логирование не было включено, часть истории будет недоступна |
| Defender Offline Scan | Проверка системы до загрузки обычной Windows | Когда подозрение есть, но обычный сканер ничего не находит | Не заменяет ручной поиск persistence |
| Volatility | Скрытые процессы, инъекции, подозрительные области памяти | Если есть дамп памяти и нужен глубокий анализ | Требует опыта и корректного дампа |
Шаг 1. Найдите подозрительные процессы
Откройте Process Explorer от Microsoft Sysinternals. Включите отображение дерева процессов, подписей и нижнюю панель с DLL. Сразу обратите внимание не на одно имя процесса, а на связку: кто кого запустил, откуда запущен, какие DLL подгружены и куда есть сетевое соединение.
Полезные признаки в Process Explorer:
- процесс с именем системного компонента, но без цифровой подписи;
- путь запуска из временных папок, AppData, Public, Temp;
- пустой или странный Command Line;
- процесс, у которого нет файла на диске, но он активен;
- дочерний процесс, который не логичен для родителя;
- подозрительные DLL, загруженные из нестандартных каталогов.
Например, если explorer.exe запускает mshta.exe, а тот обращается к внешнему адресу, это уже не рядовая ситуация. Если svchost.exe запущен не из C:\Windows\System32, это повод проверить его в первую очередь.
Шаг 2. Проверьте командные строки процессов
В PowerShell от имени администратора можно быстро собрать список процессов с аргументами запуска:
Get-CimInstance Win32_Process |
Select-Object ProcessId, ParentProcessId, Name, CommandLine, ExecutablePath |
Sort-Object ProcessId |
Format-Table -Wrap
Ищите не только очевидные слова вроде malware. Гораздо чаще встречаются конструкции вроде:
powershell.exe -nop -w hidden -enc ...
mshta.exe http://...
rundll32.exe javascript:...
regsvr32.exe /s /n /u /i:http://...
wscript.exe //b ...
cscript.exe ...
Особенно подозрительны длинные base64-строки после параметра -enc, команды с IEX, DownloadString, Invoke-Expression и попытки скрыть окно PowerShell параметром -w hidden.
Шаг 3. Проверьте сетевые соединения
Файл может не лежать на диске, но активный процесс всё равно куда-то обращается. Проверьте соединения и сопоставьте PID с процессом:
Get-NetTCPConnection |
Select-Object OwningProcess, LocalAddress, LocalPort, RemoteAddress, RemotePort, State |
Sort-Object OwningProcess
Если неясно, какой процесс владеет PID, можно сопоставить его с первым списком процессов. Подозрительны соединения от Office, PowerShell, WMI-процессов, rundll32, mshta, wscript, cscript, особенно если адрес не похож на обычный корпоративный или облачный сервис.
Не всегда неизвестный IP означает заражение. Но если из процесса, который не должен ходить в сеть, идёт постоянное соединение на странный порт, это хороший повод копать глубже.
Шаг 4. Посмотрите, где malware может запускаться снова
Удаление процесса из памяти не решает задачу. Fileless malware часто живёт в механизмах автозапуска. Если просто завершить процесс, он вернётся через задачу, WMI-событие, службу или запись в реестре.
Проверьте службы:
Get-CimInstance Win32_Service |
Select-Object Name, State, StartMode, PathName |
Format-Table -Wrap
Проверьте запланированные задачи:
Get-ScheduledTask |
Select-Object TaskName, TaskPath, State, TaskPath |
Format-Table -Wrap
Для задач с подозрительными действиями можно посмотреть детали:
Get-ScheduledTask |
Where-Object {$_.Actions.Execute -match 'powershell|pwsh|wscript|cscript|mshta|rundll32|regsvr32|cmd'} |
Select-Object TaskName, TaskPath, State, Actions |
Format-List
Проверьте классические ветки автозапуска:
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run /s
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run /s
Вручную разбирать реестр неудобно, поэтому для этого этапа я бы использовал Autoruns. В нём удобно отключить подозрительные записи, скрыть подписанные Microsoft-записи и проверить путь, издателя и команду запуска.
Шаг 5. Отдельно проверьте WMI persistence
WMI — один из любимых способов fileless malware оставаться в системе. Вредоносный код может быть спрятан в permanent event consumer: система получает триггер, например запуск процесса или вход пользователя, и выполняет команду без привычного файла в автозагрузке.
Проверьте WMI-фильтры, потребители и связи:
Get-CimInstance -Namespace root\subscription -ClassName __EventFilter |
Select-Object Name, Query |
Format-List
Get-CimInstance -Namespace root\subscription -ClassName CommandLineEventConsumer |
Select-Object Name, CommandLineTemplate |
Format-List
Get-CimInstance -Namespace root\subscription -ClassName __FilterToConsumerBinding |
Select-Object Filter, Consumer |
Format-List
Подозрительно, если в CommandLineTemplate есть PowerShell, base64, внешние URL, скрытый запуск или обращение к временным папкам.
Не удаляйте всё подряд. Сначала запишите имена подозрительных объектов, проверьте их в поиске по названию, а потом удаляйте только найденные вредоносные записи. Обычно удаляют сначала связи __FilterToConsumerBinding, затем consumers и filters.
Шаг 6. Проверьте память процесса
Если процесс подозрителен, но файла на диске нет, нужно смотреть не только список процессов, но и память. Признаки инъекции:
- исполняемые области памяти без соответствующего файла;
- регионы памяти с правами read-write-execute;
- поток, стартующий из области памяти, которая не принадлежит модулю;
- разница между образом процесса на диске и образом в памяти;
- подозрительные строки в памяти: URL, base64, команды PowerShell, IP-адреса.
В Process Explorer можно создать дамп процесса через Properties → Create Dump File. Если используете ProcDump:
procdump64 -ma -accepteula <PID> C:\Incident\process.dmp
Дамп лучше хранить на внешнем носителе или в защищённой папке. В нём могут быть токены, пароли, фрагменты документов и другие чувствительные данные.
Для анализа дампа можно использовать Volatility. Из практичных команд для начала:
vol -f memory.raw windows.pslist
vol -f memory.raw windows.cmdline
vol -f memory.raw windows.malfind
vol -f memory.raw windows.hollowfind
Если в памяти находят подозрительные регионы, это не всегда автоматическое доказательство заражения. Но если рядом есть странные сетевые соединения, WMI persistence или obfuscated PowerShell, картина становится гораздо убедительнее.
Как удалять: порядок действий, чтобы не вернуть заражение
- Изолируйте компьютер от сети. Отключите кабель, Wi-Fi, VPN. Если это сервер, отключите сетевые интерфейсы или ограничьте доступ через фаервол.
- Сохраните минимальные данные. Список процессов, сетевые соединения, подозрительные задачи, службы, WMI-объекты и дамп процесса, если нужен анализ.
- Отключите автозапуск. Удалите или отключите подозрительные scheduled tasks, службы, WMI consumers, записи в реестре и элементы Autoruns.
- Остановите процесс. Только после того, как убрали механизм возврата, завершайте процесс. В Process Explorer это можно сделать через Kill Process или Kill Process Tree.
- Проверьте систему офлайн-сканером. Для Windows удобно использовать Defender Offline Scan. Он перезагрузит систему и проверит её до обычного запуска Windows.
- Перезагрузите и проверьте снова. Если процесс не вернулся, нет странных соединений и автозапуск чистый, можно переходить к усилению защиты.
- Смените пароли. Особенно если были признаки кражи учётных данных, запуск от администратора или доступ к домену.
Что выбрать в зависимости от ситуации
| Ситуация | Что делать | Чего не делать |
|---|---|---|
| Домашний компьютер, подозрение на один процесс | Изолировать, проверить Process Explorer, Autoruns, запустить офлайн-скан | Не удалять случайные системные записи без проверки |
| Рабочий ноутбук в домене | Изолировать, сохранить логи, сообщить ИБ/администратору, проверить учётные данные | Не чистить систему «на глаз» и не стирать следы до разбора |
| Сервер или база данных | Ограничить сеть, сделать снимок/резервную копию, привлекать специалиста | Не перезагружать и не удалять службы без понимания их назначения |
| Процесс возвращается после завершения | Искать scheduled task, WMI, службу, запись в реестре или драйвер | Не пытаться решить проблему только кнопкой Kill Process |
| Есть дамп памяти и нужны доказательства | Сохранить дамп, цепочку процессов, события и сетевые соединения | Не передавать дамп в случайные облака или чаты без защиты |
Частые ошибки при удалении fileless malware
- Убивают процесс и считают, что всё готово. Если остался WMI consumer или задача, заражение вернётся.
- Перезагружают компьютер до проверки. Это может помочь системе очиститься, но также уничтожит следы в памяти.
- Смотрят только на файлы. При fileless-атаке главный объект — процесс, память и механизм запуска.
- Доверяют имени процесса. svchost.exe, powershell.exe и rundll32.exe могут быть легитимными, но могут быть и замаскированными.
- Удаляют всё, что кажется странным. Так можно сломать автозапуск системных компонентов или бизнес-приложений.
- Игнорируют PowerShell-события. Если включено логирование, там часто видно, что именно выполнялось.
- Не проверяют сеть после удаления. Остаточное соединение может указывать на второй процесс или другой механизм заражения.
Практические рекомендации после удаления
После того как процесс убран и система проверена, стоит сделать несколько вещей, чтобы атака не повторилась.
- Включите PowerShell Script Block Logging и событийное логирование PowerShell.
- Оставьте включённым Defender Cloud Protection и регулярные обновления сигнатур.
- Ограничьте запуск PowerShell там, где он не нужен обычным пользователям.
- Используйте AppLocker или WDAC, если речь о корпоративной среде.
- Проверьте обновления Windows и установленного ПО.
- Смените пароли пользователей, которые работали на заражённой машине.
- Если компьютер был в домене, проверьте групповые политики, запланированные задачи и учётные записи с повышенными правами.
Если вы часто сталкиваетесь с такими случаями, стоит держать на флешке набор инструментов: Process Explorer, Autoruns, ProcDump, EDR/антивирусный сканер и инструкцию по первым действиям. В инциденте важно не импровизировать, а быстро собрать одинаковый набор данных.
Когда лучше не чистить вручную
Ручная чистка подходит для понятного домашнего случая: один подозрительный процесс, нет домена, нет шифровальщика, нет признаков кражи паролей. В остальных ситуациях лучше действовать осторожнее.
Обращайтесь к специалисту, если:
- заражён сервер, контроллер домена или бухгалтерская система;
- есть признаки шифровальщика или утечки данных;
- процесс постоянно возвращается после удаления;
- подозревается доступ злоумышленника к учётным записям;
- нужно сохранить доказательства для расследования;
- после очистки снова появляются странные соединения.
Короткий итог
Чтобы обнаружить и удалить скрытый fileless malware в памяти процесса, действуйте не от имени файла, а от поведения процесса. Сначала изолируйте систему, затем найдите подозрительный процесс, проверьте его командную строку, сетевые соединения, родителя, память и механизмы автозапуска. Удаляйте не только процесс, но и persistence: WMI, задачи, службы, реестр, драйверы. После этого запускайте офлайн-скан, перезагружайтесь, проверяйте систему заново и меняйте пароли, если были признаки компрометации.
