Attify OS. Универсальная отмычка от мира IoT. Вводная
Если ты постоянный читатель нашего сайта, то наверняка помнишь статьи про разбор прошивок беспроводных счетчиков электричества, диспенсеров банкоматов, а равно как мои обещания рассказать про HackRF, Yard Stick One и прочие устройства для анализа радиочастот. Писали мы и про перехват SMS сообщений. Что объединяет все эти устройства? Правильно, они все относятся к миру интернета вещей, Internet of Things, или по-просту IoT.
IoT находится только в начале своего пути, но уже развивается с огромной скоростью, и вводимые новшества только добавляют новые проблемы, связанные с информационной безопасностью. В мире IoT превалирует парадигма security through obscurity — пока проблема не будет выявлена — её, как бы, не существуют. Система, полагающаяся на «security through obscurity», может иметь существующие или предполагаемые уязвимости, но её владельцы или разработчики считают, что если недостатки неизвестны, то злоумышленник не сможет их обнаружить.
Использование этой концепции приводит к катастрофическим последствиям — после обнаружения уязвимости устройства атакуются тысячами и используются злоумышленниками.
Основные сложности в защите IoT устройств происходят от того, что их нельзя обновить/пропатчить, а пользователи не знают как или не хотят обновляться. А зачастую устройства просто сняты с поддержки.
Давно ли ты в последний раз обновлял свой телефон? Ок, недавно. А роутер? Принтер? Точно обновлял? А как насчёт телевизора? Автомобиля? Счётчика? Может быть, стиральной машины? И это только самые простые вещи с которыми ты сталкиваешься каждый день. Давайте не забывать про огромное количество невидимых устройств, призванных «облегчить» нам жизнь, начиная от систем управления подачей воды, газа, электроэнергии и заканчивая транспортом, финансовой сферой или сферой услуг. Да и у майнеров тоже есть прошивки…
Даже самые незамысловатые устройства сегодня имеют контроллеры. А раз есть контроллер, значит должна быть хоть какая то программа, управляющая им.
Большинство таких устройств работают по принципу – «работает и хорошо», а разработчики считают, что анализировать их устройство никто не будет. Последствия фиеричны. Потратив какое-то время на разбор прошивки устройства и найдя дыру, злоумышленник может получить доступ к устройстам по всему миру и эксплуатировать уязвимость. А хорошие парни могут сорвать неплохую награду за найденые дыры. Я даже не стану приводить примеры.
Да и векторов для атаки предостаточно.
Тем не менее, общих методов, используемых для выполнения анализа, таких как полная эмуляция системы, эмуляция пользовательского режима, бинарные инструменты, дизассемблер и песочница, едва ли достаточно. Эти инструменты либо обслуживают операционную систему одного типа, либо работают на архитектуре с одним ЦП. Кроме того, эти инструменты необходимо использовать отдельно, упорядочивание информации или перекрестные ссылки использовать практически невозможно. По этим причинам реверс-инжиниринг никогда не бывает легкой задачей. Но есть универсальный комбайн, способный существенно облегчить анализ…
Знакомьтесь, Attify OS
Дистрибутив обладающий всем необходимым функционалом для того, чтобы «расковырять» практически любое IoT устройство.
Attify содержит набор инструментов для анализа прошивок (Firmware Analysis Toolkits) — это набор инструментальных средств, созданный для того, чтобы помочь исследователям безопасности анализировать и выявлять уязвимости в прошивках IoT и встроенных (embedded) устройств.
IoT устройства и встроенные системы используют прошивку, в которой часто хранятся много полезной, а зачастую и критичной информации. Это могут быть «захардкоженные» учетные данные, триггеры для получения отладочной и системной информации, недокументированные возможности, бэкдоры и многое другое. IoT девайсы общаются по радио. Передают данные по проводам и взаимодействуют с другими устройствами. Attify OS обладает полным арсеналом инструментов, помогающих работать со всем этим. Пушки к бою?
Сам Attify основан на Ubuntu со всеми прелестями этого дестрибутива. Но каков же арсенал?
Arduino
Здесь отдельно я останавливаться не буду, лишь скажу, что в дистрибутив включены все необходимые инструменты для работы с Arduino.
Attify Badge tool
Attify Badge GUI-утилита для взаимодействия с UART, SPI, JTAG, GPIO etc. Утилита разработана контрибьюторами Attify OS и является удобным инструментом взаимодействия и является отличительной особенностью данного дистрибутива.
Baudrate
Небольшой инструмент, написанный на Python, для выявления скорости обмена последовательными соединениями
BetterCap
Bettercap — это легко расширяемый модульный портативный инструмент и фреймворк для MITM-атак на Ruby со всевозможными диагностическими и атакующими функциями, какие только могут пригодиться для атаки «человек посередине». Можно атаковать как всю сеть, так и определенные машины.
Встроенный снифер и диссектор на сегодня способен без дополнительных настроек собирать:
• информацию о посещенных URL;
• о посещенных HTTPS-хостах;
• данные HTTP POST-запросов;
• HTTP Basic и Digest аутентификации;
• аутентификационные данные от FTP, IRC, POP, IMAP, SMTP, NTLMv1/v2(HTTP, SMB, LDAP и так далее).
Binwalk
Об этом инструменте мы уже писали.
Это инструмент для поиска файлов и исполняемого кода в данном двоичном образе. Он подходит для определения файлов и кода в образах или прошивках. Binwalk использует библиотеку libmagic, поэтому он совместим с magic-сигнатурами, созданными для Unix-утилиты file.
Binwalk также имеет файл специальных magic-сигнатур, содержащий улучшенные сигнатуры для файлов, которые часто содержатся в образах встроенных программ, например, сжатые (архивированные) файлы, заголовки, ядра Linux, загрузчики, файловые системы и т.д.
Короче, Binwalk — это быстрый, простой в использовании инструмент для анализа, реверс-инженеринга и извлечения firmware.
Burp Suite
Как, ты ещё не знаешь? Burp Suite — это интегрированная платформа, предназначенная для проведения аудита веб-приложения, как в ручном, так и в автоматических режимах. Содержит интуитивно понятный интерфейс со специально спроектированными табами, позволяющими улучшить и ускорить процесс атаки. Сам инструмент представляет из себя проксирующий механизм, перехватывающий и обрабатывающий все поступающие от браузера запросы. Имеется возможность установки сертификата burp для анализа https соединений. Про этот крутейший инструмент в интернетах написана немало.
Cutter
Cutter – это бесплатная платформа для реверса с открытым исходным кодом, работающая на основе rizin. Являясь весьма продвинутой и настраиваемой платформой для реверса, не забывая при этом и об удобстве пользователя. По словам создателей, Cutter создан реверс-инженерами для реверс-инженеров.
DspectrumGUI
Dump1090
Тулкит для анализа Mode S для RTL-SDR. Что такое Mode S? Ха. Это ADS-B транспондер, утанавливаемый в самолёты и передающий всякую информацию, например об их высоте и положении.
Firmadyne
Инструмент для динамического анализа прошивок с открытым исходным кодом, построенный на основе Qemu. Также в комплекте с инструментом идут преднастроенные инструменты, такие, как Binwalk. Результаты анализа сохраняются в базу PostgreSQL. Анализ на наличие уязвимостей происходит через Metasploit.
Firmware Analysis Toolkit
Инструментарий, созданный для того, чтобы помочь исследователям безопасности проанализировать и выявить уязвимости в прошивке IoT иembedded устройств. Утилита разработана контрибьюторами Attify OS.
Firmware-Mod-Kit (FMK)
Предназначен для анализа и пересборки прошивок.
Flashrom
Универсальная утилита для чтения/записи flash-чипов.
GHIDRA
GHIDRA – бесплатный инструмент с открытым исходным кодом, поддерживающий большое количество архитектур, разработанный Агентством национальной безопасности США. О нём мы уже писали.
GNURadio
Программный инструментарий, предоставляющий разработчикам программно-определяемых радиосистем «строительные блоки», обеспечивающие основные функции цифровой обработки сигналов. GNURadio позволяет создать достаточно сложную конфигурацию SDR радиоустройства, не написав ни единой строчки кода.
GQRX
Gqrx программный ресивер на основе GNU Radio и GUI-интерфейсом, написанном на Qt.
GR-GSM
Плагин для GNURadio для работы с GSM.
GR-Paint
Утилита для любителей “поприкалываться”. Позволяет рисовать картинки в визуализации радиопотока.
HackRF Tools
Набор инструментов для работы с HackRF.
Inspectrum
Инструмент для анализа перехваченых сигналов SDR.
JADx
Это активно развиваемый открытый декомпилятор, который выдает достаточно неплохой код Java на выходе и даже имеет функцию деобфускации кода. Работать с ним просто: запускаешь Jadx-gui, с его помощью выбираешь APK-файл приложений и видишь иерархию пакетов и файлы с исходниками на Java.
Kalibrate-RTL
Kalibrate сканирует базовые станции GSM в заданном диапазоне частот и может использовать эти базовые станции GSM для вычисления смещения частоты. В общем и целом утилита используется при перехвате GSM сигнала.
KillerBee
Инструмент (и обертка к нему) для анализа ZigBee и IEEE 802.15.4. Создан специально для этого дистрибутива.
LibMPSSE
Libmpsse – это библиотека для взаимодействия с устройствами SPI / I2C через семейство USB-чипов FTDI FT-2232. Основанный на библиотеке libftdi, он написан на C и включает оболочку Python.
Ключевые особенности libmpsse:
- Операции в мастер-режиме SPI и I2C
- Полная поддержка режимов SPI 0 и 2 (частичная поддержка режимов 1 и 3)
- Простой API для C и Python
- Управление до 12 контактов GPIO (4 входа / выхода, только 8 выходов)
- Поддерживает полный режим битбэнг
- Тактовая частота до 30 МГц
- Возможна скорость передачи данных выше 1 МБ / с.
Liquid-DSP
liquid-dsp – это бесплатная библиотека цифровой обработки сигналов (DSP) с открытым исходным кодом, разработанная специально для SDR в IoT. Цель состоит в том, чтобы предоставить легкую библиотеку DSP, которая не полагается на множество внешних модулей, проприетарных и других громоздких фреймворков. Все элементы обработки сигналов разработаны так, чтобы быть гибкими, масштабируемыми и динамическими, включая фильтры, конструкцию фильтров, генераторы, модемы, синхронизаторы, сложные математические операции и многое, многое другое.
LTE-Cell-Scanner
Сканер мобильных LTE SDR оптимизированный для работы с высокоэнергоэффективными интерфейсами RF (8bit A/D, коэффициент шума 20dB).
NMAP
Кто не знает что такое nmap? Вон из класса.
OOK-Decoder
On-Off-Keying (OOK) – это простая схема радиомодуляции, в которой несущая включается и выключается для кодирования данных. Самый известный пример – азбука Морзе. В наше время OOK чаще используется в промышленных, научных и медицинских (ISM) радиодиапазонах (433 МГц, 900 МГц и др.) простыми телеметрическими устройствами, такими как метеостанции, дистанционные термометры, системы сигнализации и другие удаленные датчики. А равно как радиосигнализации, ворота, шлагбаумы и даже холодильники с газировкой. Этот фреймворк поможет тебе раскодировать все эти сигналы. Сечешь фишку?
Openocd
Популярная система отладки для микроконтроллеров. Open On-Chip Debugger (открытый отладчик для чипов). OpenOCD предоставляет инструментарий отладки (debugging), внутрисхемного программирования (in-system programming, ISP), внутрисхемного тестирования (boundary-scan testing) для встраиваемых систем (микроконтроллеров, FPGA и т. п.).
Qiling
Цель Qiling Framework – оптимизировать исследования в области безопасности IoT, анализа малварей и реверс-инжиниринга. Основная цель – создать кроссплатформенную и мультиархитектурную среду, а не просто инструмент для ревер-инжиниринга.
Qiling Framework содержит бинарный инструментарий и фреймворк для эмуляции, который поддерживает кроссплатформенность и мульти-архитектуру. Он обладает мощными функциями, такими как перехват кода и внедрение произвольного кода до или во время выполнения. Он также умеет патчить упакованный бинарный файл во время выполнения.
Qiling Framework имеет открытый исходный код и написан на Python, простом и широко используемом языке программирования. Это будет стимулировать постоянный вклад со стороны сообщества и открытых источников, делая Qiling Framework устойчивым проектом.
Qiling Framework – это не просто платформа эмуляции или инструмент реверс-инжиниринга, он объединяет бинарный инструментарий и бинарную эмуляцию в единую структуру. С Qiling Framework вы можете:
- Перенаправить поток выполнения на лету
- Пропатчить файл во время исполнения
- Внедренить код во время исполнения
- Выполнить файл частично
- Пропатчить «распакованное» содержимое двоичного файла
Qiling Framework может эмулировать:
- Windows X86 32/64bit
- Linux X86 32/64bit, ARM, AARCH64, MIPS
- MacOS X86 32/64bit
- FreeBSD X86 32/64bit
Qiling Framework может работать поверх Windows/MacOS/Linux/FreeBSD и на любой архитектуре ЦП.
radare2
Radare2 это фреймворк для анализа бинарных файлов. Он включает в себя большое количество утилит. Изначально он развивался как шестнадцатеричный редактор для поиска и восстановления данных, затем он обрастал функционалом и на текущий момент стал мощным фреймворком для анализа данных. В этой статье я расскажу как с помощью фреймворка Radare2 произвести анализ логики работы программы, а также опишу основные элементы языка ассемблера, которые необходимы для проведения реверс инжиниринга.
Radare2 представляет собой комплект из нескольких утилит:
- radare2 (r2) — Шестнадцатеричный редактор, дизассемблер и отладчик с расширенным интерфейсом командной строки. Позволяет работать с различными устройствами ввода вывода, такими как диски, удаленные устройства, отлаживаемые процессы и др., а также работать с ними как с простыми файлами.
- rabin2 — Используется для получения информации об исполняемых бинарных файлах.
- rasm2 — Позволяет производить преобразования из опкода в машинный код и обратно. Поддерживает большое количество архитектур.
- rahash2 — Утилита, предназначенная для расчета контрольных сумм. Поддерживает множество алгоритмов, позволяет получить контрольную сумму целого файла, его части или произвольной строки.
- radiff2 — Утилита, для сравнения бинарных файлов, поддерживает множество алгоритмов, умеет сравнивать блоки кода исполняемых файлов.
- rafind2 — Утилита для поиска последовательности байт.
- ragg2 — Утилита для компиляции небольших программ.
- rarun2 — Утилита, способная запускать анализируемую программу с различными настройками окружения.
- rax2 — Небольшой калькулятор, позволяющий производить простые вычисления в различных системах счисления.
Основным недостатком, который препятствует распространенности фреймворка, является отсутствие качественного GUI. Имеются сторонние реализации, но сожалению они не слишком удобные. Также стоит отметить наличие встроенного веб интерфейса.
Radare2 чаще всего применяется как инструмент реверс инжиниринга, в качестве продвинутого дизассемблера. Рассматривать Radare2 мы будем именно как дизассембрер и произведем анализ простого crackme.
Введение в ассемблер
Прежде чем начинать анализ программы стоит остановиться на основных моментах, которые необходимы для понимания кода ассемблера. Описание основных инструкций ассемблера заслуживает отдельной статьи, поэтому здесь будут приведены только основные группы инструкций.
- Инструкции копирования (mov, movsx, movzx)
- Инструкции логических операций (and, or, xor, test)
- Инструкции арифметических операций (add, sub)
- Инструкции управления последовательностью выполнения программы (jmp, jne, ret)
- Инструкции работы с прерываниями (int)
- Инструкции вводы-вывода (in, out)
По умолчанию Radare2 использует синтаксис intel, для которого характерен следующий формат записи:
инструкция операнд ;комментарий
Основные инструкции могут иметь один или два операнда. В случае работы с двумя операндами формат записи примет следующий вид:
инструкция операнд1, операнд2 ;комментарий
Многие инструкции, такие как and, sub, add сохраняют результат вычисления в первый операнд.
Язык ассемблера не поддерживает операции, в которых оба операнда находятся в памяти. Поэтому приходится одно или оба значения помещать в регистры, которые в дальнейшем будут использоваться в качестве операндов. Таким образом мы плавно подошли к определению регистров.
Регистры — это очень быстрые ячейки памяти, которые находятся в процессоре. Они работают гораздо быстрее оперативной памяти или кэша, но объем хранимой в них памяти очень мал. В процессоре архитектуры х86 (х86-32) имеется 8 регистров общего назначения размером 32 бита. Процессоры архитектуры amd64 (х86-64) имеют 16 регистров общего назначения размером 64 бита. Более подробная информация представлена в таблице ниже.
RFCat
Удобный фреймворк на Python для анализа различный RF устройств и помочь в реверсе радио-устройств IoT.
Интересно? Подробнее можно почитать здесь или здесь.
ROPGadget
Этот инструмент позволяет выявлять уязвимости в бинарных файлах. ROPgadget поддерживает формат ELF, PE и Mach-O на платформах x86, x64, ARM, ARM64, PowerPC, SPARC и MIPS.
ROP — метод эксплуатации уязвимостей в программном обеспечении, используя который атакующий может выполнить необходимый ему код при наличии в системе защитных технологий, например, технологии, запрещающей исполнение кода с определённых страниц памяти. Метод заключается в том, что атакующий может получить контроль над стеком вызовов, найти в коде последовательности инструкций, выполняющие нужные действия и называемые «гаджетами», выполнить «гаджеты» в нужной последовательности. «Гаджет», обычно, заканчивается инструкцией возврата и располагается в оперативной памяти в существующем коде (в коде программы или в коде разделяемой библиотеки). Атакующий добивается последовательного выполнения гаджетов с помощью инструкций возврата, составляет последовательность гаджетов так, чтобы выполнить желаемые операции. Атака реализуема даже на системах, имеющих механизмы для предотвращения более простых атак.
Подробнее можно почитать например здесь.
RouterSploit
RouterSploit — это атакующий фреймворк с открытым исходным кодом на Python, специально нацеленный на встраиваемые устройства типа роутеров.
Состоит он из трех типов модулей для пентеста:
- exploits — модули, которые эксплуатируют уязвимости;
- creds — модули для проверки аутентификационных данных на сервисах (FTP, SSH, Telnet, HTTP basic auth, HTTP form auth, SNMP);
- scanners — модули для проверки цели на уязвимости.
Эксплоиты есть для оборудования от таких вендоров, как 2Wire, Asmax, ASUS, Belkin, Cisco, Comtrend, D-Link, Fortinet, Juniper, Linksys, NETGEAR, Technicolor.
Модулей сканирования сейчас два. Один для обнаружения в сети всех устройств от компании D-Link, а второй модуль для autopwn.
Модуль проверки аутентификационных данных для каждого сервиса может работать в одном из двух режимов: в режиме проверки паролей по умолчанию и в режиме перебора.
Сам интерфейс сделан в духе Metasploit, так что разобраться с RouterSploit не составит труда.
RTL-433
Утилитка позволяет снимать данные с датчиков на частоте 433Mhz с помощью тюнеров на чипе Realtek RTL2832.
Поддерживаемые датчики
[01] Silvercrest Remote Control
[02] Rubicson Temperature Sensor
[03] Prologue Temperature Sensor
[04] Waveman Switch Transmitter
[05] Steffen Switch Transmitter
[06] ELV EM 1000
[07] ELV WS 2000
[08] LaCrosse TX Temperature / Humidity Sensor
[09] Acurite 5n1 Weather Station
[10] Acurite 896 Rain Gauge
[11] Acurite Temperature and Humidity Sensor
[12] Oregon Scientific Weather Sensor
[13] Mebus 433
[14] Intertechno 433
[15] KlikAanKlikUit Wireless Switch
[16] AlectoV1 Weather Sensor
[17] Fine Offset Electronics, WH-2 Sensor
RTL-SDR tools
Инструментарий для работы с RTL-SDR.
Scapy
Scapy — инструмент создания и работы с сетевыми пакетами. Программа написана на языке python, автор Philippe Biondi. Познакомиться с основным функционалам можно здесь. Scapy — универсальный, поистине мощный инструмент для работы с сетью и проведения исследований в области информационной безопасности.
Spiflash.py
Программатор Spiflash, написанный на Python и предназначенный для анализа FlashROM.
Ubertooth tools
Платформа для разработки беспроводных технологий (Bluetooth) с открытым исходным кодом. Ubertooth поставляется с анализатором BLE (Bluetooth Smart).
URH (Universal Radio Hacker)
Невероятно простой и понятный инструмент для анализа цифровых радиопротоколов. В отличие от монстров вроде GNU Radio, освоить его можно за пять минут, без мучений.
Главные особенности URH:
- Работает на всех платформах — на macOS/Linux/Windows, из коробки! Не нужно часами компилять километры зависимостей.
- Поддерживает популярные SDR — нативная поддержка RTL-SDR, HackRF, LimeSDR, AirSpy и других.
- Все в одном — все нужные инструменты встроены в одну программу: анализатор спектра для поиска частот, запись сигнала, интерпретатор цифрового сигнала для автоматического преобразования записанного сигнала в цифровые данные.
- Поддерживает передачу — для проведения replay-атаки достаточно выделить мышкой нужный отрезок сигнала и нажать Replay. Великолепно!
Что ещё?
Сама система представляет из себя оптимизированный образ виртуальной машины Ubuntu с уже предустановленными драйверами для практически любого железа с которым придётся взаимодействовать в ходе пентеста IoT девайсов.
В ходе тестирования автор успешно расковырял прошивки от майнеров и некоторых роутеров, некоторые с весьма успешными результатами. Но об этом в другой раз.
В следующей статье мы обязательно расскажем о том, как находить уязвимости в прошивках IoT устройств с помощью инструментов из этого замечательного дистрибутива, а также как проводить атаки на радио-устройства.
Github: https://github.com/adi0x90/attifyos
Сайт проекта: https://www.attify.com/attifyos