Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

For et par dage siden afsluttede vi et af de mest følelsesmæssigt ladede arrangementer, vi har haft fornøjelsen af at afholde på bloggen – et online hack-spil med serverødelæggelse.

Resultaterne oversteg alle vores forventninger: deltagerne organiserede sig hurtigt i et velfungerende fællesskab af 620 personer i Discord, som bogstaveligt talt stormede questen i løbet af to dage uden pause til søvn.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Og sådan sluttede det:

Afspil video

Hvordan det hele begyndte, og hvad drejer det sig overhovedet om?

Spillet startede den 12. august, da vi lagde et indlæg på bloggen post med en video, hvor en hacker iført en kraniummaske inviterer til at spille et spil, ødelægge serveren, skabe en kortslutning i rummet (eller lave en mini-brandskade) og tage de penge, der var tilbage i shrederen.

Det var en online quest: vi startede en YouTube-transmission fra et rum, som vi fyldte med IoT-enheder, en under-sengen server (som skulle ødelægges), og over serveren fastgjorde vi et akvarium og hængte en vægt over det. For at gøre spillet mere dramatisk besluttede vi os for at lave en præmiepulje på 200.000 rubler, som vi læsede ind i shrederen og indstillede til at tænde hvert 60. minut. Hver time spiste shrederen 1.000 rubler – jo hurtigere spillerne stoppede den, desto flere penge ville de vinde.

Afspil video

At bygge denne quest var i sig selv en udfordring – vi måtte nøjes med levering af mad og sove et par timer om dagen lige i det samme rum. Men det mest fantastiske var at overvære spilleres kreative tanker og deres følelsesmæssige engagement i processen.

Ærligt talt, spillernes opfindsomhed i at løse opgaverne oversteg vores beskedne planer mange gange: hver ledig stund læste vi chatten i Discord, og i nogle tilfælde grinede vi bogstaveligt talt højt, når vi opdagede, hvad spillerne lavede, og hvordan de jokede i processen.

Sju personer arbejdede utrætteligt på projektet: en backend-udvikler, en hardware-specialist, en rigtig filmproducent, en CG-designer og to kreative medproducenter.

Vi vil i de kommende indlæg fortælle, hvordan questen blev realiseret fra en teknisk synsvinkel, men for nu vil jeg afsløre løsningen: hvordan man konkret skulle hacke dette rum under transmissionen. Vi vil også mindes begivenhedernes kronologi samt alle de skøre teorier fra chatten i Discord.

Hvad havde spillerne i starten af spillet

Alle genstande i rummet blev opdelt i tre kategorier:

  • Enkle IoT-enheder, der ikke er til spil
  • Spilleenheder til at gennemføre questen
  • Atmosfære

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Vi placerede 8 meget enkle styreelementer: to lamper, en lyskæde, fem bogstaver, der stavede SOKOL, som hver kunne ændre farve. Alt dette kunne tændes/slukkes direkte fra hjemmesiden, og man kunne straks se resultatet på streamen - vi gjorde dem bevidst tilgængelige for alle spillere, uanset teknisk kunnen.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Alt, hvad der kunne tændes fra hjemmesiden

Blandt de vigtige spil-elementer, som var nødvendige for at gennemføre questen, og som var svære at få adgang til:

  1. Server med åben låge og et akvarium ovenfor
  2. En kettlebell, hængt op, så den kunne bryde akvariet
  3. Megatron 3000 - en kraftfuld laserpeger rettet mod snoren, der holder kettlebellen
  4. En kraftig blæser, der blev tændt ved belastning på serveren
  5. Et flipchart, hvor logind og adgangskode til Megatron var skrevet
  6. En telefon, man kunne ringe til og se sit opkald i realtid
  7. En shredder, der spiste 1000-ruble sedler i timen

Hvordan questen blev løst

Jeg kan sige med det samme: kisten blev åbnet ret nemt.

Målet med spillet var at stoppe shredderen ved at forårsage en kortslutning i rummet. For at gøre dette skulle akvariet smadres ved at sende kettlebellen ind i det og oversvømme serveren med vand. Kettlebellen hang fra en snor, som Megatron var rettet imod. Ved at overtage kontrollen over Megatron kunne snoren blive skåret over. Dette blev gjort i 5 enkle trin:

Trin 1. Overbelast serveren, der står i rummet

For eksempel ved at sende pakker med kommandoen.

ab -r -n 10000 -c 100 -s 280 -l https://ws.ooosokol.ru/captcha

Ledetråden var meget belastende captcha og få en fungerende kommando. prisside.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Den specifikke captcha, der skulle angribes

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Ved belastning af serveren steg dens temperatur, og dette kunne overvåges på monitoreringen, som var åben lige foran kameraet. Derefter blev blæseren tændt, hvilket åbnede et let gardin på flipchartet. Så blev logind og adgangskoden til siden for Megatron vist på tavlen.

Og selve kontrolsiden for Megatron kunne findes ved at tjekke alle certifikater udstedt til domænet ooosokol.ru.

På subdomænet megatron.ooosokol.ru Siden var styresiden for Megatron. Men den kunne ikke åbnes, før der blev tilført primær strøm til Megatron.

Alle disse trin blev spillerne næsten med det samme enige om i kommentarerne under livestreamen på YouTube. Derefter blev opgaverne lidt sværere, og spillerne oprettede Discord-serveren RUVDS Hack Room og fortsatte diskussionen der.

Trin 2. Tilfør primær strøm til Megatron

Alle smarte enheder, der blev styret fra websitet (de samme lamper, som spillerne uden ophør tændte og slukkede), havde deres egne identifikatorer.

For at tilføje primær strøm til Megatron og samtidig belyse det, var det nødvendigt at finde og tænde en skjult enhed på kontorets styreside.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Til dette skulle man se på enhedernes identifikatorer og bemærke, at der i alt var 4 enheder, men kun 3 var tilgængelige på websitet.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Siden for Megatron blev tilgængelig, når den 4. enhed blev tændt, og selv laserens belysning blev aktiveret. Men det var umuligt at affyre laseren, og der hang et siden meddelelse, der sagde, at laseren endnu ikke var tilgængelig og en henvisning: strømmen var sprunget i kontoret, man skulle ringe til administrationsselskabet og bede om at få strømmen tændt.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Henvisning til administrationsselskabet

3. Ringe til administrationsselskabet og bede om at få strømmen til Megatron tændt

Ifølge LOR kunne Megatron ikke affyre, fordi der var sprunget en sikring i kontoret. Kun administrationsselskabet kunne tænde strømmen igen, og man skulle ringe til dem og gennemgå en identifikation som ejer af LLC.

At finde nummeret til administrationsselskabet var nemt — vi indsatte det direkte i footeren.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Men at gennemgå identifikationen var meget sværere.

Ved opkald til nummeret +74991130688 tog en kvinde-operatør telefonen og bad med en kedelig stemme om at nævne virksomhedens INN og ejerens fulde navn. Uden dette nægtede hun at tænde strømmen og forklarede, at hun blot var en ekstern dispatcher, de havde 2000 kunder og kontorer, og uden disse oplysninger kunne hun blot ikke finde den rigtige.

For spillerne viste dette sig at være det sværeste trin. Den korrekte INN og ejerens fulde navn blev søgt i næsten to dage, og jeg (i skikkelse af dispatcher) modtog i mellemtiden mere end 400 opkald. Telefonen ringede hvert 2-3 minut.

Drenge gravede, som de kunne. Alt blev taget i brug: de kiggede i kildeteksten på websitet, googlede ejerens navn Sokolov og undersøgte sociale medier.

De søgte efter INN fra forskellige virksomheder.
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Næsten fuldstændig skema for søgning

På et tidspunkt ringede de endda fra et nummer, der var blevet spoofet — som om de ringede fra kontoret til virksomheden Sokkel, som er nævnt i footeren.

Dengang fandt vi ud af, hvor mange virksomheder der bærer navnet Sokkel. Næsten hver af disse virksomheder blev ringet til af spillerne, men det kunne ikke sammenlignes med det, som webstedet oplevede. lasermasters.ru, hvor vi faktisk købte den omtalte Megatron for omkring en måned siden.

Først angreb de supporten hos Lasermasters.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Derefter lykkedes det at finde nogens konto der! Mens supporten hos Lasermasters allerede var begyndt at slippe holdningerne løs.

Vær forsigtig, fjern børnene fra skærmen
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Til sidst besluttede de at overbelaste Lasermasters, og deres websted gik ned. Det samme skete med Sokkel, selvom vi hurtigt fik det op igen.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Under efterforskningen fandt fyrene fra Discord endda skuespilleren, hvis billede vi købte fra stock for at spille hovedskurken, ejer af LLC Andrey Sokolov. Det viste sig, at han hed Yuri og ikke vidste noget om den problemer, han var havnet i.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Andrey Sokolov, en figur fra spillet

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Yuri, modellen

Hvis han kun vidste, hvordan han fik 600 mennesker til at sove i to dage...)

Derefter begyndte de i det hele taget at grave specifikt under mig, som arrangøren af questen (hvilket sagtens kunne være endt med succes, hvis fyrene havde gættet på at hacke mine arbejds-kanaler).

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Jeg blev endda lidt nervøs, da de nævnte mit efternavn og selv mit CVR-nummer. Men jeg slap for det, da jeg pludselig fik en storebror midt i telefonspillet, som viste sig at være teknisk direktør for Habra.

Min kærebror, som også fik del i dette
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Imens blev gætterierne mere og mere usandsynlige
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Og vi kom til konspirationsstræk.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

De mest saftige konspirationsteorier handlede om Spongebob, Harry Potter og en blinkende kinesisk diodelampe, som vi lagde inde i systemblokken.

Hvorfor Spongebob og Harry Potter, spørger du? Vi indsatte deres adresser på Sokkel's kontakt side, hvilket skabte en masse gætterier i Discord-fællesskabet. Selvom vi bare ville hylde vores elskede barndomsværker.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Den reference på siden "Kontakter"

Og til sidst

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Der viste sig at være dokumenter om Spongebob i serien. De blev kaldt som CVR-nummer.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

En af de sværeste teorier handlede om, at der var en besked i blinket af den kinesiske lyskæde kodet med morsealfabetet.

Blinket blev optagede og forsøgt dechifreret.
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Af de mere enkle teorier forsøgte folk at finde ud af, om der var en ledetråd gemt i kortene.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Undervejs blev vi sammenlignet med Cicada 3301 — en ufortjent høj vurdering, men stadig behagelig.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Spillerne prøvede ivrigt social engineering. Jeg modtog opkald fra nogen, der udgav sig for at være FSB, brandmænd, selv Sokolov, hans ekskone og en vagter, der angiveligt sad nede hos os. De sagde, at der var udbrudt brand, at nogen var fanget i elevatoren, og den mest hjerteskærende historie var, at der angiveligt sad en lille hund i kontoret, der var i brand, som ringeren ejede.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Der var også forsøg på bestikkelse.

Langsomt begyndte der at dukke egne memes op i chatten.

Her er et par stykker.
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Imens stod fabrikkerne stille.
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Ledetråd

Pengene i makulatoren blev færre og færre. For at vinderen skulle få noget, besluttede vi at give en ledetråd. Samtidig, ved at følge reglerne for spildesign, at hæve spændingen direkte før finalen.

Separat post vi lagde en video op i bloggen. I starten var der indsættelse af et klip fra Fight Club — som en henvisning til Tyler Durden, der overvejede at indsætte det 25. billede i film, mens han arbejdede i biografen.

Vi besluttede at bruge denne mekanik og indsatte ledetråden som det 25. billede, hvordan man googler den korrekte CVR-nummer og ejerens fulde navn.

Afspil video

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Derefter forstod folk det meget hurtigt.

Trin 4. At skyde med laser i ikke-kampmodus.

Når strømmen kom fra forsyningsselskabet og efter indskruvningen af sikringerne, blev Megatron tændt og kunne skyde i testtilstand. I inputfeltet var tokenet til testskuddet allerede indtastet.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Hver 25. sekund blev der genereret et nyt token, det kunne bruges til at tænde laseren i 10 sekunder på styrken 10/255.

Derefter blev laseren afkølet i 1 minut, og i dette minut var den utilgængelig og modtog ikke nye skudforespørgsler.

Denne styrke var slet ikke nok til at brænde snoren over, men enhver spiller kunne skyde med Megatron og se laserstrålen i aktion.

Reaktionen fra samfundet var mere end livlig.
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Men alle blev hurtigt rolige og forstod, at det ikke var slutningen på spillet.
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Derefter begyndte samfundet at finde ud af, hvordan man aktiverer kampmodus.

Brainstorming.
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Der opstod falske profiler i Discord.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Vi vidste ikke, at der stod noget på benet af bordet under transmissionen.

Fællesskabet er nået til trin 4. At finde ud af, hvordan tokens genereres: finde gist og generere et token, der inkluderer laser i kampmode

Kampmode for Megatron er 100% effekt ved 3 W. Det er ganske tilstrækkeligt i 2 minutter til at brænde snoren, der holdt vægten, knuse akvariet og oversvømme serveren med vand.

Vi har efterladt nogle spor på projektets GitHub: nemlig koden til token-genereringen, hvorefter man kunne forstå, at test- og kamp-tokens genereres på baggrund af en enkelt tæller. I tilfælde af kamp-tokenet bruges der ud over tællerværdien også en salt, som næsten helt blev efterladt i ændringshistorikken for denne gist, bortset fra de sidste to tegn.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført
Som alle hurtigt gættede, var det 42

I kommentarerne til gisten var der en samtale mellem Andrey Sokolov og udvikleren ("den kloge udvikler", som folkene fra Discord kaldte ham).

I samtalen sendte Andrey et af kamp-tokenene, og udvikleren svarede, at dette token var blevet initieret ved tællerværdien 42.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Med disse data kunne man gennemgå de sidste 2 tegn af saltet og faktisk finde ud af, at der blev brugt tal fra Lost, oversat til det hexadecimale system.

Herefter var det op til spillerne at fange tællerværdien (ved at analysere testtokenet) og generere kamp-tokenet ved at bruge den næste tællerværdi og den salt, som blev fundet i det forrige trin.

Tælleren blev bare inkrementeret ved hver testafskydning og hver 25. sekund. Dette skrev vi ikke noget om, det skulle være en lille spiller-overraskelse. Folkene fik hurtigt fat i det og aktiverede megatron i kampmode.

Trin 5. Brænde snoren med laseren

Afspil video

Hvordan det gik

Her er det allerede ret enkelt. Sendingen af kamp-tokenet aktiverede laseren i kampmode, og rummet ændrede sig og kom ind i "katastrofe-mode", som vi kaldte det i det samlede scenarie:

  • Alt lys i rummet blev slukket
  • Knappen for IoT-enhederne på siden blev utilgængelige
  • Blinklys og sirene blev aktiveret
  • Den røde vægt blev belyst
  • På skærmen begyndte nedtællingen til aktiveringen af laseren i kampmode

Vi gav en halvanden time nedtælling, så alle, der deltog, kunne tænde for transmissionen og se finalen. Og det var ikke for ingenting: mens jeg med bankende hjerte ventede på lyden af et slag og knusende glas fra det næste rum, begyndte hele teamet, der havde bygget questen, uden at tale om det, at køre tilbage til basen for at se finalen med egne øjne. De løb bare ind i rummet og begyndte at kramme hinanden.

I mellemtiden i Discord
Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Efter nedtællingen blev laseren aktiveret, og på to minutter brændte den snoren over - vægten fløj direkte ind i akvariet. Før slaget skreg den vanvittige capibara på skærmen, mens den panisk løftede sine små poter.

Da hele teamet var samlet der, optog vi en kort besked til alle, der havde kæmpet i to dage for at nå finalen i Discord, og gik derefter i gang med at åbne champagnen:

Afspil video

Hvordan beregnede vi tidspunktet for at starte reklamevideoerne og vægtens flugt?

Efter et dusin test med at brænde snoren over med laseren indså vi, at det var en meget usikker konstruktion - den halvbrændte snor blev tyndere, strakte sig under vægten af vægten, ændrede position, og laseren kunne ikke længere skære den helt igennem.

Derfor valgte vi en anden tilgang: vi duplikerede brændingen ved at vikle snoren med nichromtråd. Gennem tråden lod vi strøm passere; den blev glødende rød og brændte snoren over på omtrent 2 sekunder - dette gav os en præcis forståelse af, hvornår vi skulle aktivere den skrigende capibara, stoppe nedtællingstimeren og starte reklamens video:

Afspil video

Hvad lykkedes ikke?

I finalen skulle der komme en tæt røg ud fra systemblokken, som ved en brand - vi havde forberedt røgpatroner, tændte dem på samme måde, men de fungerede af en eller anden grund ikke (sandsynligvis på grund af vandet).

Hvem blev vinderen?

Vinderen blev Arkadiy Alekseev fra Sankt Petersborg - han var den første til at generere en testtoken og vandt de resterende penge på 134.000 rubler i shredderen.

Et kort interview med Arkadiy.

Fortæl lidt om dig selv, hvad laver du på arbejdet?

Jeg er uddannet sikkerhedstekniker, færdiggjorde BIT på ITMO. Jeg arbejder som full-stack webudvikler på freelance. Jeg deltager i olympiader i skolen, herunder i programmering og matematik.

Hvordan hørte du om spillet?

Jeg gik ind på Habr for bare at læse, så jeg så artiklen og blev interesseret.

Hvor mange timer har du spillet, og hvornår tilsluttede du dig?

Jeg tilsluttede mig den aften, hvor artiklen blev offentliggjort (altså en dag før afslutningen). Jeg brugte aftenen og en stor del af den følgende dag.

Hvad kunne du lide, og hvad kunne du ikke lide?

Generelt kunne jeg lide det hele (selvfølgelig, jeg vandt)), men det var lidt stressende med opkaldene. Det føltes ikke rigtig godt at skulle ringe og tjekke hver version - det var ret akavet, for jeg vidste, at der var mange andre, der også ringede, den halve del jokede og forsøgte social engineering.

Hvordan forstod du, hvordan man finder en kampvaluta til Megatron?

Da jeg kom ind, var serveren allerede blevet spammet, de trykkede på lysene, fandt passwordet til administratorkontoen for laseren, samt forskellige undermapper og sider.

Det var også nemt at finde en profil på GitHub og gist med kommentarer. Herfra var processen med at generere tokenet og secret til det åbenlys. I sådanne quest'er behøver man ikke at opfinde den dybe tallerken, fordi man kan drukne i en bunke mulige udviklinger; og derfor er man nødt til at følge den retning, som spillets skaber skubber en i.

Med hensyn til de andre undermapper og testwebstedet på Tilda var det klart, at efter strømtilslutningen til laseren, skulle jeg finde tokenet. Derfor skitserede jeg allerede samme aften en omtrentlig forespørgsel til aktivering af laseren (baseret på 4 tilgængelige formularer: 1 på det fungerende websted og 3 på test/ældresiden) og forsøgte at brute force med arbejdende tokens, begyndende med 42 (bare sådan, for sjov - hvad nu hvis alt allerede var aktiveret, og siden med tokenindsendelsen blot ville åbne efter INN og navn).

Jeg er ikke sikker på, at forespørgslen var korrekt, da der ikke var tid til at tjekke (for det kunne kun tjekkes, om laseren blev tændt), men jeg forberedte mig på at brute force tokenet på forhånd.

Der var også en tydelig logik med WebSockets og enhedsstyring i app.js-filen. Der var et tydeligt hint om a9-enheden, som ved at sende power: true crashede socketen. Jeg prøvede at sende forskellige ting til den - hvad nu hvis der kunne være en yderligere enhed til at opdage INN, men uden held.

Senere brød jeg også igennem de andre id'er i nærheden af de ti, men der stod kun unknown device overalt. Jeg prøvede også at google diverse, gik ind på chsokolow@gmail.com, sendte forskellige ting gennem formularen på prissiden, roderede med lasermasters, men alt uden succes. Den næste dag sad jeg i chatten, googlede forskellige ting, så dukkede stego-emnet op, og jeg rådførte mig med en person fra stegsolve om billeder og gifs (men jeg forstod det var 99% usandsynligt, da det ville være for + en modstrid med hovedlinjen i questen).

Men til sidst sad jeg også et par timer og roede i alle billederne og gifs. Jeg ringede også et par gange med forskellige varianter af CVR-nummeret, men uden held. Så besluttede jeg mig for at droppe det, men der blev givet et hint — og det blev klart, at CVR-nummeret ville blive fundet snart, hvilket også skete. Så enten jeg eller en anden (det er ikke klart) sendte power: true til a9-enheden, og laseren begyndte at fungere, selvom der muligvis ikke er nogen forbindelse, og den blev bare tændt efter CVR-nummeret. I det hele taget gik jeg ind i laserens adminpanel og blev meget overrasket, da serveren selv sendte token (jeg var klar til at brute Force). Det blev klart, at token’et var et test-token, da transmissionen + sund fornuft + jeg tjekkede det.

Der var logik i koden til at sende det fungerende token et eller andet sted via notifikation, men tilsyneladende var det enten forkert kode, eller det var nødvendigt for andre dele af systemet. Jeg skitserede et script til at hente det nuværende fungerende token fra det nuværende test-token og begyndte at sidde og trykke F5 i forsøget på at sende dem — der var problemer med dette, da alle konstant trykkede på send-knappen, hvilket ændrede token’et. Så kollapsede siden også, tælleren nulstilledes, men det er ikke vigtigt — efter noget tid sendte jeg det fungerende token. Ideelt set skulle tælleren have været 58, og token'et var 449a776938f7ce4cf19f8603045dca0f ved aktiveringen, hvis jeg ikke tager fejl. Det var sådan set det hele.

Senere blev jeg også lidt provokeret af kommentarer som 'ja, det er alt sammen trivielt, ja, man var heldig'. Nå, hvis man går ind på siden, tænker et øjeblik, skriver et script på et par minutter, tjekker det — så ja, trivielt. Men jeg gjorde det på 10-20 sekunder, og så kunne jeg bare ikke sende token'et i flere minutter.

Selvfølgelig kunne man have forsøgt at skrive logik til automatisk opsamling og sending, men det ville tage længere tid og indebære en stor risiko, plus cloud-platformen ville sikkert begynde at brokke sig. Det, jeg virkelig har været heldig med, er selve den sidste fase - lidt algoritmer på hastighed + reaktionshastighed, det er virkelig min styrke. Hvis opgaven var direkte relateret til pentesting, ville jeg sandsynligvis ikke være den første.

Men det er ikke slutningen endnu

Jeg kan slet ikke vente med at fortælle dig om det fantastiske team, der har bygget denne quest, og alle de ingeniørløsninger, de fandt. Men dette indlæg er allerede blevet alt for stort - derfor vil der være separate artikler om det, så stay tuned og tilmeld dig vores blog på Habr.

Hvem stoppede shredderen, eller hvordan æventyret med at ødelægge serveren skulle have været gennemført

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster