ОХРЕНИТЕЛЬНЫЕ ИСТОРИИ С M*CTF 2017 Описываю эти события, пока они еще свежи в моей памяти. Но перечитывая все это, я понимаю, что весь хаос, который творился на этих “соревнованиях”, описать невозможно. Будет интересно сравнить впечатления с другими командами, если они тоже захотят поделиться наболевшим. Охренительная история №1: Маскарад vs Сабмитилка. Начнем с корня всех проблем: судя по всему организаторы увидели сабмитилку незадолго до начала соревнований, потому что встроить ее в инфраструктуру им не удалось. Чтобы понять, что произошло, нужно знать несколько фактов: Изначально в сети был настроен маскарад, трафик от всех команд приходил как трафик от нулевой подсети. Сабмитилка определяла, от какой команды пришел флаг, по третьему октету IP. Среди команд была команда жюри «Жгутик», которой принадлежала нулевая подсеть. Все флаги, которые присылали команды засчитывались команде жюри. Мы поняли это, когда пытались понять, где в сервисе лежат флаги, засабмитили свой флаг в качестве теста и получили -1 в пользу «Жгутика». Итого первая половина соревнований была битвой за SLA, работали только деструктивные атаки. Перед обедом внезапно отключили маскарад и сабмитилка заработала. Охренительная история №2: Роутеры - зло, они запрещены. Владельцы маков бегите покупать переходники. Обещаем, на всех хватит патчкордов. По два на каждого. По факту не хватило даже на компы, хорошо, что взяли с собой запасные. Охренительная история №3: Зачем вам шнур питания, у вас уже есть один. В период гонки SLA у всей команды внезапно падает сеть. Три раза. В итоге мы попросили новый свитч, и нам его достаточно быстро принесли. Только без шнура питания, ведь просадка SLA и перетыкание на скорость 10 патчкордов - это обычное дело. Охренительная история №4: Проблема на вашей стороне. По авторской задумке один из сервисов должен был возвращать флаги, закодированные шифром Виженера. Флаг должен иметь фиксированную длину в 32 символа. Соответственно, его шифротекст должен быть той же длины. Но нам приходили шифротексты длиной примерно 27-29 символов, так как шифрование было реализовано криво. На попытки указать на это организаторы отвечали, что мы делаем что-то не так, хотя и признавали, что используют именно шифр Виженера. Однако после того, как один из игроков пожаловался в Телеграм на “криптографическое преобразование, которое нигде ни в коде, ни на серверной части никак не используется”, флаги стали раздаваться открытым текстом. Самое замечательное в этой истории то, что об этих изменениях в сервисе командам никак не сообщили. Охренительная история №5: Сервисы менялись и патчились по ходу CTF. Сервис на Java, к которому мы писали эксплоит два часа, решили неожиданно пропатчить. Орги сообщить об изменениях опять не потрудились. Охренительная история №6: Сервис, который не смог. Один сервис - плюсовый бинарь с блокчейном - так и не заработал до конца соревнований. Вернее, не работал его чекер, и этот факт орги не признавали первую половину соревнований. На него лично мы потратили около 3х человекочасов (возможно, другим командам повезло меньше). Перед обедом орги сказали, что чекер, возможно, заработает, но он так и не смог. Никаких общих объявлений о том, что сервис не работает и не заработает, опять же не было. Охренительная история №7: Поесть нельзя защищаться. Настало время обеда. В это время запланирован перерыв в соревнованиях, чтобы участники отлипли от мониторов и смогли нормально поесть, не боясь, что они пропустят какую-нибудь атаку. Мы с командой уже собирались идти в столовую, но вдруг Миша говорит, что нас атакуют. На часах примерно 13.05, то есть уже сеть должна быть закрыта. Но она открыта, остановлена только раздача и проверка флагов и учет SLA. На прямой вопрос, собираются ли организаторы закрывать сеть, они ответили, что будут остановлены скорборд и раздача флагов. Игорь говорит, что сейчас он сам закроет сеть и выдергивает шнур питания свитча. Охренительная история №8: Как фильтровали наш трафик. Когда мы начали тащить флаги по сервису md, мы заметили, что одна из команд фильтрует трафик от нас. Сначала флаги шли, потом соединение установить не удавалось, при этом на скорборде их сервис оставался зеленым. Мы смогли стащить у них еще немного флагов с других ноутбуков и даже с пишки, но они в итоге тоже попали в бан. Другая команда творила что-то с трафиком сервиса flg, когда мы баловались форк-бомбами. Соединение устанавливалось и тут же обрубалось, не было возможности отправить какой-либо запрос, ни легитимный, ни деструктивный. При этом судя по скорборду сервис работал правильно. Как позднее выяснилось, эта команда не фильтровала трафик, просто установила маленький таймаут на соединение, переписав бинарный сервис на питон. Мы неоднократно жаловались оргам, показывали прямо при них, как это работает. На все претензии орги отвечали, что либо маскарад, либо работающая сабмитилка. Не знаю, делали ли они хоть что-то, чтобы исправить положение, подходили ли к командам (UPD: не подходили), но принятые ими меры действия не возымели. Охренительная история №9: Как мы зафильтровали DoS. Бинарный сервис flg содержал RCE, которую одна из команд пыталась эксплуатировать. Тут стоит отметить, что к этому моменту RCE уже была у нас пропатчена и на атаки с их стороны нам было в принципе побоку, если бы не одно “но”. Они написали эксплойт, который не закрывал TCP-соединения. Сервис работал в один поток, поэтому 30 соединений в очереди от одной команды тупо вешали наш сервис - это был классический флуд. Мы подходили к этой команде два раза и просили закрывать за собой сокеты, но они отказались признавать свои действия DoS-атакой, которые запрещены на всех нормальных CTF. Орги также пропустили наши жалобы мимо ушей и ничего не сделали. Тогда наши нервы не выдержали, и мы зароутили подсеть этой команды куда подальше. Мы нарушили правила, это правда. Охренительная история №9.1: Как боролись с нашей фильтрацией орги. Выдергиванием патчкордов на n-ное количество раундов. После того, как в Телеграме пожаловались на нас, орги решили все-таки отреагировать. Nikolay Tkachenko, 26.11.17 17:16 Lights out, подсобите — уже два раунда ваши серваки не пингуются и не могу достучаться до ваших серваков Nikolay Tkachenko, 26.11.17 17:16 Что за прелесть? Nikolay Tkachenko, 26.11.17 17:16 Почему вы зелёные оба раунда? Alexey Rodionov, 26.11.17 17:21 ща тоже зафильтруем Alexey Rodionov, 26.11.17 17:21 будет 1-1 Последние два сообщения до нас уже не дошли, так как орги просто без предупреждения отключили нашу подсеть. Ровно за один раунд они нашли способ бороться с фильтрацией, стоило только другой команде об этом написать. Мы позвали их и снова попытались объяснить, что другие команды тоже так делали, что это было нарушение в ответ на нарушение. Тогда орги отключили подсеть еще нескольких команд, которые фильтровали трафик (UPD: они не разбирались, кто фильтровал трафик, а кто нет, просто отключили всех, на кого были жалобы). После этого мы пытались позвать оргов еще, но они отказались к нам выходить. А потом внезапно, когда SLA просело достаточно, вставили обратно до конца соревнований. Как сказал Минин - от нас шла “атака”. Охренительная история №10: 16 флагов. Примерно за полчаса до конца сабмитилка конкретно свалилась. До этого она тоже работала с перебоями, но, видимо, в этот раз все было совсем серьезно, потому что орги пришли к команде, которая эту сабмитилку предоставила. В какой-то момент она заработала, но только у этой команды. Они разом засабмитили около 20 флагов по сервису p, из которых 16 были нашими. 16 флагов в один раунд по одному сервису одной команды, Карл. Когда сабмитилка заработала и у нас, из всех наших флагов по этому сервису не устарели только 2. Мы не знаем точно, сколько раундов живут флаги, так как код сабмитилки так и не раскрыли, а в регламенте время не закреплено. Но по нашим наблюдениям срок жизни составлял не более 5 раундов. UPD: предполагаемая причина такого бага - замерший раунд на сабмитилке. ЗЫ: Я не ставлю своей целью обвинить Shadow Servants в чем-либо. Я понятия не имею, зачем и на каких условиях они помогали в организации M*CTF. С их стороны это вполне может выглядеть так: “Я почти дописал эксплойт, как вдруг орги заставили меня чинить сабмитилку, мне бы ваши проблемы.”. Но со стороны организаторов это просто полный ПОЛНЫЙ провал. #mctf#мцтф#мктф#Арсиб#Kaspersky#Ростелеком#1С#Воентелеком#Zelax#Groupib#КРОК

Теги других блогов: соревнования M*CTF 2017 битва за SLA