Немного об этом сайтe:
Сайт создан для людей и только для людей. Он не создан для обмана или зарабатывания денег.
Мы стараемся предоставить Вам самый большой спектр интересующей Вас информации. Для этого прошу принимать активное участие в развитии сайта если он Вам не безразличен.

Новенькое в сети
Важная информация!
На нашем сайте Вы можете найти много интересного для себя и дорогих Вам людей. У нас на сайте можно скачать множество книг и журналов.
Теперь каждый желающий может не только скачивать книги и журналы но и читать интересные статьи в разделе "ЧИТАЛЬНЫЙ ЗАЛ".
Реклама от Google ↓

Категории ↓
компютер и техника [2] | Мобильный мир [0] | Здоровье [14] | Антивирусная защита [10] |
Новинки софта [8] |
/Сколько нас ↓
Супер предложение ↓
Друзья нашего сайта ↓

Книжная Баннерная Сеть
Главная » Статьи » Антивирусная защита |
В трех прошлых статьях я описал основные уязвимости Apple iPhone, дал инструкции по созданию автоматического сканера безопасности на базе точки доступа и рассказал о концепции ботнета для телефонов на примере создания сервера управления зараженных iPhone. Пришло время логично завершить этот цикл. В этом номере я подробно опишу создание трояна для Apple iPhone. Он может быть встроен в iPhone-терминатор как "обновление" к Installer или использован отдельно, например, через уязвимости в Safari. Формат управляющей командыПервое, с чего надо начать написание трояна – разработка формата команды, которую сервер будет передавать клиентам (зараженным телефонам). Я предлагаю вот такой вид: 1. Команда состоит из шести частей, разделенных символом "%" 2. Первая часть: - at% AT-команда для модема 3. Третьи и вторая части - аргументы команды из первой части. Например: - sm%79101010101%TEST is OK%<хвост команды> 4. Четвертая часть - тип отправки результата команды, может принимать значения: - %ws% отправка http-запросом параметра GET 5. Пятая и шестая части - аргументы для отправки команды, например: - %79102020202% номер телефона в международном формате Примеры команд: - sm%79101010101%test is OK%0%0%0% – отправить СМС с текстом: "test is OK" на
номер +79101010101 Пару слов о разделителе: я максимально хотел использовать команды шелла, поэтому оставил все спецсимволы на использование в скриптах (чтобы можно было выполнять разные там cat /dev/random > /tmp/fuck-memory-economy или ls / | grep txt и пр.). Таким образом, разделителем стал процент – %. Что касается общей концепции команды, то здесь все тоже очевидно. Первые три параметра – управляющая часть, инструкция типа "что сделать". Вторые три параметра – ответная часть, инструкция типа "куда скинуть результат выполнения". Если с этим все понятно, то нечего тянуть резину, переходим к кодингу. Архитектура программыВсе функции я разнес по отдельным файлам в зависимости от смысловой нагрузки. Основной файл trojan.c максимально облегчен от ненужного кода. Вот список файлов и их назначений: trojan.c Основной файл с main() функцией программы ./cmd: Разбор строки с командой и заполнение структуры ./http: HTTP клиент. Отправка запросов, возвращение результата ./sms: Работа с AT-командами. Отправка СМС, получение IMEI и CCID ./structs: Описание структуры команды COMMAND ./utils: Утилиты. Concat для корректного слияния двух строк в одну Пишем простенький HTTP ClientЗабирать команды с сервера наш троян будет по HTTP. Поэтому надо написать простенький клиент на сокетах. Готовые вещи в нашем случае бестолковы, а формат http-запроса, думаю, ты помнишь наизусть. Если не помнишь – ничего страшного, напомню. Использовать мы будем только стандартные библиотеки: netdb.h, sys/types.h, netinet/in.h, sys/socket.h. В общем, получится примерно так:
Тут накладываются ограничения в 2 Кб на строку URL и ответ сервера. Если их будет мало для твоих целей – увеличишь без проблем. Только не забудь очищать переменные, все-таки чистый С, никаких тебе сборщиков мусора :). Парсим команду сервераПосле того, как мы получили строку с командой, ее надо разобрать и заполнить соответствующую структуру. Сама структура выглядит так:
По-хорошему, тип команды и тип ответа надо было выставить в int, но до этого руки у меня не дошли. Как говорится, сначала напиши, потом оптимизируй. Так что, это оставим на домашнее задание. Теперь сам парсинг. Он основывается на базовой функции strtok, которая выполняет за нас разбиение строки на токены по спецсимволу %. Вот исходник:
Вроде все понятно? Никаких особых приемов здесь не использовано. Только прошу быть аккуратнее с переполнениями буфера. Код трояна по этой части еще придется хорошенько допилить… Посылаем АТ-команды модему телефонаВ мартовском номере я уже приводил исходник программы для отправки СМС. На всякий случай, повторю основные моменты. Мы используем резервное системное устройство /dev/tty.debug, через которое посылаются АТ-команды. Основное устройство /dev/tty заблокировано родными демонами телефона и использовать его не получится. Мы инициализируем соединение на скорости 115200 бод вот так:
После этого можно писать в устройство:
Для отправки СМС используется такая последовательность команд:
Я очищаю очередь сообщений, чтобы не заморачиваться и не разбирать строку ответа модема на команду AT+CMGW. По правильному, она возвращает номер твоего набранного СМС, далее его и надо использовать для аргумента AT+CMSS. У такого подхода есть небольшой нюанс – троян прекрасно работает, но сам телефон СМС отправить после такого уже не может. Приходиться перезагружаться. В общем, этот баг я оставил специально, чтобы тебе тоже было чем заняться :). Помимо отправки СМС, допишем еще две функции, чтобы получать IMEI телефона и CCID. Это уникальные номера, их можно использовать для идентификации каждого зараженного образца.
Ну вот, закончили с АТ-командами. Теперь можно объединить все вместе в main функции. Регистрация телефона в ботнете и получение командыЧтобы хозяин знал, что в его коллекции появился еще один зверек, зараженному надо зарегистрироваться. С точки зрения трояна – это просто еще один http-запрос. В качестве параметра передает IMEI телефона и проверочный код. Код – это специальная функция, вычисленная от IMEI. В прошлой статье я приводил ее исходник на PHP на стороне сервера. А вот реализация на С:
main() – всему головаОсталось самая малость – написать главную функцию. Здесь мы будем в цикле принимать и обрабатывать пришедшие команды от сервера и, в зависимости от команд, выполнять те или иные действия. Меньше слов, больше кода:
Ну что, все очень просто и открыто. Самый главный хак в этом трояне – написанная правильными ребятами утилита ldid. Она позволяет подписать скомпиленный бинарник, чтобы он запускался на телефоне. Процедура эта уникальна для каждого аппарата. Тут возникает необходимость копировать эту утилиту на зараженный телефон, если она не была установлена самим владельцем вместе с каким-нибудь пакетом. Но это уже дело техники внедрения. Может быть, я еще напишу об этом в следующей статье… ЗаключениеВсе когда-то кончается. Вкусное пиво иссякает, интересные идеи безнадежно устаревают, мечты материализуются или уходят сами собой, а про деньги я даже не говорю. Вот и подошел к концу цикл статей по Apple iPhone. Где-то было скучно, где-то непонятно, что-то я упустил, что-то недосмотрел – без этого никуда. Надеюсь, тебе была полезна эта и прошлые статьи цикла. Как всегда, на все вопросы отвечаю в блоге – http://oxod.ru.
WARNINGВнимание! Информация представлена исключительно с целью ознакомления! Ни автор, ни редакция за твои действия ответственности не несут! Источник: http://www.xakep.ru/post/48932/default.asp | ||
Категория: Антивирусная защита | Добавил: ebook (31.07.2009) | ||
Просмотров: 845 | Рейтинг: 0.0/0 | |
Всего комментариев: 0 | |