Historia e hulumtimit dhe zhvillimit nĂ« 3 pjesĂ«. Pjesa 1 â hulumtimi.
Ka shumĂ« burime â ka akoma mĂ« shumĂ« pĂ«rfitime.
Formulimi i detyrës
GjatĂ« zhvillimit tĂ« testeve tĂ« penetrimit dhe fushatave RedTeam, shpesh nuk mund tĂ« shfrytĂ«zojmĂ« mjetet standarde tĂ« KlientĂ«ve, si VPN, RDP, Citrix etj., si njĂ« mjet pĂ«r tĂ« hyrĂ« nĂ« rrjetin e brendshĂ«m. Disa herĂ«, VPN standardi punon me MFA dhe si faktor tĂ« dytĂ« pĂ«rdoret njĂ« token fizik, herĂ« tĂ« tjera ai monitorohet ashpĂ«r dhe hyrja jonĂ« pĂ«rmes VPN menjĂ«herĂ« bĂ«het e dukshme, siç thonĂ« â me tĂ« gjitha pasojat, ndĂ«rsa herĂ« tĂ« tjera tĂ« tilla mjete thjesht nuk ekzistojnĂ«.
NĂ« kĂ«to raste, na duhet tĂ« bĂ«jmĂ« vazhdimisht ato qĂ« quhen "tunele tĂ« kundĂ«rt" â lidhje nga rrjeti i brendshĂ«m nĂ« njĂ« burim tĂ« jashtĂ«m ose nĂ« njĂ« server tĂ« kontrolluar nga ne. Brenda njĂ« tuneli tĂ« tillĂ«, ne mund tĂ« punojmĂ« me burimet e brendshme tĂ« KlientĂ«ve.
Ekzistojnë disa lloje të tilla tunelesh të kundërta. Më e njohura, natyrisht, është Meterpreter. Po ashtu, tunelesh SSH me portë të kthyer gëzojnë një kërkesë të madhe mes masave të hackerëve. Për të realizuar tunnelingun e kundërt ka shumë mjete dhe shumë prej tyre janë studiuar mirë dhe përshkruar.
Sigurisht, zhvilluesit e zgjidhjeve të sigurisë nuk qëndrojnë duar kryq dhe aktivisht detektojnë veprime të tilla.
Për shembull, seancat MSF identifikohen me sukses nga IPS moderne nga Cisco ose Positive Tech, ndërsa tuneli SSH i kthyer mund të identifikohet praktikisht nga çdo firewall normal.
Pra, pĂ«r tĂ« mbetur tĂ« padukshĂ«m nĂ« njĂ« fushatĂ« tĂ« mirĂ« RedTeam â na nevojitet tĂ« ndĂ«rtojmĂ« tunelin e kundĂ«rt me mjete jo standarde dhe tĂ« pĂ«rshtatemi sa mĂ« afĂ«r me mĂ«nyrĂ«n reale tĂ« punĂ«s sĂ« rrjetit.
Le të provojmë të gjejmë ose shpikim diçka të ngjashme.
Para se të shpikim ndonjë gjë, duhet të kuptojmë se cilin rezultat dëshirojmë të arrijmë, cilat funksione duhet të kryejë zhvillimi ynë. Cilat do të jenë kërkesat për tunelin, në mënyrë që të mund të punojmë me një nivel maksimal fshehtësie?
Natyrisht, kërkesat e tilla mund të ndryshojnë shumë për çdo rast, por sipas përvojës së punës, mund të dallojmë disa të rëndësishme:
- punon në sistemet operative Windows 7-10. Sepse në shumicën e rrjeteve korporative përdoret pikërisht Windows;
- klienti lidhet me serverin përmes SSL për të parandaluar dëgjimin e thjeshtë nga mjetet ips;
- në lidhjen klienti duhet të mbështesë punën përmes një serveri proxy me autorizim, sepse në shumë kompani dalja në internet ndodh përmes proxy. Në të vërtetë, makina klientiale mund të mos e dijë këtë dhe proxy përdoret në mënyrë transparente. Por një funksionalitet të tillë duhet ta parashikojmë;
- pjesa klientale duhet të jetë e lakonshme dhe e portueshme;
Natyrisht, për të punuar brenda rrjetit të Klientit, në makinën e klientit mund të vendoset OpenVPN dhe të krijohet një tunel i plotë deri në serverin tonë (meqë klientët openvpn dinë të punojnë përmes proxy). Por, nga ana tjetër, kjo nuk do të jetë gjithmonë e mundur, pasi mund të mos jemi administratatorë lokalë atje, dhe përveç kësaj, kjo do të bëjë kaq shumë zhurmë saqë një SIEM ose HIPS të rregullt menjëherë do të na - tuneli ynë duhet të jetë shumëthërrmues dhe të mbështesë shumë lidhje njëkohësisht;
- lidha klient-server duhet të ketë ndonjë autorizim, në mënyrë që tuneli të vendoset vetëm për klientin tonë dhe jo për të gjithë ata që do të vijnë te serveri ynë për adresën dhe portin e caktuar. Idealisht, për "përdoruesit e jashtëm" duhet të hapet një faqe pritjeje me mace ose me tematikë profesionale që ka lidhje me domenin burimor.
Për shembull, nëse Klienti është një organizatë shëndetësore, për administratorin e sigurisë informacionit, që vendos të kontrollojë burimin, për të cilin kërkoi punonjësi i klinikës, duhet të hapet një faqe me produkte farmaceutike, Wikipedia me përshkrimin e diagnozës ose blogu i doktorit Komarovskij, etj.
Analiza e mjeteve ekzistuese
Para se tĂ« shpikni biçikletĂ«n tuaj â Ă«shtĂ« e nevojshme tĂ« bĂ«ni njĂ« analizĂ« tĂ« biçikletave ekzistuese dhe tĂ« kuptoni nĂ«se na nevojitet vĂ«rtet dhe, ndoshta, nuk jemi vetĂ«m ne qĂ« mendojmĂ« pĂ«r nevojĂ«n e njĂ« biçiklete funksionale tĂ« tillĂ«.
Kërkimi në internet (nuk kemi bërë shumë informacion), si dhe kërkimi në GitHub për fjalët kyçe «reverse socks» nuk dha shumë rezultate. Në thelb, gjithçka përqendrohet në ndërtimin e tunelëve SSH me rikthim të porteve dhe çdo gjë që lidhet me këtë. Përveç tunelëve SSH, mund të veçojmë disa zgjidhje:
NjĂ« zgjidhje e vjetĂ«r e tunelit tĂ« rikthimit nga ekipi i LaboratorisĂ« Kaspersky. Nga emri kuptohet pĂ«r çfarĂ« pĂ«rdoret ky skript. Realizuar nĂ« Python 2.7, tuneli punon nĂ« modalitetin cleartext (siç Ă«shtĂ« bĂ«rĂ« tashmĂ« e zakonshme â pĂ«rshĂ«ndetje RKN)
Një implementim tjetër në Python, gjithashtu në cleartext, por me më shumë mundësi. Shkruar si një modul dhe ka API për integrimin e zgjidhjes në projektet tuaja.
Lidhja e parĂ« â versioni fillestar i implementimit tĂ« reverse socks nĂ« Go (nuk mbĂ«shtetet mĂ« nga zhvilluesi).
Lidhja e dytĂ« â tashmĂ« Ă«shtĂ« pĂ«rmirĂ«simi ynĂ« me karakteristika shtesĂ«, gjithashtu nĂ« Go. NĂ« versionin tonĂ« ne realizuam SSL, funksionimin pĂ«rmes proxy me autorizim NTLM, autorizimin nĂ« klient, njĂ« faqe destinacioni nĂ« rast se fjalĂ«kalimi Ă«shtĂ« i gabuar (nĂ« fakt â ridirektoni nĂ« faqen e destinacionit), modalitet shumĂ«-fijor (dmth. disa persona mund tĂ« punojnĂ« nĂ« tĂ« njĂ«jtĂ«n kohĂ« me tunelin), njĂ« sistem ping pĂ«r klientin pĂ«r tĂ« kontrolluar nĂ«se Ă«shtĂ« aktiv apo jo.
Implementimi i reverse socks nga «miqtë tanë kinezë» në Python. Po ashtu, për ata që janë dembelë dhe «të pavdekshëm», ka një binar të gatshëm (exe) të përfunduar nga kinezët dhe i gatshëm për përdorim. Këtu vetëm një perëndi kineze e di se çfarë tjetër mund të ketë në këtë binar, përveç funksionalitetit të tij kryesor, prandaj përdoreni në rrezikun tuaj.
Një projekt mjaft interesant në C++ për realizimin e reverse socks dhe jo vetëm. Përveç tunelit të rikthimit, ai mund të bëjë rikthimin e porteve, krijimin e një shell komandash, etj.
MSF meterpreter
Këtu siç thotë, pa koment. Të gjithë hackerët me arsimim të mirë janë të njohur me këtë gjë dhe kuptojnë se sa lehtë mund të zbulohet nga mjetet mbrojtëse.
Të gjitha mjetet e përmendura punojnë sipas një teknologjie të ngjashme: një modul binar i përgatitur më parë ekzekutohet në makinën brenda rrjetit, i cili vendos një lidhje me një server të jashtëm. Në server, aktivizohet një server SOCKS4/5 që pranon lidhjet dhe i transmeton ato te klienti.
Një disavantazh i të gjithë mjeteve të lartpërmendura është se ose në makinën e klientit është e nevojshme të jetë instaluar Python ose Golang (sa shpesh keni hasur Python të instaluar në makinat, për shembull, të drejtorëve të kompanive ose punonjësve të zyrës?), ose duhet të tërheqim një binar të përgatitur më parë në atë makinë (praktikisht python dhe skenari në një paketë) dhe ta ekzekutojmë atë atje. Ndërkohë, shkarkimi i një exe dhe ekzekutimi i tij është një firmë e tillë për antivirusin ose HIPS-in lokal.
NĂ« pĂ«rgjithĂ«si, pĂ«rfundimi duket i qartĂ« â na nevojitet njĂ« zgjidhje nĂ« powershell. Tani do tĂ« fillojĂ« bombardimi me domate â se powershell Ă«shtĂ« tashmĂ« i tejkaluar, ai monitorohet, bllokohet etj. NĂ« tĂ« vĂ«rtetĂ« â aspak kudo. E deklarojmĂ« me pĂ«rgjegjĂ«si. PĂ«rveç kĂ«saj, ekzistojnĂ« njĂ« mori mĂ«nyrash pĂ«r tĂ« anashkaluar bllokimet (kĂ«tu pĂ«rsĂ«ri problemi modĂ«s pĂ«rshĂ«ndetje RKN đ), duke filluar nga ndryshimi i emrit tĂ« powershell.exe nĂ« cmdd.exe dhe deri te powerdll e kĂ«shtu me radhĂ«.
Të fillojmë të shpikim
ĂshtĂ« e qartĂ« se sĂ« pari do tĂ« shikojmĂ« nĂ« Google dhe... nuk do tĂ« gjejmĂ« asgjĂ« nĂ« lidhje me kĂ«tĂ« temĂ« (nĂ«se dikush ka gjetur â dĂ«rgoni lidhjet nĂ« komentet). Ka vetĂ«m Socks5 nĂ« powershell, por kjo Ă«shtĂ« njĂ« socks "e drejtpĂ«rdrejtĂ«", qĂ« ka disa disavantazhe tĂ« veta (pĂ«r to do tĂ« flasim mĂ« vonĂ«). Sigurisht, mund ta kthejmĂ« nĂ« njĂ« tĂ« kundĂ«rt me njĂ« lĂ«vizje tĂ« lehtĂ«, por kjo do tĂ« ishte vetĂ«m njĂ« socks me njĂ« tell, qĂ« pĂ«r ne nuk Ă«shtĂ« saktĂ«sisht ajo qĂ« na nevojitet.
Pra, nuk gjetëm asgjë të gatshme, prandaj do të duhet të shpikim biçikletën tonë. Si bazë për biçikletën tonë do të marrim të socks-it të kundërt në golang, ndërsa klienti për të do të realizohet në powershell.
RSocksTun
Pra, si funksionon rsockstun?
NĂ« thelb, funksionimi i RsocksTun (mĂ« pas nĂ« tekst â rs) bazohet nĂ« dy komponentĂ« softuerikĂ« â Yamux dhe serverin Socks5. Serveri Socks5 Ă«shtĂ« njĂ« socks5 lokal i zakonshĂ«m, ai aktivizohet nĂ« klient. Dhe shumĂ«fishimi i lidhjeve me tĂ« (mos harroni pĂ«r multithreading?) sigurohet pĂ«rmes yamux (). Kjo skemĂ« lejon tĂ« niset disa serverĂ« klientĂ«sh socks5 dhe tĂ« shpĂ«rndajĂ« lidhjet e jashtme pĂ«r ta, duke i kaluar ato pĂ«rmes njĂ« lidhjeje TCP tĂ« vetme (gati si nĂ« meterpreter) nga klienti nĂ« server, duke realizuar kĂ«shtu njĂ« modalitet tĂ« shumĂ«fishtĂ«, pa tĂ« cilin nuk mund tĂ« funksionojmĂ« plotĂ«sisht nĂ« rrjetin e brendshĂ«m.
Thelbi i punĂ«s sĂ« yamux Ă«shtĂ« qĂ« ai fut njĂ« nivel tĂ« ri rrjetesh tĂ« rrjedhave, duke e realizuar atĂ« si njĂ« krye 12-byte pĂ«r secilĂ«n paketĂ«. (KĂ«tu ne qĂ«llimisht pĂ«rdorim fjalĂ«n "rrjedhĂ«", dhe jo "stream", pĂ«r tĂ« mos ngatĂ«rruar lexuesin me "thread" â kĂ«tĂ« koncept do ta pĂ«rdorim gjithashtu nĂ« kĂ«tĂ« artikull). Brenda krye tĂ« yamux ndodhen numri i rrjedhĂ«s, flamuj pĂ«r vendosjen/pĂ«rfundimin e rrjedhĂ«s, numri i byte-ve tĂ« transmetuara, madhĂ«sia e dritares sĂ« transmetimit.

PĂ«rveç vendosjes/pĂ«rfundimit tĂ« rrjedhĂ«s, nĂ« yamux Ă«shtĂ« realizuar mekanizmi i keepalive-it, i cili lejon tĂ« monitorohet funksionimi i kanalit tĂ« vendosur tĂ« komunikimit. Funksionimi i mekanizmit tĂ« mesazheve keepalive konfigurohet gjatĂ« krijimit tĂ« sesionit Yamux. NĂ« fakt, nga konfigurimet atje ndodhen vetĂ«m â dy parametra: aktivizimi/çaktivizimi dhe periodiciteti i dĂ«rgimit tĂ« paketave nĂ« sekonda. Mesazhet keepalive mund tĂ« dĂ«rgohen nga serveri yamux, si dhe nga klienti yamux. Kur merr njĂ« mesazh keepalive, pala e largĂ«t Ă«shtĂ« e detyruar tĂ« pĂ«rgjigjet me njĂ« dĂ«rgesĂ« me tĂ« njĂ«jtin identifikator mesazhi (nĂ« fakt â numri), tĂ« cilin ajo e pranoi. NĂ« pĂ«rgjithĂ«si, keepalive Ă«shtĂ« si njĂ« ping, vetĂ«m pĂ«r yamux.
Për detaje, e gjithë teknika e punës së shumëfishtë: llojet e paketave, flamujt e vendosjes dhe përfundimit të lidhjeve, mekanizmi i transmetimit të të dhënave përshkruhet në në yamux.
Përfundimi i pjesës së parë
Tani, nĂ« pjesĂ«n e parĂ« tĂ« artikullit ne u njohĂ«m me disa mjete pĂ«r organizimin e tunelave tĂ« kundĂ«r, shikuam pĂ«rparĂ«sitĂ« dhe disavantazhet e tyre, studiuam mekanizmin e punĂ«s sĂ« shumĂ«fishtĂ« yamux dhe pĂ«rshkruam kĂ«rkesat kryesore pĂ«r modulin powershell qĂ« po krijohet. NĂ« pjesĂ«n tjetĂ«r ne do tĂ« merremi me zhvillimin e modulit tĂ« vet, nĂ« mĂ«nyrĂ« praktikisht, nga fillimi. Vazhdimi ndodhet nĂ« vijim. Mos u shkĂ«putni đ
Burimi: habr.com
