революционные шутки aol

WOLF D.A. AKA PAYHASH FROM

Спецвыпуск: Хакер, номер #065, стр. 065-008-1

[AOLHACKERS.RU]

ПРИНАРОДНАЯ ПРЕПАРАЦИЯ НОВОЙ ВЕРСИИ ПРОТОКОЛА TOC

ВОТ МЫ И ДОЖДАЛИСЬ. ДОЖДАЛИСЬ ТОГО, ЧЕГО СТОИЛО ОЖИДАТЬ ВОТ УЖЕ МНОГО ЛЕТ. В ЯНВАРЕ 2006 ГОДА AOL ОФИЦИАЛЬНО ПРЕКРАТИЛ РАБОТУ TOC V.1, ВМЕСТО КОТОРОГО СЕЙЧАС РАБОТАЕТ НОВЫЙ ПРОТОКОЛ — TOC V.2 («С НОВЫМ ГОДОМ, РЕБЯТА»)

Как мы уже знаем, TOC — упрощенный открытый протокол (в отличие от закрытого OSCAR), рассчитанный на third party. В этой статье мы принародно вскроем особенности второй версии протокола, ужасно удобного злобным хакерам. Кстати, по окончании вскрытия стало еще меньше объяснений тому, что именно побудило AOL к такому шагу, поистине необъяснимому. Протокол модифицировался несильно, зато дополнился и стал тяжелее, чем TOC v1.

В один прекрасный момент масса сторонних клиентов, поддерживающих протокол TOC/AIM, перестали работать (например, AIM-плагин в Miranda IM). Сотни хакеров, уберкодеров (в том числе мы) ринулись расшифровывать дампы официального клиента AIM от AOL, работающего с ТОС-протоколом, причем уже с версией v2.

В ОДИН ПРЕКРАСНЫЙ МОМЕНТ МАССА СТОРОННИХ КЛИЕНТОВ, ПОДДЕРЖИВАЮЩИХ ПРОТОКОЛ TOC/AIM, ПЕРЕСТАЛИ РАБОТАТЬ (НАПРИМЕР, AIM-ПЛАГИН В MIRANDA IM)

Пожалуй, начнем с авторизации. В принципе, ее механизм не изменился, разве что увеличился в размерах пакет. По статье из сентябрьского Спеца за 2005 год (#58) мы знаем, что в протоколе TOV v.1 существует пакет toc_signon, который как раз авторизует нас на сервере AIM (TOC). Была также функция, которая собирала пакет toc_signon. В функцию мы передавали три аргумента: указатель на буфер (куда будем собирать пакет), идентификатор AIM-пользователя (screenname) и пароль от идентификатора (password). Наша функция выглядела вот так:

ЛИСТИНГ

/*

Функция конструирует пакет, с помощью которого мы будем проходить аутентификацию.

*/

static char *encode_toc_signon(char *buf, const char *screenname, const char *password)

{

char *sflap; char *data;

data=(char *)malloc(256 * sizeof(char *));

memset(data, 0, 256);

buf=sflap=flap_begin(buf, TYPE_DATA);

sprintf(data,

"toc_signon %s %d %s %s %s "%s"",

AUTH_HOST, AUTH_PORT, screenname,

roast_password(password), LANGUAGE,

REVISION);

buf=writes(buf, data, strlen(data));

buf=writeb(buf, 0x00);

flap_end(buf, sflap);

free(data);

return buf;

}

Посмотрим на дамп-пакет №1 (см. картинку №1), построенный нашей функцией (дамп снят программой snort):

Дамп пакета №1 — авторизация на сервере TOC (протокол v1)

2A 02 00 02 00 50 74 6F 63 5F 73 69 67 6E 6F 6E *....Ptoc_signon

20 6C 6F 67 69 6E 2E 6F 73 63 61 72 2E 61 6F 6C login.oscar.aol

2E 63 6F 6D 20 35 31 39 30 20 3x 3x 3x 3x 3x 3x .com 5190 xxxxxx

20 30 78 31 63 3x 64 3x 3x 3x 66 3x 3x 3x 3x 3x 0x1cxdxxxfxxxxx

64 30 65 20 65 6E 67 6C 69 73 68 20 22 4D 69 72 d0e english "Mir

61 6E 64 61 22 00 anda".

Распотрошим наш пакет по байтам (см. таблицу №1).

КСТАТИ, НАСТАЛО ВРЕМЯ ВСПОМНИТЬ ФУНКЦИЮ (СМ. СПЕЦ #58) ДЛЯ ШИФРОВАНИЯ ПАРОЛЯ ДЛЯ ПРОТОКОЛА TOC V.1:

static unsigned char *roast_password(const char *pass)

{

static unsigned char rp[256];

static char *roast = ROAST; //Где ROAST это "Tic/Toc".

Содержание  Вперед на стр. 065-008-2
ttfb: 3.5510063171387 ms