Преди няколко дни завършихме едно от най-емоционално наситените събития, които имахме късмета да организираме като част от блога - онлайн хакерска игра с разрушаване на сървъри.
Резултатите надхвърлиха всички наши очаквания: участниците не само взеха участие, но бързо се организираха в добре координирана общност от 620 души в Discord, която буквално превзе мисията като щурм за два дни без почивка за сън.
Как започна всичко и за какво става дума?
Играта започна на 12 август, когато публикувахме в блога
Беше онлайн мисия: стартирахме излъчване в YouTube от стая, която беше пълна с iot устройства, сървър под леглото (който трябваше да бъде унищожен), а над сървъра беше фиксиран аквариум и над него висеше тежест. За да направим играта по-екшън, решихме да направим награден фонд от 200 000 рубли, който заредихме в шредера и го настроихме да се включва на всеки 60 минути. На всеки час шредерът изяждаше 1000 рубли - колкото по-скоро играчите го спрат, толкова повече пари щяха да спечелят.
Изграждането на това търсене беше само по себе си търсене - трябваше да ядем само храна и да спим по няколко часа на ден точно в една и съща стая. Но най-удивителното беше да наблюдавам полета на мисълта на играчите и тяхното емоционално въздействие в процеса.
Честно казано, изобретателността на играчите при решаването на пъзелите многократно надхвърли нашата скромна идея: всяка свободна минута четехме чата на раздора и в някои случаи буквално плачехме от смях, разбирайки какво правят играчите и как се шегуват процеса.
7 души работиха неуморно по проекта: backender, хардуерен специалист, истински филмов продуцент, CG дизайнер и двама идейни копродуценти.
Ще ви разкажем в следващите публикации как точно е реализиран мисията от техническа гледна точка, но засега ще ви кажа решението: как точно е било необходимо да се хакне тази стая в предаването. В същото време нека си припомним хронологията на събитията, както и всички луди теории на илюминатите от чата на раздора и това е.
Какво имаха играчите в началото на играта?
Всички предмети в стаята бяха разделени на три категории:
- Лесни за използване iot устройства без игри
- Игрални устройства за завършване на мисията
- антураж
Поставихме 8 много лесни за управление елемента: две лампи, един гирлянд, пет букви FALCON, всяка от които може да променя цвета си. Всичко това можеше да се включва/изключва директно от уебсайта и незабавно да се вижда резултатът в предаването - ние специално ги направихме достъпни за всички играчи, независимо от тяхното ниво на техническа подготовка.
Всичко, което просто беше включено от сайта
От важните елементи на играта, които бяха необходими за завършване на мисията и достъпът до които не беше толкова лесен за получаване:
- Сървър с отворен капак и аквариум над него
- Тежест, окачена за счупване на аквариум
- Megatron 3000 - мощна лазерна показалка, насочена към въжето, което държи тежестта
- Мощен вентилатор, който стартира при натоварване на сървъра
- Флипчарт, на който са написани данните за вход и парола за Megatron
- Телефон, на който можете да се обадите и да видите обаждането си на живо
- Шредерът, който изяждаше банкноти от 1000 рубли на час
Как точно беше решен мисията?
Ще кажа веднага: ковчегът се отвори доста просто.
Целта на играта беше да спреш шредера, като предизвикаш късо съединение в стаята. За целта беше необходимо аквариумът да се счупи, като се хвърли тежест в него и сървърът се напълни с вода. Тежестта се държеше на въже, към което се насочваше Мегатрон. Чрез превземане на контрола над Мегатрон, въжето може да бъде прерязано. Това беше направено в 5 прости стъпки:
Стъпка 1. Заредете сървъра в стаята
Например изпращане на пакети с команда.
ab -r -n 10000 -c 100 -s 280 -l https://ws.ooosokol.ru/captcha
Подсказката беше много зареждаща
Същата captcha, която трябваше да бъде атакувана
Когато сървърът се зареди, температурата му се повиши и това можеше да се следи на системата за наблюдение, отворена директно пред камерата. След това вентилаторът се включи, което отвори светлинна завеса на флипчарта. След това се отвориха входът и паролата за достъп до страницата на Megatron, написани на дъската.
А самата страница за управление на Megatron може да бъде намерена чрез проверка на всички сертификати, издадени за домейна ooosokol.ru.
На поддомейн
Играчите преминаха през всички тези етапи почти веднага в коментарите на предаването в YouTube. След това задачите станаха по-сложни и играчите създадоха сървъра за раздор RUVDS Hack Room и продължиха дискусията там.
Стъпка 2: Приложете първично захранване към Megatron
Всички интелигентни устройства, управлявани от сайта (същите лампи, които играчите включват и изключват, без да спират), имат свои собствени идентификатори.
За да се осигури първично захранване на Megatron и в същото време да се освети, беше необходимо да се намери и включи скрито устройство на страницата за управление на офиса.
За да направите това, трябваше да погледнете идентификаторите на устройствата и да забележите, че има общо 4 устройства, но само 3 са налични на сайта.
Когато 4-тото устройство беше включено, страницата на Megatron стана достъпна и самият лазер беше осветен. Но в същото време беше невъзможно да се стреля с лазер и то
Съвет за управляващото дружество
3. Обадете се на управляващата компания и поискайте да включите захранването на Megatron
Според УНГ Мегатрон не можеше да стреля, защото задръстванията в офиса бяха нокаутирани. Само управляващото дружество можеше да включи отново захранването, което трябваше да се свърже и да се идентифицира като собственик на LLC.
Беше лесно да се намери номерът на управляващата компания - вмъкнахме го директно в долния колонтитул.
Но идентифицирането беше много по-трудно.
При обаждането на номер +74991130688 телефонът вдигна операторка и с отегчен глас поиска INN на фирмата и трите имена на собственика. Без това тя отказа да включи тока и обясни това с факта, че е обикновена изнесена контролна зала, те имат 2000 клиенти и офиси и без тази информация е просто невъзможно да намерят този, който им трябва.
Това се оказа най-трудният етап за играчите. Отне почти два дни, за да намеря правилния TIN и пълното име на собственика, а аз (в лицето на оператора от контролната зала) получих повече от 400 обаждания през това време. Телефонът звънеше през 2-3 минути.
Момчетата копаха колкото можеха. Всичко беше използвано: те изкормени изходния код на сайта, търсиха в Google собственика на сайта Соколов и търсиха в социалните мрежи.
Те търсели данъчни идентификационни номера на различни компании
Почти пълна схема за търсене
По някое време дори се обадиха с подправен номер - сякаш се обаждаха от офиса на фирма "Сокол", посочен в долния колонтитул.
Тогава научихме колко фирми се казват Сокол. Почти всяка една от тези компании получи обаждания от играчи, но това не беше нищо в сравнение с това, което сайтът преживя
Първо, раздорът атакува поддръжката на Lasersmasters.
Тогава успяхме да намерим нечий акаунт там! Докато поддръжката на Lasermasters вече е престанала да спестява изрази.
Внимание, дръжте децата далеч от екрана
В крайна сметка Lasermasters решиха просто да ги дразнят и сайтът им се срина. Така както успяхме да свалим площадката на Сокол, но бързо я вдигнахме.
По време на разследването момчетата от раздора дори намериха актьор, чиято снимка купихме от акциите, за да играе ролята на главния антагонист, собственика на LLC Андрей Соколов. Оказа се, че той се казва Юри и няма абсолютно никаква представа в каква каша се е забъркал.
Андрей Соколов, герой на играта
Юри, модел
Само ако знаеше как е принудил 600 души да не спят два дни...)
След това започнаха да копаят специално за мен, като организатор на мисията (която можеше да завърши успешно, ако момчетата се бяха досетили да хакнат работните ми канали).
Дори малко се притесних, когато назоваха бащиното ми име и дори идентификационния ми номер на данъкоплатеца. Но беше облекчено, когато, докато повреденият телефон работеше, внезапно имах по-голям брат, който внезапно се оказа технически директор на Habr.
Моят скъп брат, който също страдаше
Междувременно предположенията ставаха все по-невероятни
И се стигна до теориите на илюминатите.
Най-пикантните теории на конспирацията се отнасяха до Спондж Боб, Хари Потър и мигането на китайския диоден гирлянд, който поставихме в системния блок.
Откъде са Спондж Боб и Хари Потър, ще кажете? Поставихме техните адреси в страницата за контакти на Сокол и това породи много спекулации в дискорд общността. Въпреки че просто искахме да отдадем почит на любимите ни произведения от детството.
Същата препратка на страницата "
И като резултат
Оказа се, че в сериала наистина има документи за Спондж Боб. Те се наричаха TIN
Една от най-сложните теории беше, че мигащият китайски гирлянд съдържа съобщение на морзова азбука.
Трептенето беше записано и се опита да бъде дешифрирано
Една по-проста теория е, че момчетата са се опитали да разберат дали уликата е скрита в картите.
По пътя ни сравняваха
Играчите опитаха социално инженерство с всички сили. Извикаха ме под прикритието на ФСБ, пожарникари, самият Соколов, бившата му съпруга и охраната, която уж седи долу. Те казаха, че е започнал пожар, някой е заседнал в асансьора, а най-сърцераздирателната история е, че кучето на обаждащия се уж седи в офиса, обхванато от огън.
Имало е и опити за подкуп
Бавно моите собствени мемета започнаха да се появяват в чата.
Ето една двойка
Междувременно фабриките бездействаха
помощ
В шредера имаше все по-малко пари. За да може победителят да получи поне нещо, решихме да направим намек. В същото време, следвайки правилата на дизайна на играта, вдигнете напрежението точно преди финала.
Отделно
Решихме да приложим същата механика и вмъкнахме съвет на 25-ия кадър как да го направим
След това момчетата го разбраха много бързо
Стъпка 4. Стреляйте с лазер в небоен режим
Когато захранването беше подадено от управляващата компания и след включването на щепселите, Megatron се включи и можеше да запали в тестов режим. Във формата за въвеждане вече е въведен жетон за пробна снимка.
На всеки 25 секунди се генерира нов токен, който може да се използва за включване на лазера за 10 секунди при мощност 10/255
След това лазерът се охлади за 1 минута и през тази минута беше недостъпен и не приемаше нови заявки за изстрел.
Тази мощност беше напълно недостатъчна, за да прогори въжето, но всеки играч можеше да стреля от Мегатрон и да види лазерния лъч в действие.
Реакцията на обществото беше повече от бурна
Но всички бързо се успокоиха и разбраха, че това не е краят на играта.
Тогава общността започна да измисля как да стартира боен режим
В раздора има фалшификати
Не знаехме, че в предаването има нещо написано на крака на масата
Общността стигна до стъпка 4. Разберете как се генерират токени: намерете същината и генерирайте токен, който включва лазера в боен режим
Бойният режим на Megatron е 100% лазерна мощност при 3 вата. Това е достатъчно за 2 минути, за да изгори въжето, което държеше тежестта, да счупи аквариума и да наводни сървъра с вода.
Оставихме няколко съвета за
Както всички бързо се досетиха, беше 42
В коментарите на същността имаше кореспонденция между Андрей Соколов и разработчика („мъдър разработчик“, както го нарекоха момчетата от Discord).
В кореспонденцията Андрей изпрати един от бойните токени и разработчикът отговори, че този токен е инициализиран със стойност на брояча 42.
Познавайки тези данни, беше възможно да сортирате последните 2 символа на солта и всъщност да разберете, че за нея са използвани числата от Lost, преобразувани в шестнадесетичната система.
След това играчите трябваше да уловят стойността на брояча (чрез анализиране на тестовия жетон) и да генерират боен жетон, използвайки следващата стойност на брояча и солта, избрана в предишната стъпка.
Броячът просто се увеличава с всеки тестов изстрел и на всеки 25 секунди. Не сме писали за това никъде, трябваше да е малка изненада в играта. Момчетата го разбраха много бързо и пуснаха мегатрона в боен режим.
Стъпка 5. Лазерно изгаряне на въжето
Как беше
Тук всичко е просто. Изпращането на боен жетон ще превърне лазера в боен режим и стаята ще се промени и ще премине в „режим на бедствие“, както го нарекохме в общия сценарий:
- Всички светлини в стаята изгаснаха
- Бутоните за iot устройства на уебсайта станаха недостъпни
- Мигащи светлини и звук на сирена
- Червената тежест беше осветена
- На телевизионния екран започна обратно броене, докато лазерът не беше пуснат в боен режим.
Дадохме обратно броене час и половина, така че всички, които играха, имаха време да пуснат предаването и да видят финала. И има защо: докато чаках със затаен дъх звука от удар и счупване на стъкло от съседната стая, целият екип, изградил куеста, без да каже нито дума, тръгна към базата, за да види края с техните собствените очи. Просто изтичаха в стаята и започнаха да се прегръщат.
Междувременно на раздор
След като обратното броене приключи, лазерът влезе в действие и за две минути прогори въжето - тежестта полетя право в аквариума. Преди удара полудяла капибара изкрещя на екрана, вдигайки паникьосано малките си лапи.
Тъй като целият отбор беше събран там, пуснахме малко послание към всички, които се бореха за финала два дни на раздор и отидохме да отворим шампанското:
Как изчислихме времето за пускане на рекламни видеоклипове и полета на теглото?
След дузина тестове на изгаряне на въже с лазер, разбрахме, че това е много ненадежден дизайн - полуизгорялото въже изтънява, под тежестта на тежестта се разтяга, променя местоположението си и лазерът вече не може да пререже то напълно.
Затова поехме по различен път: дублирахме изгарянето, като увихме въжето с нихромова нишка. През нишката премина ток, тя се нажежи до червено и прогори въжето за около 2 секунди - това ни даде точна представа кога да включим крещящата капибара, да спрем стартовия таймер и да стартираме рекламата:
Какво не ни се получи?
В крайна сметка от системния блок трябваше да излезе гъст дим, като при пожар - подготвихме димни бомби, запалихме ги по същия начин, но по някаква причина те не работеха (вероятно поради вода).
Кой е победителят?
Победителят излезе Аркадий Алексеев от Санкт Петербург - той беше първият, който генерира тестов жетон и спечели останалите пари в шредера в размер на 134 000 рубли.
Кратко интервю с Аркадий.
Разкажете ни за себе си, какво правите на работа?
По образование съм специалист по сигурност, завършил BIT в ITMO. Работя като изнесен пълен стек уеб разработчик. В училище участвах в състезания, включително по програмиране и математика.
Как разбрахте за играта?
Отидох в Habr само за да прочета, видях статията и ми стана интересно.
Колко часа играхте, когато се присъединихте?
Присъединих се вечерта в деня на публикуване на статията (т.е. един ден преди края). Прекарах вечерта и голяма част от следващия ден.
Какво ви хареса и какво не?
Като цяло всичко ми хареса (разбира се, спечелих)), но бях малко нервен от обажданията. Е, обаждането и проверката на всяка версия някак не беше много добро, поне беше неудобно - разбрах, че все още има няколко десетки от тях, които се обаждат, половината от тях се шегуват и се опитват да се занимават със социално инженерство.
Как разбра как да намериш бойния жетон за Мегатрон?
Когато влязох, вече бяха спамили сървъра, мушкаха крушки, намериха паролата за лазерния админ панел, всякакви поддомейни и страници.
Също така беше лесно да се намери профил в Github и същност с коментари. Оттам нататък процесът на генериране на токен и тайна за него е очевиден. В такива куестове няма нужда да измисляте много, IMHO, тъй като можете да се удавите в куп опции за развитие на събитията; и съответно трябва да следвате накъде ви тласка създателят на куеста.
Като се вземат предвид останалите поддомейни и тестовата площадка на tilde, беше ясно, че след захранването на лазера ще е необходимо да изберете токен. Съответно същата вечер скицирах приблизителна заявка за включване на лазера (на базата на 4 налични формуляра: 1 на работния сайт и 3 на тестовия/стария) и се опитах да брутирам с работещи жетони, започвайки от 42 (добре, за глупака - изведнъж всичко вече е активирано и страницата с изпращане на токена просто ще се отвори след TIN и пълното име).
Не съм сигурен, че заявката е правилна, тъй като нямаше време за проверка (в края на краищата беше възможно само да се провери дали лазерът е включен), но се подготвих предварително за търсенето на токена.
Имаше и очевидна логика с уебсокети и управление на устройства във файла app.js. Имаше смел намек за устройство a9, когато изпращаше захранване: вярно, на което гнездото се срина. Опитах да пратя всичко на него - никога не се знае, може да има допълнително устройство за решаване на TIN, но без успех.
След това претърсих останалите идентификационни файлове до тези десет, но навсякъде имаше неизвестно устройство. Аз също се опитах да търся в Google всякакви неща, да се катеря [имейл защитен], изпратих всичко във формуляра на страницата с ценовата листа, порових се с lasermasters, но всичко без успех. На следващия ден седях в чата, търсейки в гугъл всякакви неща, тогава се появи темата за stego и се консултирах с лицето на stegosolve за снимки и gifs (но психически разбрах, че в 99% от времето там няма нищо, тъй като това би било твърде много + противоречие с основната линия на търсене) .
Но в крайна сметка аз също седях и се разрових във всички снимки и gif-ове за няколко часа. Обадих се още няколко пъти с различни опции за TIN, но не проработи. Тогава реших да се откажа, но те публикуваха намек там - и стана ясно, че идентификационният номер на данъкоплатеца (TIN) ще бъде намерен в близко бъдеще, което се случи. След това или аз, или някой друг (не е очевидно) изпрати захранване: вярно към устройството a9 и лазерът започна да работи, въпреки че може би нямаше връзка и просто започна да работи след TIN. Като цяло влязох в админ панела на лазера и бях доста изненадан, тъй като самият сървър изпрати токена (а аз вече се готвех да брутирам). Стана очевидно, че токенът е тестов, тъй като излъчването + здравият разум + го проверих.
Кодът съдържаше логиката за изпращане на работещ токен някъде като известие, но очевидно или беше грешен код, или беше необходим за други части на системата. Начертах скрипт за получаване на текущия работещ токен от текущия тестов и започнах да седя на f5, опитвайки се да ги изпратя - имаше проблеми с това, тъй като всички постоянно натискаха бутона за изпращане, като по този начин променяха токена, ако е възможно. След това сайтът се срина, броячът беше нулиран, но това не е важното - след известно време изпратих работещ токен. На теория броячът беше 58 и токен был 449a776938f7ce4cf19f8603045dca0f в момента на активиране, ако не се лъжа. Това е всичко.
Тогава малко се изгорих от коментари като „да, всичко това е тривиално, но просто имах късмет“. Е, ако отидете на страницата, помислете за минута, напишете скрипт за няколко минути, проверете го - тогава да, това е тривиално. Но го направих за 10-20 секунди и след това просто не можах да изпратя токена няколко минути.
Разбира се, можете да опитате да напишете логика, за да го вземете и изпратите автоматично, но това ще отнеме повече време и ще бъде голям риск, плюс облакът вероятно ще започне да ругае. Това, с което имах голям късмет, беше последният етап - няколко алгоритъма за скорост + скорост на реакция, това е само мое. Ако имаше задача директно от пентеста, най-вероятно нямаше да стана първи.
Но още не е свършило
Нямам търпение да ви разкажа за невероятния екип, който изгради тази стая за бягство и всички инженерни решения, които измислиха. Но тази публикация вече се оказа твърде голяма - така че ще има отделни статии за това, така че следете и се абонирайте за нашия блог на Habré.
Източник: www.habr.com