Троянец использует «режим бога» Windows, чтобы спрятаться в системе

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

1. Установите IP на сетевой карте 169.254.0.100/255.255.0.02. Подключите питание к точке через разъем питания 12в3. Воткните сеть в разъем GE

Переключение точку доступа из режима fit в режим fat1. Запустите putty (https://www.putty.org/) и введите:

download.png (36.64 КБ) 8932 просмотра

1+. Если при соединение выходит ошибка: “Signature from server’s host key is invalid”, то выполните соответствующую настройку putty:

121117iw34s00ddp3dw23y.jpg (47.63 КБ) 8931 просмотр

Код: Выделить всё

Видим, что режим Fit

Терпеливо ждем несколько минут!

Настройка режиме AP1. Заходим по адресу:

2. Меняем пароль на новый, например на

13. Выбираем вот так:

4. Вводим SSID и пароль:

5. Выключим DHCP

6. В VLAN1 поменяем IP и маску (можно не менять, по Dhcp получит сам)

7. Выставляем правильный VLAN для WiFi

Готово, не забываем жать “Save”.

HUAWEI TECHNOLOGIES CO., LTD.

  • Conference System Huawei V600R019C00 Operation Manual
  • Network Hardware Huawei iMaster NetEco V600R021C10 Device Installation And Commissioning Manual
  • Network Hardware Huawei FusionServer Pro CH121 V5 V100R005 Maintenance And Service ManualCompute node (192 pages)
  • Network Hardware Huawei eSight V200R003C00 Hardware Installation Manual
  • Network Hardware Huawei VCN520 Quick Start ManualVideo cloud node (16 pages)
  • Network Hardware Huawei VP9650 Product Description
  • Network Hardware Huawei SmartAX MA5616 Configuration ManualMulti-service access module (553 pages)
  • Network Hardware Huawei OptiX RTN 950A Quick Installation ManualRadio transmission system (49 pages)
  • Network Hardware Huawei OptiX OSN 9560 Quick Installation ManualIntelligent optical transmission system (48 pages)
  • Network Hardware Huawei OptiX PTN 3900 Quick Installation ManualPacket transport platform of ptn series (37 pages)
  • Network Hardware Huawei OptiX RTN 910A Quick Installation ManualRadio transmission system idu for outdoor cabinets (omb cabinets) (27 pages)
  • Network Hardware Huawei RRU3908 V1 Installation Manual
  • Network Hardware Huawei RTN510 Configuration ManualSafe city dcn configuration guide (13 pages)
  • Network Hardware Huawei BBU3900 DescriptionLte tdd (29 pages)

Summary of Contents for Huawei V600R019C00

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Как известно, в операционной системе Windows Vista, 7, 8 и 10 есть своеобразная пасхалка — GodMode (режим Бога). Начиная с версии Vista можно создать папку со специфическим именем, которая перенаправляет на настройки Windows или служебные папки, такие как «Панель управления», «Компьютер», «Принтеры» и проч.

Очень удобная фича для управления настройками в системе и для системного администрирования.

К сожалению, режим Бога используют не только сисадмины, но и авторы вирусов.

Специалисты из антивирусной компании McAfee Labs рассказывают о трояне Dynamer, который использует режим Бога, чтобы скрыться от обнаружения в системе.

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

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Вот содержимое папки, если открыть её в проводнике.

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Более того, авторы трояна добавили к названию папки “com4.”, так что Windows считает папку аппаратным устройством. Проводник Windows не может удалить папку с таким названием.

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Аналогично, удаление невозможно из консоли.

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

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

Троян Dynamer впервые обнаружен несколько лет назад, но Microsoft до сих пор считает его «серьёзной угрозой» для пользователей Windows.

В качестве бонуса.

Список имён папок (GUID) в режиме Бога для быстрого доступа к отдельным настройкам Windows

Полный список GUID с указанием поддерживаемых версий Windows см. в документации Microsoft.

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Привет, Хабр! Блог Huawei снова на связи!

В эфире очередной выпуск рубрики «Советы инженерам».
И сегодня у нас в гостях заслуженный коммутатор Китая, обладатель почетного звания «Достойная замена модели Cisco 2960S-24-PWR», лидер линейки Huawei по соотношению «функционал/цена» — коммутатор Huawei S5720-52X-PWR-SI V2R9SPC500.

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Краткое досье на нашего героя:

48GE PoE+, 4*10GE портов.
SI версия поддерживает L3 маршрутизацию, включая RIP и OSPF.
Версия ПО V200R009C00SPC500.
Мощность блока питания 500Вт, для PoE доступно 370.
Стекирование возможно через 1/10GE Uplinks.
Интерфейсы 10GE поддерживают практически любые трансиверы, в том числе SNR.
Поддерживается управление через web интерфейс и CLI (telnet, ssh v2), SNMP v2c/v3, централизованное через eSight.

А речь сегодня пойдет о нашем опыте использования S5720 в качестве коммутатора доступа для подключения рабочих мест и IP-телефонов.

Изначально мы заложили определённую избыточность, т.к. для этой задачи достаточно более дешевой линейки коммутаторов S5700-LI, но с прицелом на будущее применение, была взята именно эта модель, и это оправдалось — к концу тестирования неожиданно понадобился роутинг.

Но, давайте ближе к делу — что удалось выяснить о S5720 и проверить на практике?

Опыт первый. VLAN

Созданы VLAN для офисной сети и для телефонов. Настроены «транки» и пользовательские порты. Включен LLDP.

Для работы Voice VLAN порты настраиваются в режиме «hybrid». IP-телефоны Yealink имеют возможность получения настроек по LLDP, чем мы успешно и воспользовались.

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

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

Вопросов при настройке маршрутизации не возникло — всё работает. Базовые настройки маршрутизации:

router id 192.168.30.4
#
ospf 1
area 0.0.0.0
network 10.0.50.0 0.0.0.255
#
interface Vlanif50
mtu 9198
ospf timer hello 1
ospf timer dead 3

Аутентификация peer не проверялась. В целях ускорения сходимости были настроены нестандартные тайминги (так называемый «LAN-based design»). В качестве «neighbor» успешно использована ASA5512 — работает.

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Опыт второй. Безопасность

В качестве защиты от наиболее распространённых типов угроз мы настроили DHCP snooping, IP Source Guard, ARP security — все вместе это позволяет избежать некоторых типов атак, наиболее распространённых в офисной сети, в том числе и непреднамеренных.

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

На базе DHCP snooping работают функуции IP Source Guard и ARP security, защищающие от подделки IP и MAC адресов. Здесь суть в том, что работа возможна только с адресом полученным по DHCP, а связка «порт—IP—MAC» создается и проверяется автоматически.

Данная настройка убережет нас, если кто-то захочет использовать чужие IP-MAC, или организовать атаку типа MITM-атаку («Man-in-the-Middle»).

Третий тип возможных угроз — это атаки на STP. Здесь в качестве защиты на пользовательских портах включена фильтрация BPDU (то есть никакие STP-фреймы не отправляются пользователю и не принимаются от него).

Кроме того, ведёртся контроль появления посторонних BPDU stp bpdu-protection, что возможно при подключении другого коммутатора или атаки на stp root.

Активированная опция «stp edge-port enable» исключает порт из расчёта STP, уменьшая время сходимости и нагрузку на коммутатор.

Комбинация stp bpdu-protection и stp edge-port enable, аналогична Cisco spanning-tree portfast.

Собственно, примеры конфигурации:

interface GigabitEthernet0/0/1
port link-type hybrid
voice-vlan 4 enable
port hybrid pvid vlan 2
port hybrid tagged vlan 4
port hybrid untagged vlan 2
stp root-protection
stp bpdu-filter enable
stp edged-port enable
trust dscp

stp instance 0 root primary
stp bpdu-protection

Опыт третий. Администрирование

Выполнена настройка административной части, к которой относятся NTP, SNMP, AAA, Radius.

Выяснилось, что можно активировать до 16 линий VTY, тогда как по умолчанию только 5.

И, собственно, некоторые удобства администрирования.

Что важно отметить ещё?

Для доступа по SSH необходимо добавление именно пользователей SSH, кроме пользователя в разделе ААА.

Ключи RSA уже сгенерированы, но если меняли имя и домен на коммутаторе, то рекомендуем сгенерировать ключи заново.

По умолчанию версия ssh v1 отключена, но при необходимости её можно включить (хотя мы не рекомендуем делать этого).

Также нам удалось настроить аутентификацию администраторов через Radius.

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

«До кучи» мы решили заменить заводской, самовыписанный сертификат на действительный ( благо есть свой валидный сертификат для подписи).

Импорт сертификата возможен только из CLI.

Столкнулись с тем, что ключи и сертификат должны быть отдельно, несмотря на то, что формат «pfx» позволяет экспортировать закрытый ключ в составе сертификата.

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

При стандартном экспорте в pem, сначала в файле идут сертификаты CA и только в конце сертификат устройства.

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

Представляем вашему вниманию пошаговый алгоритм:

1. Сгенерировать сертификат на внешнем CA.
2. Экспортировать отдельно сертификат или цепочку и закрытый ключ.
3. Если это цепочка — открыть файл сертификата блокнотом и перенести последний блок (сертификат устройства) в начало файла, сохранить.
4. На коммутаторе создать папку mkdir flash:/security
5.Поместить в папку файл сертификата и ключ tftp 192.168.0.1 chain-servercert.pem /security/chain-servercert.pem
После этого, согласно инструкции, создать политику и выполнить импорт.

Для применения политики необходимо перезапустить https сервер, но отдельно он не перезапускается. Поэтому необходимо перезапустить весь web сервис.

http server disable
http server enable

В итоге экспорт прошёл успешно, и web-интерфейс использует достоверный сертификат.

Подводим итоги

В качестве итогов — несколько цифр и выводов:

P.S. До встречи в следующих выпусках, господа Инженеры!

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Подопытным оказался M306N5FCTFP. Это микроконтроллер группы M16C/6N5. Ядро M16C/60 разработано Mitsubishi, а т.к. преемником этой компании по части МК с 2003 года является Renesas, то сейчас эти микроконтроллеры известны именно под этим брендом.

Немного о самом микроконтроллере

Камешек представляет собой 16-разрядный микроконтроллер в 100-выводном QFP корпусе. Ядро имеет 1 МБайт адресного пространства, тактовая частота 20МГц для автомобильного  исполнения. Набор периферии так же весьма обширный: два 16-разрядных таймера и возможность генерации 3-фазного ШИМ для управления моторами, всякие UART, SPI, I2C естественно, 2 канала DMA, имеется встроенный CAN2.0B контроллер, а также PLL. На мой взгляд очень неплохо для старичка. Вот обзорная схемка из документации:

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Так как моя задача выдрать ПО, то так же весьма интересует память. Данный МК выпускался в двух вариантах: масочном и Flash. Ко мне попал, как выше уже упоминалось, M306N5FCTFP. Про него в описании сказано следующее:

  • Flash memory version
  • 128 KBytes + 4K (дополнительные 4K — так называемый блок А в подарок пользователю для хранения данных, но может хранить и программу)
  • V-ver. (автомобильное исполнение с диапазоном +125°C)

Как вытащить из устройства то, что разработчики втащили

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

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Вход в режим работы загрузчика обеспечивается определенной комбинацией на входах CNVSS, P5_0, P5_5 во время аппаратного сброса. Дальше либо написать свою утилиту для копирования содержимого памяти, либо использовать готовую. Renesas предоставляет свою утилиту, которая называется «M16C Flash Starter», но функция чтения у нее урезана. Она не сохраняет прочитанное на диск, а сравнивает его с файлом с диска. Т.е. по сути это не чтение, а верификация. Однако есть немецкая свободная утилитка с названием M16C-Flasher, которая вычитывать прошивку умеет. В общем начальный инструментарий подобрался.

О защите от считывания

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

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

Функция проверки идентификатора

Используется в последовательном и CAN режимах обмена. Идентификатор, переданный программатором, сравнивается с идентификатором, записанным во flash памяти. Если идентификаторы не совпадают, команды, отправляемые программатором, не принимаются. Однако, если 4 байта вектора сброса равны FFFFFFFFh, идентификаторы не сравниваются, позволяя всем командам выполняться. Идентификатор — это 7 байт, сохраненных последовательно, начиная с первого байта, по адресам 0FFFDFh, 0FFFE3h, 0FFFEBh, 0FFFEFh, 0FFFF3h, 0FFFF7h, и 0FFFFBh.

Таким образом, чтобы получить доступ к программе, нужно знать заветные 7 байт. Опять же, забегая вперед, я подключился к МК, используя тот же «M16C Flash Starter» и убедился, что комбинации из нулей и FF не проходят и этот вопрос придется как то решать. Здесь сразу же всплыла мысль с атакой по сторонним каналам. Уже начал прикидывать в голове платку, позволяющую измерять ток в цепи питания, но решил, что интернет большой и большинство велосипедов уже изобретено. Вбив несколько поисковых запросов, довольно быстро нашел на hackaday.io проект Serge ‘q3k’ Bazanski, с названием «Reverse engineering Toshiba R100 BIOS». И в рамках этого проекта автор решал по сути точно такую же задачу: добыча встроенного ПО из МК M306K9FCLR. Более того — на тот момент задача им была уже успешно решена. С одной стороны я немного расстроился — интересная загадка разгадана не мной. С другой — задача превратилась из поиска уязвимости, в ее эксплуатацию, что обещало гораздо более скорое решение.

В двух словах, q3k точно по такой же логике начал изучение с анализа потребляемого тока, в этом плане он был в гораздо более выгодных условиях, т.к. у него был ChipWhisperer, этой штукой я до сих пор не обзавелся. Но т.к. его первый зонд для снятия тока потребления оказался неподходящим и вычленить из шумов что-то полезное у него не получилось, он решил попробовать простенькую атаку на время отклика. Дело в том, что загрузчик во время выполнения команды дергает вывод BUSY, чтобы проинформировать хост о том, занят он, или готов выполнять следующую команду. Вот, по предположению q3k, замер времени от передачи последнего бита идентификатора до снятия флага занятости мог послужить источником информации при переборе. При проверке этого предположения перебором первого байта ключа действительно было обнаружено отклонение по времени только в одном случае — когда первый байт был равен FFh. Для удобства измерения времени автор даже замедлил МК, отключив кварцевый резонатор и подав на тактовый вход меандр 666кГц, для упрощения процедуры измерений. После чего идентификатор был успешно подобран и ПО было извлечено.

Первый блин — граблями

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Когда при старте загрузчика вход CLK1 притянут к земле, он понимает, что от него хотят асинхронного общения. Собственно потому я его и использовал — подтяжка была уже припаяна и я просто соединил проводами две платы: Discovery и макетку с целевым M306.

Заметка по согласованию уровней:

Т.к. M16 имеет TTL-уровни на выводах, а STM32 — LVTTL (упрощенно, в даташите подробнее), то необходимо согласование уровней. Т.к. это не устройство, которое, как известная батарейка, должно работать, работать и работать, а по сути подключается разок на столе, то с трансляторами уровней я не заморачивался: выходные уровни от STM32 пятивольтовый МК переварил, в смысле 3 вольта как «1» воспринимает, выходы от М16 подаем на 5V tolerant входы STM32 дабы ему не поплохело, а ногу, которая дергает RESET M16 не забываем перевести в режим выхода с открытым стоком. Я вот забыл, и это еще +2ч в копилку упущенного времени.
Этого минимума достаточно, чтобы железки друг друга поняли.

Логика атакующего ПО следующая:

  • Устанавливаем соединение с контроллером. Для этого необходимо дождаться, пока завершится сброс, затем передать 16 нулевых символов с интервалом более, чем 20 мс. Это для того, чтобы отработал алгоритм автоопределения скорости обмена, т.к. интерфейс асинхронный, а МК о своей частоте ничего не знает. Стартовая скорость передатчика должна быть 9600 бод, именно на эту скорость рассчитывает загрузчик. После этого при желании можно запросить другую скорость обмена из пяти доступных в диапазоне 9600-115200 (правда в моем случае на 115200 загрузчик работать отказался). Мне скорость менять не нужно, поэтому я для контроля синхронизации просто запрашивал версию загрузчика. Передаем FBh, загрузчик отвечает строкой вроде «VER.1.01».
  • Отправляем команду «unlock», которая содержит текущую итерацию ключа, и замеряем время до снятия флага занятости.

    Команда состоит из кода F5h, трех байт адреса, где начинается область идентификатора (в моем случае, для ядра M16C, это 0FFFDFh), длина (07h), и сам идентификатор.

  • Измеряем время между передачей последнего бита идентификатора и снятием флага занятости.
  • Увеличиваем перебираемый байт ключа (KEY1 на начальном этапе), возвращаемся к шагу 2 до тех пор, пока не переберем все 255 значений текущего байта.
  • Сбрасываем статистику на терминал (ну или выполняем анализ «на борту»).

Для общения с целевым МК я использовал USART в STM32, для измерения времени — таймер в режиме Input Capture. Единственное, для простоты я измерял время не между последним битом ключа и снятием флага, а между началом передачи и флагом. Причиной было то, что последний бит может меняться, а в асинхронном режиме прицепить вход захвата особо не к чему. В то же время UART аппаратный и время передачи в принципе идентично и ощутимых погрешностей набегать не должно.

В итоге, для всех значений результаты были идентичны. Полностью идентичны. Тактовая частота таймера у меня была 24Мгц, соответственно разрешение по времени — 41,6 нс. Ну ок, попробовал замедлить целевой МК. Ничего не поменялось. Здесь в голове родился вопрос: что я делаю не так, как это делал q3k? После сравнения разница нашлась: он использует синхронный интерфейс обмена (SPI), а я асинхронный (UART). И где-то вот здесь я обратил внимание на тот момент, который упустил вначале. Даже на схемах подключения для синхронного и асинхронного режимов загрузчика вывод готовности назван по-разному:

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

В синхронном это «BUSY», в асинхронном это «Monitor». Смотрим в таблицу «Функции выводов в режиме Standart Serial I/O»:

Упущенная вначале мелочь завела не туда. Собственно, если в синхронном режиме это именно флаг занятости загрузчика, то в асинхронном (тот, который serial I/O mode 2) — просто «мигалка» для индикации работы. Возможно вообще аппаратный сигнал готовности приемопередатчика, оттого и удивительная точность его поднятия.

Успех!

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Этого оказалось более чем достаточно для успешной идентификации. Вот так выглядит перебор одного байта:

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

Троянец использует «режим бога» Windows, чтобы спрятаться в системе

  • https://www.dataman.com/media/datasheet/Renesas/M16C6N5Group.pdf
  • https://hackaday.io/project/723-reverse-engineering-toshiba-r100-bios/log/51302-ec-firmware-dumped
  • https://q3k.org/slides-recon-2018.pdf
Оцените статью
Huawei Devices
Добавить комментарий