Historia e kĂ«rkimit dhe zhvillimit nĂ« 3 pjesĂ«. Pjesa 1 â kĂ«rkimi.
Ka shumĂ« libra â por edhe mĂ« shumĂ« dobi.
Vendosja e detyrës
GjatĂ« realizimit tĂ« pĂ«ntestĂ«ve dhe fushatave RedTeam, nuk Ă«shtĂ« gjithmonĂ« e mundur tĂ« pĂ«rdoren mjetet standarde tĂ« KlientĂ«ve, si VPN, RDP, Citrix etj., pĂ«r tĂ« hyrĂ« nĂ« rrjetin e brendshĂ«m. NdonjĂ«herĂ« VPN-i standard punon me MFA dhe si faktor i dytĂ« pĂ«rdoret njĂ« token fizik, ndonjĂ«herĂ« monitorohet ashpĂ«r dhe hyrja jonĂ« pĂ«rmes VPN-it bĂ«het e dukshme menjĂ«herĂ«, siç thonĂ« â me tĂ« gjitha pasojat, dhe nĂ« disa raste nuk ka fare kĂ«to mjete.
NĂ« raste tĂ« tilla, Ă«shtĂ« e nevojshme tĂ« krijohen vazhdimisht kĂ«shtu quajturat "tuneli tĂ« kundĂ«rt" â lidhje nga rrjeti i brendshĂ«m nĂ« njĂ« burim tĂ« jashtĂ«m ose njĂ« server tĂ« kontrolluar nga ne. NĂ« brendĂ«si tĂ« kĂ«tij tuneli, mund tĂ« punojmĂ« me resurset e brendshme tĂ« KlientĂ«ve.
Ekzistojnë disa lloje të tillë tunesh të kundërt. I njohuri është, sigurisht, Meterpreter. Po ashtu, shumë të përdorura në radhët e hakerëve janë tunelët SSH me port për të kundërt. Ka shumë mjete për realizimin e tunelimit të kundërt dhe shumë prej tyre janë studiuar mirë dhe janë përshkruar.
Sigurisht, nga ana e tyre, zhvilluesit e zgjidhjeve mbrojtëse nuk qëndrojnë mënjanë dhe aktivisht detektojnë veprime të tilla.
Për shembull, seancat MSF detektohen me sukses nga IPS moderne nga Cisco ose Positive Tech, ndërsa një tunel të kundërt SSH mund të zbulohen praktikisht nga çdo firewall normal.
Prandaj, pĂ«r tĂ« mbetur tĂ« padukshĂ«m nĂ« njĂ« fushatĂ« tĂ« mirĂ« RedTeam â ne duhet tĂ« krijojmĂ« tunelin e kundĂ«rt me mjete jo standarde dhe tĂ« pĂ«rshtatemi sa mĂ« afĂ«r mĂ«nyrĂ«s reale tĂ« punĂ«s sĂ« rrjetit.
Le të përpiqemi të gjejmë ose të shpikim diçka të tillë.
Para se të shpikim diçka, duhet të kuptojmë se çfarë rezultati duam të arrijmë, cilat funksione duhet të plotësojë zhvillimi ynë. Cilat do të jenë kërkesat për tunelin, që ne të mund të punojmë në një mod maksimumi të fshehtë?
ĂshtĂ« e qartĂ« se pĂ«r çdo rast kĂ«rkesat mund tĂ« ndryshojnĂ« ndjeshĂ«m, por nga pĂ«rvoja e punĂ«s mund tĂ« identifikojmĂ« disa kĂ«rkesa kryesore:
- 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ë përjashtuar ndjekjen e thjeshtë nga mjetet ips;
- kur lidhja bëhet, 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 klient mund të mos e dijë fare këtë, dhe proxy përdoret në mod transparence. Por këtë funksionalitet ne duhet ta parashikojmë;
- pjesa klient duhet të jetë e thjeshtë dhe portable;
Sigurisht, për të punuar brenda rrjetit të Klientit, në makinën klient mund të instalojmë OpenVPN dhe të ngrisim një tunel të plotë deri në serverin tonë (për fat të mirë, klientët e openvpn dinë të punojnë përmes proxy). Por, së pari, kjo nuk funksionon gjithmonë, pasi mund të mos jemi administratë lokale aty, dhe së dyti, krijon aq shumë zhurmë sa që një SIEM i rregullt ose HIPS do të 'informojë' menjëherë për ne. Në ideal, klienti ynë duhet të jetë një ekip i quajtur inline, siç është realizuar në shumë shell-e bash, dhe të fillohet përmes komandës, për shembull, kur ekzekutohet komandat nga makros nga Word. - tuneli ynë duhet të jetë shumë-fibrik dhe të mbështesë shumë lidhje njëkohësisht;
- lidhja 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ë vijnë në serverin tonë në adresën dhe portin e caktuar. Në ideal, për 'përdoruesit e jashtëm', duhet të hapet një faqe në të cilën shfaqen kafshë të vogla ose tema profesionale të lidhura me domainin burim.
Për shembull, nëse Klienti është një organizatë mjekësore, atëherë për administruesin e sigurisë së informacionit, të vendosur të kontrollojë burimin që ka vizituar punonjësi i klinikës, duhet të hapet një faqe me produkte farmaceutike, Wikipedia me përshkrimin e diagnozës ose blogu i doktor Komarovskit etj.
Analiza e mjeteve ekzistuese
Para se tĂ« shpikim biçikletĂ«n tonĂ« â Ă«shtĂ« e nevojshme tĂ« bĂ«jmĂ« njĂ« analizĂ« tĂ« biçikletave ekzistuese dhe tĂ« kuptojmĂ« nĂ«se pĂ«r tĂ« vĂ«rtetĂ« na nevojitet dhe ndoshta nuk jemi vetĂ«m qĂ« kemi menduar pĂ«r nevojĂ«n e njĂ« biçiklete funksionale tĂ« tillĂ«.
Kërkimi në internet (duket se po e bëjmë mjaft mirë), si dhe kërkimi në GitHub me fjalët kyçe "reverse socks" nuk ka dhënë shumë rezultate. Kryesisht, gjithçka ka të bëjë me ndërtimin e tunelëve ssh me port forwarding të kundërt dhe gjithçka tjetër që lidhet me të. Përveç tunelëve SSH, mund të veçojmë disa zgjidhje:
NjĂ« implementim i vjetĂ«r i tunelit tĂ« kundĂ«rt nga ekipi i Laboratorit Kaspersky. Nga emri Ă«shtĂ« e qartĂ« pĂ«r çfarĂ« Ă«shtĂ« krijuar ky skript. ĂshtĂ« realizuar nĂ« Python 2.7, tuneli punon nĂ« mĂ«nyrĂ« cleartext (siç thuhet tani â pĂ«rshĂ«ndetje RKN)
NjĂ« tjetĂ«r implementim nĂ« Python, gjithashtu nĂ« cleartext, por me mĂ« shumĂ« mundĂ«si. ĂshtĂ« shkruar si njĂ« modul dhe ka API pĂ«r integrim nĂ« projektet e tua.
Lidhja e parĂ« â versioni origjinal i implementimit tĂ« reverse socks nĂ« Golang (nuk mbĂ«shtetet nga zhvilluesi).
Lidhja e dytĂ« â Ă«shtĂ« pĂ«rmirĂ«simi ynĂ« me karakteristika shtesĂ«, gjithashtu nĂ« Golang. NĂ« versionin tonĂ« kemi implementuar SSL, punĂ« pĂ«rmes proxy me autorizim NTLM, autorizimin nĂ« klient, faqe njohjeje nĂ« rast tĂ« fjalĂ«kalimit tĂ« gabuar (me saktĂ«si â redirect nĂ« faqen njohĂ«se), modin shumĂ«-fijor (dmth. disa njerĂ«z mund tĂ« punojnĂ« me tunelin njĂ«kohĂ«sisht), sistemin e pings pĂ«r klientin pĂ«r tĂ« parĂ« nĂ«se Ă«shtĂ« aktiv apo jo.
Implementimi i reverse socks nga "miqtë tanë kinezë" në Python. Po ashtu, për ata që janë të lenj, ka një binary të gatshëm (exe), e përgatitur nga kinezët dhe gati për përdorim. Këtu vetëm Zoti kinez e di se çfarë tjetër mund të ketë në këtë binary, përveç funksionalitetit kryesor, prandaj përdorini me kujdes.
Një projekt mjaft interesant në C++ për realizimin e reverse socks dhe jo vetëm. Përveç tunelit të kundërt, ai mund të realizojë port forwarding, krijimin e shell komandash, etj.
MSF meterpreter
Siç thonë, pa kommentare. Të gjithë hackerët disi të arsimuar janë të njohur mirë me këtë gjë dhe kuptojnë se sa lehtë zbulohet nga mjetet e mbrojtjes.
Të gjitha mjetet e përmendura më sipër punojnë me një teknologji të ngjashme: në makinën brenda rrjetit ekzekutohet një modul ekzekutues i përgatitur më parë, që krijon një lidhje me serverin e jashtëm. Në server çelet një server SOCKS4/5, që pranon lidhjet dhe i transmeton ato te klienti.
Disavantazhi i tĂ« gjitha mjeteve tĂ« lartpĂ«rmendura Ă«shtĂ« se ose nĂ« makinĂ«n e klientit nevojitet tĂ« jetĂ« instaluar Python ose Golang (sa shpesh keni hasur se Python Ă«shtĂ« instaluar nĂ« makinat, pĂ«r shembull, tĂ« drejtorĂ«ve tĂ« kompanive ose punonjĂ«sve tĂ« zyrĂ«s?), ose nĂ« kĂ«tĂ« makinĂ« duhet tĂ« çojmĂ« njĂ« binary tĂ« pĂ«rgatitur mĂ« parĂ« (praktikisht python dhe skripti nĂ« njĂ« paketĂ«) dhe tĂ« ekzekutojmĂ« atĂ« atje. NdĂ«rsa shkarkimi i njĂ« exe dhe nisim atĂ« â Ă«shtĂ« njĂ« signeature tjetĂ«r pĂ«r antivirusin lokal ose HIPS.
NĂ« pĂ«rgjithĂ«si, pĂ«rfundimi duket i qartĂ« â na nevojitet njĂ« zgjidhje nĂ« PowerShell. Tani do na fluturojnĂ« domate â se PowerShell Ă«shtĂ« e konsumuar tashmĂ«, monitorohet, blokohen etj. e.tj. NĂ« tĂ« vĂ«rtetĂ« â aspak kudo. E kemi thĂ«nĂ« me pĂ«rgjegjĂ«si. PĂ«r mĂ« tepĂ«r, ekzistojnĂ« shumĂ« mĂ«nyra pĂ«r tĂ« anashkaluar bllokimet (kĂ«tu pĂ«rsĂ«ri frazĂ« e njohur pĂ«r shprehja "pĂ«rshĂ«ndetje RKN đ"), qĂ« fillon me thjesht riemĂ«rimin e powershell.exe -> cmdd.exe dhe pĂ«rfundon me powerdll etj.
Fillojmë të shpikim
E qartĂ« Ă«shtĂ« qĂ« sĂ« pari do shikojmĂ« nĂ« Google dhe⊠nuk do 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 ky Ă«shtĂ« njĂ« "direkt" socks i zakonshĂ«m, qĂ« ka njĂ« seri tĂ« metash (pĂ«r to do flasim mĂ« vonĂ«). Sigurisht, mund ta shndĂ«rrojmĂ« nĂ« reverse me njĂ« lĂ«vizje, por kjo do tĂ« jetĂ« vetĂ«m njĂ« socks me njĂ« fijĂ«, qĂ« pĂ«r ne nuk Ă«shtĂ« krejtĂ«sisht ajo qĂ« na nevojitet.
Tani, nuk gjetëm asgjë të gatshme, prandaj do të na duhet të shpikim biçikletën tonë. Si bazë për biçikletën tonë, do të marrim të reverse socks në Golang, dhe do ta realizojmë klientin e tij në PowerShell.
RSocksTun
Tani, si funksionon rsockstun?
NĂ« thelb tĂ« funksionimit tĂ« RsocksTun (mĂ« tej â rs) qĂ«ndrojnĂ« dy komponentĂ« programorĂ« â Yamux dhe serveri Socks5. Serveri Socks5 Ă«shtĂ« njĂ« socks5 lokal normal, qĂ« niset nĂ« klient. Dhe shumĂ«fijorĂ«simi i lidhjeve nĂ« tĂ« (mos e harroni shumĂ«fijorin?) sigurohet nga yamux (). Ky skemĂ« lejon qĂ« tĂ« nisin disa serverĂ« socks5 klientĂ«sh dhe tĂ« shpĂ«rndajnĂ« lidhjet e jashtme te ata, duke i kaluar ato pĂ«rmes njĂ« lidhjeje tĂ« vetme TCP (gati si nĂ« meterpreter) nga klienti nĂ« server, duke realizuar kĂ«shtu njĂ« mod shumĂ«fijor, pa tĂ« cilin nuk do tĂ« mund tĂ« punojmĂ« plotĂ«sisht nĂ« rrjetin e brendshĂ«m.
The essence of yamux's operation lies in the fact that it introduces an additional network layer of streams, implementing it as a 12-byte header for each packet. (Here we intentionally use the word "stream" instead of "ĐżĐŸŃĐŸĐș" to avoid confusing the reader with the programming thread concept â which we will also use in this article). Inside the yamux header are the stream number, flags for setting up/terminating the stream, the number of bytes being transferred, and the window size.

In addition to setting up/terminating streams, yamux implements a keepalive mechanism that allows monitoring the operability of the established communication channel. The operation of the keepalive message mechanism is configured when creating a Yamux session. Essentially, there are only two parameters in the settings: enable/disable and the frequency of packet sending in seconds. The keepalive messages can be sent by the yamux server as well as the yamux client. Upon receiving a keepalive message, the remote side must respond with a packet containing the exact same message identifier (in fact â a number) that it received. In general, keepalive is just like a ping, but specifically for yamux.
The detailed workings of the multiplexer: packet types, flags for establishing and terminating connections, and the data transmission mechanism are described in the yamux.
Conclusion to the first part
So, in the first part of the article, we got acquainted with some tools for organizing reverse tunnels, examined their advantages and disadvantages, studied the operation mechanism of the Yamux multiplexer, and outlined the main requirements for the newly created PowerShell module. In the next part, we will tackle the module's development from scratch. Stay tuned đ
Burimi: habr.com
