Этот все, несите следующего - (не)Уникальный опыт

Этот все, несите следующего


(не только)Мобильные итоги года

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

/img/2024-year-in-review/kdpv.png


Книги

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

Practical Binary Analysis (Практический анализ двоичных файлов)

/img/2024-year-in-review/practical-binary-analysis.jpg
Книга хороша тем, что показывает как вообще можно подходить к анализу форматов файлов на примере ELF и PE. Жаль, что там нет Mach-O, видимо про него придется искать какую-то другую книгу. Понравился пошаговый подход автора к процессу анализа с использованием стандартных инструментов вроде readelf и objdump. Также довольно интересным показалось введение в теорию дизассемблирования, где автор описывает проблемы этой области знаний и примеры решения этих проблем. В общем книга однозначно стоит внимания.

The Hardware Hacking Handbook (Аппаратный хакинг)

/img/2024-year-in-review/hardware-hacking.png
Книга хоть и пытается рассказать “все с самого начала”, но для неподготовленного читателя точно окажется довольно сложной. Почти вся книга строится вокруг glitch-атак, а этот топик сам по себе требует от читателя неплохой предварительной подготовки. Ну и если планируете такое читать, то будьте готовы закупаться оборудованием. Хотя бы базовым. Помимо собственно полезной информации приведенной в книге, авторы дают ссылки на дополнительные материалы, которые мне тоже показались довольно полезными. Но если вы веб/мобайл-птичка и вам такое трудно, то для начала рекомендую прочитать книгу Алексея Усанова “Реверс-инжиниринг встраиваемых систем”.

MacOS and iOS Internals

/img/2024-year-in-review/macos-internals.jpg
Отличная серия из трех книг, которая очень подробно описывает устройство “яблочных” операционных систем. Первая часть повествует об общем устройстве, вторая расширяет это повествование информацией об устройстве ядра, а третья финилизирует серию рассказом о всех аспектах безопасности этих ОС. На мой взгляд это самое подробное описание довольно закрытой экосистемы *OS из всех что я когда-либо видел. К сожалению, как и все мобильное, информация в книге стремительно устаревает, но все еще является довольно актуальной. Там есть даже про ОС для тачбара. Вы знали, что там отдельная ОС? Хотя кто уже вспомнит о том, что такое тачбар…

Инструменты

Все программные инструменты, которые мне встретились в этом году обычно имели вид полуразобранных и полурабочих прототипов которые мы с командой пытались довести до ума. Часто безуспешно =) Но вот кое-что интересное и полезное из аппаратного мне приобрести удалось. С них и начнем.

Программатор CH341

/img/2024-year-in-review/ch341.webp
Давненько хотел приобрести себе простую читалку флеш-памяти для аппаратных похеков, но все не доходили руки. А тут попался удачный экземпляр за сущие копейки. Под Linux никакой дополнительной настройки и сумрачных драйверов не потребовалось. Просто вставил и заработало. Работать с ним можно как с помощью GUI, так и с помощью CLI.

Крэш-курс по работе с flashrom:

# Вставляем флешку в программатор и выполняем команду для определения чипа памяти
flashrom --programmer ch341a_spi

# Потом читаем содержимое
flashrom --programmer ch341a_spi -c <имя чипа из предыдущего пункта> --progress -r dump.bin

Также напечатал для него корпус чтобы чего-нибудь не замкнуло и не отвалилось:

/img/2024-year-in-review/ch341-box.jpg
Моделька

Лабораторный блок питания Wanptek WPS3010H

/img/2024-year-in-review/wanptek-wps3010h.jpg
Тоже давно напрашивающаяся покупка, которую я откладывал из-за нежелания в очередной раз погружаться в муки выбора среди тысяч одноликих устройств из Поднебесной. С выбором этого зверя мне помог один хороший и толковый человек за что ему отдельная благодарность. Фишка этого блока в том, что у него питание подается не сразу после включения кнопкой “Power”, а только после нажатия на кнопку “Output”. Это позволяет убрать всплеск тока при подаче питания, что благотворно сказывается на работоспособности подключаемых устройств.

Характеристики:

  • Мощность: 300Вт
  • Выходное напряжение: до 30В
  • Выходной ток: до 10А

Taint, AST и все что рядом

Сделал очередной заход на оценку работоспособности утилит для работы с исходным и декомпилированным Java кодом. Из того что посмотрел, и что не очень впечатлило пока что:

  • FlowDroid - подающий надежды инструмент, который с моей точки зрения пока не идет дальше подавания надежд. Как-то работает, но слишком коряво на мой взгляд. Хотя и заявляется как инструмент для Android, по факту мало какие цепочки строит пока ему не объяснишь. При чем одно дело объяснять какие-то специфические вещи, но он не умеет даже довольно базовые.
  • gadgetinspector - интересный инструмент, но как и все подобное - трацидионно плохо работает под Android, особенно если приложение написано на Kotlin. Сильно фолзит и вообще напоминает скорее прототип чем что-то полноценное.

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

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

Технологии

AI

Все что делалось в 2024-м, просто обязано было содержать AI/LLM. Без вариантов. Олды помнят, что когда-то точно также было с блокчейном. Пихали куда только можно, вели умные беседы про “честное голосование” и прочие приятные во всех отношениях решения. Правда чутка наевшись говна наигравшись, люди поняли, что похоже основной его профит в криптовалютах и как будто бы успокоились. Всплывают иногда желатели делать заправочные станции на смарт-контрактах, но их все меньше на мой взгляд =) Та же история сейчас с LLM. Любой очередной новый, блестящий инструмент для решения всех проблем обязательно является “AI powered”. Собственно львиная доля таких тулзов состоит из трех основных китов: поля CHATGPT_KEY, файлика prompt.txt и поделки на питоне которая передает это все на сервер и печатает ответ. Сделать с этим явлением ничего нельзя. Только дождаться пока все успокоятся. Следующей “big thing” думаю будет квантовый компьютер “ломающий интернет”.

Но у “AI бума” есть и положительные стороны. Все это стало сильно доступнее для человека не желающего глубоко погружаться в нюансы дата-сатанизма и смежные дисциплины. Для тех, кто с технологиями не очень, есть ужасающее количество сервисов и ботов, которые дают доступ к сокровенным тайным знаниям, которые хранит ChatGPT. Для более подкованных есть штуки вроде LM Studio, которые позволяют гонять модельки у себя локально и получать неплохой буст производительности при умелом использовании. Чем еще мне нравится конкретно LM Studio, так это возможностью локально поднять API-шку для любой выбранной модели, что позволяет писать свои инструменты не покупая CHATGPT_KEY®.

Кросс-платформенные мобильные приложения

Наверное мне дико везло, но в этом году я встречал очень мало кросс-платформенных приложений на проектах. В основном нативные попадались. Аналогично на багбаунти. С чем это связано мне не очень понятно, но может быть люди тоже наигрались в чудо-технологии и решили, что ну его нафиг? Правда под конец года мне принесли интересную точку зрения на это все: скоро все перейдут от нативных приложений к PWA, потому что их просто писать и легко скейлить. И вроде как все страны третьего мира прогрессивное человечество семимильными шагами стремиться перейти на эту технологию. Чтож, такие обещания я слышал лет 7-9 назад, и что-то революции пока не произошло. Продолжаем наблюдение.

Уязвимости

Вот пара интересных уязвимостей которые хотел бы отметить в этом году:

Что характерно, обе уязвимости не имеют идентификаторов CVE. По разным причинам. Но в целом все эти причины можно свести к одной: такова политика компании. И это очень плохо. Пол-беды, что те кто нашел эти уязвимости не получают никого публичного подтверждения своей работы (да-да, работать “на зачетку” все еще важно в современном мире). Основная проблема в том, что другие люди смогут узнать о таких уязвимостях только случайно. Ну или если автор начнет об этом рассказывать публично, а так делают далеко не все. А значит люди не сделают выводы и не получат полезный опыт. Зато у компании будет меньше CVE и вроде как она будет выглядеть более защищенной. Тут речь про Goolge конечно. Приложенька для Flipper-а хоть и достойна CVE по моему мнению, но все же не так критично ее отсутствие в случае этой уязвимости. При этом я регулярно вижу как Google выдает CVE на баги вроде этой:

/img/2024-year-in-review/dangerous-rce.jpg

Такое комментировать — только портить, но все же мне понравился комментарий одного из участников чата Android Guards на эту тему:

/img/2024-year-in-review/rce-comment.png

Я бы лучше не сказал.

Были и другие интересные события, которые хоть и остались без CVE, но зато получили публичную огласку и я рад, что имел к этому отношение.

Первое — мое выступление на Positive Hack Days этой весной, где я рассказывал как легко получить root права на чуде китайского автопрома — Haval Dargo. Записи выступления нет, поэтому получился в некотором роде эксклюзив, но проблема была обозначена широкому кругу людей и это главное.

Второе — взлом замка от ПВЗ в рамках багбаунти программы Wildberries. Ребята заморочились, и даже позвали людей с камерами чтобы сделать про это ролик. Так что все подробности смотрите там.

Кроме всего этого конечно же была куча уязвимостей на проектах и багбаунти о которых не могу рассказывать подробно, но поделюсь списком того, что мне в принципе встречалось в этом году:

  • Выполнение произвольного кода в мобильных приложения. Очень редкий зверь надо сказать 😎
  • SQL-инъекции на разных ресурсах. Казалось бы, 2024-й год уже давно, но увы. Все еще можно найти SQLi с правами SA;
  • Мобильные приложения все еще хранят конфиденциальную инфу в доступных каталогах на sd-карте;
  • Сервера все еще присылают избыточное количество полей в ответах и часто эти поля содержат конфиденциальную информацию;
  • Интроспекция GraphQL тоже на месте. При чем на довольно популярных ресурсах;
  • Обход аутентификации по пин-коду тоже встречался. И часто это проблема именно локальной реализации;
  • Загрузка произвольных URL в WebView мобильных приложений. Сотни CTF-тасков сделано на этот счет, а проблема все еще актуальна;
  • IDOR-ы всех цветов и размеров.
  • Слишком слабые политики CORS хоть и встречаются реже, но не исчезли совсем;
  • Чтение файлов из внутренней директории в мобильных приложениях;
  • Состояние гонки (race condition) на всяких промокодах и прочем подобном функционале;
  • Обход различных механизмов безопасности из-за ошибок в бизнес-логике;
  • Захват аккаунта из-за автоматической подстановки авторизационных заголовков в WebView;
  • Утечки персональных данных из-за публично доступных серверных логов.
  • Ну и XSS конечно же. Куда ж без них? =)

Все остальное

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

Полезные сервисы:

  • Netlify — позволяет по-быстрому накидать PoC-сайт для эксплуатации web уязвимостей. Поддерживается автоматический деплой с GitLab например, что довольно удобно. Бесплатного тарифа хватает с головой;
  • Generate Strings from Regular Expressions - с этой задачей хорошо справляется LLM, но порой это довольно избыточно и хватит такого простого сервиса. На вход принимает регулярку, а в ответ показывает подходящие под нее строки;
  • Webcrack - деобфускатор JavaScript. Выручал меня множество раз. Можно гонять локально или использовать веб-приложение;
  • Flatliner: Convert python programs into a single line - позволяет схлопнуть красивый python-скрипт в тяжело читаемую строку. Полезно чтобы прокинуть куда-то полезную нагрузку. Исходный код также доступен;
  • Shodan Exploits - как Shodan только по эксплойтам. Ищет информацию сразу в нескольких источниках. Есть удобные фильтры по языкам программирования, авторам и т.п;
  • Protobuf Decoder - онлайн декодер probobuf блобов. Требует оригинальных .proto файлов. Для сырого декодирования можно выполнить локальную команду protoc --decode_raw < secret.pb;
  • Exploit Notes - сборник различных техник эксплуатации разбитый по разделам. Неплохая альтернатива Hack Tricks;
  • AttackerKB - монитор уязвимостей. В описаниях попадаются неплохие разборы конкретных CVE.
  • SnykAdvisor: NPM — позволяет быстро “проверить здоровье” у package.json файла. Среди прочего показывает уязвимые компоненты и CVE к ним. Полезно при whitebox анализе;

Интересные блоги:

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


Вот так и закончился этот год. Благодарю читателей дочитавших до этих строк. Надеюсь вы нашли для себя что-то полезное.
С Новым Годом вас!
🎅🏻


Смотрите также