Теплым летним вечером мне пришло сообщение о том, что в одной радиокомпании проводиться кастинг интернет-диджеев
и приглашение принять в нем участие. Я и мой знакомый (который и прислал мне сообщение) пошли на этот кастинг ради денег, ведь 2-3 часа в эфире и общения по
icq за 400$ еще никакому студенту не повредили. Там
посмотрели наше поведение в эфире, дикцию...
В общем, мы не прошли ;). Разочарованные, мы удалились со студии восвояси. Несколько дней мы обсуждали фигов кастинг, слушали это радио и, как могли, находили минусы в работе новых диджеев. Вся фишка радиостанции, куда пробовались мы с друганом, заключалась в том, что DJ работает в режиме online, и общается (опять же
online) со слушателями через icq. 

Для начала я зафлудил аську одного из диджеев (для флуда использовался небезызвестный
Imtale). В этот момент
кореш сумел заразить ПК одного из диджеев новым формграбером. Как только мы не стебались над диджеями... Даже звонили голосом Путина через
Skype в студию %). Но мне всего было мало, хотелось стать настоящим диджеем и порулить эфиром... И тут
мне пришла просто гениальная идея - захватить эфир (ведь для нас, 
взломщиков, нет никаких преград, есть только препятствия)!

Действуя по довольно стандартному алгоритму, я запустил на удаленной машине nmap. Пока я варил кофе, сканер выдал свои
результаты:

(The 65432 ports scanned but not shown below are in state: closed)
Port State Service
80/tcp open http
199/tcp open SMUX
1022/tcp open ssh
8000/tcp 
8001/tcp 
8899/tcp
9015/tcp open http
Remote operating system guess: FreeBSD

Как видим, тачка незафаерволена, это, безусловно, плюс. Обдумав результаты сканирования, я загрузил данную радиостанцию у себя в винамп. Для того чтобы проигрывать потоковое аудио, лучшему в мире проигрывателю не требуется ничего, кроме файла listen.pls. Этот "чудо-файл" содержит в себе следующую информацию: 


NumberOfEntries=1
File1=http://111.111.111.111:8000/

Теперь мне стало совершенно ясно, что под портом 8000 идет трансляция. Также в Winamp я узрел "MP3 Stream Info Box". Глянув внутрь этого файла ,
ты увидишь своеобразный отчет обо всем, что происходит на 8000 порту. Подумав, что винамп может многое
скрывать, ваш покорный слуга  установил на удаленный дедик
SSS (Shadow Security Scaner) и просканил этот порт. Результат можете лицезреть сами:

ICY 200 OK
icy-notice1:
This stream requires Winamp
" target="_default">href="http://www.winamp.com/">Winamp
icy-notice2:SHOUTcast Distributed Network Audio Server/FreeBSD v1.9.7<BR>
icy-name:xxxxx.ru: DJ Z :: icq 11111111
icy-genre:Mix
icy-url:http://xxxxxx.ru
content-type:audio/mpeg
icy-pub:1
icy-br:32

Тут мы можем усмотреть ту же информацию, что и в Stream Info Box , но достаточно
расширенную. Как ты уже понял, под 8000 портом скрывается сервис под названием

SHOUTcast
.

Именно на этом ПО крутилась радиостанция...
Версия SHOUTcast 1.9.7 была прочекана на
уязвимости. К сожалению, ничего существенного обнаружено не было. Дальше в окне браузера замелькала страница официального сайта
http://shoutcast.com/. Скачав себе нужные плагины и скрипты, я наскоро просмотрел их. В моей уставшей голове крутились мысли о том, как найти путь к сердцу радио-сервера. В
то время я просто-напросто хотел забить на взлом, так бы и сделал обычный скрипткидис... Но как ты понимаешь (ты ведь не танкист
;), если бы автор данного материала забил на взлом, ниже не было бы текста, да и вообще этой статьи. 

На 80 порту сервера ничего не крутилось, точнее, крутился апач:
Apache/1.3.34 (Unix) mod_deflate/1.0.21 rus/PL30.22. Как ты
понимаешь, там ловить было нечего (если ты скажешь - КАК ЖЕ!!!, ведь есть сплоит, непременно стучи ко мне в icq, я приобрету этот сплоит
;). Как видно из отчетов nmap, на сервере крутился еще один http-сервис. Заменив
80 на 9015 порт, ваш покорный слуга перенесся на странную страницу. В этой html-паге был следующий текст:

HACK DETECTED, BAD REQUEST
CHAT DAEMON 
EMAIL: 1@1.net 
WWW: bla.bla.ru

Как видишь, я был послан на два слова : Hack
Detected. Скорее всего это был фейк, да и сердце согревало то, что в недра моего браузера был
вбит хороший анонимный прокс. Промаявшись без толку
еще полчаса, я решил,
что утро вечера мудренее ;))). Оказалось, что так оно и есть
;).

На следующий день первым делом я опять глянул отчеты SSS.
Немного пораскинув мозгами, я решил найти админку... Внутренний голос подсказывал -
админ управляет сервером через веб. И искать
надо, как мне подсказывало чутье, не на 80-м, а на 9015 порту. Поиск в гугл (site:ip_nashego_radio) ничего не дал. Ручками искать админку не хотелось. Как всегда, на помощь пришел любимый мною сканер
Nikto.

Прошло несколько минут, и я увидел то, что хотел - /adm/.

Зайдя по адресу http://111.111.111.111:9015/adm/ я и
обнаружил админку (УРА!). Как стало ясно - админка самописная. Но своими видом она мне чем-то напоминала webmin. В самом внизу красовался e-mail админа на yandex.ru.
Что делать дальше? Теперь мне было необходимо найти
брутфорс для админки. Либо брутить мыло на yandex через
Brutus и надеяться, что админ настолько туп, что юзает везде одинаковые пароли.
Да еще и http-порт был не 80, а  9015... Конечно, в такой ситуации можно использовать перенаправление и т.п. Но не лучше ли было найти хороший скрипт, в
котором можно было бы добавить свои параметры? Постукав в аське к знакомым,
я нашел скрипт следующего содержания:

#!/usr/bin/perl
use MIME::Base64; 
use IO::Socket; 
use POSIX;
$server="234.234.234.234";
$port="9015"; 
$dir="/admins";
$logfile="sucess.log";
$log="1.log"
$words="passs.txt";
$user="admin";
$i=0; 
foreach $pass (@data) { 
$i++; 
chomp($pass); 
open(file, ">$log") or die print "$!\n"; 
$perc=($i*100)/$total; 
$perc=ceil($perc); 
print file "$perc\% Done\t$i of $total\t\tNow: $user\:$pass\n";
close file; 
$auth=encode_base64("$user\:$pass"); 
chomp($auth); 
$socket=IO::Socket::INET->new( PeerAddr =$server, 
PeerPort =$port, 
Photo =tcp) 
or die print "Unable to connect to $server:$port\n"; 
print $socket "GET $dir HTTP/1.1\n"; 
print $socket "Host: $server\n"; 
print $socket "Accept: */*\n"; 
print $socket "Referer: http://support.microsoft.com/\n"; 
print $socket "User-Agent: Internet Explorer 6.0\n"; 
print $socket "Pragma: no-cache\n"; 
print $socket "Cache-Control: no-cache\n"; 
print $socket "Authorization: Basic $auth\n"; 
print $socket "Connection: close\n\n";
$ans=<$socket>; 
if ($ans=~/200 Ok/i) { 
open(logf, ">>$logfile") or die print "$!\n"; 
print logf "$user:$pass is OK!!!\n"; 
close logf; 
exit 0; 
} 
}

Хочется сказать респект авторам данного детища. Добавив к скрипту словарь для брута, я запустил скрипт. Результат меня просто ошеломил! Пароль был подобран за 20 минут и был "мегапуперсложным" -
seksy!

 

Внутри сервера

В админке я получил нечто типа веб-шелла. Тут было даже выполнение команд. Проверив свои права, я понял, что мне дана группа
wheel.  Действительно, зачем запускать апач и админку под www или
nobody... Однако скоро стало ясно, что просто так бастионы фряхи не рухнут.
Хотя и было видно, как админ наплевательски относится к своей работе - были замечены конфиги программ,  какие-то скрипты, брошенные в корне, и т.п. Но если ОС
семейства BSD, то она даже под руководством неграмотного админа будет  держаться очень долго - ведь ядро было из стабильной ветки.

 

Захват эфира!

Моих прав хватало на то, чтобы с лихвой перемещаться по каталогам и даже редактировать файлы. Скачав себе на машину идентичную версию SHOUTCast для FreeBSD, я стал разбираться со скриптами. Через 5 минут работы
я уже знал, что SHOUTcast все свои конфиденциальные данные хранит в файлике под названием sc_serv.ini. Открыв этот файл на сервере, я увидел  следующее:

PortBase - порт, на котором будет работать сервер; 
MaxUser - максимальное количество пользователей, одновременно слушающих вашу радиостанцию; 
Password - пароль для удаленного администрирования (вот
это мне и было нужно).

Бережно записав пароль в блокнот, я начал
думать о замене потокового аудио. После
прочтения нескольких доков по этому вопросу через пару часов был найден оптимальный вариант.
Для удаленного администрирования и т.п. используется обычный
WinAMP, усиленный плагинами от SHOUcast. Поставить их и  настроить у меня особого труда не вызвало - в конфигурации плагина
в поле Address указываем адрес компьютера, на котором  установлен сервер. Если он находится на этом же ПК, то Localhost или 127.0.0.1. В моем случае туда вписал удаленный сервер. В  полях Port и Password указываем то, что написано в sc_serv.ini на удаленном сервере. Вот, в принципе, и все, уже сейчас я мог без проблем подключиться в эфир и болтать всякую чухню. Но как охота, чтобы везде отражались заветные слова - Радиостанция  захвачена внеземными цивилизациями...

Чтобы сотворить такое чудо, я проделал следующие действия.
В настройках плагина в закладке Input указывается то, что собираемся передавать в эфир. Если только музыку, то в выпадающем списке оставляем Winamp, в противном случае указываем Soundcard Input, при этом станут доступны следующие параметры и кнопки: 

Open Mixer - открывает окно стандартного системного микшера;
Push to Talk - позволяет передавать в эфир голос с микрофона, не прерывая при этом музыку;
Lock - активирует "залипание" Push to Talk;
Music Level, BG Music Level, Mic Level, Fade Time - ползунки, задающие уровни громкости музыки, фоновой музыки при работе микрофона, громкости микрофона и скорость затухания... 

В общем, все, что нужно. Коннектимся… И вот мы в эфире!

 

INFO

Как всегда, до особо горячих парней хочется донести ценную инфу - не шути с УК РФ,
с ним шутки плохи ;).

Check Also

Ботнет Neutrino захватывает веб-шеллы других хакеров

Специалисты Positive Technologies сообщают, что операторы Neutrino сменили тактику и уже б…

Оставить мнение