Русский
Русский
English
Статистика
Реклама

Dr.web

Охота за уязвимостью. Выполняем произвольный код на виртуальных машинах NVIDIA GeForce NOW

07.09.2020 12:20:38 | Автор: admin

Введение


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

Одной из таких облачных платформ является GeForce NOW от компании NVIDIA. Согласно Google Trends, по всему миру пик поисковых запросов для этого сервиса пришелся на февраль. Это коррелирует с началом действия ограничений во многих странах Азии, Европы, Северной и Южной Америки и других регионах. В то же время для России, где режим самоизоляции начался позже, в марте, мы видим аналогичную картину, но с соответствующей задержкой.

Учитывая высокий интерес к GeForce NOW, мы решили рассмотреть эту платформу с точки зрения безопасности.

Исследуем платформу


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

В меню представлен список игр, поддерживаемых сервисом. Для игры необходим аккаунт одного из магазинов цифрового контента, к которому уже привязана та или иная игра (если она платная, то купить ее нужно заранее). В этом исследовании мы рассматриваем связку GeForce NOW и магазина Steam.

При нажатии на кнопку Играть в главном окне приложения происходит запуск удаленной виртуальной среды и стриминг в реальном времени со стороны сервера на устройство пользователя.

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



Уже сейчас понятно, что мы можем выполнить произвольный код, если проэксплуатируем уязвимость в игре, которую поддерживает сервис. Единственное ограничение эксплойт должен быть доставлен по сети. Здесь возможны различные варианты развития событий. Например, если в результате работы эксплойта создается исполняемый модуль на диске, сервис теоретически может предотвратить выполнение полезной нагрузки, отследив создание исполняемого файла от имени пользователя kiosk (это стандартный пользователь в виртуальных машинах сервиса GeForce NOW). С другой стороны, если в результате эксплуатации уязвимости выполняется шелл-код, сервис защититься уже никак не сможет.

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



В обычных условиях добавить файл cmd.exe в библиотеку в качестве сторонней игры не составило бы проблемы. Однако в GeForce NOW такая возможность заблокирована, и нажатие на кнопку Обзор на скриншоте ниже ни к чему не приводит. Тем не менее, можно выбрать одно из уже имеющихся приложений (а заодно и посмотреть, какие вообще программы установлены в недрах виртуальной машины). Для примера выберем архиватор 7-Zip (другие программы также отлично подойдут).



После добавления 7-Zip в библиотеку Steam параметры программы можно изменить. Здесь мы и исправляем путь до нужного нам файла cmd.exe. Готово! Запускаем нашу стороннюю игру и получаем рабочий шелл:



Теперь мы можем осмотреться и узнать, где мы вообще находимся. Запускаем winver:



Как оказалось, виртуальная машина сервиса работает на Windows Server 2019.

В результате мы уже можем делать то, что по умолчанию не предусмотрено виртуальными машинами GeForce NOW. Но что еще мы можем сделать, и насколько это будет опасно?

Согласно FAQ на странице NVIDIA для отправки отчетов о найденных уязвимостях, получение доступа к cmd.exe на виртуальной машине сервиса GeForce NOW не является уязвимостью. Это объясняется тем, что в виртуальной среде у пользователя имеются минимальные права, а также присутствует фильтрация запускаемых приложений. Так, например, после запуска powershell.exe среда выполнения будет сразу же остановлена.

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

1) доставить полезную нагрузку на виртуальную машину,
2) запустить ее с обходом белого списка приложений.

В процессе решения первой задачи были испробованы популярные для скачивания LOLBIN-ы, такие как regsvr32, bitsadmin и т. д. Во всех случаях виртуальная машина аварийно завершалась:



Но решение пришло само собой. GeForce NOW это сервис для игр (в том числе многопользовательских), где игровой клиент может подключаться к игровому серверу и скачивать оттуда звуки, модели, карты и другие файлы. Поэтому нам необходимо выбрать такую игру, которая позволит доставить произвольный файл на клиент. При этом нам не стоит беспокоиться о расширении файла, так как у нас есть доступ к шеллу, и мы можем переместить скачанный файл туда, где мы сможем его использовать.

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

Итак, попробуем реализовать эту идею на примере Counter-Strike: Source (далее мы будем сокращенно называть ее CS:S). Первое, что мы делаем, создаем свой сервер CS:S, который будет отдавать dll-файл под видом, скажем, модели (d.mdl). Далее запускаем GeForce NOW для игры в CS:S и заходим на наш сервер, с которого на виртуальную машину загружается заранее подготовленный файл модели. Теперь сворачиваем игру и запускаем cmd.exe. Перемещаем файл d.mdl в Counter-Strike Source/bin/user32.dll и перезапускаем игру консольной командой. Успех: мы выполнили произвольный код в контексте доверенного процесса.

И даже записали видео:



Заключение


Несмотря на то, что атаки на пользователей сервиса потенциально возможны, они все же маловероятны. К тому же риски для других пользователей сервиса будут минимальны. Дело в том, что для каждой новой игровой сессии в GeForce NOW запускается чистая виртуальная среда. После того как игрок окончил сеанс, виртуальная машина завершает работу и обнуляется. Поэтому даже в случае успешной эксплуатации уязвимости вредоносный код сможет проработать лишь до тех пор, пока работает скомпрометированная виртуальная машина. А чтобы атаковать других пользователей, злоумышленникам потребуется выбраться из виртуальной среды при помощи эксплойта типа Virtual machine escape. Такие эксплойты встречаются достаточно редко, и реализовать их сложно. Но в случае успеха под угрозой окажутся уже не единичные пользователи, а все, кто запустил игровую сессию после первоначальной компрометации сервиса через одну из виртуальных машин GeForce NOW.

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

После нашего обращения NVIDIA подтвердила наличие проблемы и выпустила соответствующее исправление для своего сервиса.

Хронология событий:

18.04.2020 Информация об уязвимости отправлена в NVIDIA
20.04.2020 NVIDIA PSIRT подтвердил получение репорта и смог воспроизвести проблему
13.05.2020 NVIDIA PSIRT проинформировал, что разработчики работают над проблемой
21.08.2020 NVIDIA PSIRT проинформировал, что выпуск исправления должен состояться до 30.08
02.09.2020 Мы запросили уточнение о дате выхода исправления
03.09.2020 NVIDIA выпустила исправление
04.09.2020 NVIDIA выпустила уведомление о найденной уязвимости
07.09.2020 Мы опубликовали наш отчет.
Подробнее..

На волне тренда. Egregor ransomware шифровальщик для целевых атак

13.01.2021 10:12:44 | Автор: admin


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

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


Что за Egregor?


Предыстории подробно касаться не будем о происхождении этой вредоносной программы написано достаточно. Она является дальнейшим развитием шифровальщиков Maze и Sekhmet, с которыми имеет много общего. Как и Maze, Egregor стал распространяться по модели Ransomware-as-a-Service и использоваться операторами для целевых атак на корпоративный сектор. Помимо известных IT-компаний (Crytek, Ubisoft) от шифровальщика также пострадал крупный чилийский ритейлер, причем принтеры в скомпрометированной сети начали печатать записки о выкупе.

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

Наш образец (f73e31d11f462f522a883c8f8f06d44f8d3e2f01) представляет собой исполняемую библиотеку, написанную на C++. Для шифрования пользовательских файлов используются алгоритмы ChaCha20 и RSA. В настоящий момент расшифровка пострадавших файлов невозможна.

Принцип действия


Исследованный образец представляет собой исполняемый DLL-файл с оригинальной точкой входа и тремя экспортами:



Статический анализ кода показывает, что вредоносная активность содержится в функции DllRegisterServer. При запуске образца на виртуальных машинах троян не выполняется. Поскольку шифровальщик предназначен для целевых атак, мы полагаем, что он запускается по команде через командную строку. Для начального запуска используется команда rundll32.exe C:\Windows\%SAMPLE%,DllRegisterServer -passegregor10.

После этого троян запускает полезную нагрузку, предварительно расшифровав ее по тому же алгоритму, который используется для шифрования пользовательских файлов (ChaCha20). Однако в этом случае ключ и одноразовый код (nonce) лежат в открытом доступе. Для расшифровки необходимы 32-байтная строка KojihuDJUFDHGufhdjnbgDfgudfhdfg3 в качестве ключа и 8-байтная строка O_IJDhfs в качестве nonce:



Содержимое полезной нагрузки зашито в теле трояна и зашифровано:



Полезная нагрузка представляет собой загрузчик в виде powershell-скрипта, который подключается к amajai-technologies.industries. На момент анализа этот сервер уже не отвечал, и загружаемый файл остается неизвестным. При этом стоит отметить, что через него операторы шифровальщика могли похищать информацию. Функциональность управления принтерами для печати записок о выкупе в исследованном образце не найдена и, возможно, содержится в загружаемом файле.



Для запуска дальнейшего шифрования используется пакетный файл, который запускает рассматриваемый образец с функцией DllRegisterServer, но с другими параметрами командной строки:



Полезная нагрузка в системе маскируется под продукты компании LogMeIn:



Следует отдельно отметить, что шифровальщик использует именно алгоритм ChaCha20 (разновидность шифра Salsa20), а не AES, как написано в некоторых источниках. Это подтверждается строками expand 16-byte k и expand 32-byte k:



На использование ChaCha20 также указывает алгоритм шифрования в функции quarter-round:



Ниже представлено сравнение quarter-round Salsa20 (слева) и ChaCha20 (справа):



Для генерации самого ключа используется функция RtlGenRandom через вызов SystemFunction036. Генератор на основе RtlGenRandom оценивается как криптостойкий. Подбор ключей в этом случае невозможен:



Большая часть кода написана вручную и обфусцирована, что многократно затрудняет анализ. Данные об оригинальном расположении проекта содержатся в отладочной информации: M:\sc\p\testbuild.pdb.

Одна из особенностей шифровальщика в том, что расширения каждого файла отличаются даже в пределах одного компьютера. Аналогично Sekhmet, для каждого файла используется новое случайное расширение. Для идентификации зашифрованных файлов используется файловый маркер из четырех DWORD в конце файла (EOF): 00 00 00 00, 00 00 XX XX, 00 00 XX XX, XX XX 6B B1 (байты вместо XX отличаются для каждого файла). По этим значениям можно определить, что файл был заражен именно этим шифровальщиком.



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



Заключение


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

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

Исследуем Spyder еще один бэкдор группировки Winnti

04.03.2021 10:11:49 | Автор: admin

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

Последний раз деятельность Winnti попадала в наше поле зрения, когда мы анализировали модификации бэкдоров ShadowPad и PlugX в рамках расследования атак на государственные учреждения стран Центральной Азии. Оба эти семейства оказались схожи концептуально и имели примечательные пересечения в коде. Сравнительному анализу ShadowPad и PlugX был посвящен отдельный материал.

В сегодняшней статье мы разберем бэкдор Spyder именно так окрестили найденный вредоносный модуль наши вирусные аналитики. Мы рассмотрим алгоритмы и особенности его работы и выявим его связь с другими известными инструментами APT-группы Winnti.

Чем примечателен Spyder

Вредоносный модуль представляет собой DLL-библиотеку, которая на зараженном устройстве располагалась в системной директории C:\Windows\System32 под именем oci.dll. Таким образом, модуль был подготовлен для запуска системной службой MSDTC при помощи метода DLL Hijacking. По нашим данным, файл попал на компьютеры в мае 2020 года, однако способ первичного заражения остался неизвестным. В журналах событий мы обнаружили записи о создании служб, предназначенных для старта и остановки MSDTC, а также для исполнения бэкдора.

Log Name: SystemSource: Service Control ManagerDate: 23.11.2020 5:45:17Event ID: 7045Task Category: NoneLevel: InformationKeywords: ClassicUser: Computer: Description:A service was installed in thesystem.Service Name: IIJVXRUMDIKZTTLAMONQService File Name: net start msdtcService Type: user mode serviceService Start Type: demand startService Account: LocalSystem
Log Name: SystemSource: Service Control ManagerDate: 23.11.2020 5:42:20Event ID: 7045Task Category: NoneLevel: InformationKeywords: ClassicUser: Computer: Description:A service was installed in thesystem.Service Name: AVNUXWSHUNXUGGAUXBREService File Name: net stop msdtcService Type: user mode serviceService Start Type: demand startService Account: LocalSystem

Также мы нашли следы запуска других служб со случайными именами, их файлы располагались в директориях вида C:\Windows\Temp\<random1>\<random2>, где random1 и random2 являются строками случайной длины из случайных символов латинского алфавита. На момент проведения исследования исполняемые файлы этих служб отсутствовали.

Интересной находкой стала служба, свидетельствующая об использовании утилиты для удаленного исполнения кода smbexec.py из состава набораImpacket. С её помощью злоумышленники организовали удаленный доступ к командной оболочке в полуинтерактивном режиме.

Исследуемый вредоносный модуль oci.dll был добавлен в вирусную базу Dr.Web как BackDoor.Spyder.1. Это название пришло к нам из артефактов бэкдора. В одном из найденных образцов остались функции ведения отладочного журнала и сами сообщения, при этом те из них, которые использовались при коммуникации с управляющим сервером, содержали строку Spyder.

Бэкдор примечателен рядом интересных особенностей. Во-первых, oci.dll содержит основной PE-модуль, но с отсутствующими файловыми сигнатурами. Заполнение сигнатур заголовка нулями предположительно было сделано с целью затруднения детектирования бэкдора в памяти зараженного устройства. Во-вторых, полезная нагрузка сама по себе не несет вредоносной функциональности, но служит загрузчиком и координатором дополнительных плагинов, получаемых от управляющего сервера. С помощью этих подключаемых плагинов бэкдор выполняет основные задачи. Таким образом, это семейство имеет модульную структуру, как и другие семейства бэкдоров, используемые Winnti, упомянутые ранее ShadowPad и PlugX.

Анализ сетевой инфраструктуры Spyder выявил связь с другими атаками Winnti. В частности инфраструктура, используемая бэкдорами Crosswalk и ShadowPad, описанными в исследовании Positive Technologies, перекликается с некоторыми образцами Spyder. График ниже наглядно показывает выявленные пересечения.

Пожалуйста, масштабируйте страницу для чтения надписей, спасибо :)Пожалуйста, масштабируйте страницу для чтения надписей, спасибо :)

Принцип действия

Бэкдор представляет собой вредоносную DLL-библиотеку. Имена функций в таблице экспорта образца дублируют экспортируемые функции системной библиотеки apphelp.dll.

Функционально образец является загрузчиком для основной полезной нагрузки, которую хранит в секции .data в виде DLL, при этом некоторые элементы DOS и PE заголовков равны нулю.

Работа загрузчика

Загрузка выполняется в функции, обозначенной как malmain_3, вызываемой из точки входа DLL через две промежуточные функции-переходника.

Далее следует стандартный процесс загрузки PE-модуля в память и вызов точки входа загруженного модуля (DllMain) с аргументом DLL_PROCESS_ATTACH, а после выхода из нее повторный вызов с DLL_PROCESS_DETACH.

Работа основного модуля

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

  • IMAGE_DOS_HEADER.e_magic

  • IMAGE_NT_HEADERS64.Signature

  • IMAGE_NT_HEADERS64.FileHeader.Magic

Кроме того, TimeDateStamp и имена секций также имеют нулевое значение. Остальные значения корректны, поэтому после ручной правки необходимых сигнатур файл можно загрузить для анализа в виде PE-модуля.

Анализ основного модуля затруднен, так как периодически используются нетипичные способы вызова функций. Для хранения и обработки структур используется библиотека UT hash. Она позволяет преобразовывать стандартные C-структуры в хеш-таблицы путем добавления одного члена типа ut_hash_handle. При этом все функции библиотеки, такие как добавление элементов, поиск, удаление и т. д., реализованы в виде макросов, что приводит к их принудительному разворачиванию и встраиванию (inline) компилятором в код основной (вызывающей) функции.

Для взаимодействия с управляющим сервером используется библиотека mbedtls.

Функция DllMain

В начале исполнения проверяется наличие события Global\\BFE_Notify_Event_{65a097fe-6102-446a-9f9c-55dfc3f45853}, режим исполнения (из конфигурации) и командная строка, затем происходит запуск рабочих потоков.

Модуль имеет встроенную конфигурацию следующей структуры:

structcfg_c2_block{inttype;charfield_4[20];charaddr[256];}structcfg_proxy_data{DWORDdw;charstr[256];charproxy_server[256];charusername[64];charpassword[32];charunk[128];};structbuiltin_config{intexec_mode;charurl_C2_req[100];charhash_id[20];charstring[64];charfield_BC;cfg_c2_block srv_1;cfg_c2_block srv_2;cfg_c2_block srv_3;cfg_c2_block srv_4;cfg_proxy_data proxy_1;cfg_proxy_data proxy_1;cfg_proxy_data proxy_1;cfg_proxy_data proxy_1;intCA_cert_len;charCA_cert[cert_len];};

Поле hash содержит некое значение, которое может являться идентификатором. Это значение используется при взаимодействии с управляющим сервером и может быть представлено в виде строки b2e4936936c910319fb3d210bfa55b18765db9cc, которая по длине совпадает с SHA1-хешами.

Поле string содержит строку из одного символа: 1.

CA_cert сертификат центра сертификации в формате DER. Он используется для установки соединения с управляющим сервером по протоколу TLS 1.2.

В функции DllMain предусмотрено создание нескольких рабочих потоков в зависимости от ряда условий.

  • Основной поток thread_1_main

  • Поток запроса нового сервера thread_2_get_new_C2_start_communication

  • Поток исполнения зашифрованного модуля thread_4_execute_encrypted_module

Основной поток

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

В структуру funcs_struc типа funcs_1 заносятся 3 указателя на функции, которые будут поочередно вызваны внутри функции init_global_funcs_and_allocated_cfg.

В функции set_global_funcs_by_callbacks происходит вызов каждой функции-инициализатора по очереди.

Общий порядок формирования структур выглядит следующим образом:

1) каждой функции передаются две структуры: первая содержит указатели на некоторые функции, вторая пустая;

2) каждая функция переносит указатели на функции из одной структуры в другую;

3) после вызова функции-инициализатора происходит очередное перемещение указателей на функции из локальной структуры в глобальный массив структур по определенному индексу.

В итоге после всех нестандартных преобразований получается некоторое количество глобальных структур, которые объединены в один массив.

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

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

Затем бэкдор при помощи библиотеки UT hash формирует хеш-таблицу служебных структур, ответственных за хранение контекста сетевого соединения, параметров подключения и т. д.

Фрагмент кода формирования хеш-таблицы.

Стоит отметить, что здесь располагается значение сигнатуры, которое позволяет определить используемую библиотеку: g_p_struc_10->hh.tbl->signature = 0xA0111FE1;.

Для рассматриваемого бэкдора характерно распределение значимых полей и данных по нескольким создаваемым для этого структурам. Эта особенность при анализе затрудняет создание осмысленных имен для структур.

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

Инициализация соединения с управляющим сервером

После ряда подготовительных действий бэкдор разрешает хранящийся в конфигурации адрес управляющего сервера и извлекает порт. Адреса в конфигурации хранятся в виде строк: koran.junlper[.]com:80 и koran.junlper[.]com:443. Далее программа создает TCP-сокет для подключения. После этого создает контекст для защищенного соединения и выполняет TLS-рукопожатие.

После установки защищенного соединения бэкдор ожидает от управляющего сервера пакет с командой. Программа оперирует двумя форматами пакетов:

  • пакет, полученный после обработки протокола TLS, транспортный пакет;

  • пакет, полученный после обработки транспортного пакета, пакет данных. Содержит идентификатор команды и дополнительные данные.

Заголовок транспортного пакета представлен следующей структурой.

structtransport_packet_header{DWORDsignature;WORDcompressed_len;WORDuncompressed_len;};

Данные располагаются после заголовка и упакованы алгоритмом LZ4. Бэкдор проверяет значение поля signature, оно должно быть равно 0x573F0A68.

После распаковки полученный пакет данных имеет заголовок следующего формата.

structdata_packet_header{WORDtag;WORDid;WORDunk_0;BYTEupdate_data;BYTEid_part;DWORDunk_1;DWORDunk_2;DWORDlen;};

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

Данные структуры заголовков используются в обоих направлениях взаимодействия.

Порядок обработки команд сервера:

  • верификация клиента;

  • отправка информации о зараженной системе;

  • обработка команд по идентификаторам.

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

Этап верификации

Для выполнения этапа верификации значения полей tag и id в полученном от управляющего сервера первичном пакете должны быть равны 1.

Процесс верификации состоит в следующем:

1. Бэкдор формирует буфер из 8-байтного массива, который следует после заголовка пакета и поля hash_id, взятого из конфигурации. Результат можно представить в виде структуры:

struct buff{BYTEpacket_data[8];BYTEhash_id[20];}

2. Вычисляется SHA1-хеш данных в полученном буфере, результат помещается в пакет (после заголовка) и отправляется на сервер.

Отправка информации о системе

Следующий полученный пакет от управляющего сервера должен иметь значения tag, равное 5, и id, равное 3. Данные о системе формируются в виде структуры sysinfo_packet_data.

structsession_info{DWORDid;DWORDState;DWORDClientBuildNumber;BYTEuser_name[64];BYTEclient_IPv4[20];BYTEWinStationName[32];BYTEdomain_name[64];};structsysinfo_block_2{WORDfield_0;WORDfield_2;WORDfield_4;WORDsystem_def_lang_id;WORDuser_def_lang_id;DWORDtimezone_bias;DWORDprocess_SessionID;BYTEuser_name[128];BYTEdomain_name[128];DWORDnumber_of_sessions;session_info sessions[number_of_sessions];};structsysinfo_block_1{DWORDunk_0;//0DWORDbot_id_created;DWORDdw_const_0;//0x101DWORDos_version;WORDdw_const_2;//0x200BYTEcpu_arch;BYTEfield_13;DWORDmain_interface_IP;BYTEMAC_address[20];BYTEbot_id[48];WCHARcomputer_name[128];BYTEcfg_string[64];WORDw_const;//2WORDsessions_size;};structsysinfo_packet_data{DWORDid;sysinfo_block_1 block_1;sysinfo_block_2 block_2;};

Поле sysinfo_packet_data.id содержит константу 0x19C0001.

Примечателен процесс определения бэкдором значений MAC-адреса и IP-адреса. Вначале программа ищет сетевой интерфейс, через который прошло наибольшее количество пакетов, затем получает его MAC-адрес и далее по нему ищет IP-адрес этого интерфейса.

Версия ОС кодируется значением от 1 до 13 (0, если возникла ошибка), начиная с 5.0 и далее по возрастанию версии.

В поле sysinfo_packet_data.block_1.cfg_string помещается значение string из конфигурации бэкдора, которое равно символу 1.

Обработка команд

После верификации и отправки системной информации BackDoor.Spyder.1 приступает к обработке главных команд. В отличие от большинства бэкдоров, команды которых имеют вполне конкретный характер (забрать файл, создать процесс и т. д.), в данном экземпляре они носят скорее служебный характер и отражают инструкции по хранению и структурированию получаемых данных. Фактически все эти служебные команды нацелены на загрузку новых модулей в PE-формате, их хранение и вызов тех или иных экспортируемых функций. Стоит отметить, что модули и информация о них хранятся в памяти в виде хеш-таблиц с помощью UT-hash.

tag

id

Описание

6

1

Отправить на сервер количество полученных модулей.

2

Сохранить в памяти параметры получаемого модуля.

3

Сохранить в памяти тело модуля.

4

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

5

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

6

Отправить в ответ пакет, состоящий только из заголовка data_packet_header, в котором поле unk_2 равно 0xFFFFFFFF.

7

Вызвать экспортируемую функцию 2 одного из загруженных модулей.

8

Вызвать экспортируемую функцию 3 одного из загруженных модулей.

5

2

Отправить на сервер информацию о текущих параметрах подключения.

4

-

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

После обработки каждого полученного от сервера пакета бэкдор проверяет разницу между двумя значениями результата GetTickCount. Если значение превышает заданное контрольное значение, то отправляет на сервер значение сигнатуры 0x573F0A68 без каких-либо дополнительных данных и преобразований.

Заключение

Рассмотренный образец бэкдора для целевых атак BackDoor.Spyder.1 примечателен в первую очередь тем, что его код не исполняет прямых вредоносных функций. Его основные задачи скрытое функционирование в зараженной системе и установление связи с управляющим сервером с последующим ожиданием команд операторов. При этом он имеет модульную структуру, что позволяет масштабировать его возможности, обеспечивая любую функциональность в зависимости от нужд атакующих. Наличие подключаемых плагинов роднит рассмотренный образец с ShadowPad и PlugX, что, вкупе с пересечениями сетевых инфраструктур, позволяет нам сделать вывод о его принадлежности к деятельности Winnti.

Подробнее..

Исследование целевых атак на российские НИИ

02.04.2021 14:12:19 | Автор: admin

В конце сентября 2020 года в вирусную лабораторию Доктор Веб за помощью обратился один из российских научно-исследовательских институтов. Сотрудники НИИ обратили внимание на ряд технических проблем, которые могли свидетельствовать о наличии вредоносного ПО на одном из серверов локальной сети. В ходе расследования мы установили, что на НИИ была осуществлена целевая атака с использованием ряда специализированных бэкдоров. Изучение деталей инцидента показало, что сеть института была скомпрометирована задолго до обращения к нам и, судя по имеющимся у нас данным, не одной APT-группой.

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

Восстанавливаем события

Мы считаем, что найденные в сети бэкдоры принадлежат двум разным хакерским группировкам. Для удобства обозначим их как APT-группа 1 и APT-группа 2.

В ходе расследования было установлено, что APT-группа 1 скомпрометировала внутреннюю сеть института осенью 2017 года. Первичное заражение осуществлялось с помощьюBackDoor.Farfli.130 модификации бэкдора, также известного как Gh0st RAT. Позднее, весной 2019 года в сети был установлен Trojan.Mirage.12, а в июне 2020 BackDoor.Siggen2.3268.

APT-группа 2 скомпрометировала сеть института не позднее апреля 2019, и в этот раз заражение началось с установки бэкдораBackDoor.Skeye.1. В процессе работы мы также выяснили, что примерно в то же время в мае 2019 года Skeye был установлен в локальной сети другого российского НИИ.

Тем временем в июне 2019 года компания FireEye опубликовала отчет о целевой атаке на государственный сектор ряда стран центральной Азии с использованием Skeye. Позднее, в период с августа по сентябрь 2020 года вирусные аналитики Доктор Веб зафиксировали установку различных троянов APT-группой 2 в сети пострадавшего НИИ, включая ранее не встречавшийся DNS-бэкдорBackDoor.DNSep.1, а также хорошо известный BackDoor.PlugX.

Более того, в декабре 2017 года на серверы НИИ был установленBackDoor.RemShell.24. Представители этого семейства ранее были описаны специалистами Positive Technologies в исследовании Operation Taskmasters. При этом мы не располагаем такими данными, которые позволили бы однозначно определить, какая из двух APT-групп использовала этот бэкдор.

Кто стоит за атаками?

Деятельность первой APT-группы не позволяет нам однозначно идентифицировать атаковавших как одну из ранее описанных хакерских группировок. При этом анализ используемых вредоносных программ и инфраструктуры показал, что эта группа активна как минимум с 2015 года.

Второй APT-группой, атаковавшей НИИ, по нашему мнению является TA428, ранее описанная исследователями компании Proofpoint в материале Operation Lag Time IT. В пользу нашего вывода говорят следующие факты:

1) в коде бэкдоров BackDoor.DNSep и BackDoor.Cotx имеются явные пересечения и заимствования;

2) BackDoor.Skeye.1 и Trojan.Loader.661 использовались в рамках одной атаки, при этом последний является известным инструментом TA428;

3) бэкдоры, проанализированные нами в рамках этих атак, имеют пересечения в адресах управляющих серверов и сетевой инфраструктуре с бэкдорами, используемыми группировкой TA428.

Теперь подробнее рассмотрим выявленные связи. На графе приведена часть задействованной в атаке инфраструктуры с пересечениями бэкдоров Skeye и другим известным APT-бэкдором PosionIvy:

связей много, поэтому пожалуйста, масштабируйте, спасибо :)связей много, поэтому пожалуйста, масштабируйте, спасибо :)

На этом графе изображены пересечения в инфраструктуре бэкдоров Skeye и Cotx:

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

Другой интересной находкой этого исследования стал бэкдор Logtu, один из его образцов мы ранее описывали в рамках расследования инцидента в Киргизии. Адрес его управляющего сервера совпал с адресом сервера бэкдора Skeye atob[.]kommesantor[.]com. В связи с этим мы также провели сравнительный анализ BackDoor.Skeye.1 с образцами BackDoor.Logtu.1 и BackDoor.Mikroceen.11.

Подробный разбор алгоритмов работы найденных бэкдоров читайте в нашем исследовании на сайте.

Сравнительный анализ кода DNSep и Cotx

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

Функция, отвечающая за обработку команд от управляющего сервера, принимает аргументом структуру:

structst_arg{_BYTE cmd;st_string arg;};

При этом, если нужная функция принимает несколько аргументов, то они все записаны в поле arg с разделителем |.

Набор команд BackDoor.Cotx.1 обширнее, чем у BackDoor.DNSep.1, и включает все команды, которые есть у последнего.

Ниже видно почти полное совпадение кода некоторых функций бэкдоров. При этом следует учитывать, в Cotx используется кодировка Unicode, а в DNSep ANSI.

Обработчик команды на отправку листинга каталога или информации о диске

BackDoor.DNSep.1BackDoor.DNSep.1BackDoor.Cotx.1BackDoor.Cotx.1

Функция получения информации о дисках

BackDoor.DNSep.1BackDoor.DNSep.1BackDoor.Cotx.1BackDoor.Cotx.1

Функция перечисления файлов в папке

BackDoor.DNSep.1BackDoor.DNSep.1BackDoor.Cotx.1BackDoor.Cotx.1

Функция сбора информации о файлах в папке

BackDoor.DNSep.1BackDoor.DNSep.1BackDoor.Cotx.1BackDoor.Cotx.1

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

Сравнительный анализ кода бэкдоров Skeye, Mikroceen, Logtu

В процессе исследования бэкдора Skeye мы обнаружили, что адрес его управляющего сервера также используется бэкдором семейства Logtu. Для сравнительного анализа мы использовали ранее описанные нами образцы BackDoor.Logtu.1 и BackDoor.Mikroceen.11.

Функции логирования

Логирование во всех случаях так или иначе обфусцировано.

  • BackDoor.Mikroceen.11 сообщения в формате %d-%d-%d %d:%d:%d <msg>\r\n записываются в файл %TEMP%\WZ9Jan10.TMP, где <msg> случайная текстовая строка. В образце 2f80f51188dc9aea697868864d88925d64c26abc сообщения записываются в файл 7B296FB0.CAB;

  • BackDoor.Logtu.1 сообщения в формате [%d-%02d-%02d %02d:%02d:%02d] <rec_id> <error_code>\n<opt_message>\n\n перед записью в файл %TEMP%\rar<rnd>.tmp шифруются операцией XOR с ключом 0x31;

  • BackDoor.Skeye.1 сообщения в формате %4d/%02d/%02d %02d:%02d:%02d\t<rec_id>\t<error_code>\n записываются в файл %TEMP%\wcrypt32.dll.

Общая логика последовательности записи сообщений в журнал также схожа у всех трех образцов:

  • начало исполнения фиксируется;

  • в Logtu и Mikroceen в журнал записывается прямое подключение к управляющему серверу;

  • в каждом случае указывается, через какой прокси выполнено подключение к серверу;

  • в случае ошибки на этапе получения прокси из того или иного источника в журнале фиксируется отдельная запись.

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

  • начало исполнения;

  • попытка подключения напрямую;

  • получение адресов прокси;

  • запись о подключении через тот или иной сервер.

Поиск прокси-сервера

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

Получение адресов прокси-серверов BackDoor.Mikroceen.11:

  • из файла %WINDIR%\debug\netlogon.cfg;

  • из собственного лог-файла;

  • путем поиска соединений с удаленными хостами через порты 80, 8080, 3128, 9080 в TCP-таблице.

Поиск прокси в своем лог-файле:

Поиск в активных соединениях:

Получение адресов прокси-серверов BackDoor.Logtu.1:

  • из реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer;

  • из раздела HKU реестра по SID активного пользователя;

  • с помощью WinHTTP API WinHttpGetProxyForUrl путем запроса к google.com.

Получение адресов прокси-серверов BackDoor.Skeye.1:

  • из раздела HKCU Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer;

  • из раздела HKU по SID активного пользователя;

  • путем поиска соединений с удаленными хостами через порты 80, 8080, 3128, 9080 в TCP-таблице.

Пересечения в сетевой инфраструктуре

Некоторые образцы совместно использовали одну и ту же сетевую инфраструктуру. Фрагмент графа наглядно показывает взаимосвязь между семействами.

масштабируйте страничку, спасибомасштабируйте страничку, спасибо

Идентификаторы

В образцах Logtu и Mikroceen присутствуют строки, которые используются в качестве идентификаторов сборок или версий. Формат некоторых из них совпадает.

BackDoor.Mikroceen.11

BackDoor.Logtu.1

SHA1

Id

SHA1

id

ce21f798119dbcb7a63f8cdf070545abb09f25ba

intl0113

029735cb604ddcb9ce85de92a6096d366bd38a24

intpz0220

0eb2136c5ff7a92706bc9207da32dd85691eeed5

hisa5.si4

7b652e352a6d2a511f226e4d0cc22f093e052ad8

retail2007

2f80f51188dc9aea697868864d88925d64c26abc

josa5w5n

1c5e5fd53fc2ee778342a5cae3ac2eb0ac345ed7

retail

2e50c075343ab20228a8c0c094722bbff71c4a2a

enc0225

00ddcc200d1031b8639026532c0087bfcc4520c9

716demo

3bd16f11b5b3965a124a6fc3286297e5cfe77715

520299

b599797746ae8ccf7907cf88de232faa30ec95e6

gas-zhi

5eecdf63e85833e712a1ff88df1341bbf32f4ab8

Strive

2d672d7818a56029b337e8792935195d53576a9d

jjlk

bd308f4d1a32096a3b90cfdae45bbc5c13e5e801

R0916

b1be4b2f874c8309f553acce90287c8c6bb2b6b1

frsl.1ply

21ffd24b8074d7cffdf4cc339d1fa8fe892eba27

Wdv

8fbec09e646311a285aee06b3dd45ccf58928703

intz726

19921cc47b3de003186e65fd12b82235030f060d

122764

0f70251abc8c64cbc7b24995c3d32927514d0a4b

V20180224

149947544ca4f7baa5bc3d00b080d0e943d8036b

SOE

e7f5a33b33e023a82ac9eee6ed40e4a38ce95277

int815

b4790eec7daa9f931bed43a53f66168b477599a7

UOE

ab660a3ac46d563c756463bd1b64cc45f347a1f7

B.Z11NOV20D

d0181759a175fbcc60975983b351f88970f484f9

299520

7a63fc9db2bc1e9b1ef793723d5877e6b4c566b8

WinVideo

13779006d0dafbe4b27bd282230df299eef2b8dc

SSLSSL

f53c77695a162c78c68f693f57f65752d17f6030

int007server

924341cab6106ef993b506193e6786e459936069

intl1211

8ebf78c84cd7f66ca8708467a28d83658bcf6710

intl821

f2856d7d138430e164f83662e251ee311950d83c

intl821

Кроме того, в значительном числе образцов данный идентификатор равен значению TEST или test.

Пример в BackDoor.Logtu.1 (9ea2488f07bf3edda23d9b7759c2d0c3c8501f92):

Пример в BackDoor.Mirkoceen.11 (81bb895a833594013bc74b429fb1f24f9ec9df26):

Таким образом, сравнительный анализ выявил у рассмотренных семейств сходства в:

  • логике ведения журнала событий и его обфускации;

  • логике подключения к управляющему серверу и алгоритмах поиска адресов прокси;

  • используемой сетевой инфраструктуре.

Заключение

В ходе расследования атак на российские НИИ наши вирусные аналитики нашли и описали несколько семейств целевых бэкдоров, включая ранее неизвестные образцы. Следует отдельно отметить длительное скрытое функционирование вредоносных программ в скомпрометированной сети пострадавшей организации несанкционированное присутствие первой APT-группы оставалось незамеченным с 2017 года.

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

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

Индикаторы компрометации

Подробнее..

Я автоматизировал тестирование Dr. Web. А сможете ли вы?

15.10.2020 14:05:55 | Автор: admin


Я никогда не пользовался Dr. Web. Я понятия не имею, как он устроен. Но это не помешало мне написать для него ряд автотестов (и лишь лень не позволила мне написать ещё сотню других):


  1. Тест на установку Dr. Web;
  2. Тест на ограничение доступа к съемным устройствам (флешкам);
  3. Тест на разграничение доступа к каталогу между программами;
  4. Тест на разграничение доступа к каталогу между пользователями системы (родительский контроль).

Такие и многие другие тесты можно клепать как горячие пирожки, и не только применительно к Dr. Web, и не только применительно к антивирусам. В этой статье я расскажу, как это сделать.


Подготовка


Для тестов нам понадобится виртуалка с Windows на борту. Я подготовил её вручную, выполнив на ней следующие манипуляции:


  1. Собственно, установил Windows 10 Pro x64;
  2. Во время установки создал основного пользователя "testo" в паролем "1111";
  3. Включил автологин для этого пользователя;

Для автоматизации тестов я буду использовать платформу Testo. Что это такое и как этим пользоваться можно почитать здесь. Нам же сейчас требуется импортировать готовую виртуалку в автотесты. Сделать это очень просто:



Здесь предполагается, что /path/to/win10.qcow2 это путь к диску той виртуалки, которую я подготовил вручную. На этом подготовка заканчивается, и начинается экшен.


Тест 1 Устанавливаем Dr. Web!


Для начала надо решить вопрос с переносом дистрибутива Dr. Web на виртуальную машину. Сделать это можно (например) с помощью флешки:



Всё, что нам надо сделать это положить установщик Dr. Web в папочку ${DR_WEB_DIR} (точное значение этого параметра мы будем задавать при запуске testo). А Testo само позаботится о том, чтобы этот инсталлятор оказался на флешке.


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



Скриншот на момент окончания сценария


Можно, конечно, запустить инсталлятор прямо отсюда, из самой флешки. Но мы лучше сделаем всё по-честному мы скопируем инсталлятор на рабочий стол и запустим инсталлятор оттуда. Как же нам скопировать файл? А как бы это сделал человек?



Скриншот, на котором ещё происходит копирование файла


Всё, копирование успешно завершено! Теперь можно закрыть окно с флешкой и вытащить её:



Скриншот после закрытия проводника


Теперь, когда инсталлятор оказался на рабочем столе, нам нужно дважды кликнуть на него чтобы запустить процесс установки. А сама установка сводится к простому прокликиванию кнопок и галочек и не представляет большого интереса:



Скриншот на момент окончания установки


Завершаем наш тест перезагрузкой. И в конце не забудем проверить, что после перезагрузки на рабочем столе появилась иконка с Dr. Web:



Скриншот после перезагрузки


Отличная работа! Мы автоматизировали установку антивируса Dr. Web! Давайте немного передохнём и посмотрим, как это выглядит в динамике:



Переходим к тестированию фич.


Тест 2 Ограничение доступа к флешкам


Первая фича по списку ограничение доступа к флешкам. Для этого спланируем довольно прямолинейный тест:


  1. Попробуем вставить флешку и создать там пустой файл должно получиться. Вытащим флешку;
  2. Включим блокировку съемных устройств в Dr. Web Security Center;
  3. Ещё раз вставим флешку и попробуем удалить созданный файл. Действие должно быть заблокировано.

Создадим себе новую флешку, вставим её в Windows и попробуем создать папку. Что может быть проще?



Скриншот на момент окончания сценария


Создаём новый текстовый файл через контекстное меню проводника:



Скриншот после переименования файла


Отключаем флешку, делаем это безопасно:



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



Скриншот с окном Security Center


Можем заметить, что для открытия любого приложения в Windows нужно выполнить фактически одинаковые действия (кликнуть на строку поиска, дождаться появления окна с популярными приложениями, вбить имя интересующего приложения, дождаться, когда оно появится в списке и, наконец, нажать Enter). Поэтому эту группу действий можно выделить в макрос open_app, в который в качестве параметра будет передаваться имя открываемого приложения:



Этот макрос нам ещё пригодится.


Первое, что мы сделаем, открыв центр безопасности Dr. Web включим возможность вносить изменения:



Теперь немного покликаем по менюшкам и зайдем в меню "Configure device access rules". В этом меню поставим галочку в пункте "Block removable media".



Скриншот с окном Devices and Personal Data


Попробуем открыть флешку теперь:



Скриншот с сообщение об ошибке


Вот так потихоньку-полегоньку мы и написали первый тест с тестированием вполне осязаемой фичи в Dr. Web. Настало время передохнуть и помедитировать, глядя на результаты наших трудов:




Тест 3 Разграничение доступа к каталогу между программами


Основная идея этого тесткейса проверить работу Dr. Web при ограничении доступа к определенной папке. Если конкретно, то необходимо защитить папку от каких-либо изменений, но добавить исключение для какой-нибудь сторонней программы. Собственно, сам тест выглядит следующим образом:


  1. Установим на ОС стороннюю программу, для которой чуть позже добавим исключение при доступе к защищаемой папке. Сегодня сторонняя программа дня файловый менеджер FreeCommander;
  2. Создаем папку с файликом, которую будем защищать всеми силами;
  3. Откроем центр безопасности Dr. Web и включим там защиту этой папки;
  4. Настроим исключение для FreeCommander;
  5. Попробуем удалить файл из защищаемой папки обычным способом (через проводник Windows). Не должно получиться;
  6. Попробуем удалить файлик через FreeCommander. Должно получиться.

Ух, много работы. Быстрее начнём быстрее закончим.


Пункт первый, установка FreeCommander не сильно отличается от установки Dr.Web. Обычная рутина: вставили флешку, запустили инсталлятор и так далее. Пропустим это и перейдём сразу к интересному.


Если всё-таки интересно, как установить FreeCommander

Начнём с простого: создадим флешку, в которую поместим дистрибутив FreeCommander, а затем в тесте вставим флешку в ОС и откроем её:



Далее несколько не кликов чтобы запустить установку:



Установка не очень интересная, просто кликаем везде "Далее", а в конце не забываем отключить галочки с просмотром ReadMe и немедленным запуском FreeCommander



Заканчиваем тест, закрывая все окна и вытаскивая флешку



Готово!


Для работы с Dr. Web создадим новый тест dr_web_restrict_program, который будет полагаться на результат работы предыдущего теста win10_install_freecommander.


Начнём тест с создания папки Protected на рабочем столе:



Скриншот после создания папки


Заходим в папку Protected и создаём там файл my_file.txt, который будет играть роль защищаемого файла:



Ох, надо было бы тоже оформить это в виде макроса, ну да ладно ...


Скриншот после создания файла


Отлично, теперь надо включить защиту папки. Идём знакомой дорожкой и открываем Dr. Web, не забываем включить режим изменений. После чего переходим в меню "Data Loss Prevention".



Скриншот с окном Data Loss Prevention


Немного поработаем мышкой и добавим нашу папку Protected в список защищаемых:



Скриншот с мастером добавления защищаемой папки


Ну а теперь надо настроить исключение по доступу к папке для FreeCommander. Ещё немного работы мышкой:



Скриншот с добавленной программой-исключением


Теперь аккуратно закрываем все окна и пробуем удалить файл "my_file.txt" стандартным способом:



Скриншот с сообщением от Dr.Web


Но ничего не получилось значит Dr. Web действительно отработал! Половина теста позади, но нам ещё надо проверить, что будет работать исключение для FreeCommander. Для этого открываем FreeCommander и переходим в папку Protected:



Скриншот с окном FreeCommander


Ну и попробуем удалить файл my_file.txt:



Скриншот после удаления файла


Исключение для FreeCommander работает!


Отличная работа! Большой и сложный тесткейс и всё автоматизировано. Немного расслабона:




Тест 4 Родительский контроль


Этот последний на сегодня тесткейс мы построим следующим образом:


  1. Создадим нового пользователя MySuperUser;
  2. Залогинимся под этим пользователем;
  3. Создадим файл my_file.txt от имени нового пользователя;
  4. Откроем центр безопасности Dr. Web и включим родительский контроль для этого файла;
  5. В родительском контроле ограничим права пользователя MySuperUser на им же созданный файл;
  6. Попробуем прочитать и удалить файл my_file.txt от имени MySuperUser и посмотрим на результат.

Я не буду приводить здесь сценарий теста. Он строится по тому же принципу, что и предыдущие тесты: активно работаем мышкой и клавиатурой. При этом нам не важно, что мы автоматизируем хоть Dr.Web, хоть создание нового пользователя в Windows. Но давайте всё же посмотрим, как будем выглядеть прогон такого теста:



Заключение


Исходники всех тестов Вы можете посмотреть здесь


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


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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru