Прошивка распакована, теперь надо понять, что же нам от нее нужно. Начнем с простого - товарищи с voip-info.org все убивались, что никак им не войти рутом на телефон.
Раз уж на телефоне у нас Unix, где-то должен быть и passwd. Для начала, вырезаем подпись из нужного файла:
$./unsign.pl jar41sip.8-3-0-50.sbn cnu jar41sip.8-3-0-50.sbn-unsigned Found signature offset: 408
Теперь распаковываем его:
./fpu.pl --unpack --input-file jar41sip.8-3-0-50.sbn-unsigned No --output-dir specified, assuming ./jar41sip.8-3-0-50.sbn-unsigned-unpacked Extracted /bin/ciscoerror.png to ./jar41sip.8-3-0-50.sbn-unsigned-unpacked/bin/ciscoerror.png Extracted /bin/ciscoreboot.png to ./jar41sip.8-3-0-50.sbn-unsigned-unpacked/bin/ciscoreboot.png Extracted /bin/ciscostart.png to ./jar41sip.8-3-0-50.sbn-unsigned-unpacked/bin/ciscostart.png ...SKIP... Extracted /etc/group to ./jar41sip.8-3-0-50.sbn-unsigned-unpacked/etc/group Extracted /etc/passwd to ./jar41sip.8-3-0-50.sbn-unsigned-unpacked/etc/passwd ...SKIP... ./Extracted /ubin/dspVols01 to ./jar41sip.8-3-0-50.sbn-unsigned-unpacked/ubin/dspVols01 Extracted /ubin/Makaha.jar to ./jar41sip.8-3-0-50.sbn-unsigned-unpacked/ubin/Makaha.jar Finished with 0 error(s)
Пока нас интересует только один файл, а именно /etc/passwd:
root:8:0:0:Superuser:/:/bin/nologin syslog:8:1:0:System Logging:/usr:/bin/nologin netwk:8:2:0:Network Admin:/etc/inetd:/bin/nologin security:8:3:1:Security Processes:/usr:/bin/nologin debug:BQTMQYWL:4:256:Debug Shell:/usr/local:/bin/debugsh log:OYPTEZXR:5:256:trace shell:/var:/sbin/strace default:MZPUHGQY:256:256:Default User:/home/default:/bin/sh
После осмотра становится понятно, что товарищи любители поковыряться в девайсах без приложения усилий находятся в жестком обломе - шеллом у рута стоит /bin/nologin. У остальных же пользователей, кроме default, стоят специфические программные шеллы, которые в любом случае бесполезны для наших задач.
Интересно, что у остальных пользователей в пароле стоит 8, а при попытках залогиниться ими через telnet выдается какой-то challenge, видимо, в ожидании какого-то response. Я, честно говоря, никогда не встречался с такими схемами аутентификации, но сдается мне, что по логике нормальной Unix-системы, даже пройдя такую аутентификацию, с шеллом в виде /bin/nologin далеко не уедешь. Да и глупо было бы встраивать какие-то схемы в обход стандартной, во всяком случае, некрасиво как-то с инженерной точки зрения.
Ну, что можно сделать сразу - создать нового пользователя с UID=0 или модифицировать старого, с шеллом и паролем от default, так как пока алгоритм генерации этих паролей неизвестен, хотя их длина в 8 символов и хранение непосредственно в passwd наводит на некоторые размышления ;) Я на всякий случай сначала модифицировал оригинального root, а не создавал нового пользователя с UID=0.
Приводим файл к такому виду:
root:MZPUHGQY:0:0:Superuser:/:/bin/sh syslog:8:1:0:System Logging:/usr:/bin/nologin netwk:8:2:0:Network Admin:/etc/inetd:/bin/nologin security:8:3:1:Security Processes:/usr:/bin/nologin debug:BQTMQYWL:4:256:Debug Shell:/usr/local:/bin/debugsh log:OYPTEZXR:5:256:trace shell:/var:/sbin/strace default:MZPUHGQY:256:256:Default User:/home/default:/bin/sh
Ну а дальше запаковываем каталог с распакованной прошивкой обратно в нужный файл, и подсовываем его телефону
Stay tuned, как говорится.
