25.10.2018

Автоматическое обнаружение скрытых сетей из USB устройств

image

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

Авторы: Francisco Ramírez, Pablo González, Carmen Torrano, José María Alonso

Аннотация

Атаки через USB до сих пор остаются актуальными и опасными, что подтверждает случай с вредоносом Stuxtnet. Совместное использование USB-устройств между машинами, которые изолированы физически или логически, может способствовать появлению связей между этими системами и образованию скрытых сетей. Своевременное обнаружение подобного рода связей – одна из важнейших составляющий при защите сети, компьютеров и данных. В этой статье будет рассказано о наборе инструментов, позволяющих выявить эти связи автоматически, как удаленно, так и локально. Полученная информация отображается в наглядной форме, что позволяет принять адекватные меры безопасности против возможных угроз. Более того, эти утилиты могут использоваться в различных расследованиях, к примеру, в случаях утечки информации, поскольку, помимо выявления перечня USB-девайсов, подключенных к компьютеру, видны потоки информации и пути миграции конкретного USB-устройства между системами.

I. Введение

Расследование многих инцидентов показывает, что USB-устройства часто используются во вредоносных целях, и этой теме также следует уделять внимание. Даже если сеть полностью изолирована и не соединена с внешним миром через Ethernet-кабель или Wi-Fi, то нет гарантии полной безопасности.

При анализе сети обычно основное внимание сосредоточено на уровне связей через Ethernet или Wi-Fi, а подключения USB-устройств зачастую игнорируются.

USB-соединения используются как один из векторов атак для заражения или кражи важной информации. Несколько широко известных атак были реализованы при помощи USB-устройств, и далее будет представлен краткий обзор наиболее важных инцидентов.

Первое место в нашем списке занимает упомянутый ранее Stuxnet [1]. Этот вредонос нацелен на системы SCADA, которые осуществляют мониторинг и управление индустриальными процессами. В 2010 году при помощи этого червя удалось инфицировать ядерную энергетическую установку в Иране. Вначале были взяты под контроль тысячи машин, используемых в производстве ядерных материалов, а затем выданы инструкции об отключении этих систем. Изначально Stuxnet проник в систему через инфицированное USB-устройство, а затем просканировал сеть и заразил другие машины. Далее было модифицировано программное обеспечение, которое управляло системами, участвующими в ядерных процессах. Как итог, тысячи машин были выведены из строя.

Еще один популярный вредонос - Brutal Kangaroo, который разработан ЦРУ и упоминается в документах серии «Vault 7». Этот вредонос специально разработан для заражения изолированных сетей и компьютеров, которые не подключены к интернету. Вначале происходит инфицирование компьютера внутри целевой сети, доступной из интернета, а затем через USB-устройства заражаются изолированные компьютеры с использованием другого вредоноса.

Существуют и другие угрозы, связанные с USB, как, например, девайс «USB killer» [2], который выводит из строя подключенный компьютер посредством накопления и последующего жесткого выброса электрической энергии.

Еще одно специфическое устройство – Rubber Ducky, клавиатура, замаскированная под USB-девайс, который может передавать вредоносный код посредством эмуляции нажатия клавиш или запускать программы, находящейся в целевой системе или на самой флешке.

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

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

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

В Разделе II рассматриваются скрытые сети в целом, примеры и потенциальные риски.

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

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

В Разделе V описываются детали реализация нашего решения, направленного на обнаружение скрытых сетей, а конкретно – авторского инструмента и набора Powershell-скриптов.

В Разделе VI рассматриваются детали реализации графического отображения обнаруженной сети.

В Разделе VII рассказывается о тестах в различных средах.

В Разделе VIII рассматриваются возможные ограничения нашего инструмента,

В Разделе IX описываются меры защиты от скрытых сетей.

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

II. Изоляция сети и подключение USB-устройств

Чтобы внести ясность и понять риски скрытых сетей, создаваемых USB-устройствами, рассмотрим пример. Предполагается, что в организации используется три VLAN’а. В первом VLAN’е находится компьютер A и B, во втором – компьютеры C, D и E, в третьем – компьютер F. Каждый компьютер соединен с другими компьютерами того же VLAN’а. Компьютеры в разных VLAN’ах не могут взаимодействовать друг с другом. Архитектура сети показана на рисунке ниже, где видно, что компьютеры в разных VLAN’ах изолированы.

Рисунок 1: Топология тестовой сети

Предполагая, что сотрудники этой организации обмениваются информацией при помощи USB-устройств, высока вероятность, что данные из одного VLAN’а будут перенесены в другой VLAN. На рисунке ниже показан сценарий, когда пользователи компьютеров F и Eобмениваются информацией через USB-устройство. В итоге у нас образуется скрытая сеть между двумя компьютерами. Эти сведения отображаются в виде двух узлов E и F. Кроме того, появляется связь между компьютером, где USB-девайс был подключен впервые, и вторых компьютером.

Рисунок 2: В результате информационного взаимообмена между двумя компьютерами образовалась скрытая сеть

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

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

III. Ветви реестра, связанные с подключением USB-устройств

Когда пользователь подключает USB-устройство в систему с ОС Windows, в реестре создается набор записей.

Согласно словарю Microsoft Computer Dictionary [3], реестр представляет собой иерархическую базу, где операционная система Windows хранит информацию о пользователях, приложениях и аппаратной части. Например, в реестре хранится список установленных приложений, используемые порты или устройства, используемые системой.

Поскольку через реестр происходит управление периферией, в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR USBStor [4] для каждого подключаемого устройства заводится отдельный раздел со следующими данными:

  • Имя устройства.

  • Класс.

  • ClassGUID.

  • HardwareID.

  • Тип/предназначение устройства (например, жесткий диск).

  • Драйвер.

Пример информации для одного из USB-устройств, хранимых в ветке USBStor, показан на рисунке ниже:

Рисунок 3: Содержимое одного из разделов, связанного с подключаемым USB-устройством

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

IV. Архитектура автоматизированного решения по выявлению скрытых сетей

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

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

· Локальный. В этом режиме приложение собирает информацию из реестра на локальном компьютере (там, где запущено).

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

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

· Протокол WS-Management [5] и технология WMI [6], используемые службой Windows Remote Management (Win RM) [7].

· Связка SMB-PSExec [8-9].

WS-Management Protocol и WMI

WS-Management является открытым стандартом организации DMTF (Distributed Management Task Force; Рабочая группа распределенного управления) и используется для доступа и обмена управленческой информацией с компьютерами. WS-Management основан на базе протокола SOAP (Simple Object Access Protocol; Простой протокол доступа к объектам) [10]. Служба Windows Remote Management (Win RM) является реализацией этого протокола в ОС Windows и позволяет удаленно запускать скрипты для управления. Одно из преимуществ этого протокола заключается в том, что аппаратная часть и операционные системы от различных производителей могут взаимодействовать друг с другом.

В ОС Windows также реализована инфраструктура для управления данными и операциями на базе технологии WMI (Windows Management Instrumentation; Инструментарий управления Windows), которая позволяет взаимодействовать с компьютерами как локально, так и удаленно при помощи скриптов. Кроме того, эта технология позволяет передавать управленческую информацию другим компонентам, как, например, службе Win RM.

Связка SMB-PSExec

SMB расшифровывается как Server Message Block (Блок сообщений сервера), является протоколом уровня приложения, работает по схеме запрос-ответ и предназначен для совместного использования файлов, принтеров, последовательных портов и коммуникационных абстракций (или именованных каналов) между узлами, находящимися в одной сети.

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

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

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

Если говорить конкретно, одна из утилит, запрограммированная на Python, позволяет локально собирать информацию и умеет работать с WMI. Кроме того, есть несколько скриптов, написанных на Powershell, для работы с SMB-PsExec и Win RM.

Когда есть необходимость в удаленном подключении, все наши утилиты заносят собранную информацию о подключаемых USB-устройствах, имеющих отношение к выбранным компьютерам, в CSV-файл. Также доступен формат JSON. Более того, приложение позволяет отобразить данные в графическом виде. Компьютеры отображаются в виде узлов, между которыми отрисовываются ребра или скрытые связи. В итоге получается наглядная схема всех соединений, что очень полезно при разработке мер безопасности в организации.

В следующей разделе мы рассмотрим более подробно реализацию наших инструментов.

V. Детали реализация набора инструментов

Поскольку режим подключения и протоколы в разных сетях могут отличаться, мы предусмотрели различные случаи. Далее будет рассказано о деталях реализации набора инструментов. С одной стороны, WMI и локальный сбор информации реализован в утилите, написанной на Python. С другой стороны, также будут рассмотрены Powershell-скрипты, предусмотренные для случаев, связанных со службой Win RM и связкой SMB-PsExec. Powershell представляет собой средство, состоящее из интерфейса командной строки и объектно-ориентированного языка для написания сценариев. Powershell позволяет легко и непринужденно работать с любой структурой в операционной системе от Microsoft.

WMI и локальный сбор информации

Под эти два случая мы разработали утилиту на Python, архитектура которой показана на рисунке ниже.

Рисунок 4: Диаграмма, отображающая логику работы приложения в случае с WMI и локальным сбором данных

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

Рисунок 5: Пользовательский интерфейс приложения

Пример CSV-файла выглядит следующим образом:

computer_name,computer_ip,usbdevice_name,usbdevice_id

PC001,10.1.1.16,USB DISK 2.0 USB Device,{8bbfc3d9-29d6-58c5-be2f-dc9da53a401c}

PC001,10.1.1.16,Kingston DataTraveler G3 USB Device,{2057d6e6-7725-52d5-8d5e-3fdab3357470}

PC001,10.1.1.16,SanDisk Cruzer Blade USB Device,{1df90487-d45c-5a58-8509-dff4fae7bca6}

SRV0001,192.168.1.14,Kingston DataTraveler G3 USB Device,{2057d6e6-7725-52d5-8d5e-3fdab3357470}

SRV0001,192.168.1.14,SanDisk Cruzer Blade USB Device,{1df90487-d45c-5a58-8509-dff4fae7bca6}

SRV0001,192.168.1.14,TOSHIBA TransMemory USB Device,{53bcd3ca-866c-562f-b50b-c4f9081fa2e9}

PC002,10.1.1.15,USB DISK 2.0 USB Device,{8bbfc3d9-29d6-58c5-be2f-dc9da53a401c}

PC002,10.1.1.15,Kingston DataTraveler G3 USB Device,{2057d6e6-7725-52d5-8d5e-3fdab3357470}

PC002,10.1.1.15,SanDisk Cruzer Blade USB Device,{1df90487-d45c-5a58-8509-dff4fae7bca6}

PC002,10.1.1.15,TOSHIBA TransMemory USB Device,{53bcd3ca-866c-562f-b50b-c4f9081fa2e9}

PC005,192.168.1.30,TOSHIBA TransMemory USB Device,{53bcd3ca-866c-562f-b50b-c4f9081fa2e9}

Информация по колонкам «usbdevice_name» и «usbdevice_id» берется из реестра (см. Раздел III). В колонках «computer_name» и «computer_ip» хранятся имя компьютера и IP-адрес соответственно, которые извлекаются при помощи библиотеки «socket» в Python. При открытии CSV-файла утилита автоматически конвертирует данные в формат JSON.

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

Ниже показан пример файла, где перечислены IP-адреса или FQDN (Fully Qualified Domain Name; Полностью определенное имя домена) выбранных систем.

192.168.1.14

192.168.1.29

PC004

PC005.testdomain.com

SRV001

SRV002.testdomain.com

192.168.23.12

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

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

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

На графике скрытой сети каждый узел соответствует USB-устройству. Пользователь может посмотреть все узлы или отдельные элементы.

Более того, утилита может рисовать направленные графы, где отображается порядок, начиная от ранней даты и заканчивая более поздней, подключения USB-устройств. Дата подключения USB-девайса находится в файле C:\Windows\inf\setupapi.dev.log [4]. Пример направленного графа показан на рисунке ниже, где более толстый участок связи символизирует стрелку.

Рисунок 6: Пример направленного графа

С точки зрения безопасности важно упомянуть, что наша утилита работает только с указанной веткой реестра и не затрагивает остальные файлы и данные, хранимые на компьютере. Приложение можно скачать по следующей ссылке: https://github.com/ElevenPaths/HiddenNetworks-Python

Протокол WS-Management

Этот сценарий, включая использование связки SMB-PSExec, базируется на следующей логике:

· Подключение к компьютерам. Отсылается скрипт, собирающий информацию из реестра, которая имеет отношение к подключениям через USB выбранных компьютеров.

· Получение и хранение информации от узлов.

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

Рисунок 7: Диаграмма, отображающая логику работы утилиты в случаях с протоколом WS-Management и связкой SMB-PsExec на базе Powershell-скриптов

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

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

Скрипт состоит из двух частей:

· Модуль Launch предназначен для подключения к удаленным компьютерам.

· Модуль Recollect предназначен для сбора информации об USB-устройствах. Этот скрипт передается как параметр в предыдущем модуле, который запускается на каждом выбранном компьютере.

В модуле Launch используется команда «Invoke-Command». Этот модуль, помимо запуска Powershell-скрипта, позволяет подключаться к компьютеру по имени, IP-адресу или FQDN, которые передаются в качестве параметров.

На выходе получаем CSV-файл с именем USBDATA.csv, в котором содержатся следующие поля: имя компьютера, IP-адрес (в формате IPv4), имя USB-устройства и ID (уникальный идентификатор). Пример файла показан ниже:

PC001,192.168.1.16,Kingston DataTraveler G3 USB Device,{2057d6e6-7725-52d5-8d5e-3fdab3357470}

PC001,192.168.1.16,SanDisk Cruzer Blade USB Device,{1df90487-d45c-5a58-8509-dff4fae7bca6}

PC002,192.168.1.15,Kingston DataTraveler G3 USB Device,{2057d6e6-7725-52d5-8d5e-3fdab3357470}

PC002,192.168.1.15,SanDisk Cruzer Blade USB Device,{1df90487-d45c-5a58-8509-dff4fae7bca6}

Скрипт Recollect собирает информацию, касающуюся USB-устройств, подключаемых к выбранному компьютеру, и запускается локально на каждом выбранном компьютере.

SMB-PsExec

Чтобы запустить скрипт через SMB, вначале нужно установить PSTools для запуска команд на проверяемых компьютерах.

Логика работы схожа с той, которая используется в случае со службой Win RM. Вначале происходит подключение с сервера к удаленному компьютеру. Для корректной работы скрипта также потребуется учетная запись администратора домена. Затем запускается сбор информации, касающейся подключаемых USB-устройств. Компьютеры для анализа указываются в файле servers.txt в виде FQDN или IP-адреса.

Поскольку протокол соединения отличается, в скрипте «Launch» будут некоторые изменения для корректной работы с новым типом подключения. Вместо команды «Invoke-Command» через PowerShell открывается шелл, а затем запускается скрипт, который загружается с сетевого ресурсы, предпочтительно с веб-сервера через протокол HTTP. В этом случае проблемы, связанные с политикой выполнения и правами, которые могут возникнуть в случае с доступом к локальному ресурсу, не возникают.

Как и в случае со службой WinRM полученные результаты хранятся в файле CSV. Чтобы избежать проблем с синхронизацией и выделить время, достаточное для запуска программы на удаленном компьютере, в коде добавлены задержки. Длительность задержек может варьировать в зависимости от среды, где выполняется скрипт.

Перед запуском важно правильно сконфигурировать пути для каждого из файлов, особенно для скрипта Recollect, файла servers.txt и CSV-файла, в котором будет храниться собранная информация.

Скрипт Recollect выглядит практически так же, как и в предыдущем случае. Формат результирующего файла USBData.CSV в точности такой же.

До текущего момента мы рассматривали исключительно системы на базе ОС Windows, однако в других системах сбор информации касательно USB-подключений также возможен. Например, в Mac OS X или macOS есть файл com.apple.finder.plist, где хранятся данные об USB-устройствах, подключаемых к компьютеру.

VI. Визуализация полученной информации

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

На Рисунке 8 показан пример графа, связанного с USB-устройством «Kingston Data Traveler G3». Компьютеры показаны в виде узлов, а ребра символизируют скрытые связи между компьютерами в случае подключения одного и того же USB-девайса. По рисунку видно, что USB-устройство подключалось к четырем разным компьютерам с IP-адресами IP: 192.168.1.14, 192.168.1.16, 192.168.1.28, 192.168.1.29, которые находятся в одной сети.

Рисунок 8: Пример визуализации собранной информации для устройства Kingston Data Traveler G3

Граф, показанный выше, нарисован при помощи библиотеки NetworkX [11] в Python.

VII. Эксперименты

Утилита была протестирована в различных средах.

В первом случае проводился аудит в однодоменной сети с Active Directory (AD) с целью автоматизации сбора как можно большего объема информации. Сеть состояла из шести виртуальных машин (5 обычных компьютеров и 1 сервер). На компьютерах использовалась система Windows 7, на сервере - Windows 2008 Server. В этом сценарии запускались Powershell-скрипты. Сервер смог подключиться к выбранным компьютерам и собрать нужную информацию из реестра. Полученные результаты показаны на рисунке ниже.

Рисунок 9: USB-устройства, подключаемые к компьютерам в сети

На Рисунке 10 показана визуализация собранной информации для двух USB-устройств. Компьютер PC003 не отображен, поскольку там не было обнаружено подключенных USB-девайсов.

Рисунок 10: Скрытые сети, обнаруженные при помощи Powershell-скриптов

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

Мы также проводили эксперименты с протоколом WMI. В первом сценарии было задействовано четыре машины: три компьютера с ОС Windows 7 и сервер с ОС Windows 2008 Server. Результат показан на Рисунке 11.

Рисунок 11: Скрытая сеть между компьютерами из одной подсети. Граф отображен для USB-устройства Toshiba TransMemory

В еще одном эксперименте было задействовано четыре машины: две с ОС Windows 7, одна с ОС Windows 10 и сервер с ОС Windows 2008 Server. Отличие от предыдущего эксперимента заключается в том, что компьютеры были в разных подсетях, а приложение запускалось на машине, которая была видна из обеих подсетей. Результат для различных USB-девайсов отображен на Рисунке 12.

Рисунок 12: Скрытые сети на базе USB-устройств «Toshiba TransMemory» и «SanDisk Cruzer Blade»

Как видно на рисунке выше компьютеры PC001 и PC002 находятся в одной подсети, а SRV001 и PC005 – в другой. Собственно, мы убедились в том, что через USB возможна коммуникация между компьютерами в различных подсетях. Без нашего инструмента эти связи остались бы незамеченными, поскольку, очевидно, эти компьютера изолированы.

VIII. Ограничения инструмента

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

IX. Способы защиты

Один из способов предотвратить образование скрытых сетей – более жесткий контроль за использованием USB-устройств. Защита может быть осуществлена через политики в Active Directory, которые допускают подключение к компьютеру только тех устройств, которые разрешены пользователем. Реализация политики безопасности в связке с белым списком разрешенных устройств для каждого пользователя позволяет избежать появления скрытых связей. С другой стороны, эти меры достаточно сложны и дороги для внедрения и поддержки.

X. Заключение и дальнейшие планы

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

В этой статье мы представили набор инструментов, позволяющих обнаружить скрытые сети в автоматическом режиме и представить полученную информацию в наглядной форме. Доступен аудит как локальной машины, так и списка удаленных систем. Более того, мы внедрили несколько механизмов подключения к узлам и извлечения информации о подключенных USB-устройствах. С одной стороны, мы реализовали серию Powershell-скриптов, которые подключаются через WinRM и SMB-PsExec. С другой стороны, был реализован инструмент на Python, который подключается через протокол WMI, а также умеет собирать информацию в локальной системе.

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

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

Хотим также упомянуть о том, что использование рассмотренных инструментов не ограничивается только USB-флешками, а пригодно для других типов устройств, подключаемых через USB, как, например, внешних жестких дисков, Wi-Fi или Bluetooth-ключей и т. д. Наши утилиты предназначены для усиления сетевой безопасности, предотвращения инцидентов, выполнения аудитов и криминалистического анализа.

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

Благодарности

Эта работа была проделана подразделением CDO (Chief Data Office) компании Telefonica.

Ссылки

[1] S. Karnouskos, "Stuxnet worm impact on industrial cyber-physical system security," in IECON 2011 - 37th Annual Conference of the IEEE Industrial Electronics Society, Melbourne, VIC, pp. 4490-4494, 2011.

[2] Microsoft Computer Dictionary. Windows Registry. https://support.microsoft.com/en-us/help/256986/windows-registryinformation-for-advanced-users. Last Updated: Jan 7, 2017.

[3] Nir Nissim, Ran Yahalom, Yuval Elovici, “USB-based attacks”, in Computers & Security, vol. 70, pp. 675-688, 2017.

[4] Abhijeet Ramani, Somesh Kumar Dewangan: “Auditing Windows 7 Registry Keys to track the traces left out in copying files from system to external USB Device” in International Journal of Computer Science and Information Technologies, vol. 5 ,2, pp.1045-1052, 2014.

[5] Microsoft, “WS Management Protocol”, 2018. https://msdn.microsoft.com/en-us/library/aa384470(v=vs.85).aspx

[6] Microsoft, “Windows Management Instrumentation”, 2018. https://msdn.microsoft.com/en-us/library/aa394582(v=vs.85).aspx

[7] Microsoft, “Windows Remote Management”, 2018. https://msdn.microsoft.com/en-us/library/aa384426(v=vs.85).aspx

[8] Microsoft, “PsExec v2.2”, 2016. https://docs.microsoft.com/enus/sysinternals/downloads/psexec

[9] Richard Sharpe, “Just What is SMB?”, 2002. https://docentes.uaa.mx/guido/wpontent/uploads/sites/2/2015/04/What-is-SMB_.pdf

[10] Don Box, David Ehnebuske, Gopal Kakivaya, Andrew Layman, Noah Mendelsohn, Henrik Frystyk Nielsen, Satish Thatte, Dave Winer, “Simple Object Access Protocol (SOAP) 1.1”, 2000.

https://www.researchgate.net/profile/Satish_Thatte/publication/239553871_Simple_object_access_protoc...

[11] A Hagberg, P Swart, DS Chult, “Exploring network structure, dynamics, and function using NetworkX”, in SCIPY, 2008.

http://permalink.lanl.gov/object/tr?what=info:lanl-repo/lareport/LAUR-08-05495