Дмитрий DarkByte Москин

Мой блог, да.
logo

PHD: King of the Hill

Опубликовано 04.09.2012 автором Дмитрий Москин
Закончился "самый реалистичный конкурс для хакеров" Царь горы от Positive Technologies. Цель конкурса была в захвате и удержании различных сервисов в игре.



В идеале нужно было захватить Active Directory, который находился во внутренней сети организации. Чтобы до него добраться, нужно было захватить либо веб, либо другие сервисы. Сложность игры была в том, что после захвата кем-либо сервисов, они изменялись.

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

Зато с сервисами сложилось получше. В один прекрасный момент мне удалось подключиться по протоколу ftp к серверу и скачать файл, который там находился. В файле была пара логин:пароль, причём логин был sadmin. Сразу вспомнил, что в форме авторизации на порту 8080 был html комментарий "sadmin/wadmin". Ввёл туда полученные данные, а в ответ получил доступ к SSH и флаг. Попытался отправить флаг, в ответ получил, что флаг не правильный. Позже заметил, что флаг копируется с пробелом на конце. Убрал пробел и флаг приняли. А потом сценарий сменился...

Через SSH можно было получить доступ ко второму уровню игры, на котором через LDAP нужно было изменить конфигурацию сервера так, чтобы к нему можно было получить доступ. Сделать этого мне не удалось, поэтому AD я так и не захватил. Впрочем это удалось только одному участнику. В итоге я занял второе место, набрав в сумме 10 дней удержания сервисов.



К середине конкурса я понял, что количество сценариев не так велико и главное вовремя определять момент смены сценария, тогда больше шансов успеть захватить флаг первому. В итоге получился скрипт, который каждые 5 секунд пытался подключиться к FTP серверу и скачать с него файл. Изначально, в случае успеха, скрипт просто отправлял содержимое файла мне в аську, т.к. иногда там попадались пары логин:хеш, причём хеши разных типов.

Позже скрипт научился брутить хеши md5, sha1, sha256, sha512. А если FTP отдавал логин с хешем, то это означало, что пароль для sadmin лежит в mysql или pgsql, поэтому скрипт так же подключался к базам, пробегался по таблицам в поисках заветного пароль для sadmin, либо новой пары логин:хеш для mysql или pgsql. Затем бот заходил на порт 8080, получал флаг и отправлял его в игровую систему.

На остальные сценарии бот не рассчитывал, да и особого смысла в этом не было. Один из таких сценариев: подбор пары логин:пароль для mysql сервера. Сложность была в том, что mysql сервер блокировал IP после N неудачных попыток и блок снимался только при смене сценария. Мне проще было подождать, пока кто-нибудь сбрутит пароль, захватит флаг, сценарий поменяется на подходящий для бота, и я практически сразу же перехватываю флаг :)

Ввиду специфики игры, из 220 участников только 7 смогли хотя бы один раз захватить сервисы, но даже среди них борьба была жёсткой, особенно между beched и Antichat за веб сервисы.