Kërkimi kibernetik nga ekipi i mbështetjes teknike Veeam

Këtë dimër, ose më mirë, në një nga ditët midis Krishtlindjeve Katolike dhe Vitit të Ri, inxhinierët e mbështetjes teknike të Veeam ishin të zënë me detyra të pazakonta: ata po kërkonin një grup hakerësh të quajtur "Veeamonymous".

Kërkimi kibernetik nga ekipi i mbështetjes teknike Veeam

Ai tregoi se si vetë djemtë dolën dhe kryen një kërkim të vërtetë në realitet në punën e tyre, me detyra "afër luftimit" Kirill Stetsko, Inxhinier përshkallëzimi.

- Pse e nise këtë?

- Pothuajse në të njëjtën mënyrë që njerëzit erdhën me Linux në një kohë - thjesht për argëtim, për kënaqësinë e tyre.

Ne donim lëvizje, dhe në të njëjtën kohë donim të bënim diçka të dobishme, diçka interesante. Plus, ishte e nevojshme t'u jepej pak lehtësim emocional inxhinierëve nga puna e tyre e përditshme.

- Kush e sugjeroi këtë? E kujt ishte ideja?

— Ideja ishte menaxherja jonë Katya Egorova, dhe më pas koncepti dhe të gjitha idetë e mëtejshme lindën me përpjekje të përbashkëta. Fillimisht menduam të bënim një hackathon. Por gjatë zhvillimit të konceptit, ideja u shndërrua në një kërkim; në fund të fundit, një inxhinier i mbështetjes teknike është një lloj aktiviteti ndryshe nga programimi.

Pra, ne thirrëm miq, shokë, të njohur, njerëz të ndryshëm na ndihmuan me konceptin - një person nga T2 (linja e dytë e mbështetjes është shënimi i redaktorit), një person me T3, disa persona nga ekipi SWAT (ekip i reagimit të shpejtë për raste veçanërisht urgjente - shënimi i redaktorit). U mblodhëm të gjithë, u ulëm dhe u përpoqëm të gjenim detyra për kërkimin tonë.

— Ishte shumë e papritur të mësoja për të gjitha këto, sepse, me sa di unë, mekanikën e kërkimit e përpunojnë zakonisht skenaristët specialistë, domethënë jo vetëm që jeni marrë me një gjë kaq komplekse, por edhe në lidhje me punën tuaj. , në fushën tuaj profesionale të veprimtarisë.

— Po, ne donim ta bënim jo thjesht argëtim, por të “pomponim” aftësitë teknike të inxhinierëve. Një nga detyrat në departamentin tonë është shkëmbimi i njohurive dhe trajnimi, por një kërkim i tillë është një mundësi e shkëlqyer për t'i lënë njerëzit të "prekojnë" disa teknika të reja për ta në jetë.

— Si dolët me detyrat?

— Ne patëm një seancë idesh. E kishim mirëkuptimin se duhej të bënim disa teste teknike dhe të tilla që të ishin interesante dhe në të njëjtën kohë të sillnin njohuri të reja.
Për shembull, ne menduam se njerëzit duhet të provojnë të nuhasin trafikun, të përdorin redaktuesit hex, të bëjnë diçka për Linux, disa gjëra pak më të thella që lidhen me produktet tona (Veeam Backup & Replication dhe të tjera).

Koncepti ishte gjithashtu një pjesë e rëndësishme. Ne vendosëm të ndërtojmë temën e hakerëve, qasjes anonime dhe një atmosfere fshehtësie. Maska e Guy Fawkes u bë një simbol, dhe emri erdhi natyrshëm - Veeamonymous.

"Në fillim ishte fjala"

Për të nxitur interesin, vendosëm të organizonim një fushatë PR me temë kërkimi përpara ngjarjes: ne varëm postera me njoftimin rreth zyrës sonë. Dhe disa ditë më vonë, fshehurazi nga të gjithë, i lyen me sprej dhe filluan një “rosë”, thonë se disa sulmues i kanë prishur posterët, madje kanë bashkangjitur një foto me një provë….

- Pra, e bëtë vetë, pra ekipi i organizatorëve?!

— Po, të Premten, rreth orës 9, kur të gjithë ishin larguar tashmë, shkuam dhe vizatuam shkronjën "V" në të gjelbër nga balonat.) Shumë pjesëmarrës në kërkim nuk e morën me mend kurrë se kush e bëri atë - njerëzit erdhën tek ne dhe pyeti kush i prishi posterat? Dikush e mori këtë çështje shumë seriozisht dhe kreu një hetim të tërë për këtë temë.

Për kërkimin, ne kemi shkruar gjithashtu skedarë audio, tinguj "të shqyer": për shembull, kur një inxhinier hyn në sistemin tonë [CRM të prodhimit], ekziston një robot që përgjigjet që thotë të gjitha llojet e frazave, numrave... Këtu jemi nga ato fjalë që ai ka regjistruar, ka kompozuar fraza pak a shumë kuptimplotë, mirë, ndoshta pak të shtrembër - për shembull, ne kemi marrë "Nuk ka miq për t'ju ndihmuar" në një skedar audio.

Për shembull, ne kemi përfaqësuar adresën IP në kodin binar dhe përsëri, duke përdorur këta numra [të shqiptuar nga roboti], kemi shtuar lloj-lloj tingujsh të frikshëm. Ne e filmuam vetë videon: në video kemi një burrë të ulur me kapuç të zi dhe një maskë Guy Fawkes, por në realitet nuk ka një person, por tre, sepse dy janë duke qëndruar pas tij dhe mbajnë një "sfond" të bërë nga një batanije :).

- Epo, je ngatërruar, ta them troç.

- Po, ne morëm zjarr. Në përgjithësi, ne fillimisht dolëm me specifikimet tona teknike, dhe më pas kompozuam një skicë letrare dhe lozonjare mbi temën e asaj që dyshohet se ka ndodhur. Sipas skenarit, pjesëmarrësit po gjuanin një grup hakerësh të quajtur "Veeamonymous". Ideja ishte gjithashtu që ne, si të thuash, do të "thyenim murin e 4-të", domethënë do t'i transferonim ngjarjet në realitet - ne pikturuam nga një kuti llak, për shembull.

Në përpunimin letrar të tekstit na ndihmoi një nga folësit e anglishtes amtare nga departamenti ynë.

- Prit, pse një folës amtare? A i ke bërë të gjitha edhe në anglisht?!

— Po, e bëmë për zyrat e Shën Petërburgut dhe Bukureshtit, kështu që gjithçka ishte në anglisht.

Për përvojën e parë u përpoqëm që gjithçka të funksiononte, kështu që skenari ishte linear dhe mjaft i thjeshtë. Shtuam më shumë rrethina: tekste sekrete, kode, fotografi.

Kërkimi kibernetik nga ekipi i mbështetjes teknike Veeam

Ne përdorëm gjithashtu meme: kishte një mori fotografish për temat e hetimeve, UFO-t, disa histori të njohura horror - disa ekipe u hutuan nga kjo, duke u përpjekur të gjenin disa mesazhe të fshehura atje, të zbatonin njohuritë e tyre për steganografinë dhe gjëra të tjera ... por, sigurisht, nuk kishte asgjë të tillë.

Rreth gjembave

Megjithatë, gjatë procesit të përgatitjes jemi përballur edhe me sfida të papritura.

Ne luftuam shumë me ta dhe zgjidhëm të gjitha llojet e çështjeve të papritura, dhe rreth një javë para kërkimit menduam se gjithçka kishte humbur.

Ndoshta ia vlen të tregohet pak për bazën teknike të kërkimit.

Gjithçka u bë në laboratorin tonë të brendshëm ESXi. Ne kishim 6 ekipe, që do të thotë se duhej të ndanim 6 grupe burimesh. Pra, për çdo ekip ne vendosëm një grup të veçantë me makinat e nevojshme virtuale (të njëjtën IP). Por duke qenë se e gjithë kjo ndodhej në serverë që janë në të njëjtin rrjet, konfigurimi aktual i VLAN-ve tanë nuk na lejonte të izolonim makinat në pishina të ndryshme. Dhe, për shembull, gjatë një testimi, ne morëm situata kur një makinë nga një pishinë lidhej me një makinë nga një tjetër.

- Si arritët ta korrigjoni situatën?

— Në fillim menduam për një kohë të gjatë, testuam të gjitha llojet e opsioneve me leje, vLAN të ndara për makinat. Si rezultat, ata e bënë këtë - çdo ekip sheh vetëm serverin Veeam Backup, përmes të cilit zhvillohet e gjithë puna e mëtejshme, por nuk e sheh nën-poolin e fshehur, i cili përmban:

  • disa makina Windows
  • Serveri kryesor i Windows
  • Makinë Linux
  • çift ​​VTL (Virtual Tape Library)

Të gjitha grupeve u caktohet një grup i veçantë portash në çelësin vDS dhe VLAN-i i tyre privat. Ky izolim i dyfishtë është pikërisht ajo që nevojitet për të eliminuar plotësisht mundësinë e ndërveprimit në rrjet.

Rreth trimave

- A mund të marrë pjesë dikush në kërkim? Si u formuan skuadrat?

— Kjo ishte përvoja jonë e parë e organizimit të një eventi të tillë dhe aftësitë e laboratorit tonë ishin të kufizuara në 6 ekipe.

Së pari, siç thashë tashmë, ne zhvilluam një fushatë PR: duke përdorur postera dhe poste, njoftuam se do të mbahej një kërkim. Ne madje kishim disa të dhëna - frazat ishin të koduara në kod binar në vetë postera. Në këtë mënyrë, ne i interesuam njerëzit, dhe njerëzit tashmë arritën marrëveshje mes tyre, me miqtë, me miqtë dhe bashkëpunuan. Si rezultat, më shumë njerëz u përgjigjën sesa ne kishim pishina, kështu që na duhej të bënim një përzgjedhje: ne dolëm me një detyrë të thjeshtë testimi dhe ia dërguam të gjithëve që u përgjigjën. Ishte një problem logjik që duhej zgjidhur shpejt.

Një ekip lejohej deri në 5 persona. Nuk kishte nevojë për kapiten, ideja ishte bashkëpunimi, komunikimi me njëri-tjetrin. Dikush është i fortë, për shembull, në Linux, dikush është i fortë në kaseta (rezervë në kasetë), dhe të gjithë, duke parë detyrën, mund të investojnë përpjekjet e tyre në zgjidhjen e përgjithshme. Të gjithë komunikuan me njëri-tjetrin dhe gjetën një zgjidhje.

Kërkimi kibernetik nga ekipi i mbështetjes teknike Veeam

- Në çfarë momenti filloi kjo ngjarje? A keni pasur një lloj "orë X"?

— Po, kishim një ditë të caktuar rreptësisht, e zgjodhëm që të kishte më pak ngarkesë në departament. Natyrisht, drejtuesit e ekipit u njoftuan paraprakisht se skuadrat e tilla ishin ftuar të merrnin pjesë në kërkim dhe atyre u duhej dhënë një lehtësim [përsa i përket ngarkimit] atë ditë. Dukej sikur duhej të ishte fundi i vitit, 28 dhjetor, e premte. Prisnim që të zgjaste rreth 5 orë, por të gjitha ekipet e përfunduan më shpejt.

— A ishin të gjithë në baza të barabarta, a kishin të gjithë të njëjtat detyra bazuar në raste reale?

— Epo, po, secili nga hartuesit mori disa histori nga përvoja personale. Ne dinim për diçka që kjo mund të ndodhte në realitet, dhe do të ishte interesante që një person ta "ndiente", ta shikonte dhe ta kuptonte. Ata gjithashtu morën disa gjëra më specifike - për shembull, rikuperimin e të dhënave nga kasetat e dëmtuara. Disa dhanë sugjerime, por shumica e skuadrave e bënë atë vetë.

Ose ishte e nevojshme të përdornim magjinë e skenarëve të shpejtë - për shembull, kishim një histori që një "bombë logjike" "shqyen" një arkiv me shumë vëllime në dosje të rastësishme përgjatë pemës dhe ishte e nevojshme të mblidheshin të dhënat. Ju mund ta bëni këtë me dorë - gjeni dhe kopjoni [skedarët] një nga një, ose mund të shkruani një skenar duke përdorur një maskë.

Në përgjithësi, ne u përpoqëm t'i përmbahemi këndvështrimit se një problem mund të zgjidhet në mënyra të ndryshme. Për shembull, nëse jeni pak më me përvojë ose dëshironi të hutoheni, atëherë mund ta zgjidhni më shpejt, por ekziston një mënyrë e drejtpërdrejtë për ta zgjidhur atë kokë më kokë - por në të njëjtën kohë do të shpenzoni më shumë kohë për problemin. Kjo do të thotë, pothuajse çdo detyrë kishte disa zgjidhje, dhe ishte interesante se cilat rrugë do të zgjidhnin ekipet. Pra, jolineariteti ishte pikërisht në zgjedhjen e opsionit të zgjidhjes.

Nga rruga, problemi Linux doli të ishte më i vështiri - vetëm një ekip e zgjidhi atë në mënyrë të pavarur, pa asnjë sugjerim.

-A ishte e mundur të merreshin sugjerime? Si në një kërkim të vërtetë??

— Po, ishte e mundur të merrej, sepse ne kuptuam që njerëzit janë të ndryshëm dhe ata që u mungonin njohuritë mund të futeshin në të njëjtin ekip, kështu që për të mos vonuar kalimin dhe për të mos humbur interesin konkurrues, vendosëm që ne do këshilla. Për ta bërë këtë, çdo ekip u vëzhgua nga një person nga organizatorët. Epo, ne u siguruam që askush të mos mashtronte.

Kërkimi kibernetik nga ekipi i mbështetjes teknike Veeam

Rreth yjeve

— A kishte çmime për fituesit?

— Po, ne u përpoqëm të bënim çmimet më të këndshme si për të gjithë pjesëmarrësit ashtu edhe për fituesit: fituesit morën xhup të stilistëve me logon Veeam dhe një frazë të koduar në kod heksadecimal, të zezë). Të gjithë pjesëmarrësit morën një maskë Guy Fawkes dhe një çantë të markës me logon dhe të njëjtin kod.

- Kjo do të thotë, gjithçka ishte si në një kërkim të vërtetë!

"Epo, ne donim të bënim një gjë të lezetshme, të rritur dhe mendoj se ia dolëm."

- Kjo eshte e vertetë! Cili ishte reagimi përfundimtar i atyre që morën pjesë në këtë kërkim? A e keni arritur qëllimin tuaj?

- Po, shumë erdhën më vonë dhe thanë se i panë qartë pikat e tyre të dobëta dhe donin t'i përmirësonin. Dikush pushoi së frikësuari nga disa teknologji - për shembull, duke hedhur blloqe nga kaseta dhe duke u përpjekur të rrëmbejë diçka atje... Dikush e kuptoi se duhej të përmirësonte Linux-in, e kështu me radhë. Ne u përpoqëm të japim një gamë mjaft të gjerë detyrash, por jo krejtësisht të parëndësishme.

Kërkimi kibernetik nga ekipi i mbështetjes teknike Veeam
Skuadra fituese

"Kushdo që do, do ta arrijë!"

— A kërkoi shumë përpjekje nga ata që përgatitën kërkimin?

- Në fakt po. Por kjo ka shumë të ngjarë për faktin se ne nuk kishim përvojë në përgatitjen e kërkimeve të tilla, të këtij lloji të infrastrukturës. (Le të bëjmë një rezervë se kjo nuk është infrastruktura jonë e vërtetë - thjesht supozohej të kryente disa funksione loje.)

Ishte një eksperiencë shumë interesante për ne. Në fillim isha skeptike, sepse ideja më dukej shumë e lezetshme, mendova se do të ishte shumë e vështirë për t'u zbatuar. Por ne filluam ta bënim, filluam të plugonim, gjithçka filloi të merrte flakë dhe në fund ia dolëm. Dhe praktikisht nuk kishte mbivendosje.

Në total kemi kaluar 3 muaj. Në pjesën më të madhe, ne dolëm me një koncept dhe diskutuam se çfarë mund të zbatonim. Në këtë proces, natyrisht, disa gjëra ndryshuan, sepse ne kuptuam që nuk kishim aftësi teknike për të bërë diçka. Na u desh të bënim diçka gjatë rrugës, por në mënyrë të tillë që i gjithë konturi, historia dhe logjika të mos prisheshin. Ne u përpoqëm jo vetëm të jepnim një listë të detyrave teknike, por ta bënim atë të përshtatet në histori, në mënyrë që të ishte koherente dhe logjike. Puna kryesore po vazhdonte muajin e fundit, pra 3-4 javë para ditës X.

— Pra, përveç aktivitetit tuaj kryesor, keni ndarë kohë për përgatitje?

— Këtë e bëmë paralelisht me punën tonë kryesore, po.

- A ju kërkohet ta bëni këtë përsëri?

- Po, kemi shumë kërkesa për të përsëritur.

- Dhe ti?

- Kemi ide të reja, koncepte të reja, duam të tërheqim më shumë njerëz dhe ta zgjerojmë atë me kalimin e kohës - si procesi i përzgjedhjes ashtu edhe vetë procesi i lojës. Në përgjithësi, ne jemi të frymëzuar nga projekti "Cicada", ju mund ta Google - është një temë shumë e lezetshme e IT, njerëz nga e gjithë bota bashkohen atje, ata fillojnë temat në Reddit, në forume, përdorin përkthime kodesh, zgjidhin gjëegjëza. , dhe të gjitha këto.

— Ideja ishte e mrekullueshme, vetëm respekt për idenë dhe zbatimin, sepse vërtet vlen shumë. Ju uroj sinqerisht që të mos e humbisni këtë frymëzim dhe që të gjitha projektet tuaja të reja të jenë gjithashtu të suksesshme. Faleminderit!

Kërkimi kibernetik nga ekipi i mbështetjes teknike Veeam

— Po, a mund të shikoni një shembull të një detyre që definitivisht nuk do ta ripërdorni?

"Unë dyshoj se nuk do të ripërdorim asnjë prej tyre." Prandaj, mund t'ju tregoj për ecurinë e të gjithë kërkimit.

Pista bonusNë fillim, lojtarët kanë emrin e makinës virtuale dhe kredencialet nga vCenter. Pasi janë futur në të, ata e shohin këtë makinë, por ajo nuk fillon. Këtu ju duhet të merrni me mend se diçka nuk është në rregull me skedarin .vmx. Pasi ta shkarkojnë atë, ata shohin kërkesën e nevojshme për hapin e dytë. Në thelb, ai thotë se baza e të dhënave e përdorur nga Veeam Backup & Replication është e koduar.
Pas heqjes së kërkesës, shkarkimit të skedarit .vmx përsëri dhe ndezjes me sukses të makinës, ata shohin se një nga disqet në të vërtetë përmban një bazë të dhënash të koduar bazë64. Prandaj, detyra është ta deshifroni atë dhe të merrni një server plotësisht funksional Veeam.

Pak për makinën virtuale në të cilën ndodh e gjithë kjo. Siç e kujtojmë, sipas komplotit, personazhi kryesor i kërkimit është një person mjaft i errët dhe po bën diçka që nuk është qartësisht shumë e ligjshme. Prandaj, kompjuteri i tij i punës duhet të ketë një pamje krejtësisht të ngjashme me hakerin, të cilën ne duhej ta krijonim, pavarësisht se është Windows. Gjëja e parë që bëmë ishte shtimi i shumë rekuizitave, të tilla si informacione mbi hakimet kryesore, sulmet DDoS dhe të ngjashme. Më pas ata instaluan të gjithë softuerin tipik dhe vendosën kudo depo të ndryshme, skedarë me hash etj. Gjithçka është si në filma. Ndër të tjera, kishte dosje të emërtuara case-case*** dhe open-case***
Për të përparuar më tej, lojtarët duhet të rivendosin sugjerimet nga skedarët rezervë.

Këtu duhet thënë se në fillim lojtarëve iu dhanë mjaft informacion dhe ata morën shumicën e të dhënave (si IP, hyrje dhe fjalëkalime) gjatë rrjedhës së kërkimit, duke gjetur të dhëna në kopje rezervë ose skedarë të shpërndarë në makina. . Fillimisht, skedarët rezervë janë të vendosur në depon e Linux, por vetë dosja në server është montuar me flamurin noexec, kështu që agjenti përgjegjës për rikuperimin e skedarëve nuk mund të fillojë.

Duke rregulluar depon, pjesëmarrësit fitojnë akses në të gjithë përmbajtjen dhe më në fund mund të rivendosin çdo informacion. Mbetet për të kuptuar se cila është. Dhe për ta bërë këtë, ata thjesht duhet të studiojnë skedarët e ruajtur në këtë makinë, të përcaktojnë se cilat prej tyre janë "të prishura" dhe çfarë saktësisht duhet të rikthehet.

Në këtë pikë, skenari zhvendoset nga njohuritë e përgjithshme të TI-së në veçoritë specifike të Veeam.

Në këtë shembull të veçantë (kur e dini emrin e skedarit, por nuk dini ku ta kërkoni), duhet të përdorni funksionin e kërkimit në Menaxher të Ndërmarrjeve, e kështu me radhë. Si rezultat, pas rivendosjes së të gjithë zinxhirit logjik, lojtarët kanë një tjetër hyrje/fjalëkalim dhe dalje nmap. Kjo i sjell ato në serverin Windows Core dhe nëpërmjet RDP (në mënyrë që jeta të mos duket si mjaltë).

Tipari kryesor i këtij serveri: me ndihmën e një skripti të thjeshtë dhe disa fjalorëve, u formua një strukturë absolutisht e pakuptimtë dosjesh dhe skedarësh. Dhe kur hyni, merrni një mesazh mirëseardhjeje si "Këtu ka shpërthyer një bombë logjike, kështu që do t'ju duhet të bashkoni të dhënat për hapat e mëtejshëm".

E dhëna e mëposhtme u nda në një arkiv me shumë vëllime (40-50 copë) dhe u shpërnda në mënyrë rastësore midis këtyre dosjeve. Ideja jonë ishte që lojtarët të tregonin talentin e tyre në shkrimin e skripteve të thjeshta të PowerShell në mënyrë që të krijonin një arkiv me shumë vëllime duke përdorur një maskë të njohur dhe të merrnin të dhënat e kërkuara. (Por doli si në atë shaka - disa nga subjektet doli të ishin të zhvilluara fizikisht në mënyrë të pazakontë.)

Arkivi përmbante një foto të një kasete (me mbishkrimin "Darka e Fundit - Momentet më të mira"), e cila jepte një aluzion të përdorimit të një biblioteke shiritash të lidhur, e cila përmbante një kasetë me një emër të ngjashëm. Kishte vetëm një problem - doli të ishte aq i pafuqishëm sa nuk ishte as i kataloguar. Këtu filloi ndoshta pjesa më e fortë e kërkimit. Ne e fshimë kokën nga kaseta, kështu që për të rikuperuar të dhënat prej saj, thjesht duhet të hidhni blloqet "të papërpunuara" dhe t'i shikoni ato në një redaktues hex për të gjetur shënuesit e fillimit të skedarit.
Ne gjejmë shënuesin, shikojmë kompensimin, shumëzojmë bllokun me madhësinë e tij, shtojmë kompensimin dhe, duke përdorur mjetin e brendshëm, përpiqemi të rikuperojmë skedarin nga një bllok specifik. Nëse gjithçka është bërë në mënyrë korrekte dhe matematika bie dakord, atëherë lojtarët do të kenë një skedar .wav në duart e tyre.

Në të, duke përdorur një gjenerator zëri, ndër të tjera, diktohet një kod binar, i cili zgjerohet në një IP tjetër.

Ky, rezulton, është një server i ri Windows, ku gjithçka lë të kuptohet për nevojën për të përdorur Wireshark, por nuk është aty. Truku kryesor është se ka dy sisteme të instaluara në këtë makinë - vetëm disku nga i dyti shkëputet përmes menaxherit të pajisjes jashtë linje, dhe zinxhiri logjik çon në nevojën për të rindezur. Pastaj rezulton se si parazgjedhje një sistem krejtësisht i ndryshëm, ku është instaluar Wireshark, duhet të niset. Dhe gjatë gjithë kësaj kohe ne ishim në sistemin operativ dytësor.

Nuk ka nevojë të bëni asgjë të veçantë këtu, thjesht aktivizoni kapjen në një ndërfaqe të vetme. Një ekzaminim relativisht i afërt i deponisë zbulon një paketë qartësisht të majtë të dërguar nga makina ndihmëse në intervale të rregullta, e cila përmban një lidhje me një video në YouTube ku lojtarëve u kërkohet të telefonojnë një numër të caktuar. Telefonuesi i parë do të dëgjojë urimet për vendin e parë, pjesa tjetër do të marrë një ftesë për HR (shaka)).

Nga rruga, ne jemi të hapur Vende të lira pune për inxhinierët dhe kursantët e mbështetjes teknike. Mirë se vini në ekip!

Burimi: www.habr.com

Shto një koment