
Эта статья возможно, пригодится тем, у кого есть iДевайс, и кто сделал джейлбрейк своему девайсу.
Начнём издалека. При установке джеилбрейка и сидии по умолчанию ставится также OpenSSH — набор софта, при помощи которого можно подключится к айДевайсу по ssh. Да, iOS — это ОСь, которая базируется на POSIX-совместимом ядре Darwin, со всеми вытекающими отсюда плюшками.
О них и поговорим далее…
Darwin — наследник разработанной в NeXT операционной системы NeXTSTEP (позднее известной как OpenSTEP), первая версия которой вышла в 1989 году. После того, как Apple поглотила NeXT в 1997 году, она объявила, что сделает свою следующую операционную систему на основе OpenSTEP. Эта система разрабатывалась в рамках проекта Rhapsody с 1997 года и в 1999 году вышел основанный на этих разработках Mac OS X Server 1.0. В 2000 году Rhapsody был выделен в Darwin, выпущенный как свободное программное обеспечение в рамках публичной лицензии на исходники Apple (APSL) и компоненты Darwin присутствуют в Mac OS X по сей день.
До Darwin 8.0 Apple выпускала исполняемую версию (в виде образа компакт-диска) после каждого крупного выпуска Mac OS X, позволяя устанавливать Darwin на компьютеры с архитектурой PowerPC и Intel x86 как отдельную операционную систему. Мелкие обновления выпускались в виде пакетов, которые можно было установить отдельно. На данный момент Darwin доступен только в исходных кодах, за исключением версии для ARM, которая вообще никак не была выпущена отдельно от iOS.
Да простит меня читатель за копипаст из Википедии…
Дальше начинается интересное: после джеилбрейка можно, как я писал подключится по ssh к айДевайсу. Например, используя логин root и пароль по умолчанию alpine. Этот пароль по умолчанию стоит на всех айДевайсах. Стоп. Пароль от root?
Вполне логично, что раз уж айЮзеров, которые сразу будут менять все пароли не так уж и много, то по факту у нас получается интересная ситуация: при желании, кто угодно (или любой софт) может делать что угодно на подавляющем большинстве айДевайсов.
Вполне логично, что кому-то пришло в голову написать червя, который бы это использовал.
Встречаем: ikee worm
Первые упоминания о нём начинаются еще в 2009-м году.
К слову, написан от порядком криво, так что я заметил его присутствие по куче логов про его падения(хотя, возможно на более старых iOS их бы и небыло, и червь бы не падал):
PS C:\Users\SEMPER\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice\iPhone SEMPER>
Каталог: C:\Users\SEMPER\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice\iPhone SEMPER
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 17.07.2011 14:35 Baseband
...
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-183159_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-183259_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-183400_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-183500_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-183601_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-183701_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-183802_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-183902_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-184003_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-184103_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-184204_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-184304_iPhone-SEMPER.crash
-a--- 17.07.2011 14:34 9284 poc-bbot_2011-06-22-184405_iPhone-SEMPER.crash
...
И в таком же стиле 611 файлов…
Кстати, синхронизирую свой iPhone я порядком редко, так что если смотреть логи на самом девайсе, то они были забиты записями о том, что невозможно записать крэш-репорт, так как количество этих репортов достигло максимального. Благо, что в iOS есть ограничение по количеству крэш-репортов, иначе всё могло бы быть сильно интереснее.
Итак, зловреда мы локализировали благодаря тем же креш-репортам:
Incident Identifier: 4C48161A-B2D6-430F-8198-C6B34D5C3ED6
CrashReporter Key: e97b4864d5705f4fbc8ed277dfe77033599dc986
Hardware Model: iPhone3,1
Process: poc-bbot [23882]
Path: /bin/poc-bbot
Identifier: poc-bbot
Version: ??? (???)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2011-06-22 18:44:05.356 +0300
OS Version: iPhone OS 4.1 (8B117)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x000037f7
Crashed Thread: 0
...
Ок, пробуем подключится по ssh, чтобы снести его. Упс, а подключится уже не получается: poc-bbot убил OpenSSH.

Идём в Сидию и переутанавливаем. Стоит заметить, что на все про все у нас будет не так и много времени — секунд 30, потом сессия будет разорвана нашим любимцем poc-bbot. Посему действуем быстро:
root@192.168.0.101's password:
iPhone-SEMPER:~ root# rm /bin/poc-bbot && rm /bin/sshpass && rm /System/Library/LaunchDaemons/com.ikey.bbot.plist && rm /var/lock/bbot.lock && rm /var/mobile/LockBackground.jpg
iPhone-SEMPER:~ root#
После чего ребурим девайс через стандартную процедуру выключения.
После включения идём в Сидию и переустанавливаем OpenSSH. После чего снова коннектимся используя логин и пароль root/alpine, после чего при помощи passwd меняем пароль рута.
Потом, стоит поменять пароль и юзеру mobile, у него он также по умолчанию alpine.
iPhone-SEMPER:/var/log root# su root
iPhone-SEMPER:/var/log root# passwd
Changing password for root.
New password:
Retype new password:
iPhone-SEMPER:/var/log root# su mobile
iPhone-SEMPER:/var/log mobile$ whoami
mobile
iPhone-SEMPER:/var/log mobile$ passwd
Changing password for mobile.
Old password:
New password:
Retype new password:
iPhone-SEMPER:/var/log mobile$
Теперь уж проникнуть на айДевайс будет не так уж и просто.
Кстати, наткнулся на исходные коды оного червя, судя по которому, кроме всего прочего, он должен был еще менять фоновую картинку на картинку с милым названием:
if (!(in = popen("cp /var/log/youcanbeclosertogod.jpg /var/mobile/Library/LockBackground.jpg", "r"))) {
return -1;
}
Выглядит примерно вот так:

Если даже у вас нету poc-bbot'а желательно все-таки поменять пароли от root'a и юзера mobile.
Всем спасибо за внимание!

CC BY-NC-ND