Теперь у нас есть те же самые возможности, как и у разработчика устройства, который хочет выполнить отладку, управлять системой и так далее.
Автор: Juan Carlos Jiménez
В первой части мы нашли UART-порт, позволяющий получить доступ к шеллу в ОС Linux. Теперь у нас есть те же самые возможности, как и у разработчика устройства, который хочет выполнить отладку, управлять системой и так далее.
Метод, которым мы воспользовались для доступа к системе, – довольно прост, не требует дорогостоящих инструментов и зачастую дает хорошие результаты. Если вы хотите выполнить какие-то трюки с аппаратной частью, но у вас нет времени на глубокий анализ, на этом этапе можно закончить низкоуровневые исследования и приступить к работе с высокоуровневыми интерфейсами: сетевыми уязвимостями, протоколами настроек ISP и так далее.
Данный цикл статей более ориентирован на исследование аппаратной части, и мы воспользуемся полученным доступом для сбора информации, которая поможет нам лучше понять логику работы системы и окажется полезной в дальнейшем.
Однако вначале ознакомьтесь с заявлением об отказе от ответственности на случай, если я обнаружу нечто конфиденциальное.
Примечание: я нахожусь в постоянном контакте со специалистами по безопасности компанииHuawei, и у разработчиков было время ознакомиться с теми данными, которые я собираюсь опубликовать в данной статье. Сотрудники подтвердили, что в опубликованных сведениях нет ничего конфиденциального. Кроме того, я попытался договориться с TalkTalk, но не смог найти специалистов по безопасности этой компании.
Краткое содержание предыдущей статьи
Рисунок 1: Плата роутера Huawei HG533
Мы запустили последовательный терминал и включили роутер.
Рисунок 2: Процедура загрузки роутера
Нажимаем enter и получаем приветственное сообщение от командной оболочки ATP CLI с предложением ввести логин и пароль. Вводим admin:admin и оказываемся в командной строке. Выполняем команду shell и попадаем в оболочку BusyBox CLI (подробнее о BusyBox будет рассказано далее).
——————————-
—–Welcome to ATP Cli——
——————————-
Login: admin
Password: #Password is ‘admin’
ATP>shell
BusyBox vv1.9.1 (2013-08-29 11:15:00 CST) built-in shell (ash)
Enter ‘help’ for a list of built-in commands.
# ls
var usr tmp sbin proc mnt lib init etc dev bin
На данный момент мы обнаружили три основных слоя прошивки, используемой на чипсете Ralink IC:
Низкоуровневые интерфейсы менее понятны и могут не иметь доступа ко всем нужным данным и могут привести устройство к выводу из строя. То есть всегда лучше начинать исследования с BusyBox.
Вначале рассмотрим повнимательнее процесс загрузки на предмет присутствия полезной информации.
Отладочные сообщения при загрузке
Анализируя процесс загрузки, можно найти много полезной информации, например, тип компрессионного алгоритма, используемого для сжатия некоторых сегментов флеш-памяти.
Рисунок 3: Компрессионный алгоритм, используемый для сжатия ядра
Перед извлечением информации будет полезным предварительно ознакомление со структурой памяти.
Рисунок 4: Полная карта флеш-памяти
Далее выявляем использование других компрессионных алгоритмов:
Рисунок 5: Компрессионный алгоритм, используемый для сжатия файловой системы
Мы будем иметь дело с компрессионными алгоритмами во время работы с «сырой» информацией во внешней флеш-памяти, и будет нелишним получить базовое представление об этих алгоритмах.
Что такое ATP CLI и BusyBox? (теория)
В роутере на базе чипсета Ralink IC используется Linux-ядро в целях управления памятью и параллельными процессами и осуществления общего контроля над системой. Согласно документации , используется Linux 2.6.21 SDK. ATP CLI используется в качестве интерфейса командной строки и одновременно является частью ядра. Кроме того, ATP CLI представляет собой первый уровень аутентификации, но по возможностям является очень ограниченным:
ATP>help
Welcome to ATP command line tool.
If any question, please input “?” at the end of command.
ATP>?
cls
debug
help
save
?
exit
ATP>
В перечне выше не указана команда для запуска шелла (обычно shell или sh). ATP CLI включает в себя менее 10 команд и не поддерживает сложное управление процессами и навигацию по файловой системе. И здесь нам на помощь приходит BusyBox.
BusyBox представляет собой одиночный бинарный файл, содержащий урезанные версии самых распространенных unix-команд, полезных и для разработчиков и, что более важно, для извлечения/сохранения памяти (начиная от ls/cd и заканчивая top). Во время загрузки System V инициирует скрипты и каналы (pipe), что позволяет использовать Ralink IC как полноценную систему на базе ОС Linux.
Внутри бинарного файла BusyBox включен шелл, что дает доступ к остальным командам:
ATP>shell
BusyBox vv1.9.1 (2013-08-29 11:15:00 CST) built-in shell (ash)
Enter ‘help’ for a list of built-in commands.
# ls
var usr tmp sbin proc mnt lib init etc dev bin
#
# ls /bin
zebra swapdev printserver ln ebtables cat
wpsd startbsp pppc klog dns busybox
wlancmd sntp ping kill dms brctl
web smbpasswd ntfs-3g iwpriv dhcps atserver
usbserver smbd nmbd iwconfig dhcpc atmcmd
usbmount sleep netstat iptables ddnsc atcmd
upnp siproxd mount ipp date at
upg sh mldproxy ipcheck cwmp ash
umount scanner mknod ip cp adslcmd
tr111 rm mkdir igmpproxy console acl
tr064 ripd mii_mgr hw_nat cms ac
telnetd reg mic ethcmd cli
tc radvdump ls equipcmd chown
switch ps log echo chmod
#
Во время исследования файловой системы вы заметите некоторые особенности BusyBox, например, символические ссылки на файл busybox внутри папки /bin/ . Данная особенность важна, поскольку любые команды, который могут содержать конфиденциальную информацию, не будут частью бинарного файла BusyBox.
Исследование файловой системы
Теперь, когда мы оказались внутри системы и имеем в распоряжении несколько команд, настало время поискать что-нибудь полезное. Вначале нужно получить базовое представление о системе, и я не буду утомлять вас деталями.
Команда top позволяет выяснить, какой процесс отнимает наибольшее количество ресурсов. Это хороший индикатор того, какие процессы важны, а какие нет.
Рисунок 6: Результат работы команды top
Полученная информация не представляет особого интереса, поскольку роутер не выполняет каких-либо задач.
На рисунке выше видно, что запущен процесс usbmount, и, следовательно, роутер должен поддерживать нечто, что можно воткнуть в USB-порт. Попробуем, подключить флешку…
usb 1-1: new high speed USB device using rt3xxx-ehci and address 2
[…]
++++++sambacms.c 2374 renice=renice -n +10 -p 1423
USB-устройство опознано, смонтировано в папку /mnt/usb1_1/, а также запущен сервер Samba. Содержимое папки /etc/samba/:
# ls -l /etc/samba/
-rw-r–r– 1 0 0 103 smbpasswd
-rw-r–r– 1 0 0 0 smbusers
-rw-r–r– 1 0 0 480 smb.conf
-rw——- 1 0 0 8192 secrets.tdb
# cat /etc/samba/smbpasswd
nobody:0:XXXXXXXXXXXXXXXXXXX:564E923F5AF30J373F7C8_______4D2A:[U ]:LCT-1ED36884:
Другая информация, которая может оказаться полезной:
Директории /var/ и /etc/ всегда содержат массу полезной информации. Смысл некоторых файлов понятен почти сразу. Например, говорит ли вам о чем-то название /etc/serverkey.pem?
Рисунок 7: Содержимое файла serverkey.pem
Присутствие секретных ключей для TLS-сертификатов во встроенных системах не является распространенным явлением. Если вы получите ключи через аппаратную часть, то в будущем сможете атаковать все остальные устройство схожей модели.
Данный ключ также можно использовать для коммуникации с сервером, принадлежащим компании Huawei или ISP, хотя подобная практика не особо распространена. С другой стороны, достаточно часто можно найти публичные сертификаты, используемые для коммуникации с удаленными серверами.
В нашем случае мы нашли два сертификата рядом с секретным ключом; оба сертификата являются самоподписанными одной и той же «личностью».
Больше информации содержится в файлах /etc/ppp256/config и /etc/ppp258/config:
Рисунок 8: Содержимое файла etc/ppp256/config
Данная учетная запись доступна через HTTP-интерфейс, поэтому я опубликовал эту информацию. Однако в других роутерах этих учетных данных может не быть (подробности далее).
Когда в системе находится столь много файлов, быстро провести исследование без специальных утилит затруднительно. Поэтому мы скопируем данные на USB-устройство и продолжим анализ на нашем компьютере.
Поиск паролей
После того как мы скопировали множество файлов на наш компьютер, то можем значительно ускорить анализ. Результат работы команды find . -name *.pem говорит о том, что среди файлов отсутствуют TLS-сертификаты.
Попробуем поискать слово password во всех файлах. Команда: grep -i -r password.
Рисунок 9: Перечень файлов с содержимым password
На рисунке выше видно множество учетных записей, большинство из которых используются для протоколов STUN, TR-069 и локальных служб. Я опубликовал данные записи здесь, поскольку их можно также найти через HTTP-интерфейс (но эта информация обычно скрыта).
Если хотите узнать, что произойдет, если кто-то украдет эти учетные записи, можете ознакомиться с докладом Александра Графа (Alexander Graf) “BeyondYourCableModem” с конференции CCC 2015. Существуют и другие доклады, где описываются атаки на протокол TR-069, с конференций DefCon, BlackHat и т. д.
Учетные записи идут либо в чистом тексте, либо закодированы в base64. Естественно, раскодировка не представляет особого труда:
$ echo “QUJCNFVCTU4=” | base64 -D
ABB4UBMN
Рисунок 10: Учетные записи в кодировке base64
Выделенная последовательность символов – текущий WiFi-пароль установленный на роутере. Используя данный пароль, находим два очень интересных файла. Не потому, что там интересное содержимое, а потому, что данные файлы являются важной частью функционирования роутера:
Исследование ATP CLI
В ATP CLI предусмотрено очень мало команд. Наиболее интересная (помимо shell) – debug . Данная команда не используется в качестве отладчика. debug display выводит информацию относительно команд igmpproxy, cwmp, sysuptime и atpversion, большинство из которых не представляет для нас особого интереса. Однако команда cwmp, кажется, имеет отношение к удаленной настройке роутеров.
Рисунок 11: Информация о команде cwmp
На рисунке выше показана учетная запись протокола CWMP (TR-069), используемая для удаленной настройки роутера. В этот раз отсутствует даже кодировка.
Остальные команды не представляют особого интереса (такие как: очистить экран, раздел справки, сохранить на флешку и выйти).
Исследование CLI в Uboot
Интерфейс командной строки в загрузчике предоставляет доступ к некоторым областям памяти. К сожалению, CLI не дает прямого доступа к флеш-памяти, но в любом случае заслуживает внимания:
Please choose operation:
3: Boot system code via Flash (default).
4: Entr boot command line interface.
You choosed 4
Stopped Uboot WatchDog Timer.
4: System Enter Boot Command Line Interface.
U-Boot 1.1.3 (Aug 29 2013 – 11:16:19)
RT3352 # help
? – alias for ‘help’
bootm – boot application image from memory
cp – memory copy
erase – erase SPI FLASH memory
go – start application at address ‘addr’
help – print online help
md – memory display
mdio – Ralink PHY register R/W command !!
mm – memory modify (auto-incrementing)
mw – memory write (fill)
nm – memory modify (constant address)
printenv- print environment variables
reset – Perform RESET of the CPU
rf – read/write rf register
saveenv – save environment variables to persistent storage
setenv – set environment variables
uip – uip command
version – print monitor version
RT3352 #
Крайне не рекомендую пользоваться командами erase, mm, mw и nm, если вы не являетесь опытным пользователем и точно не знаете, что делаете. Зачастую вы перезагрузите роутер и в некоторых случаях можете вывести устройство из строя. Нам потребуются команды md (memory display; отобразить память) и printenv.
RT3352 # printenv
bootcmd=tftp
bootdelay=2
baudrate=57600
ethaddr=”00:AA:BB:CC:DD:10″
ipaddr=192.168.1.1
serverip=192.168.1.2
ramargs=setenv bootargs root=/dev/ram rw
addip=setenv bootargs $(bootargs) ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname):$(netdev):off
addmisc=setenv bootargs $(bootargs) console=ttyS0,$(baudrate) ethaddr=$(ethaddr) panic=1
flash_self=run ramargs addip addmisc;bootm $(kernel_addr) $(ramdisk_addr)
kernel_addr=BFC40000
u-boot=u-boot.bin
load=tftp 8A100000 $(u-boot)
u_b=protect off 1:0-1;era 1:0-1;cp.b 8A100000 BC400000 $(filesize)
loadfs=tftp 8A100000 root.cramfs
u_fs=era bc540000 bc83ffff;cp.b 8A100000 BC540000 $(filesize)
test_tftp=tftp 8A100000 root.cramfs;run test_tftp
stdin=serial
stdout=serial
stderr=serial
ethact=Eth0 (10/100-M)
Environment size: 765/4092 bytes
В перечне выше видны различные настройки, такие как скорость UART-порта и некоторые интересные адреса в памяти. Данные адреса не относятся к флеш-памяти. Адресное пространство флеш-памяти занимает 3 байта: [0x00000000, 0x00FFFFFF].
И все же давайте рассмотрим некоторые из тех адресов. Как насчет kernel_addr=BFC40000?
Рисунок 12: Содержимое адресного пространства BFC40000 – BFC40100
Ничего интересного. Сообщение badd означает bad address (плохой адрес), которое жестко прописано в команде md с целью сообщить, что мы пытаемся получить доступ к некорректной области памяти. На самом деле, данные адреса корректны, но не доступны загрузчику Uboot.
Запустив CLI в загрузчике Uboot, мы остановили загрузку ядра в память и на данный момент имеем доступ к очень ограниченному объему памяти.
Рисунок 13: Адресное пространство, доступное из командного интерфейса в загрузчике
Мы можем найти отдельные куски информации в памяти (например, строку SPI Flash Image), но в целом этот путь тупиковый. Можно ознакомиться с архитектурой памяти, но не более того. Например, начиная с адреса 0x000d0000, видно явное изменение структуры:
Рисунок 14: Изменение структуры памяти на границе 0x000d0000
Что дальше?
В следующей статье мы будем одновременно работать с прошивкой и системой bare metal. Посмотрим, как организована обработка и хранения информации на устройстве и попробуем скопировать нужные нам данные.
Спасибо за внимание.
В статье мы расскажем о наиболее интересных стартапах в области кибербезопасности, на которые следует обратить внимание.
Хотите узнать, что происходит нового в сфере кибербезопасности, – обращайте внимание на стартапы, относящиеся к данной области. Стартапы начинаются с инновационной идеи и не ограничиваются стандартными решениями и основным подходом. Зачастую стартапы справляются с проблемами, которые больше никто не может решить.
Обратной стороной стартапов, конечно же, нехватка ресурсов и зрелости. Выбор продукта или платформы стартапа – это риск, требующий особых отношений между заказчиком и поставщиком . Однако, в случае успеха компания может получить конкурентное преимущество или снизить нагрузку на ресурсы безопасности.
Ниже приведены наиболее интересные стартапы (компании, основанные или вышедшие из «скрытого режима» за последние два года).
Компания Abnormal Security, основанная в 2019 году, предлагает облачную платформу безопасности электронной почты, которая использует анализ поведенческих данных для выявления и предотвращения атак на электронную почту. Платформа на базе искусственного интеллекта анализирует поведение пользовательских данных, организационную структуру, отношения и бизнес-процессы, чтобы выявить аномальную активность, которая может указывать на кибератаку. Платформа защиты электронной почты Abnormal может предотвратить компрометацию корпоративной электронной почты, атаки на цепочку поставок , мошенничество со счетами, фишинг учетных данных и компрометацию учетной записи электронной почты. Компания также предоставляет инструменты для автоматизации реагирования на инциденты, а платформа дает облачный API для интеграции с корпоративными платформами, такими как Microsoft Office 365, G Suite и Slack.
Копания Apiiro вышла из «скрытого режима» в 2020 году. Ее платформа devsecops переводит жизненный цикл безопасной разработки «от ручного и периодического подхода «разработчики в последнюю очередь» к автоматическому подходу, основанному на оценке риска, «разработчики в первую очередь», написал в блоге соучредитель и генеральный директор Идан Плотник . Платформа Apiiro работает, соединяя все локальные и облачные системы управления версиями и билетами через API. Платформа также предоставляет настраиваемые предопределенные правила управления кодом. Со временем платформа создает инвентарь, «изучая» все продукты, проекты и репозитории. Эти данные позволяют лучше идентифицировать рискованные изменения кода.
Axis Security Application Access Cloud – облачное решение для доступа к приложениям , построенное на принципе нулевого доверия. Он не полагается на наличие агентов, установленных на пользовательских устройствах. Поэтому организации могут подключать пользователей – локальных и удаленных – на любом устройстве к частным приложениям, не затрагивая сеть или сами приложения. Axis вышла из «скрытого режима» в 2020 году.
BreachQuest, вышедшая из «скрытого режима» 25 августа 2021 года, предлагает платформу реагирования на инциденты под названием Priori. Платформа обеспечивает большую наглядность за счет постоянного отслеживания вредоносной активности. Компания утверждает, что Priori может предоставить мгновенную информацию об атаке и о том, какие конечные точки скомпрометированы после обнаружения угрозы.
Cloudrise предоставляет услуги управляемой защиты данных и автоматизации безопасности в формате SaaS. Несмотря на свое название, Cloudrise защищает как облачные, так и локальные данные. Компания утверждает, что может интегрировать защиту данных в проекты цифровой трансформации. Cloudrise автоматизирует рабочие процессы с помощью решений для защиты данных и конфиденциальности. Компания Cloudrise была запущена в октябре 2019 года.
Cylentium утверждает, что ее технология кибер-невидимости может «скрыть» корпоративную или домашнюю сеть и любое подключенное к ней устройство от обнаружения злоумышленниками. Компания называет эту концепцию «нулевой идентичностью». Компания продает свою продукцию предприятиям, потребителям и государственному сектору. Cylentium была запущена в 2020 году.
Компания Deduce , основанная в 2019 году, предлагает два продукта для так называемого «интеллектуального анализа личности». Служба оповещений клиентов отправляет клиентам уведомления о потенциальной компрометации учетной записи, а оценка риска идентификации использует агрегированные данные для оценки риска компрометации учетной записи. Компания использует когнитивные алгоритмы для анализа конфиденциальных данных с более чем 150 000 сайтов и приложений для выявления возможного мошенничества. Deduce заявляет, что использование ее продуктов снижает ущерб от захвата аккаунта более чем на 90%.
Автоматизированная платформа безопасности и соответствия Drata ориентирована на готовность к аудиту по таким стандартам, как SOC 2 или ISO 27001. Drata отслеживает и собирает данные о мерах безопасности, чтобы предоставить доказательства их наличия и работы. Платформа также помогает оптимизировать рабочие процессы. Drata была основана в 2020 году.
FYEO – это платформа для мониторинга угроз и управления доступом для потребителей, предприятий и малого и среднего бизнеса. Компания утверждает, что ее решения для управления учетными данными снимают бремя управления цифровой идентификацией. FYEO Domain Intelligence («FYEO DI») предоставляет услуги мониторинга домена, учетных данных и угроз. FYEO Identity будет предоставлять услуги управления паролями и идентификацией, начиная с четвертого квартала 2021 года. FYEO вышла из «скрытого режима» в 2021 году.
Kronos – платформа прогнозирующей аналитики уязвимостей (PVA) от компании Hive Pro , основанная на четырех основных принципах: предотвращение, обнаружение, реагирование и прогнозирование. Hive Pro автоматизирует и координирует устранение уязвимостей с помощью единого представления. Продукт компании Artemis представляет собой платформу и услугу для тестирования на проникновение на основе данных. Компания Hive Pro была основана в 2019 году.
Израильская компания Infinipoint была основана в 2019 году. Свой основной облачный продукт она называет «идентификация устройства как услуга» или DIaaS , который представляет собой решение для идентификации и определения положения устройства. Продукт интегрируется с аутентификацией SSO и действует как единая точка принуждения для всех корпоративных сервисов. DIaaS использует анализ рисков для обеспечения соблюдения политик, предоставляет статус безопасности устройства как утверждается, устраняет уязвимости «одним щелчком».
Компания Kameleon , занимающаяся производством полупроводников, не имеет собственных фабрик и занимает особое место среди поставщиков средств кибербезопасности. Компания разработала «Блок обработки проактивной безопасности» (ProSPU). Он предназначен для защиты систем при загрузке и для использования в центрах обработки данных, управляемых компьютерах, серверах и системах облачных вычислений. Компания Kameleon была основана в 2019 году.
Облачная платформа безопасности данных Open Raven предназначена для обеспечения большей прозрачности облачных ресурсов. Платформа отображает все облачные хранилища данных, включая теневые облачные учетные записи, и идентифицирует данные, которые они хранят. Затем Open Raven в режиме реального времени отслеживает утечки данных и нарушения политик и предупреждает команды о необходимости исправлений. Open Raven также может отслеживать файлы журналов на предмет конфиденциальной информации, которую следует удалить. Компания вышла из «скрытого режима» в 2020 году.
Компания Satori, основанная в 2019 году, называет свой сервис доступа к данным “DataSecOps”. Целью сервиса является отделение элементов управления безопасностью и конфиденциальностью от архитектуры. Сервис отслеживает, классифицирует и контролирует доступ к конфиденциальным данным. Имеется возможность настроить политики на основе таких критериев, как группы, пользователи, типы данных или схема, чтобы предотвратить несанкционированный доступ, замаскировать конфиденциальные данные или запустить рабочий процесс. Сервис предлагает предварительно настроенные политики для общих правил, таких как GDPR , CCPA и HIPAA .
Компания Scope Security недавно вышла из «скрытого режима», будучи основана в 2019 году. Ее продукт Scope OmniSight нацелен на отрасль здравоохранения и обнаруживает атаки на ИТ-инфраструктуру, клинические системы и системы электронных медицинских записей . Компонент анализа угроз может собирать индикаторы угроз из множества внутренних и сторонних источников, представляя данные через единый портал.
Основным продуктом Strata является платформа Maverics Identity Orchestration Platform . Это распределенная мультиоблачная платформа управления идентификацией. Заявленная цель Strata – обеспечить согласованность в распределенных облачных средах для идентификации пользователей для приложений, развернутых в нескольких облаках и локально. Функции включают в себя решение безопасного гибридного доступа для расширения доступа с нулевым доверием к локальным приложениям для облачных пользователей, уровень абстракции идентификации для лучшего управления идентификацией в мультиоблачной среде и каталог коннекторов для интеграции систем идентификации из популярных облачных систем и систем управления идентификацией. Strata была основана в 2019 году.
SynSaber , запущенная 22 июля 2021 года, предлагает решение для мониторинга промышленных активов и сети. Компания обещает обеспечить «постоянное понимание и осведомленность о состоянии, уязвимостях и угрозах во всех точках промышленной экосистемы, включая IIoT, облако и локальную среду». SynSaber была основана бывшими лидерами Dragos и Crowdstrike.
Traceable называет свой основной продукт на основе искусственного интеллекта чем-то средним между брандмауэром веб-приложений и самозащитой приложений во время выполнения. Компания утверждает, что предлагает точное обнаружение и блокирование угроз путем мониторинга активности приложений и непрерывного обучения, чтобы отличать обычную активность от вредоносной. Продукт интегрируется со шлюзами API. Traceable была основана в июле 2020 года.
Компания Wiz, основанная командой облачной безопасности Microsoft, предлагает решение для обеспечения безопасности в нескольких облаках, рассчитанное на масштабную работу. Компания утверждает, что ее продукт может анализировать все уровни облачного стека для выявления векторов атак с высоким риском и обеспечивать понимание, позволяющее лучше расставлять приоритеты. Wiz использует безагентный подход и может сканировать все виртуальные машины и контейнеры. Wiz вышла из «скрытого режима» в 2020 году.
Работает на CMS “1С-Битрикс: Управление сайтом”
verifiedms ccfullzshopcom