О чем этот документ

Этот отчет — попытка еще раз поднять проблему механизмов безопасности, реализованных в прошивках широко используемых в настоящее время ноутбуков и некоторых настольных компьютеров. Мы проанализировали некоторое количество компьютеров и отдельных файлов-прошивок, в которых находится программный агент Computrace от компании Absolute Software. Так как аспекты локальной безопасности этого продукта при наличии физического доступа к компьютеру были ранее подробно описаны в исследовании CoreLabs, мы сконцентрировались на аспектах сетевой безопасности. Нашим намерением было проверить устойчивость к взлому сетевого протокола агента Computrace и возможности несанкционированного удаленного управления им.

1. Введение

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

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

Причиной нестабильного поведения системы оказались модули identprv.dll и wceprv.dll, загруженные в адресное пространство одного из системных сервисных процессов (svchost.exe). Быстро выяснилось, что эти модули созданы компанией Absolute Software и являются частью ее программного продукта Absolute Computrace. Absolute Software — легальная компания, и вся информация о ее продуктах доступна на официальном веб-сайте. Между тем, владелец ноутбука заявляет, что ранее не слышал об этой компании и никогда не устанавливал ее продукты. Это дает возможность предположить, что данное программное обеспечение могло быть установлено и активировано производителем или продавцом ноутбука. Однако, согласно техническому описанию Absolute Software, активировать программу должен сам пользователь или его IT служба. Если вы частный пользователь, не активировали Computrace и не имеете персональной IT-службы, то это значит, что кто-то иной потенциально имеет полный доступ к вашему компьютеру.

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

2. Предыдущие исследования

Главная из работ, проделанных ранее на эту тему, — исследование Alfredo Ortega и Anibal Sacco из Core Security Technologies, отраженное в их докладе «Deactivatethe Rootkit: Attackson BIOS anti-theft technologies» на конференции Blackhat в США в 2009 году. В исследовании они описали общие механизмы работы технологии Absolute Computrace для защиты от хищения устройств.

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

Мы также нашли в блоге Bradley Susser запись, датированную августом 2012, в которой упоминалась уязвимость в системе аутентификации продукта Absolute LoJack (Computrace). Однако его пост не содержит достаточно убедительных доказательств, и мы приняли решение провести собственное исследование на эту тему.

3. Агент Computrace

Агент Computrace — это приложение Windows, которое имеет две формы: сокращенную и полную. Сокращенную форму агента можно характеризовать как имеющую минимально возможный размер при максимальной гибкости и расширяемости. Этот модуль внедряется в прошивку BIOS (а точнее в PCI Option ROM или как UEFI-модуль). В патенте США за номером 20060272020A1,принадлежащем Absolute Software, этот агент описан как mini CDA (Communications Driver Agent)и предназначен для проверки наличия и работоспособности полноразмерного агента. В случае отсутствия полноценного агента, мини-агент загрузит его с сервера в глобальной сети.



Согласно описанию в патенте, постоянный модуль находится в дополнительном BIOS ROM

Дополнительный ROM имеет небольшую секцию с модулями Computrace агента, которые добавляются производителем BIOS и прошиваются на заводе производителем компьютера (а точнее, производителем материнской платы).



Computrace модули в PCI Option Rom (рисунок из патента)

В рамках нашего исследования мы скачали несколько прошивок BIOS, предлагаемых в качестве обновления официальными службами поддержки производителей ноутбуков. Современный EFI BIOS может содержать до нескольких сотен специальных EFI-драйверов, EFI-приложений и других модулей, упакованных в некого рода файловую систему. Мы обнаружили, что один из таких модулей являлся EFI-приложением или дополнительным ROM с Computrace агентом внутри. Таким образом, перепрошивка BIOS лишь обновит версию агента.



rpcnetp.exe >в autochk.exe >в EFI-приложении >в другом EFI-App>в ROM модуле >в прошивке BIOS

Мы можем отметить, что для прошивок, содержащих Computrace, соответствующие настройки в BIOS Setup могут как существовать, так и отсутствовать.



BIOS Setup Lenovo Thinkpad X1



Нет упоминаний Computrace в BIOS Setup ASUS X102BA

4. Стандартное поведение ПО Computrace

Фаза 1: модуль BIOS

В первой фазе сразу после инициализации основного BIOS выполняются модули дополнительных ROM, выполняются EFI-приложения. В этой стадии модуль Computrace просматривает FAT/FAT32/NTFS разделы жестких дисков в поисках установленной ОС Windows. Затем он создает копию системного autochk.exe и переписывает его своим кодом. Системный autochk.exe сохраняется под именем autochk.exe.bak на FAT или autochk.exe:BAK в альтернативном потоке данных NTFS.

Фаза 2: autochk.exe

Модифицированный autochk.exe, стартуя во время загрузки, имеет полный доступ как к локальным файлам, так и к реестру Windows. Благодаря этому он благополучно сохраняет в папку system32 файл агента rpcnetp.exe и регистрирует его в реестре Windows в качестве новой сервисной службы. Позже оригинальный autochk.exe восстанавливается из сохраненной копии.

Фаза 3: rpcnetp.exe

Именно этот модуль также известен как мини-агент Computrace агент или mini CDA (Communication Driver Agent). Его размер относительно невелик, всего около 17Kb.

Мини-агент стартует как сервисная служба Windows. Сразу после этого он копирует собственный исполняемый EXE-файл под именем rpcnetp.dll, устанавливая при этом соответствующий флаг в PE заголовке (чем утверждает, что это корректный DLL файл), и загружает DLL. Затем rpcnetp.exe запускает дочерний процесс svchost.exe в приостановленном состоянии и внедряет в его память созданный rpcnetp.dll. При возобновлении исполнения svchost.exe создает дочерний процесс браузера iexplore.exe с правами текущего активного пользователя. Iexplore.exe также создается в приостановленном состоянии и так же получает инъекцию rpcnetp.dll. Модифицированный таким образом браузер в автоматическом режиме соединяется с сервером управления для получения команд и загрузки дополнительных модулей. Это приводит к скачиванию и установке полноразмерного агента rpcnet.exe.



rpcnetp.exe стартовал два дочерних процесса и соединяется с сервером управления

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

Зачем для выполнения простой задачи загрузки обновления потребовалась такая сложная схема из нескольких процессов? Возможный ответ – для того, чтобы скрыть то, что происходит в программе с целью защиты модулей от анализа потенциальным атакующим. Было довольно сложно проанализировать деятельность кода, исполняющегося одновременно в трех различных процессах и имеющего два различных варианта запуска – как DLL и как EXE файл. В коде присутствуют антиотладочные приемы, а также техники, затрудняющие дизассемблирование и анализ.

После успешного старта rpcnetp.exe удаляет соответствующие своему сервису записи в реестре Windows, которые будут повторно созданы при следующем старте системы, если rpcnetp.exe не удастся соединиться с сервером управления.

Iexplore.exe, вероятно, запускается, чтобы гарантировать доступ к глобальной сети в обход локального файервола, а также для использования пользовательских настроек прокси. Запущенный с привилегиями локальной системы, svchost.exe для передачи данных на сервер управления и обратно эксплуатирует iexplore.exe, который имеет пользовательские привилегии. Это реализовано вызовом функций OS CreateRemoteThread, WriteProcessMemory, ReadProcessMemory. Модуль rpcnetp.dll порождает несколько потоков на каждый запрос к серверу. Столь частое создание и уничтожение потоков создает значительную нагрузку на центральный процессор и потенциально может замедлить систему. В нашем эксперименте во время соединения с сервером мини-агент создал 1355 новых потоков в svchost.exe и 452 в iexplore.exe — для того, чтобы скачать менее чем 150Kb данных. Сетевое взаимодействие на быстром интернет-канале заняло около 4 минут, в течение которых агент отправил 596 POST запросов.

Более детально протокол сетевого взаимодействия мы опишем ниже.

К сожалению, модуль rpcnetp.exe не имеет ни цифровой подписи, ни какой-либо иной информации, дающей возможность пользователю или системному администратору распознать в нем легитимное приложение, равно как и проверить его целостность. Мы считаем это довольно серьезным упущением в текущей реализации агента. Более того, атакующему достаточно установить атрибут «только для чтения» на модифицированном файле агента, чтобы при следующем запуске системы он не был перезаписан настоящей копией из BIOS.

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

4aa04aa0

4aa44aa4

4aa54aa5

4aa64aa6

…

4f4c4f4c

4f504f50

4f954f95

4fc64fc6

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

Фаза 4: rpcnet.exe

Аналогично мини-агенту rpcnetp.exe полноразмерный агент rpcnet.exe после старта пытается соединиться с сервером управления. Процесс соединения схож с rpcnetp — rpcnet.exe запускает svchost.exe, а тот стартует iexplore.exe с правами локального пользователя. Так же как rpcnetp, он создаёт множество потоков во время соединения с управляющим сервером. Этот агент ищет свои конфигурационные настройки в нескольких местах: в определённых ключах реестра, в заданном незанятом пространстве жесткого диска, и, наконец, внутри своего тела. В конфигурационной записи указывается адрес сервера управления, информация, идентифицирующая оборудование, и др. Удивительно, что он соединяется с тем же сервером и по тому же порту, что и rpcnetp. Мы еще не выполнили полный анализ этого агента ввиду его большого размера, но уже сейчас абсолютно ясно, что его главная задача — предоставление расширенного удаленного доступа к машине, на которой он запущен.

5. Случаи несанкционированной активации

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

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

Первой естественной реакцией владельца такого ПК будет удалить или полностью запретить запуск подобного бэкдора. Один из наших коллег даже решил отказаться от использования Windows на своем ПК из-за присутствия на нем активного Absolute Computrace агента.

Мы попытались собрать информацию о работе агента Computrace и времени его активации на нескольких системах.

Система A

Владелец этой системы заявляет, что он никогда не встречал продукты Absolute Software, не инсталлировал и не активировал их. Тем не менее, на системе присутствует активный агент Computrace.



Личный ПК, принадлежащий нашему коллеге, с активным агентом Computrace

Как утверждает пользователь, ноутбук был приобретен 27 апреля 2012. По заявлению владельца, заводская защитная наклейка на момент покупки не была повреждена. Коробка была вскрыта при нём, в магазине проверка работоспособности не производилась. В тот же день владелец включил ноутбук и загрузил систему. Время создания папки C:Users на жестком диске показывает точное время, когда произошёл первый запуск: 20:31 27 апреля 2012.

Затем владелец настроил доступ в сеть, что привело к созданию файла профиля беспроводной сети C:ProgramDataMicrosoftWlansvcProfiles, время его создания 20:52 27 апреля 2012.

Вскоре активировался модуль Computrace rpcnetp.exe и начал попытки соединения с сервером управления. Скачанный им полноразмерный агент был установлен как C:WindowsSysWOW64rpcnet.exe в 21:29 27 апреля 2012.

Всё это говорит о том, что ноутбук либо был приобретен с уже активированным агентом, либо он активировался автоматически во время первой установки системы.

Модель ноутбука: ASUS 1225B

Система B

Эта система имеет очевидные признаки активности Computrace агента, тогда как ее владелец утверждает, что никогда не устанавливал и не использовал продукты Absolute Software.



Личный ПК другого нашего коллеги

Согласно информации файловой системы, папка C:Users была создана 2012-08-11 15:23:45. Владелец узнал эту дату как дату покупки ноутбука.

Обнаружились и другие файлы:

C:WindowsSysWOW64wceprv.dll - 2012-08-11 19:39:41

C:WindowsSysWOW64rpcnet.exe - 2012-08-11 19:42:29

C:WindowsSysWOW64Upgrd.exe - 2012-08-11 19:42:44

C:WindowsSysWOW64rpcnet.dll - 2012-08-11 19:43:07

Это также подтверждает, что полноразмерный Computrace агент был активирован в день покупки ноутбука. Владелец утверждает, что он вскрыл упаковку с заводской защитной наклейкой и запустил установку ОС в магазине. Затем, вечером того же дня, подключил ноутбук к своей домашней сети Wi-Fi. Как и Система А, Система B содержит следы активации агента в момент первого запуска владельцем.

Модель ноутбука: Samsung 900X3C

Система C

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



ПК с активным агентом Computrace на прилавке

У нас не было возможности подробно проанализировать данную систему прямо в магазине, но тот факт, что rpcnet.exe исполнялся на ней, подразумевал, что rpcnetp.exe уже отработал и успешно скачал rpcnet.exe из Сети.

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

Модель ноутбука: Samsung NP670Z5E

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

Как произошла активация, и кто за этим стоит, для нас до сих пор остаётся загадкой.

Данные с онлайн-форумов

Мы обнаружили множество онлайн-сообщений с жалобами на несанкционированные активации Computrace. Например:



Пользователь утверждает, что никогда не использовал продукты Absolute Software, но видит их установленными на свой ПК



Другой пользователь заявляет о своём совершенно новом ноутбуке с пре-активированным Computrace



Жалоба еще одного пользователя

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

6. Масштабы потенциальной проблемы

Используя облачный сервис KSN, мы собрали статистику по числу компьютеров с активным Absolute Computrace агентом. Ниже вы можете видеть карту с географическим распределением этих компьютеров:



Распределение компьютеров с активным Absolute Computrace агентом

Заметим, что наша статистика ограничена лишь анонимными данными с компьютеров пользователей продуктов «Лаборатории Касперского», у которых включено использование KSN, а это лишь малая часть от всех устройств, подключенных к интернету. Наша приблизительная оценка общего числа пользователей с активным агентом Computrace превышает 2 миллиона.

У нас нет информации, сколько пользователей не подозревают об активации и работе на их системах агента Computrace.

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



Производители материнских плат компьютеров с активным Absolute Computrace агентом

Мы провели сравнение этой диаграммы и диаграммы наиболее популярных производителей персональных компьютеров по данным Gartner за 4-й квартал 2013 года.



Наиболее популярные производители персональных компьютеров по версии Gartner

По этим диаграммам видно, что производители из TOP5 основных игроков на рынке PC входят в TOP6 наиболее распространенных производителей материнских плат, на которых были обнаружены активные копии агента Computrace. В TOP 6 пять этих компаний дополняет Toshiba. Согласно Википедии, «на некоторых ноутбуках Toshiba процесс rpcnetp.exe предустановлен производителем на жесткий диск до поставки компьютера заказчику». Это может объяснить, почему так много компьютеров Toshiba содержат работающий rpcnet.exe. Однако остаётся непонятным, почему два ведущих производителя PC Lenovo и HP имеют относительно малое количество активированных агентов, в то время как Acer и ASUS, замыкающие TOP 5, имеют гораздо больше таких систем. Мы не нашли публичной информации, подтверждающей, что ASUS или Acer предустанавливают Computrace на компьютеры клиентов.

7. Сетевой протокол мини-агента

Вскоре после своего старта мини-агент rpcnetp.exe пытается установить соединение со своим сервером управления. Адрес сервера записан в теле агента, в ключе реестра Windows и в скрытой области жесткого диска. Если прямое соединение по IP-адресу не удаётся, агент определяет адрес хоста search.namequery.com и использует его IP для коммуникации.

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

Deploying the Persistence Agent successfully in BIOS, for example, makes heavy use of an extensibility designed into the communications protocol. Without this extensibility the Agent would be larger and require frequent updates to add or change functionality. Such updates are neither practical nor economical, since the BIOS is programmed into the flash EEPROM of the platform and special tools (most often requiring user interaction) must be used to update the BIOS. Also, intensive testing is performed by the OEM on the BIOS since its integrity is critical to the operation of the computer.

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

Вот как выглядит коммуникация мини-агента и сервера управления в пакетном сетевом снифере Wireshark:



Часть коммуникации между мини-агентом и сервером управления

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

Существуют два типа запросов, которые мини-агент может обработать: пакеты на чтение и запись. Ниже приведена структура таких пакетов:

Все пакеты начинаются и заканчиваются специальным символом «~» (0x7E). Этот символ определяет границу пакета (является разделителем). Следующее за ним 4-байтовое поле Address содержит адрес в памяти, с которой работает данный запрос. Если пакет предназначен для чтения, то мини-агент прочитает память, начиная с заказанного адреса. Количество прочитанных байт задано в следующем поле Size (длиной 2 байта). К каждому пакету добавляются 3 байта: 1 байт для поля Seq и еще 2 байта для поля Cksum. Seq — специальное 8-битное значение, используемое как идентификатор последовательности, который увеличивается специальным образом сервером и агентом. Cksum — это 2-байтовое поле, содержащее контрольную сумму (хэш) полей Address, Size и Seq. Если Seq или Cksum значения в пакете не совпадают с вычисленными агентом, то пакет отбрасывается, и агент повторяет свой последний ответ еще раз. Число из поля Seq подскажет серверу управления, с какого именно пакета надо повторить пересылку.

Самый первый пакет от сервера является особым и используется для своеобразного «рукопожатия». Вот так выглядит подобный пакет:

Поле Address имеет особое значение 0xFFFFFFFF, поле Size содержит 0x0004, уникальное 4-байтовое значение Session ID должно быть установлено сервером. Значение Session ID используется агентом во всех последующих пакетах, отправленных серверу.

Ответ клиента также имеет определенную структуру:

Как и в случае серверного пакета, ответ клиента должен начинаться и заканчиваться разделителем пакетов. Первые четыре байта содержат фиксированное 4-байтовое значение Session ID, которое север указал в самом первом ответе. Следующее 2-байтовое поле содержит размер поля Response Data, которое содержит данные с ответом на запрос сервера. После этого идут поля Seq и Cksum, также как и в серверных пакетах.

В случае если в пакете встречается байт-разделитель с шестнадцатеричным кодом 0x7E, то используется специальное правило, преобразующее этот байт в последовательность байт 0x7D 0x5E, что фактически увеличивает размер пакета и влияет на контрольную сумму. Тем не менее, обработка пакета и расчет контрольной суммы проходит только после обратной операции, восстанавливающей оригинальные байты до замены. Если в пакете найден байт со значением 0x7D, то он заменяется на байты 0x7D 0x5D.

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

операция чтения операция записи

В дополнение к этому во время «рукопожатия» агент предоставляет адрес специальной структуры (Session) в памяти. Этого оказывается достаточно для исполнения произвольного кода. На системах с защитами DEP и ASLR дополнительные возможности такого решения могут существенно облегчить исполнение кода, а также повысить надежность работы агента. Поэтому агент проводит дополнительную обработку состояния структуры Session. Агент проверяет значение особого поля в этой структуре. Если оно отлично от нулевого, то агент может выполнить некоторые вспомогательные операции. Мы обнаружили следующие операции в коде:

Получить хэндл на текущий модуль в памяти (вызывает GetModuleHandleA)

Получить адрес экспортированной процедуры (вызывает GetProcAddress)

Выделить память

Освободить память

Выполнить цепочку команд по указанному адресу

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

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

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

8. Выводы

Когда мы впервые увидели и проанализировали Computrace, мы по ошибке приняли его за вредоносный код, так как агент применяет множество приемов, характерных для зловредного ПО: используются антиотладочные и затрудняющие реверс-инжиниринг техники, совершаются инъекции в память других процессов, происходит установление скрытых соединений, модифицируются системные модули на диске (autochk.exe), шифруются и скрываются конфигурационные файлы, и, наконец, исполняемые файлы Windows сохраняются на диск прямо из кода прошивки (BIOS).

Столь агрессивное поведение агента Computrace явилось причиной того, что он уже детектировался в качестве зловредного ПО в прошлом. Сообщалось, что Computrace обнаруживался антивирусом Microsoft как VirTool:Win32/BeeInject. Ниже приведено описание, которое дает энциклопедия зловредного ПО Microsoft для этого семейства:

Однако детектирование модулей Computrace было убрано Microsoft, равно как и некоторыми другими антивирусными компаниями. Сейчас эти модули находятся в так называемых «белых списках» большинства антивирусов во избежание их автоматического детектирования эвристическими методами.

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

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

9. Ссылки

Приложение A: Индикаторы активности агента Computrace

Один из процессов запущен: rpcnet.exe rpcnetp.exe 32-bitsvchost.exe, работающие на 64-bitсистеме (косвенный индикатор) Один из файлов существует на диске: %WINDIR%System32rpcnet.exe %WINDIR%System32rpcnetp.exe %WINDIR%System32wceprv.dll %WINDIR%System32identprv.dll %WINDIR%System32Upgrd.exe %WINDIR%System32autochk.exe.bak (для FAT) %WINDIR%System32autochk.exe:bak (для NTFS) Система отправляет DNS-запросы для следующих доменов: search.namequery.com search.us.namequery.com search64.namequery.com bh.namequery.com namequery.nettrace.co.za search2.namequery.com m229.absolute.com или любых m*.absolute.com Система соединяется со следующим IP-адресом: 209.53.113.223 Существует один из следующих ключей в реестре: HKLMSystemCurrentControlSetServicesrpcnet HKLMSystemCurrentControlSetServicesrpcnetp

Приложение B: Хэши файлов

Ниже приведены некоторые хэши исполняемых файлов системных сервисов rpcnetp и rpcnet: