О чем этот документ
Этот отчет — попытка еще раз поднять проблему механизмов безопасности, реализованных в прошивках широко используемых в настоящее время ноутбуков и некоторых настольных компьютеров. Мы проанализировали некоторое количество компьютеров и отдельных файлов-прошивок, в которых находится программный агент 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 могут как существовать, так и отсутствовать.
Нет упоминаний 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. Ссылки
- http://corelabs.coresecurity.com/index.php?module=Wiki&action=view&type=publication&name=Deactivate_the_Rootkit
- http://www.absolute.com/en/partners/bios-compatibility
- http://www.absolute.com/en/resources/whitepapers/absolute-persistence-technology
- https://www.google.com/patents/US20060272020
- http://en.wikipedia.org/wiki/LoJack
Приложение 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:
0153ad739956b12bf710c7039186728d
01a19f74cfb19cc61d62009bcfa59961
076a360ee0cfc5ca2afc8468fa1ae709
130206a40741aa57f3778bb70e593e16
19a51da66e818f0e10973e1082c79a70
19e67bd685019dafadfe524517dab145
1f2d10f767c7145a8d2a3fbbf66bed7a
27d43a7f03260ebdf81dd6515646510b
3a1ed2730cee3ec7d6d5091be5071eaa
418f527e59508480cfc17644d8387736
4476ccfd883c603cebbc317c6c41c971
4a3b02ac2e1635c0a4603b32d447fbb2
4bcf98b48bee5e7094d0cf026d4edce4
5235a32d018b79f065c64b06bd4001be
5515c17117a37fc808fc7a43a37128b0
5829887d2304c08237a5f43c42931296
5a5bb037b8e256a3304f113a187b1891
5e071026cb4c890a3584e02af1e3daf8
6846e002291086843463238e525c8aaa
77f57671b08e539e3232bf95a2ac8aec
78c696e5fd0041d8a5ce5e5e15b6f2f3
7a7cd44a4113046869be5ab8341f759f
8282e68524af7a46afc1bac2105c6cda
86332af92a6a80660bb8659711378140
8f95ce32c2596771174f7054a78f4a84
925f2df6a96637d23c677b33a07b52c1
961d7bbefa57d1b260db075404454955
a9e0a97c29bd110f54beb465d8ec3e52
aaaee16f8cbd6a35c0f6b37358b3ce54
b4c3723eb687b0e63aeea2974b8d73ba
b7534d5ed3b01ff3a96b43b855b2a103
bb7ef397f31c184f4089fc9bac04566f
c1b19ad11821780b67f4c545beb270c0
c6089ec6ae62fe264896a91d951d0c79
cacebf514be693301c1498e216b12dbb
cbb0d507e47d7f0ae3e5f61ea8feff08
cde233aa0676f5307949c0a957a2f360
cf8bcf7138cc855d885271c4ee7e8a75
d2561d67e34ff53f99b9eaab94e98e2a
e2e9dcce8d87608e4ba48118b296407f
e57892858a7d3a7799eacb06783bd819
e583977f36980125c01898f9e86c6c87
ed9b58f56a13fbb44c30d18b9b5c44d0
ee08ce8247ffb26416b32d8093fe0775
eeab12e6f535ee0973b3ddb99287e06c
ef8d08b07756edc999fbc8cfac32dc23
f03f740fde80199731c507cdd02eb06e
f259382b6fa22cae7a16d2d100eb29e4
f42dbd110320b72d8ff72f191a78e5d5
fc0ba4c9a301b653ee2c437e29ed545e
Угроза из BIOS
Иван
Здравствуйте, а можно этот чудо модуль как то вырезать из прошивки а потом прошить иже изменённой, не повлияет ли это работу компьютера и запустится ли он вообще без этой дряни?
iROOT
Можно. Есть программа для работы с UEFI BIOS.
https://github.com/LongSoft/UEFITool/releases
Статьи от автора на хабре
http://habrahabr.ru/users/coderush/topics/
никита степанов
зачем скрыли ip адрес на одном из скриншотов?
Spark
Внушительная работа проделана. Моё почтение. Кто автор статьи? Здесь авторами указаны одни люди, на хабре — другие.
E.K.
Где на Хабре?
Spark
Статьи от автора на хабре
http://habrahabr.ru/users/coderush/topics/
упс, не о том авторе написано было
jburn
может кто нибудь поделиться пошаговым руководством или более подробным чем в первом посте, как сие чудо убрать
Сергей
А если уже баннер выскочил, 5 лет компом пользуюсь, и тут на тебе. IBMX60t
Игорь
Без комментариев. Просто спасибо за информацию и проделанную работу. Успеха!