РусКрипто’2010: резюме по CTF

Состоялось первое соревнование по защите информации (Capture the flag, CTF), разработанное в свободное от работы время силами сотрудников компании Positive Technologies, при участии Александра Матросова (представителя компании ESET). По полученным отзывам от участников соревнования [1,2,3,4,5,6,7,8,9,10] можно говорить о том, что мы сумели провести это мероприятие на достойном, высоком уровне, что не может не радовать :)

По результатам состязания CTF, первое место заняла команда от института ИТМО CIT, во главе с очаровательной девушкой Дарьей Жуковой, которая является капитаном и координатором указанной команды. Питерская команда CIT сохраняла позиции лидерства на протяжении всего времени проведения CTF. Второе место заняла команда ХакерДом, участвующая в состязании от института УрГУ. Следом за Екатеринбургской командой ХакерДом, с небольшим отрывом, третье место завоевала Московская команда Bushwhackers (МГУ), вырвавшие его у Томской команды SiBears (ТГУ) на последних минутах соревнования. Нужно сказать, что на протяжении всего состязания CTF наблюдалась активная борьба за второе и третье места. При этом команда CIT стабильно держала разрыв в 50-100 очков от ближайших к себе соперников, не позволяя даже приблизиться другим участникам к первому месту.

Так выглядел демонстрируемый экран по окончанию соревнования:


К слову, любая команда могла заработать 985 баллов за захват флагов у команд соперников (таким образом, можно говорить о том, что нашли далеко не все) и до 150 баллов за отправление уведомлений об уязвимостях. На следующем скриншоте видно, что первыми активность проявила команда SiBears (одна из наиболее организованных команд) в виде написания адвизори. А команда CIT первыми стала собирать флаги в "системе документооборота".


Стоит добавить, что в качестве легенды соревнования CTF использовалось повествование "Лавина" Нила Стивенсона и все сервисы были разработаны в этом киберпанковском направлении.


За время проведения соревнования никто не был оштрафован, а при определении победителя во внимание бралось только количество набранных баллов. Если посмотреть на совокупный процент доступности отслеживаемых сервисов у команд за все время проведения соревнования, то получены следующие результаты:
  • CIT – 81,29%
  • ХакерДом – 79,03%
  • Bushwhackers – 71,93%
  • SiBears – 75,80%
  • [Censored] – 80%
  • Huge Ego Team – 82,58%

Стоит добавить, что команда SiBears (первыми) догадались до проведения диверсий в "службе управления печами";) Возможно именно поэтому доступность сервиса "SENSORS" оказалась не столь высокой.


От себя лично и от лица компании Positive Technologies хочу выразить благодарность:

Компании "HELiOS IT-SOLUTIONS" за предоставленное оборудование, которое с запасом справилось с нагрузкой от действий хакеров :)

ГК Компаний "Ланит" за предоставленное коммуникационное оборудование Cisco (надо сказать, коммутаторы Cisco были для нас приятным сюрпризом).

Компании "Cisco Systems, Inc" за предоставленные беспроводные точки доступа для проведения этапа соревнования, связанного со взломом WEP.

Компании "ESET" в лице Александра Матросова, за предоставленные подарки и активное участие в подготовке соревнования.

Компании "1-C Битрикс" за предоставленные лицензии на свой продукт и за дополнительные подарки команде, выполнившей бонусное задание с использованием встроенного WAF в CMS Битрикс (бонусный подарок получила Калининградская команда [Censored]).

"Ассоциации РусКрипто" за предоставленную площадку. Компаниям "АИС" (в частности Екатерине Гавриловой и Павлу Филимоненкову) и "АКТИВ" (в частности Анастасие Харыбиной) за активное участие и помощь в организации соревнования CTF.

Разработчикам CTF и всем причастным к его воплощению:


И, безусловно, всем командам, которые откликнулись на наше приглашение и приехали сразиться на РусКрипто CTF’2010.

Подробное описание по всем заданиям CTF, описание хода соревнования в хронологическом порядке, видео-компиляции и фотоальбомы будут опубликованы в течение месяца.

38 комментариев :

  1. Помнишь, там в финальном слове представитель ruCTF говорил о Московской лиге? Что думаешь про это?

    p.s. А помимо описаний, сами образы будут? )

    ОтветитьУдалить
  2. Отвечу свой offtopic.

    >Московской лиге

    Это желание встроить в свою систему понятий Рускрипто CTF. А оно отдельное.

    В принципе мы не против поддерживать студенческие CTF в Москве.
    Буде какое-то движение намечается.

    Но имхо - Рускрипто CTF это тот формат который нам подходит, ибо связан с событием, площадка независимая, студентам можно потусоваться на конфе, мероприятие можно сделать открытым. И главное - не будет всяких вопросов типа "студенты должны сами отправлять задания", "в судействе должны участвовать представители минобра", "а у вас правила не правильные, потому как у ruCTF другие" и т.д.

    Для меня главное, чтобы ВУЗы раскачались и начали отправлять студентов на CTF, а возможно на конференцию вообще. Ну и спонсоры подтягивались :)
    Если для этого надо чему-то формально соответствовать - можно посмотреть на эти формальности. А так- ну из в пень.

    ОтветитьУдалить
  3. to Andrew Petukhov:

    >> в финальном слове представитель ruCTF говорил о Московской лиге? Что думаешь про это?

    думаю, что представитель ruCTF попросту опасается конкуренции...

    >> p.s. А помимо описаний, сами образы будут? )

    Проведем подробный "разбор полетов", а сами виртуалки выкладывать не будем.

    ОтветитьУдалить
  4. Вот очень плохо,что не будут выложены игровые образы, т.к те люди которые не смогли поехать на соревнования не смогут опробывать свои силы ... а уж очень бы хотелось.

    С уважением,Константин.

    ОтветитьУдалить
  5. >Вот очень плохо,что не будут выложены игровые образы

    Рано или поздно выложим. Но не завтра :)

    ЗЫ. Было много динамики, которую многие восприняли как "Странные появляющиеся в сети машины с которыми непонятно, что делать" и воспроизвести ее только на образах не получится.

    ОтветитьУдалить
  6. Хотелось бы на будущее попросить более четких правил.
    Особенно по части диверсий, которые кто-то догадался, а кто-то не догадался сделать)

    Ну да, у нас была возможность перенастроить маршрутизаторы команд так, чтобы доступность их сервисов в принципе стала нулевой, но мы посчитали, что это противоречит правилам.

    Кроме того, не совсем понятно, по каким причинам все сервисы на всех машинах(ну по крайней мере, большинство), запускались с рутовыми правами? Это фича или баг?

    PS. Я знал, что не зря припер книгу на соревнования =)

    ОтветитьУдалить
  7. >> на будущее попросить более четких правил

    Обязательно учтем!

    >> у нас была возможность перенастроить маршрутизаторы команд
    >> что это противоречит правилам

    Верно.

    >> запускались с рутовыми правами? Это фича или баг?

    Баг. Мы ожидали получить соответствующее уведомление :)

    >> PS. Я знал, что не зря припер книгу на соревнования =)

    %)))

    ОтветитьУдалить
  8. Вообще всё классно и с юмором ( мне понравилось), но то что флаги редко обновляются. и так сильно раскиданы баллы за то что сдал первым кто вторым кто третьим... и так мало платють за адавизори по сравнению с флагами...меня это всн угнетает =(

    ОтветитьУдалить
  9. 1. Флаги обновлялись (появлялись) в среднем раз в час. Просто в других местах :) На одной баге можно было собрать несколько флагов, но не в том же месте (вспомните - "вам письмо!" или "IDS alert").

    2. За первый-второй-третий давали одинаковое кол-во очков, но тот кто первый пошел собирать флаги обычно набирал их больше - ибо позже баги патчили :)
    3. За адвизари действительно маловато, скоринг пересмотрим. НО! Флаг - это таки рабочий ксплоет, иногда с шелкодесом даже, что требует компелировать в месте!

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

    ОтветитьУдалить
  10. >Особенно по части диверсий

    "Диверсия" в этом контексте - бага, которой можно было воспользоваться для "выключения печки". Сайберы отрапортовали ее первой (и единственные?).
    А про рута да, ждали адвайзори, ждали :)))

    ОтветитьУдалить
  11. >> Вообще всё классно и с юмором ( мне понравилось)

    tnx :)

    >> Настоящие "пентестовые" флаги, типа того же Нео, Циски и "Windows 98 дядюшки Энцо" - висели...

    угук. команда ХакерДом на последних минутах игры даже подобрались к флагам на win98, но... не догадались, что флаг нужно искать в pwl-файле :) я полагаю им не хватило времени.

    кстати по поводу "было мало флагов". всего было 134 флага за 8-мь часов игры (т.е. приблизительно 16 флагов в час). взять большинство из них можно было только при эксплуатации уязвимости(ей). "на халяву" давались только пара флагов...

    ОтветитьУдалить
  12. >всего было 134 флага

    Димч, флагов было 132. 134 - это "ошибка округления" экселя. Ты посчитал с заголовком таблицы :)

    Немного деталей. У каждой команды было (за всю игру) по 22 флага. Взять они могли по 110 флагов. Состояния менялись ~~2 раза в час. Основные флаги либо появлялись либо в "новых местах", либо в старых, но только через новые дыры.
    Идеальный таймлайн:

    9:00 Начало соревнования
    10:15 Появляются беспроводные точки доступа
    10:25 Появляется компьютер менеджера (windows)
    11:25 Меняется состояние jail1
    12:15 Меняется состояние jail3
    13:20 Меняется состояние jail2
    13:38 На два часа в JAIL4 помещается бонусный ключ
    14:30 В jail5 появляется back-shell
    14:40 Появляется win98
    15:12 На полчаса в JAIL5 помещается бонусный ключ
    15:22 На один час в JAIL2 помещается бонусный ключ
    16:20 Меняется состояние jail1 (дефейс)
    18:00 Вы уволены!

    ОтветитьУдалить
  13. >> Димч, флагов было 132. 134 - это "ошибка округления" экселя.

    нет;) 134 (два флага появились в последние дни подготовки)

    ОтветитьУдалить
  14. Чтож тогда тогда YOURFLAG.TXT, keyexchange.php, serial печек и джанга выдавали одни и теже флаги? =) когда мы сдали сии, то потом еще долго ждали их обновления.. не дождались. А фиксы, угу, были со стороны команд, однако все как то забывали делать фикс после обновления ;) особенно после "массивной хак атаки на сайты". Всеравно журейка говорила что флаг уже сдан. Мы много времени просто просидели, потому что браться не за что было.

    На счет cisco. Не няшно оставлять работать только show run, запрещая тоже show int и прочее. Как я могу догадаться, что у меня действительно терминал, если он не выполняет ls, а выполняет только ls -lad ? не совсем логично.

    ЗЫ: Досадно что всё было в одной комнате, я помойму слишком громко говорил про печки... +(

    ОтветитьУдалить
  15. >> YOURFLAG.TXT, keyexchange.php, serial печек и джанга выдавали одни и теже флаги?

    у какой команды? (почему не сообщили?)

    >> Всеравно журейка говорила что флаг уже сдан

    т.е. хочешь сказать, что флаг, который появился в файле /YOURFLAG.TXT после "массовых дефейсов" не принимался системой?

    >> На счет cisco

    это был "TCL руткит" с заданным набором команд. cisco была доступна по 23/tcp

    ОтветитьУдалить
  16. >> Всеравно журейка говорила что флаг уже сдан
    >> т.е. хочешь сказать, что флаг, который появился в файле /YOURFLAG.TXT после "массовых дефейсов" не принимался системой?

    По логам. Последние три флага на последних минутах, отправленные командой Bushwhackers - это флаги из файлов YOURFLAG.TXT, расположенные на первой машине (www) и появившиеся после дефейса. были захвачены флаги следующих команд: HACKERDOM, [CENSORED], HUGEEGOTEAM.

    ОтветитьУдалить
  17. >> keyexchange.php

    содержимое файла:


    if ($_SERVER['REMOTE_ADDR']=='192.168.0.1')
    {
    print "<? \$t = '6cd85e8f183008b198f0761ac4fd0af7'; ?>";
    }
    else if($_SERVER['REMOTE_ADDR']=='192.168.1.1')
    {
    print "<? \$t = '5fba82da1bdeee958cf00ad8d98333cf'; ?>";
    }
    else if($_SERVER['REMOTE_ADDR']=='192.168.2.1')
    {
    print "<? \$t = 'e60770c05f432898bcad934d34d1cd18'; ?>";
    }
    else if($_SERVER['REMOTE_ADDR']=='192.168.3.1')
    {
    print "<? \$t = '72c8fd6e8c20f98be1f0c4dbb542e971'; ?>";
    }
    else if($_SERVER['REMOTE_ADDR']=='192.168.4.1')
    {
    print "<? \$t = '19671d860e921cbd3687f209b5080125'; ?>";
    }
    else if($_SERVER['REMOTE_ADDR']=='192.168.5.1')
    {
    print "<? \$t = 'e211ec95e5ee1996249b25fd57a02e2b'; ?>";
    }

    флаг отсюда можно было получить выполняя команды на сервере (192.168.X.1) или через XSS

    ОтветитьУдалить
  18. отсюда напрашивается вывод, что вы вводите меня в заблуждение :)

    ОтветитьУдалить
  19. начал воссоздавать картину CTF:

    до 11:35:53 команда CIT жадно собирает флаги.
    захвачен флаг на www (у [CENSORED]), три флага через path traversal на третьей машине (система документооборота), три бонусных флага на той же машине (over HEAD). примечательно, что по три флага было захвачено в сетях выше диапазоном ip.

    после 11:35:53 команда SiBears захватывает флаг у команды CIT с пятой машины (tests) :)

    ОтветитьУдалить
  20. c 11:51:47 команда CIT догадывается о нижележащих ip диапазонах и начинает стричь флаги с них:)

    ОтветитьУдалить
  21. кстати забавно, команды почему-то начинали собирать флаги из сети [CENSORED] (исключение, команда SiBears)... так поступили CIT, потом Bushwhackers, а за ними ХакерДом.

    ОтветитьУдалить
  22. 12:14:56: следом за SiBears, команда Bushwhackers захватили флаг с тестового ресурса (tests) у команды CIT

    ОтветитьУдалить
  23. 13:04:23 SiBears
    Уязвимость "соц.инженерия"
    Описание уязвимости:

    Уязвим стол с едой.
    Эксплойт: съесть всю еду, чтобы другие команды голодали.

    =))

    ОтветитьУдалить
  24. Тобишь keyexchange не менялся? =)

    после массовой атаки, ага, мы состригли флаги, однако чтото это мало что дало. Во всяком случае, имхо, дырявость www заметели первыми мы - я сразу после ролика новостей полез в php скрипты ( фриланс, фриланс.. ) и обнаружил инклуд - if(isset($_GET['v'])) include($_GET['v']); Ну и тут же сплойтить - v=/YOURFLAG.TXT. вроде бы даже со всех сняли... или не со всех?.. Но после сего файл не обновлялся, а r57 шеллы висели у команд еще долго... Стас юморист, у нас тоже оставил - пусть живет, не мешает жеж никому... +)))

    Немного линки: http://sibears.ru/news/ruskripto-ctf-glazami-sibears/

    ОтветитьУдалить
  25. >> Тобишь keyexchange не менялся? =)

    c keyexchange каждая команда могла получить 5 флагов. keyexchange не менялся.

    >> после массовой атаки, ага, мы состригли флаги, однако чтото это мало

    верно, потому как воспользоваться готовым веб-шеллом для захвата флага достаточно просто:)

    >> Во всяком случае, имхо, дырявость www заметели первыми мы

    верно. в его первом состоянии (я еще не дошел до последнего) а флаги с него первыми (в первом состоянии) состригли CIT и Bushwhackers

    ОтветитьУдалить
  26. по линку:

    спасибо за позитивный отзыв!!! :)

    >> тот, кто сдал флаг первым, получал очков намного больше, чем те, кто сдавал этот же флаг потом

    неверно. все флаги имели одинаковую статику.

    >> на управление роутерами Cisco, мы ткнулись, попробовали все что помнили из команд cisco, но на все был один ответ - Error

    это был TCL-rootkit, реальная (почти) циска весела на 23 порту :)

    >> доступ к роутеру давался только клиенту с определенным айпишником

    небыло такого:)

    ОтветитьУдалить
  27. (13:40:45) команда Bushwhackers первыми воспользовались уязвимостью command execution over ajax на второй машине (web)

    ОтветитьУдалить
  28. Интересно было бы посмотреть динамику набора поинтов на графике ;)

    ОтветитьУдалить
  29. (13:43:05) а команда ХакерДом первыми получили level 15 на циске

    ОтветитьУдалить
  30. wow! (13:48:28) команда Bushwhackers первыми воспользовались уязвимостью с однобайтовым переполнением на четвертом ресурсе (управление печами, sensors). ну а флаг был получен с ресурса, принадлежащего команде CIT :)

    ОтветитьУдалить
  31. >> Интересно было бы посмотреть динамику набора поинтов на графике ;)

    угук, сделаю

    ОтветитьУдалить
  32. ха-ха %))) 13:50:51 (~ через 2 минуты) команда CIT захватывает флаг на четвертом ресурсе (управление печами, sensors) у команды Bushwhackers :))) и начинает массово состригать их у других команд...

    PS. это были самые жирные флаги

    ОтветитьУдалить
  33. забавно, если в начале игры первый флаг по уязвимости брали с инфраструктуры [CENSORED], то с середины игры уже с инфраструктуры CIT :)

    ОтветитьУдалить
  34. >> доступ к роутеру давался только клиенту с определенным айпишником
    По крайней мере у нас единственный, кто мог заюзать ваш tcl-бэкдор, был человек с айпишником 192.168.1.12 . Остальные даже соединиться с 2002м портом не могли...
    Потом в running-config мы увидели этот адрес(не помню уже в каком контесте) и решили, что там фильтрация по ip. А чего на самом деле?

    ОтветитьУдалить
  35. на самом деле образ циски был запущен на 192.168.x.10 в конфигурации которой было очень много мусора. в nvram:/ лежал фейковый файл с расширением rar, который не содержал флаг. флаг был рядом в текстовом файле.

    на 192.168.x.10 был запущен tcl-скрипт (aka tcl-rootkit), который биндил 2002 порт. используя "sh flag" можно было получить еще один флаг.

    фильтрации не было, нужно было обращаться к нам, если были трудности с подключением...

    ОтветитьУдалить
  36. Дима когда встреча, семинар по CTF?

    ОтветитьУдалить
  37. Семинар по CTF состоится 27 мая 2010 г., с 15-00 до 17-00, по адресу: Москва, Первомайская ул., 126 (схема проезда: http://infosystems.ru/about/contacts.html).

    Во время мероприятия будет организована онлайн трансляция выступлений (через firmbook.ru) и сессии вопросов и ответов.

    ОтветитьУдалить