Как посмотреть скрытые процессы Windows 7 cloud-script.ru

Как посмотреть скрытые процессы Windows 7

Процессы Windows. Как найти и удалить вирусный процесс?

Список всех выполняемых на компьютере программ можно просмотреть с помощью Диспетчера задач Windows. Для этого необходимо нажать на клавиатуре сочетание клавиш Ctrl+Alt+Del. Вы увидите список процессов, и сразу возникнет вопрос: зачем нужен каждый конкретный процесс в этом списке? Давайте разберемся, что же такое процессы и как можно ими управлять.

Процессы – это все, что происходит в данный момент времени в системе. В Диспетчере задач на вкладке “Процессы” отображаются все запущенные на данный момент программы. Процессы могут быть “порождены” либо пользователем, либо системой. Системные процессы запускаются при загрузке Windows; пользовательские процессы – это программы, запущенные самим пользователем компьютера либо запущенные от его имени. Все системные процессы запускаются от имени LOCAL SERVICE, NETWORK SERVICE или SYSTEM (данная информация доступна в Диспетчере задач в столбце “Имя пользователя”).

Диспетчер задач позволяет только просматривать список процессов и завершать их работу. Для этого выделите имя процесса в списке и нажмите кнопку “Завершить процесс”.Это означает завершение работы программы, которой принадлежит процесс. Однако в Диспетчере задач невозможно просмотреть информацию о том или ином процессе.

Для управления процессами Windows я бы рекомендовал использовать более мощную утилиту, которая называется Starter. Это отличная бесплатная программа, которая к тому же не требует установки. Скачиваем ее здесь, затем запускаем из папки файл Starter.exe и выбираем сверху вкладку “Процессы”.Starter показывает все процессы в реальном времени, предоставляя исчерпывающую информацию по каждому из них. Щелкнув правой клавишей мыши по интересующему нас процессу и выбрав пункт “Свойства файла”, мы можем узнать производителя программного модуля, версию, атрибуты и другие сведения. Контекстное меню процесса также позволяет перейти в папку с программой, завершить процесс либо найти информацию о нем в интернете.

Как избавиться от вирусов на компьютере с помощью Starter?

Очень часто вирусы и другие вредоносные программы маскируются под различные процессы. Поэтому, если вы заметили что с вашим компьютером что-то не так – запустите проверку антивирусом. Если это не помогло или ваш антивирус вообще отказался запускаться, откройте Диспетчер задач и просмотрите все запущенные процессы.

Если при нажатии Ctrl+Alt+Del у вас появляется ошибка: “Диспетчер задач отключен администратором”, читайте вот эту мою заметку.

Особое внимание уделите процессу, если тот запущен от имени пользователя и потребляет слишком много ресурсов (столбцы “ЦП” и “Память”). Если вы нашли в списке явно подозрительный процесс – завершите его и посмотрите, как после этого будет работать ваша система. Если же вы сомневаетесь или не знаете, какой программе принадлежит запущенный процесс – лучше зайдите в Google или Яндекс, введите в поисковой строке название процесса и найдите информацию о нем.

Встроенный в Windows Диспетчер задач конечно позволяет отключать процессы, но, к сожалению, дает очень мало информации по ним, а потому довольно сложно понять является ли процесс вирусным. Программа Starter в этом плане намного полезнее.

Итак, чтобы найти и удалить с компьютера вирусный процесс, делаем следующее:

1. Запускаем программу Starter и переходим во вкладку “Процессы”.
2. Находим процесс, который вызывает у нас подозрения. Щелкаем по нему правой клавишей мыши и выбираем пункт “Свойства файла”. Я для примера выбрал файл svchost.exe. В открывшемся окне смотрим компанию-производителя данного приложения:Дело в том, что практически любой процесс подписывается его разработчиком. А вот вирусные приложения как правило не подписаны.
В моем случае файл svchost.exe подписан компанией Microsoft Corporation и потому мы можем ему доверять.
3. Если выбранный процесс оказался никем не подписан или подписан какой-то странной компанией, то снова щелкаем правой клавишей по названию этого процесса и выбираем “Искать в Internet” – “Google” (интернет на компьютере при этом должен быть подключен).
4. Если на предложенных гуглом сайтах подтверждают, что данный процесс – вирусный, то необходимо перейти в папку этого процесса (для этого в Starter в контекстном меню выбираем пункт “Проводник в папку процесса”). Затем, предварительно завершив процесс, удаляем здесь файл этого процесса.
Если вы все таки сомневаетесь вирус это или нет (возможно вам не удалось посмотреть информацию о нем в Google в виду отсутствия интернета), то можете просто сменить расширение у данного файла (например, с .exe на .txt) и переместить его в другую папку.

На этом все. Сегодня мы узнали, что такое процессы Windows и с помощью каких утилит ими можно управлять. Кроме того, теперь мы умеем избавляться от вирусов, маскирующихся под различные процессы.

Intel Xeon на разъеме LGA775

Установка процессора Intel Xeon LGA771 на 755 сокет

Как посмотреть скрытые процессы windows 7

Для начала нужно научиться обнаруживать стандартные процессы — знать что из них что делает, к чему относится, как себя ведет и как должен запускаться.

После этого уже можно искать нестандартные процессы.

Способы конечно есть, но объяснять их — значит научить человека администрированию windows на достаточно глубоком уровне. Это нельзя вместить в ответ на вопрос, а грубо говоря целый процесс обучения.

Проверяйте каждый процесс
1) Подпись
Нет подписи у экзешника это уже не профессиональное ПО.
2) Место запуска
Если запущено не из програм файлс, то повод задуматься. Иногда ставится скайп или дропбокс в профиль пользователя. Но нормальное ПО. Стоит только в програм файлз, а не темповских папках с замудреными именами

Инструмент AVZ, AnvirrTaskManager
шерстите автозагрузку, плагины браузеров, планировщик задач.
Сначала надо прибить все не системные / неизвестные процессы.
У системных посмотреть используемые библиотеки (эти тулзы показывают)

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

Антивирусы тоже видят скрытые процессы и обычно реагируют на них негативно, так что сейчас чаще используют легальные проги нежели сокрытие процесса, либо внедрение в легальный процесс, что в разы безопасней.

Помню как три дня гонялся за полиморфным драйвером алкоголя. Когда поймал понял, для чего разрабы это сделали, много думал.

Многие пользователи привыкли к тому, что в Windows NT диспетчер задач показывает все процессы, и многие считают, что скрыться от него вообще невозможно. На самом деле, скрыть процесс черезвычайно просто. Для этого существует множество методов, и их реализации доступны в исходниках. Остается только удивляться, почему так редки трояны использующие эти методики? Их буквально 1 на 1000 не умеющих скрываться. Я думаю, это объясняется тем, что авторам троянов лень, ведь для этого необязательно писать что-то свое, всегда можно взять готовый исходник и вставить в свою программу. Поэтому следует ожидать, что скоро скрытие процессов будет применяться во всех широкораспостраненных рядовых троянах.

Естественно, от этого нужно иметь защиту. Производители антивирусов и фаерволлов отстали от жизни, так как их продукты не умеют обнаруживать скрытые процессы. Для этого существует только несколько утилит, из которых единственной бесплатной является Klister(работает только на Windows 2000), а за остальные производители требуют немалых денег. Причем все эти утилиты довольно легко обходятся.

Все имеющиеся сейчас программы для обнаружения скрытых процессов построены на каком-то одном принципе, поэтому для их обхода можно придумать метод скрытия от конкретного принципа обнаружения, либо привязываться к одной конкретной программе, что гораздо проще в реализации. Пользователь купивший коммерческую программу не может изменить ее, а поэтому привязка к конкретной программе будет работать достаточно надежно, поэтому этот метод используется в коммерческих руткитах (например hxdef Golden edition). Единственным выходом будет создание бесплатной Opensource программы для обнаружения скрытых процессов в которой будут применены несколько методов обнаружения, что позволит защититься от фундаментальных принципов скрытия, а от привязки к конкретным программам может защититься каждый пользователь, для этого нужно всего лишь взять исходники программы и переделать ее под себя.

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

Обнаружение в User Mode

Для начала рассмотрим простые методы обнаружения, которые могут быть применены в 3 кольце, без использования драйверов. Они основаны на том, что каждый запущенный процесс порождает побочные проявления своей деятельности, по которым его и можно обнаружить. Этими проявлениями могут быть открытые им хэндлы, окна, созданные системные объекты. От подобных методик обнаружения несложно скрыться, но для этого нужно учесть ВСЕ побочные проявления работы процесса. Ни в одном из публичных руткитов это пока еще не сделано (приватные версии к сожалению ко мне не попали). Юзермодные методы просты в реализации, безопасны в применении, и могут дать положительный эффект, поэтому их использованием не стоит пренебрегать.

Читать еще:  Как провести полную диагностику компьютера?

Для начала определимся с форматом данных возвращаемых функциями поиска, пусть это будут связанные списки:

Часто анонимность и скрытность играют ключевую роль в успешном выполнении каких-либо действий как в реальности, так и в виртуальности, в частности в операционных системах. В данной статье речь пойдет о том, как стать анонимным в OS Windows. Вся информация предоставлена лишь для цели ознакомления.

Итак, мы попробуем скрыться от глаз пользователя в диспетчере задач Windows. Способ, с помощью которого мы будем этого добиваться является чрезвычайно простым по отношению к тем, которые основаны на перехвате ядерных( часто недокументированных ) функций и на создании собственных драйверов.

Суть метода: поиск окна Диспетчера Задач -> поиск в нем дочернего окна( списка ), содержащего имена всех процессов -> удаление из списка нашего процесса.

Как видно, что с нашим процессом никаких манипуляций производиться не будет: он как работал, так и будет себе работать. Так как стандартный рядовой пользователь Windows, как правило, не использует никаких других тулз для просмотра запущенных процессов на его компьютере, то это лишь сыграет нам «на руку». Процесс в большинстве случаев обнаружен не будет.

Что использовалось для исследования:

1) Spy++ от Microsoft ( для изучения иерархии дочерних окон Диспетчера задач )
2) OllyDBG для просмотра функций, используемых диспетчером для получения снэпшота процессов.
3) Собственно, сам taskmng.exe( Диспетчер задач )

Для написания кода будем использовать среду Delphi. Скорее, Delphi будет удобнее в нашем случае, нежели C++. Но это лишь мое скромное мнение.

Что ж, первым делом попытаемся выяснить, что из себя представляет список процессов и как он работает. С полувзора понятно, что это обычное окно класса «SysListView32»( список ), которое обновляется с частотой 2 кадра в секунду( раз в 0.5 секунд ). Смотрим иерархию окон:

Как видим, список процессов, в самом деле, есть обычное окно класса «SysListView32», которое является дочерним по отношению к окну(вкладке) «Процессы», которое также является дочерним по отношению к главному окну Диспетчера задач. Имеем лишь двойной уровень вложенности. Кроме того у списка имеется одно дочернее окно класса «SysHeader32», которое, как не трудно догадаться является заголовком( маркером полей ) для списка процессов.
Так как перед нами обычный список, то в нашем распоряжении целый набор макрокоманд для управления его содержимым. Их разнообразие, на первый взгляд, восхищает. Но многие из них работают лишь из родительского процесса, т.е чтобы их нам использовать, необходимо будет сымитировать, будто они выполняются в родительском процессе. Но таковым свойством обладают не все, в частности, макрокоманда ListView_DeleteItem, которая удаляет элемент из окна-списка( класс «SysListView32» ).
Её мы и будем использовать в процессе нашего приложения. Данная функция вторым параметром получает индекс удаляемого элемента.
Теперь нам надо как-то выяснить, каким же индексом обладает элемент с лэйблом скрываемого процесса в диспетчере задач. Для этого нам нужно как-то вытащить из списка процессов в диспетчере задач все элементы( лэйблы с именами процессов ) и последовательно их сравнивать с именем того процесса, который мы желаем скрыть.

Используя макрокоманды типа ListView_GetItemText наши действия были бы примерно следующими:

1) Выделение участка памяти в процессе диспетчера задач ( VirtualAllocEx )
2) Посылка дочернему окну-списку Диспетчера задач сообщения LVM_GETITEMTEXT ( SendMessage )
3) Запись в выделенную область памяти Диспетчера задач информации об элементе списка ( WriteProcessMemory )
4) Чтение из памяти диспетчера той информации, которая нас интересует о процессе ( ReadProcessMemory )

Используя этот способ можно легко «выстрелить себе в ногу», считая байты смещения от начала различных используемых в коде структур. Так же этот способ будет достаточно тяжел для тех, кто не особо углублен в WinAPI, так что его мы сразу уберем в сторонку. В прочем, найти реализацию данного способа на просторах интернета не составит особого труда. Вместо этого, я предложу вам сформировать свой список процессов, и уже ориентируясь в нем, искать заветный индекс процесса в списке процессов Диспетчера задач.

В Microsoft решили особо не парится по поводу тулзы, именуемой «Диспетчер Задач», и использовали обычные функции WinAPI для получения всех процессов в системе. Поверхностно смотрим taskmng.exe под отладчиком:

Видим использование WinAPI функции CreateToolHelp32SnapShot.
Всем известно, что ‘эту функцию можно использовать не только для получения снэпшота процессов, но и потоков процесса или модулей, например. Но в данном случае это маловероятно. Вряд ли здесь будут использовать что- то в роде енумератора процессов ( EnumProcesses ).
Мы остановились на том, что хотим сформировать свой список процессов и искать наш процесс в нем. Для этого воспользуемся той функцией, что обнаружили в отладчике. Если откроем диспетчер задач на вкладке «Процессы», то заметим, что все процессы отсортированы по алфавиту для удобства поиска. Следовательно, нам нужно получить список имен всех процессов в системе и отсортировать их по возрастанию в алфавитном порядке. Приступим к написанию кода в Delphi.

Для начала создадим демонстрационное оконное приложение с двумя таймерами: первый будет переформировывать список с процессами с той же частотой, с которой это делает Диспетчер задач Windows( раз в две секунды ); второй будет срабатывать 1000 раз в секунду и будет служить для отслеживания обновления списка процессов в диспетчере и, следовательно, появления нашего скрываемого процесса. Также добавим на форму кнопку.

Вот, собственно, и весь код.
Скроем, например, в Диспетчере задач процесс самого Диспетчера задач:

И по нажатию на кнопку «Скрыть процесс» процесс исчезает из списка:

Все следы присутствия в системе стерты, а сам он спокойно выполняется в обычном режиме где-то в глубинах процессора:)

Что ж, думаю, такой способ заслуживает существовать, правда он требует небольших доработок. Да, конечно же с его помощью нельзя скрыть процесс от самой системы, но сокрытие в стандартной тулзе Windows, которой пользуется львиная доля всех пользователей, это тоже неплохо.
Надеюсь, мне удалось вас хоть немножечко заинтересовать данной темой.

До скорого! И да пребудет с вами сила анонимности…

Как найти скрытые процессы

Собственно сабж.
Если такая тема уже была — прощу прощения, но поиск по форуму не дал результатов.

Я пробовал использовать разные примеры для получения списка процессов, но ни один из них не выдал скрытые. Та и по большей части мне не нужны все процессы, мне нужно получить только скрытые, и только имя exe этих процессов.

Как запретить удалять скрытые папки
Функция для удаления пустых каталогов, подскажите как исправить чтобы скрытые каталоги не.

Как посмотреть и закрыть скрытые процессы
как посмотреть и закрыть скрытые процессы 🙁

Скрытые процессы!
Здравствуйте! Очень нужна помощь! Помогите, пожалуйста, написать программу, которая ищет скрытые.

программа распознающая скрытые процессы виндовс
программа на паскале помогите и или подкиньте идейки

Скрытые процессы едят процессор друзья!
При деинсталяции Google Chrome процессор внезапно загрузился на 100 % (процессами explorer.exe.

Ну вы мою цель знаете — защитить игру от взлома))
Я сделал такой механизм: когда защита видит, что игра выключена, т.е. нет ни окна ни процесса, то защита генерирует лог с результатами работы, и сама отключается. Юзеры теперь просто скрывают процесс игры, защита выгружается, можно делать что угодно.

Если же я смогу отследить игру ещё и в скрытых процессах — то даже закрыв защиту вручную (благодарю за предыдущую подсказку) я смогу отправить оповещение на сервер, мол защита была выгружена, когда игра продолжала работать.

Везде где я искал предлагается использование уже готовых программ => есть какой-то механизм обнаружения скрытых процессов.

какие скрытые процессы вы имеете ввиду ?

Добавлено через 45 секунд
и напомните

Ну вы мне помогли дважды — первый раз помогли получить список окон, а второй раз — пару дней назад, подсказали как выполнить код, при закрытии программы.

К сожаления я не знаю как работает тот же самый Hide Toolz. Я лишь могу себе представить.
Но вы можете ради интереса, скрыть какой-то процесс этой программой, а потом своей функцией снова получить список процессов.
Если у вас Win7 — можете забыть о скрытии процессов, если XP или ниже — попробуйте. При запуске программа сразу скрывает свой процесс, и его уже не видно.

Я не знаю как он при этом продолжает работать.

Читать еще:  Как сделать скриншот с монитора компьютера?

Вот нашёл на каком-то «самочка.ком» пример как скрыть процесс. Код большой, но пару строк указывают, что скрываемый процесс регистрируется как системная служба. Чёрт его знает все ли программы типа Hide Toolz работают так же.

ЗЫ: аваст

Добавлено через 11 минут
.

Oskaria, спасибо за примерчик, например еще ArtMoney скрывает процесс (хз как но он это делает)
если процесс скрывается как показано в примере «самочка.ком», то вам стоит копать в сторону служб и сервисов (у меня с этими двумя совсем туго)

зы: в вашей защите которую вы тут описали со скрытым процессом — получается большой баг (если не скрывать то защита его проигнорит) стоит искать большинство известный хак-тулзов, и проверять все окна в винде на их наличие т.к. процесс можно просто напросто переименовать

Добавлено через 5 минут
кстати CheatEngine можно запустить и спрятать просто переименовав и слегка подправив exe, но он всегда подгружает с собой *dll и с ним в папке находятся его файлы

узнаем все запущенные процессы, папки откуда они запущены и содержимое этих папок
все это проверяем на совпадение так сказать с БАД_БАЗОЙ (то есть если там есть что то что считается хаком то. «SendMessage(«Помогите. ломают. «); «)

и еще кое что, помню как то делал dll которая подгружается автоматом к игре и эта dll подгружала мой exe (который потом не видно было в проыессах) (код совсем непомню, где то тогда его отрыл на одном из забугорных форумов, моему счастью не было придела :dance3

Oskaria, спасибо за примерчик, например еще ArtMoney скрывает процесс (хз как но он это делает)
если процесс скрывается как показано в примере «самочка.ком», то вам стоит копать в сторону служб и сервисов (у меня с этими двумя совсем туго)

зы: в вашей защите которую вы тут описали со скрытым процессом — получается большой баг (если не скрывать то защита его проигнорит) стоит искать большинство известный хак-тулзов, и проверять все окна в винде на их наличие т.к. процесс можно просто напросто переименовать

Нет, почему — явные процессы конечно тоже проверяются.
Окна я и так проверяю, и с каждым днём база «плохих» окон растёт и растёт (я даже не проверяю хендлер окна полностью уже), и даже если хайд тулз спрятал игру или чит — я их увижу, но. не всё так солнечно. Игра запускается не сразу запуская движок. Сначала включается некий лаунчер, в которым вводишь логин/пароль и выбираешь игровой мир. Хендлер лаунчера по непонятной причине нельзя проверить (видимо он использует какой-то левый метод запуска. хотя форма всё равно видна. хз короче), именно в этот момент игроки спокойно закрывают защиту. Но процесс лаунчера есть в списке, всё круто, если защита увидела его — она шлёт сообщение на сервер, а тот в свою очередь банит юзера на сутки, с оповещением, мол низя защиту выгружать, однако если защита не увидит процесс — она просто выключится и всё.

Добавлено через 2 минуты
Но опять таки — не каждый юзер умеет работать с хекс-редактором, что бы сменить титл программы. Для этого я сейчас понемногу учусь перехватывать API. К примеру — ловить WriteProcessMemory по отношению к памяти игры.

Добавлено через 2 минуты
Забыл указать — я проверяю не имя exe, а то, что написано в титле программы. Хендлер, шапку, как вам угодно. Даже если у вас будет открыт сайт, и в шапке эксплорера будет написано «Читы для онлайн игры ** ****** скачать Cheat Engine — Internet explorer», защита вас выкинет из игры, забанит, и оповестит меня, что у юзера открыто такое-то окно, а я уже решу — разбанить или наоборот бан продлить.

Диспетчер задач: подозрительные процессы. Как найти и удалить вирус?

Некоторые вирусные объекты достаточно тщательно скрывают свою деятельность от пользователя. Иногда это происходит настолько качественно, что даже опытный человек не может до конца понять, важная программа это или скрывающийся вирусный объект, который нужно немедленно ликвидировать.

Благодаря Диспетчеру задач, некоторую часть вирусных программ можно отыскать как раз там, в разделе процессов, затем просмотреть их расположение на компьютере и благополучно их удалить. Вроде все легко, но есть одно, но. Как же отличить необходимую программу от того же вируса, ведь по сути они ничем не отличаются. Да и сделав неправильное удаление, можно и вовсе ухудшить работу системы. В данной статье речь пойдет о подозрительных процессах (программах) в диспетчере задач и о правильном удалении их из системы.

Как перейти в диспетчер задач.

Для этого нужно воспользоваться комбинациями клавиш DEL, CTRL, ALT, либо попробовать CTRL, ESC, SHIFT. Последнее сочетание подходит непосредственно для ОС XP, 7, 8 и 10.

Именно здесь можно детально увидеть, какие программы работают сейчас в фоновом режиме. Для этого нужно кликнуть на 2 вкладки: процессы и приложения. Во втором разделе процессов будет гораздо больше, так как это небольшие файлы, которые поддерживают работу системы. Во вкладке приложения можно увидеть открытые программы. Если какая-то программа не нужна, ее можно быстро завершить. То же самое можно проделать и в разделе «процессы». Если видно, что определенный объект в полном объеме изнуряет работу центрального процессора, то его можно двумя щелчками завершить.

Поиск сомнительных объектов.

В уже запущенных процессах всегда можно обнаружить массу файлов, среди которых может работать и вирус. Если завершить нужный файл для системы, компьютер может неправильно себя повести, а в некоторых случаях и перезагрузиться. Есть некоторые вирусы, которые качественно маскируют себя под отдельные процессы. К примеру, тот же svhost.exe системный процесс, может оказаться замаскированным вирусным объектом. Поэтому, чтобы не наделать ошибок, лучше отдать должное антивирусной программе AVZ. Она представляет собой обширный арсенал нужных утилит для увеличения безопасности ОС.

Скачать программу можно на официальном сайте, затем распаковать файл и запустить его. Перейдя во вкладку «сервис», можно обнаружить два основных параметра – менеджер запуска и диспетчер процессов. Для начала стоит зайти в первую ссылку и просмотреть, какие файлы начинают работать в первую очередь после загрузки компьютера. При проверке будет обнаружено множество файлов. Отмеченные зеленым – это файлы проверенные, черным – сомнительные программы. Во второй ссылке можно просмотреть процессы, которые функционируют в данный момент. Здесь также есть зеленые и черные. На последние фрагменты обратить внимание и стоит.

Проверка системы на вирусы, Трояны, Adware и многое другое.

В программе AVZ предоставляется возможность проверить систему на вирусы. Как показывает практика, сканировать эта программа умеет. Более того ее можно использовать вместе с основным антивирусником, как дополнение. Для сканирования необходимо выбрать нужный диск, где проводить проверку и нажать кнопку «пуск». Проверяет программа очень быстро, в некоторых компьютерах на 50 Гб затрачивается не более 10 минут. Важно проверить компьютер полностью. Помимо этой программы стоит просканировать системы и этими утилитами: ADV Cleaner, Wise Disk Cleaner, Cleaner Master.

На видео: Удаление вирусов антивирусной утилитой AVZ

Избавление от критических изменений в компьютере.

Уязвимые места вполне могут быть возможны, поэтому о них также нужно задуматься. Многие параметры в системе могут быть небезопасны. К примеру, в некоторых компьютерах установлен автозапуск, в результате какой-то диск или носитель могут заразить компьютер вирусами. Поэтому стоит отказаться от автозапуска. Это может быть совсем неудобным, ведь если раньше вставлялся диск или флешка, то они запускались сразу, то сейчас придется делать все немного иначе.

Чтобы убрать автозапуск, можно перейти в программу AVZ, зайти в раздел «файл» и выбрать параметр «мастер поиска и устранения проблем». Здесь можно не только убрать автозапуск и найти в системе какую-то проблему, но и убрать мусор в ОС и почистить историю некоторых сайтов.

Если же в диспетчере задач во вкладке «процессы» не видно какого-то файла, который сильно грузит процессор, но сам компьютер все равно тормозит и плохо прогружает, то стоит обратиться к утилите Process Explorer. Она находит все процессы, которые находятся в действии в данный промежуток времени. Обо всех процессах и программах здесь можно узнать подробные сведения. Также утилита удаляет надоедающую рекламу во всех установленных браузерах, ускоряет их работу и избавляется от многих вирусных объектов.

Такую работу обязательно нужно проделывать время от времени. Вирусный объект в скором времени может захватить весь компьютер, который потом уже будет ремонтировать непосредственно специалист. Есть вирусы, которые просто нагружают процессор, в результате работа за компьютером не может быть нормальной, так как постоянные зависания, реклама в браузере просто не дадут комфортно работать. Поэтому подобного рода очистка обязательна.

Читать еще:  Как стереть ненужную информацию с компьютера?

Криминалистический анализ памяти: Исследуем процессы в Windows 7

Содержание статьи

Привет, мой дорогой читатель! Сегодня я познакомлю тебя с продвинутым способом детекта скрытых модулей процессов. Ты уже знаешь, что большинство руткитов скрывают свои модули широко известным способом — через удаление их из PEB. Но вот способ, с помощью которого такие скрытые модули определяются, и которым пользуются антируткиты, недокументирован и мало где описан. Сейчас я внесу свой светлый луч в это темное царство. Но для понимания этой статьи от тебя понадобятся знания в области внутреннего устройства ядра.

Суть проблемы

Всем известно, что Windows очень гибко управляет распределением физической памяти. Она выдается процессу только тогда, когда он к ней реально обратится (исключение составляет лишь #PF). В момент такого обращения диспетчер памяти (или VMM) должен различить ситуацию нарушения доступа (обращения к участку памяти, который не был зарезервирован, или под него не выделена физическая память) от ситуации, когда память передана, но физически еще не выделена.

VMM полагается на структуры дескрипторов виртуальных адресов (Virtual Address Descriptor), которые организованы в дерево на основе номеров страниц.

Общая схема работы VAD есть у Руссиновича в главе про диспетчер виртуальной памяти. Детальную же информацию по структурам нам может дать только windbg. Суть VAD’ов в том, что они помогают обнаруживать библиотеки, загруженные в память процессов, которые скрывают руткиты (например, давно известным способом удаления из PEB).

Когда я впервые заинтересовался структурой VAD для обнаружения скрытых dll, мне на глаза попалась замечательная статья журнала Digital Investigation — «The VAD tree: A process-eye view of physical memory» (dfrws.org/2007/proceedings/p62-dolan-gavitt.pdf). Материал дает подробную информацию об устройстве VAD, но, к сожалению, вопрос лишен практической стороны. Обобщая эту статью и добавляя практическую часть, я наглядно объясню, как с помощью анализа VAD антируткиты показывают список загруженных в процессы DLL.

Что такое VAD, и с чем его едят

Условно, VAD — это структура, которая описывает регион адресного пространства. Например, при вызове функции VirtualAlloc с параметром MEM_RESERVE резервируется регион требуемого размера и создается VAD, описывающий этот регион. При передаче физической памяти параметра MEM_COMMIT система пометит в этой структуре количество переданных страниц. Другой пример: система загружает DLL в адресное пространство процесса, соответственно, это приводит к резервированию региона памяти, и тогда создается VAD, который описывает данный регион. Принцип один, разница лишь в том, какая структура VAD будет использоваться для того или иного случая резервирования. Внутри себя ядро использует функцию MiCheckVirtualAddress, которая первым аргументом принимает виртуальный адрес, а возвращает указатель на соответствующий этому адресу PTE. При этом в третий аргумент записывается указатель на соответствующий адрес VAD.

Ее структура выглядит так:

MiCheckVirtualAddress (
IN PVOID VirtualAddress,
OUT PVOID Unknown,
OUT PMMVAD *VadOut
)

VAD БЫВАЕТ РАЗНЫМ

Видов VAD бывает несколько: _MMVAD_SHORT, _MMVAD и _MMVAD_LONG. Причем каждый последующий фактически расширяет предыдущий. Шапка у всех одна и выглядит так (см. также _MMADDRESS_NODE):

typedef struct _MMVAD_SHORT
<
union
<
LONG32 Balance : 2;
struct _MMVAD* Parent; // родительский VAD
> u1;
struct _MMVAD* LeftChild; // левый дочерний VAD
struct _MMVAD* RightChild; // правый дочерний VAD
ULONG32 StartingVpn; // стартовый номер страниц
ULONG32 EndingVpn; // последняя страница, номер
union
<
ULONG32 LongFlags;
struct _MMVAD_FLAGS VadFlags; //полезные флаги
> u;

> MMVAD_SHORT, *PMMVAD_SHORT.
typedef struct _MMVAD_FLAGS
<
ULONG32 CommitCharge : 19; // 0 BitPosition
ULONG32 NoChange : 1; // 19 BitPosition
ULONG32 VadType : 3; // 20 BitPosition
ULONG32 MemCommit : 1; // 23 BitPosition
ULONG32 Protection : 5; // 24 BitPosition
ULONG32 Spare : 2; // 29 BitPosition
ULONG32 PrivateMemory : 1; // 31 BitPosition
>MMVAD_FLAGS, *PMMVAD_FLAGS;

  • CommitCharge — количество выделенных (COMMIT) страниц в этом узле.
  • VadType — тип Vad.
  • Protection — атрибут защиты страниц.

MMVAD_SHORT не подойдет для наших целей, так как с его помощью описываются обычные приватные страницы, выделенные, например, с помощью VitualAlloc. А вот _MMVAD — как раз то, что нужно.

typedef struct _MMVAD
<
union
<
LONG32 Balance : 2;
struct _MMVAD* Parent;
> u1;
struct _MMVAD* LeftChild;
struct _MMVAD* RightChild;
ULONG32 StartingVpn;
ULONG32 EndingVpn;
union
<
ULONG32 LongFlags;
struct _MMVAD_FLAGS VadFlags;
>u;

//далее данные, которые связывают VAD с секцией раздела
union
<
struct _SUBSECTION* Subsection;
struct _MSUBSECTION* MappedSubsection;
>;
struct _MMPTE* FirstPrototypePte;
struct _MMPTE* LastContiguousPte;
struct _LIST_ENTRY ViewLinks;
struct _EPROCESS* VadsProcess;
> MMVAD, *PMMVAD;
А так выглядит подраздел.
typedef struct _SUBSECTION
<
// указатель на область управления
PCONTROL_AREA ControlArea;
// далее следуют поля, необходимые VMM для сопоставления образа на диске и в памяти для подкачки
union
<
ULONG LongFlags;
MMSUBSECTION_FLAGS SubsectionFlags;
> u;

> SUBSECTION, *PSUBSECTION;

Через область управления разделом мы можем выйти на FILE_OBJECT, который специально создан для проекции файла.

typedef struct _CONTROL_AREA
<
PSEGMENT Segment;

struct _EX_FAST_REF FilePointer;

>CONTROL_AREA, *PCONTROL_AREA;

При получении указателя на FileObject мы зануляем первые три бита FilePointer маской 0xFFFFFFF8. Указатель на корневой узел хранится в EPROCESS в поле VadRoot, смещение которого меняется от версии к версии, поэтому неплохо было бы захардкодить его под разные версии.

Как видно из структуры _VAD, первые два бита адреса Parent, используются для служебных целей, поэтому для получения валидного адреса их также нужно занулять. Поле применяется для получения указателя на VAD верхнего уровня.

VadRoot = *(PULONG )( (PUCHAR )Eprocess + EPROCESS_VadRoot_Offs ) & 0xFFFFFFFC;

Формат VadRoot в EPROCESS различен в разных версиях NT. В Windows 7 он представляет собой структуру MM_AVL_TABLE (очевидно, разработчики добавили информацию о балансировке дерева).

typedef struct _MM_AVL_TABLE <
struct _MMADDRESS_NODE BalancedRoot;
struct <
ULONG32 DepthOfTree : 5;
ULONG32 Unused : 3;
ULONG32 NumberGenericTableElements : 24;
>;
VOID* NodeHint;
VOID* NodeFreeHint;
>MM_AVL_TABLE, *PMM_AVL_TABLE;

Некоторая сложность заключается в том, что BalancedRoot. u1.Parent не является истинной вершиной дерева, для этого нужно анализировать RightChild, но его можно использовать для начала обхода дерева, потому что он указывает сам на себя. При прохождении по дереву VAD нужно отделять MMVAD_SHORT от MMVAD и MMVAD_LONG. Это можно делать по тэгу блока пула, которому принадлежит структура. Собственно тэг хранится по смещению 4 от самого блока (и по обратному смещению -4 от начала структуры). Диспетчер памяти присваивает тэг «VadS» для _MMVAD_SHORT, «Vad» для _MMVAD, «Vadl» для _MMVAD_LONG.

Кроме того, разумеется, нужно проводить валидацию промежуточных параметров типа ControlArea, Subsection, FilePointer.

Практикуемся

Проведем исследование вадов. Выберем из списка процессов (!process 0 0) некий процесс:

kd> !process 84944418 0
PROCESS 84944418 SessionId: 1 Cid: 0a40 Peb:
7ffdf000 ParentCid: 08e4
DirBase: 3ec0c420 ObjectTable: 993f0830
HandleCount: 256.
Image: TOTALCMD.EXE
Адрес корня дерева:
kd> dt _MM_AVL_TABLE 84944418+278 -r2
nt!_MM_AVL_TABLE
+0x000 BalancedRoot: _MMADDRESS_NODE
+0x000 u1 :
+0x000 Balance : 0y00
+0x000 Parent: 0x84944690 указывает в себя
(см. ниже)
+0x004 LeftChild : (null)
+0x008 RightChild : 0x84947610 истинный
адрес VadRoot

kd> dd 84944418+278 l1
84944690 84944690
Возьмем первый VAD:
kd> dc 0x84947610-4 l1
8494760c 20646156 Vad
Это MMVAD.
kd> dt _MMVAD 0x84947610
nt!_MMVAD
+0x000 u1 :
+0x004 LeftChild : 0x84949290 _MMVAD
+0x008 RightChild : 0x84941b48 _MMVAD
+0x00c StartingVpn : 0x703b0
+0x010 EndingVpn : 0x703e1
.
+0x024 Subsection : 0x84820110 _SUBSECTION
+0x024 MappedSubsection : 0x84820110 _MSUBSECTION
+0x028 FirstPrototypePte : 0x98f1ece0 _MMPTE
+0x02c LastContiguousPte : 0xfffffffc _MMPTE
+0x030 ViewLinks : _LIST_ENTRY [ 0x848e3618 0x84820108 ]
+0x038 VadsProcess : 0x84944419 _EPROCESS

VAD описывает регион 0x703b0000-0x703e1000 включительно, а также имеет указатель в подраздел 0x84820110 (секция раздела, в случае с EXE-файлами — подраздел на каждую секцию).

kd> dt _subsection ControlArea 0x84820110
nt!_SUBSECTION
+0x000 ControlArea : 0x848200c0 _CONTROL_AREA
kd> dt _control_area 0x848200c0 -r1
nt!_CONTROL_AREA
+0x000 Segment : 0x98f1ecb0 _SEGMENT
.
+0x024 FilePointer : _EX_FAST_REF
+0x000 Object : 0x88cbc79a
+0x000 RefCnt : 0y010
+0x000 Value : 0x88cbc79a

Несложным расчетом определяем, что объект: 0x88cbc79a & 0xFFFFFFF8 = 0x88CBC798.

kd> dt _file_object filename 88CBC798
nt!_FILE_OBJECT
+0x030 FileName : _UNICODE_STRING «Windows
System32winmm.dll»

В итоге мы получили информацию о том, что VAD описывает спроецированную winmm.dll и тем самым вышли на конкретный файл! Обрати внимание, что в Windows 2000/XP не нужно выравнивать указатель при получении адреса на VadRoot, потому что там он имеет вид PVOID VadRoot.

Дерево VAD доступно только в «живых» или запущенных процессах. Ядро зануляет указатель на вершину дерева с завершением процесса. Это ограничивает полезность данного метода для изучения некоторых процессов.

На этом пока все. Изучай структуры, экспериментируй, и ты выявишь абсолютно любой руткит, даже базируясь на моем примере. Если есть вопросы — пиши на почту, и я всегда помогу.

Ссылка на основную публикацию
Adblock
detector