Kif inħoloq il-backend ta 'logħba tal-hacker dwar il-qerda ta' server

Kif inħoloq il-backend ta 'logħba tal-hacker dwar il-qerda ta' server
Aħna nkomplu ngħidulek kif ġiet irranġata t-tfittxija tagħna bil-lejżer bil-qerda tas-server. Ibda minn qabel artiklu dwar is-soluzzjoni tat-tfittxija.

B'kollox, il-backend tal-logħba kellu 6 unitajiet arkitettoniċi, li se nanalizzaw f'dan l-artikolu:

  1. Backend ta' entitajiet tal-logħob li kienu responsabbli għall-mekkaniżmi tal-logħob
  2. Backend u xarabank tal-iskambju tad-dejta tas-sit fuq VPS
  3. Traduttur minn talbiet backend (elementi tal-logħob) għal Arduino u ħardwer fuq il-post
  4. Arduino, li kien responsabbli għall-kontroll tar-relays, irċieva kmandi mingħand it-traduttur u għamel ix-xogħol attwali
  5. Apparati attwali: fann, girlandi, lampi ta 'l-art, eċċ.
  6. Frontend - il-websajt tal-Falcon innifsu, li minnu l-plejers kienu jikkontrollaw it-tagħmir

Ejja ngħaddu minn kull wieħed minnhom.

Backend ta' entitajiet tal-logħob

Il-backend ġie implimentat bħala applikazzjoni tal-boot tar-rebbiegħa: kellu diversi kontrolluri tal-mistrieħ, endpoint tal-websocket u servizzi b'loġika tal-logħob.

Kien hemm biss tliet kontrolluri:

  • Megatron. Il-paġna attwali ta' Megatron intbagħtet permezz ta' talbiet GET: qabel u wara li tinxtegħel il-qawwa. Il-lejżer sparat permezz tat-talba tal-POST.
  • Immappjar paġni tilde sabiex ikunu moqdija mill-isem tal-paġna. Tilde tipproduċi paġni għall-esportazzjoni mhux bl-ismijiet oriġinali, iżda b'ID interna u informazzjoni ta 'konformità.
  • Kontrollur Captcha biex iservi captcha tas-server psewdo-tagħbija għolja.

Websocket endpoint intuża biex jikkontrolla aġġeġġi: lampi, girlandi u ittri. Intgħażel biex juri b'mod sinkroniku lill-atturi kollha l-istatus attwali tal-apparat: jekk huwiex mixgħul jew mitfi, attiv jew le, liema kulur tal-ittra hija mixgħula bħalissa fuq il-ħajt. Sabiex il-kompitu li jixgħel il-lejżer ftit aktar diffiċli, żidna awtorizzazzjoni għall-girlanda u l-laser bl-istess login u password admin/admin.

Il-plejers jistgħu jittestjawha billi jixegħlu l-girlanda u jirrepetu l-istess bil-laser.

Aħna għażilna tali par trivjali login-password sabiex ma nittormentawx lill-plejers b'għażla bla bżonn.

Biex il-kompitu jsir ftit aktar interessanti, l-IDs tal-oġġetti minn mongodb intużaw bħala identifikaturi tal-apparat fil-kamra.

ObjectId fih timestamp: żewġ valuri każwali, li wieħed minnhom jittieħed ibbażat fuq l-identifikatur tal-apparat, u t-tieni bbażat fuq il-pid tal-proċess li jiġġenerah u l-counter value. Ridt nagħmel l-identifikaturi ġġenerati f'intervalli regolari u bi proċessi pid differenti, iżda b'counter komuni, sabiex l-għażla ta 'identifikatur tal-apparat tal-lejżer tkun aktar interessanti. Madankollu, fl-aħħar, kulħadd beda b'identifikaturi li kienu differenti biss fil-valur tal-kontro. Dan seta' għamel il-pass sempliċi wisq u ma kienx jeħtieġ analiżi tal-istruttura objectId.

Traduttur minn talbiet backend

Script Python, li ħadem fuq it-tajmers u ttraduċihom minn estrazzjonijiet tal-logħob f'mudell fiżiku. Pereżempju, "ixgħel il-lampa tal-art" → "ixgħel ir-relay N2."

L-iskritt konness mal-kju RabbitMQ u ttrasferixxa t-talbiet mill-kju għal Arduino. Implimenta wkoll il-loġika ta 'qlib tad-dawl parallel: flimkien ma' xi apparati, id-dawl fuqhom kien mixgħul, pereżempju, meta l-enerġija kienet inizjalment fornuta lil Megatron, kienet imdawwal b'dawl tal-palk. Id-disinn tad-dawl għaċ-ċinematografija tax-xena kollha hija storja separata dwar ix-xogħol kbir tal-ko-produttur tal-proġett u d-disinjatur tal-produzzjoni tagħna Ilya Serov, u se ngħidu dwarha f'post separat.

It-traduttur kien responsabbli wkoll għall-loġika tat-tnedija tat-tqattigħ bl-użu ta 'tajmer u t-trażmissjoni tal-immaġni lit-TV: it-tajmer għat-tnedija tat-tqattigħ, capybara screaming, kummerċjali fl-aħħar tal-logħba.

Kif ġiet strutturata l-loġika għall-ġenerazzjoni tat-token Megatron

Tir tat-test

Kull 25 sekonda ġie ġġenerat token ġdid u jista 'jintuża biex jixgħel il-lejżer għal 10 sekondi b'qawwa 10/255. Link għal github bil-kodiċi Megatron.

Il-laser imbagħad tkessaħ għal minuta - matul dan iż-żmien ma kienx disponibbli u ma aċċettax talbiet ġodda ta 'sparatura.

Din il-qawwa ma kinitx biżżejjed biex tinħaraq minn ġol-ħabel, iżda kull plejer seta’ jispara lil Megatron u jara r-raġġ tal-lejżer fl-azzjoni.

L-algoritmu tal-hashing MD5 intuża biex jiġġenera t-token. U l-iskema ħadmet MD5 minn MD5 + counter + sigriet għal token tal-ġlied u mingħajr sigriet għal token tat-test.

MD5 hija referenza għal proġett kummerċjali li għamel Pavel, il-backender tagħna. Ftit snin ilu biss dan il-proġett uża MD5, u meta qal lill-perit tal-proġett li kien algoritmu ta 'encryption skadut, bdew jużaw MD5 minn MD5. Peress li ddeċidejna li nagħmlu l-aktar proġett noob possibbli, ftakar kollox u ddeċieda li jagħmel referenza żgħira.

Tir tal-ġlieda

Il-mod ta 'ġlied ta' Megatron huwa 100% qawwa tal-lejżer bi 3 watts. Dan huwa biżżejjed għal 2 minuti biex jinħaraq mill-ħabel li żamm il-piż, biex tkisser l-akkwarju u għargħar is-server bl-ilma.

Ħallna diversi ħjiel fuq il-Github tal-proġett: jiġifieri, il-kodiċi tal-ġenerazzjoni tat-tokens, li minnu wieħed seta' jifhem li t-tokens tat-test u tal-ġlieda huma ġġenerati bbażati fuq l-istess indikatur tal-kontro. Fil-każ ta 'token tal-ġlied, minbarra l-valur tal-kontro, jintuża wkoll melħ, li huwa kważi kompletament imħalla fl-istorja tal-bidla ta' dan il-qofol, bl-eċċezzjoni tal-aħħar żewġ karattri.

Billi kien jaf din id-dejta, kien possibbli li jiġu ssortjati l-aħħar 2 simboli tal-melħ u fil-fatt issir taf li n-numri minn Lost, konvertiti għas-sistema eżadeċimali, intużaw għaliha.

Imbagħad il-plejers kellhom jaqbdu l-valur tal-kontro (billi janalizzaw it-token tat-test) u jiġġeneraw token tal-ġlieda bl-użu tal-valur tal-kontro li jmiss u l-melħ magħżul fil-pass preċedenti.

Il-counter sempliċement inkrementa ma 'kull sparatura tat-test u kull 25 sekonda. Aħna ma ktibna dwar dan imkien, suppost kellha tkun sorpriża ta 'logħob żgħir.

Servizz ta' interazzjoni Captcha

Fid-dinja tal-logħob, dan kien l-istess captcha li kellu jitgħabba sabiex jinxtegħel il-fann u tiftaħ il-flipchart b'ħjiel. Ħdejn il-kamera kien hemm laptop b'monitoraġġ tat-tagħbija.

Kif inħoloq il-backend ta 'logħba tal-hacker dwar il-qerda ta' server

Servizz I kkalkolat dak li turi fil-monitoraġġ bħala t-tagħbija kurrenti: temperatura u CPU Fan. Il-metriċi ġew trasferiti għad-database timebase u mogħtija minn grafana.

Jekk fl-aħħar 5 sekondi ġew riċevuti aktar minn 50 talba biex jintwera l-captcha, allura t-tagħbija żdiedet b'numru fiss + każwali ta 'passi. Il-kalkolu kien li 100% ta 'tagħbija tista' tinkiseb f'żewġ minuti.

Fil-fatt, kien hemm aktar loġika fis-servizz milli kienet murija fil-logħba finali: poġġejna l-monitor b'tali mod li kien viżibbli biss ir-rotazzjoni tal-CPU Fan.

Fil-bidu tat-tfittxija riedu jħallu lil Grafan aċċessibbli mill-websajt tal-Falcon. Iżda kien fih ukoll metriċi springboot mir-rapport tal-applikazzjoni backend, li ma kellniex ħin biex nikklerjaw, għalhekk iddeċidejna li nibblukkaw l-aċċess għaliha. U bir-raġun - anki fil-bidu tat-tfittxija, xi plejers guessed li l-applikazzjoni kienet miktuba fil-qafas springboot u anke ħaffer l-ismijiet ta 'xi servizzi.

Hosting u data bus

Għodda għat-trasferiment ta 'informazzjoni mill-backend għas-sit, is-server VPS li fuqu kien qed jaħdem RabbitMQ.

Il-backend u d-data bus inżammu mixgħula VPS tagħna. Il-qawwa tiegħu kienet komparabbli mal-kompjuter li rajt fuq l-iskrin: VPS 2-core b'żewġ gigabytes ta 'RAM. It-tariffa ġiet iċċarġjata għar-riżorsi, peress li l-ogħla tagħbija kienet ippjanata għal ftit jiem biss - dan huwa dak li jagħmlu l-klijenti tagħna li jippjanaw li jgħabbu VPS għal perjodu qasir ta 'żmien. Imbagħad irriżulta li t-tagħbija kienet ogħla milli stennejna, u tariffa fissa tkun aktar profittabbli. Jekk tagħmel tfittxija, agħżel it-tariffi tal-linja turbo.

Biex nipproteġu s-server minn DDoSa, użajna Cloudflare.

Ta 'min jgħid li l-VPS rreżisti kollox b'unur.

Arduino, li kien responsabbli għall-kontroll tar-relays, irċieva kmandi mingħand it-traduttur u għamel ix-xogħol attwali

Dan huwa aktar is-suġġett tal-artiklu li jmiss dwar il-parti tal-ħardwer tal-proġett: il-backend sempliċement bagħat talbiet biex jixgħel relay speċifiku. Ġara li l-backend kien jaf kważi l-entitajiet kollha u t-talbiet minnu dehru qishom "ixgħel din l-entità." Għamilna dan għall-ittestjar bikri tas-sit (konna għadna ma mmuntnix l-Arduino u r-relays kollha), fl-aħħar ħallejna kollox hekk.

Il-parti ta 'quddiem

Ħloqna malajr is-sit fuq tilde, ħadet ġurnata tax-xogħol u ffranka 30 elf fuq il-baġit tagħna.

Inizjalment, ħsibna li sempliċiment nesportaw is-sit u nżidu l-loġika li konna neqsin, iżda dħalna f'termini ta 'użu li pprojbitna milli nagħmlu dan.

Aħna ma konniex lesti li niksru l-liċenzja, għalhekk kien hemm żewġ għażliet: li nimplimentaw kollox aħna stess jew li nikkuntattjaw direttament lil Tilda, nitkellmu dwar il-proġett u nitolbu permess biex nibdlu l-kodiċi.

Għażilna t-tieni għażla u mhux biss iltaqgħu magħna nofs triq, iżda saħansitra tawna sena ta’ kont tan-negozju b’xejn, li għaliha aħna grati ħafna lejhom. Kien skomdu ħafna li jurihom id-disinn tal-websajt ta’ Sokol.

Bħala riżultat, aħna mehmuża loġika js mal-frontend biex jintbagħtu talbiet lil apparati elementari, u biddlet ftit l-istili tal-buttuni biex jinxtegħlu u jitfi l-elementi tal-logħob.

Disinn tas-sit

L-istorja tat-tfittxijiet, li jiswew kapitlu separat.

Ridna noħolqu mhux biss sit antikwat, iżda wieħed assolutament diżgustanti li jikser ir-regoli bażiċi kollha tad-disinn. Fl-istess ħin, kien importanti li tinżamm believability: kellha ma tiksirx l-istorja ENT, turi l-pretentiousness ta 'l-awtur, u l-atturi jkollhom jemmnu li sit bħal dan jista' jeżisti u anke jġibu klijenti. U ġabu! Waqt li kienet għaddejja l-logħba, ġejna kkuntattjati darbtejn biex noħolqu websajts.

Għall-ewwel għamilt id-disinn jien stess, ipprova ninkludi aktar gifs u elementi tleqq. Imma r-raġel disinjatur tiegħi taʼ 10 snin ħares minn fuq spalltu u warrabha bħala “tajba wisq.” Biex tikser ir-regoli tad-disinn, trid tkun tafhom.

Kif inħoloq il-backend ta 'logħba tal-hacker dwar il-qerda ta' server

Hemm diversi kombinazzjonijiet ta 'kuluri li jqanqlu sensazzjoni dejjiema ta' stmerrija: aħdar u aħmar ta 'rikkezza ugwali, griż u roża, blu flimkien ma' kannella. Fl-aħħar, issetilna fuq taħlita ta 'aħmar u aħdar bħala l-kuluri bażi, żidna gifs b'qattus u għażilna 3-4 ritratti ta' Sokolov innifsu minn ritratt tal-istokk. Kelli biss ftit rekwiżiti: raġel ta 'età medja, liebes libsa ħażina koppja daqsijiet kbar wisq u f'pożizzjoni ta' "shooting ta 'ritratti ta' studio professjonali". Għat-test, urewha lill-ħbieb u staqsew "kif togħġobkom?"

Matul il-proċess tal-iżvilupp tad-disinn, ir-raġel tiegħi kellu jmur jimtedd kull nofs siegħa; il-ħelikopter beda jtir. Pasha pprova jiftaħ il-console tal-iżviluppatur fil-biċċa l-kbira tal-iskrin waqt li spiċċa jlesti l-frontend - biex jipproteġi għajnejh.

Apparati attwali

Il-fannijiet u d-dwal kienu mmuntati permezz ta 'relays ta' stat solidu sabiex ma jinxtegħlux b'qawwa sħiħa immedjatament - sabiex il-qawwa tiżdied b'mod parallel mal-monitoraġġ.

Imma se nitkellmu dwar dan fil-post li jmiss, dwar il-parti tal-ħardwer tal-logħba u l-kostruzzjoni attwali tas-sit.

Soġġorn sintonizzat!

Artikli oħra dwar it-tfittxija biex jinqered is-server

Kif inħoloq il-backend ta 'logħba tal-hacker dwar il-qerda ta' server

Sors: www.habr.com

Żid kumment