
cabin частичный анализ
Прежде чем вы начнёте читать, я должен сделать объявление: ПОЖАЛУЙСТА, ВОСПРИНИМАЙТЕ ВСЁ, ЧТО ВЫ ЧИТАЕТЕ, СО ЗДОРОВЫМ СКЕПСИСОМ, ПОТОМУ ЧТО Я ВООБЩЕ НЕ РАЗРАБОТЧИК SymbianOS И НИКАК НЕ СВЯЗАН С ОКРУЖЕНИЕМ SymbianOS
Но зачем вообще анализировать что-то настолько старое? Ну потому что это самый простой способ войти в удалённый взлом, поскольку сейчас такое дерьмо делается с помощью ndays/0days стоимостью 1 млн 🤑🤑🤑. И потому что мне пока не хватает опыта для такого.
Окей, раз уж мы разобрались с этим дерьмом, поехали. Что такое Cabir? Это Bluetooth-червь, который работает на Symbian-телефонах. Для тех, кто понятия не имеет, что такое Symbian-телефон и всё такое. Ну, по сути, это телефон на ARM, так что ничего нового под солнцем :) Более краткая информация (https://en.wikipedia.org/wiki/S60_(software_platform))
Нам повезло, что исходный код этого был в открытом доступе (спасибо vxug) (SymbianOS.Cabir.7z). Теперь мы будем использовать это как справочник, но, честно, нафиг это. Одна из других причин, почему я это делаю, — я хочу поразбираться с ARM. Так что мы рассмотрим это с точки зрения исходников/ассемблера/эмулятора/отладки/сниффинга.
Окей, #1 Как, чёрт возьми, скомпилировать исходный код?
Ну, это не так уж сложно...
Сначала установите carbide ++(http://www.mediafire.com/file/6z54qrceef73x9s/Carbide_cpp_v2_7_en.exe/file)(из https://gist.github.com/artem78/cb2b9650af186844f7b5654964676284)
затем установите любой Perl-движок
затем установите nokia pc suite(https://www.usitility.com/nokia-pc-suite/)
установите SDK(http://www.mediafire.com/file/9uc7fjb2ynmxlud/s60v3.1_SDK.zip/file )
установите плагин c/c++ (https://ia800905.us.archive.org/7/items/nokia_sdks_n_dev_tools/s60_open_c_cpp_plug_in_v1_7_en.zip)
И вуаля, у нас есть окружение :)
P.S. лучше используйте Windows 7, так как на Windows 10, судя по всему, всё ломается и работает неправильно
Заражение реальной среды
TBD
Для этой части знайте, что вам нужно взломать (да, вы правильно услышали — джейлбрейк) ваш телефон. Как это происходит?
Реверс-инжиниринг
Окей, и как, чёрт возьми, это компилируется? Отличный вопрос. Итак, сначала я запустил ABLT.BAT из папки caribe\group вот так
Окей, дальше мы идём туда, где установлен SDK, находим папку платформы (S60_3rd_fp1) в моём случае, находим папку epoc32, заходим в папку build, выбираем папку user, папку с именем пользователя, а затем ещё два-три каталога, и вы должны оказаться в папке, которая выглядит так
Это текущий путь, который должен быть примерно похож на тот, где вы должны оказаться (C:\Symbian\9.2\S60_3rd_FP1\Epoc32\BUILD\Users\pwn\Desktop\CabirSourceCodes\caribe\group)
Окей, дальше нам нужно зайти в папку caribe (или как вы назвали исходный код), и вы найдёте папку с разными именами, как показано здесь
Что это значит? Ну, по сути, когда мы сначала запускаем ablt.bat (я до сих пор не знаю, зачем он нужен, но ладно), мы получаем разные варианты платформы для сборки нашего pkg-файла, из которого мы сгенерируем наш sis-файл. В данном случае мы видим GCCE и WINSCW. Если вы запустите команду ablt.bat build по умолчанию, она соберёт для WINSCW (это кодовое название платформы эмулятора). Для целей изучения компиляции исходников мы пока используем GCCE, но процесс тот же, если вы решите сделать, скажем, для ARM-платформы, чтобы загрузить его на телефон. То есть, в основном, ablt build arm_whatever, а затем выполняете те же шаги до этого места. Окей, теперь заходим в папку GCCE
Заходим в папку urel, и там должен быть файл caribe.app. Оттуда нужно открыть командную строку и запустить
И что это делает??? Ну, по сути, мы запускаем makesis, который генерирует sis-файл, чтобы мы могли установить его на телефон. А почему мы в sis-файле из исходников caribe? Ну, нам нужно было указать caribe.pkg для makesis. Окей, а зачем тогда все эти мучения, чтобы добраться до папки build, бла-бла-бла? Потому что нужно указать её в параметре -d, чтобы сгенерировать .sis файл.
Окей, этот метод работает только на SDK v3, о котором идёт речь в этом посте. Похоже, когда я экспериментировал, один разработчик из специального Discord-сервера по Symbian указал, что Cabir написан для SDK v2, и поэтому то, что я здесь показал, будет бесполезно..... это TBD, когда я смогу до него добраться... так как он сейчас редко бывает в Discord...
Окей, как реверс-инженерят .sis файл?
ПРОСТО. .sis файл — это архив. Итак... мы используем приложение siscontents, чтобы распаковать, а затем закидываем .app файл в ida.
С точки зрения ассемблера
Итак, весь процесс выглядит так
Итак, теперь мы заходим в эту папку, и далее получаем файл app.app
Окей, закидываем его в ida.
Окей, так что это, по сути, ARM exe. КРУТО, ЧЁРТ! ДАЛЬШЕ, ПОЖАЛУЙСТА! ХМ, ДА, ПОЖАЛУЙСТА ~~~
В файле есть символы, да!!! Ну да, поскольку по какой-то странной причине мы скомпилировали бинарник с отладочными символами, нам повезло!
И так, поскольку у нас по сути есть код и всё такое, процесс реверс-инжиниринга примерно такой же, как описанный в главе анализа исходного кода :)
Сниффинг
К сожалению, я не могу этого сделать, так как планировал использовать Fts4bt, поскольку видел, что он довольно неплох (https://www.diva-portal.org/smash/get/diva2:24278/FULLTEXT01.pdf)
но, судя по всему, продукт достиг конца жизненного цикла (EOL). Если вам случайно удастся сделать эту часть, пожалуйста, напишите мне в личку и сделайте pull request, чтобы завершить эту главу
Отладчик