Mēs rakstām Reverse socks5 starpniekserveri Powershell. 1. daļa

Stāsts par pētniecību un attīstību 3 daļās. 1. daļa ir pētnieciska.
Ir daudz dižskābaržu ā€“ vēl vairāk priekÅ”rocÄ«bu.

Problēmas paziņojums

Pentestu un RedTeam kampaņu laikā ne vienmēr ir iespējams izmantot Klienta standarta rÄ«kus, piemēram, VPN, RDP, Citrix u.c. kā enkurs iekļūŔanai iekŔējā tÄ«klā. Dažās vietās standarta VPN darbojas, izmantojot MFA un kā otrs faktors tiek izmantots aparatÅ«ras marÄ·ieris, citās tas tiek brutāli uzraudzÄ«ts un mÅ«su VPN pieteikÅ”anās uzreiz kļūst redzama, kā saka, ar visu to, ko tas ietver, bet citās ir tādu lÄ«dzekļu vienkārÅ”i nav.

Šādos gadÄ«jumos mums pastāvÄ«gi ir jāveido tā sauktie ā€œreversie tuneļiā€ - savienojumi no iekŔējā tÄ«kla uz ārēju resursu vai serveri, kuru mēs kontrolējam. Šādā tunelÄ« jau varam strādāt ar Klientu iekŔējiem resursiem.

Ir vairākas Å”o atgrieÅ”anās tuneļu Ŕķirnes. Slavenākais no tiem, protams, ir Meterpreter. SSH tuneļi ar reverso portu pāradresāciju ir arÄ« ļoti pieprasÄ«ti hakeru vidÅ«. Ir diezgan daudz lÄ«dzekļu reversās tunelÄ“Å”anas ievieÅ”anai, un daudzi no tiem ir labi izpētÄ«ti un aprakstÄ«ti.
Protams, no savas puses droŔības risinājumu izstrādātāji nestāv malā un aktÄ«vi konstatē Ŕādas darbÄ«bas.
Piemēram, MSF sesijas veiksmÄ«gi nosaka mÅ«sdienu Cisco vai Positive Tech IPS, un reverso SSH tuneli var noteikt gandrÄ«z jebkurÅ” parasts ugunsmÅ«ris.

Tāpēc, lai labā RedTeam kampaņā paliktu nepamanīti, mums ir jāizbūvē reversais tunelis, izmantojot nestandarta līdzekļus un pēc iespējas tuvāk jāpielāgojas reālajam tīkla darbības režīmam.

Mēģināsim atrast vai izdomāt ko līdzīgu.

Pirms kaut ko izdomāt, mums ir jāsaprot, kādu rezultātu vēlamies sasniegt, kādas funkcijas būtu jāveic mūsu attīstībai. Kādas būs prasības tunelim, lai mēs varētu strādāt maksimāli slepenā režīmā?

Ir skaidrs, ka katrā gadÄ«jumā Ŕādas prasÄ«bas var ievērojami atŔķirties, taču, pamatojoties uz darba pieredzi, var identificēt galvenās:

  • strādāt operētājsistēmā Windows-7-10. Tā kā lielākā daļa korporatÄ«vo tÄ«klu izmanto Windows;
  • klients izveido savienojumu ar serveri, izmantojot SSL, lai novērstu muļķīgu klausÄ«Å”anos, izmantojot ips;
  • Pieslēdzoties klientam jāatbalsta darbs caur starpniekserveri ar autorizāciju, jo Daudzos uzņēmumos piekļuve internetam notiek, izmantojot starpniekserveri. Faktiski klienta iekārta var pat neko par to nezināt, un starpniekserveris tiek izmantots caurspÄ«dÄ«gā režīmā. Bet mums ir jānodroÅ”ina Ŕāda funkcionalitāte;
  • klienta daļai jābÅ«t kodolÄ«gai un pārnēsājamai;
    Ir skaidrs, ka, lai strādātu klienta tÄ«klā, klienta datorā varat instalēt OpenVPN un izveidot pilnvērtÄ«gu tuneli savam serverim (par laimi, openvpn klienti var strādāt caur starpniekserveri). Bet, pirmkārt, tas ne vienmēr darbosies, jo mēs, iespējams, neesam tur vietējie administratori, un, otrkārt, tas radÄ«s tik lielu troksni, ka kārtÄ«gs SIEM vai HIPS nekavējoties mÅ«s ā€œizvilksā€. Ideālā gadÄ«jumā mÅ«su klientam vajadzētu bÅ«t tā sauktajai inline komandai, jo, piemēram, tiek ieviesti daudzi bash čaulas un tiek palaisti caur komandrindu, piemēram, izpildot komandas no vārdu makro.
  • mÅ«su tunelim jābÅ«t ar vairākiem pavedieniem un vienlaikus jāatbalsta daudzi savienojumi;
  • klienta-servera savienojumam ir jābÅ«t kaut kādai autorizācijai, lai tunelis tiktu izveidots tikai mÅ«su klientam, nevis visiem, kas nāk pie mÅ«su servera norādÄ«tajā adresē un ostā. Ideālā gadÄ«jumā galvenā lapa ar kaÄ·iem vai profesionālām tēmām, kas saistÄ«tas ar sākotnējo domēnu, ir jāatver ā€œtreŔās puses lietotājiemā€.
    Piemēram, ja Klients ir medicÄ«nas organizācija, tad informācijas droŔības administratoram, kurÅ” nolemj pārbaudÄ«t resursu, kuram piekļuva klÄ«nikas darbinieks, lapu ar farmaceitiskajiem produktiem, Vikipēdiju ar diagnozes aprakstu vai doktora Komarovska emuāru utt. vajadzētu atvērt.

EsoŔo rīku analīze

Pirms sava velosipēda izgudroÅ”anas no jauna ir jāveic esoÅ”o velosipēdu analÄ«ze un jāsaprot, vai tas mums tieŔām ir vajadzÄ«gs un, iespējams, neesam vienÄ«gie, kas aizdomājuÅ”ies par Ŕāda funkcionāla velosipēda nepiecieÅ”amÄ«bu.

GooglÄ“Å”ana internetā (Ŕķiet, ka googlē normāli), kā arÄ« meklÄ“Å”ana Github, izmantojot atslēgvārdus ā€œreverse socksā€, nedeva daudz rezultātu. BÅ«tÄ«bā tas viss ir saistÄ«ts ar ssh tuneļu izveidi ar reverso portu pārsÅ«tÄ«Å”anu un visu, kas ar to saistÄ«ts. Papildus SSH tuneļiem ir vairāki risinājumi:

github.com/klsecservices/rpivot
IlgstoÅ”a apgrieztā tuneļa ievieÅ”ana no Kaspersky Lab puiÅ”iem. Nosaukums skaidri parāda, kam Å”is skripts ir paredzēts. Ieviests Python 2.7, tunelis darbojas skaidrā teksta režīmā (kā tagad ir modē teikt - sveiki RKN)

github.com/tonyseek/rsocks
Vēl viena ievieÅ”ana Python, arÄ« skaidrā tekstā, bet ar vairāk iespējām. Tas ir rakstÄ«ts kā modulis, un tam ir API risinājuma integrÄ“Å”anai jÅ«su projektos.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Pirmā saite ir reversās sox ievieÅ”anas sākotnējā versija Golangā (izstrādātājs to neatbalsta).
Otrā saite ir mÅ«su pārskatÄ«Å”ana ar papildu funkcijām, arÄ« Golangā. MÅ«su versijā mēs ieviesām SSL, strādājam caur starpniekserveri ar NTLM autorizāciju, autorizāciju klientā, galveno lapu nepareizas paroles gadÄ«jumā (vai drÄ«zāk novirzÄ«Å”anu uz galveno lapu), vairāku pavedienu režīmu (t.i., vairāki cilvēki). var vienlaikus strādāt ar tuneli), sistēma, kas klientam tiek nosÅ«tÄ«ta, lai noteiktu, vai viņŔ ir dzÄ«vs vai nē.

github.com/jun7th/tsocks
Reverse sox ievieÅ”ana no mÅ«su ā€œÄ·Ä«nieÅ”u draugiemā€ Python. Tur slinkajiem un ā€œnemirstÄ«gajiemā€ ir gatavs binārs (exe), ko Ä·Ä«nieÅ”i ir samontējuÅ”i un gatavs lietoÅ”anai. Å eit tikai Ä·Ä«nieÅ”u Dievs zina, ko vēl Å”is binārs var saturēt, izņemot galveno funkcionalitāti, tāpēc izmantojiet to uz savu risku un risku.

github.com/securesocketfunneling/ssf
Diezgan interesants projekts C++, lai ieviestu reverse sox un daudz ko citu. Papildus reversajam tunelim tas var veikt portu pāradresāciju, izveidot komandu apvalku utt.

MSF mēraparāts
Šeit, kā saka, bez komentāriem. Visi pat vairāk vai mazāk izglītoti hakeri ļoti labi pārzina Ŕo lietu un saprot, cik viegli to var atklāt ar droŔības rīkiem.

Visi iepriekÅ” aprakstÄ«tie rÄ«ki darbojas, izmantojot lÄ«dzÄ«gu tehnoloÄ£iju: datorā tÄ«kla iekÅ”ienē tiek palaists iepriekÅ” sagatavots izpildāms binārais modulis, kas izveido savienojumu ar ārēju serveri. Serveris darbina SOCKS4/5 serveri, kas pieņem savienojumus un pārsÅ«ta tos klientam.

Visu iepriekÅ” minēto rÄ«ku trÅ«kums ir tāds, ka klienta datorā ir jāinstalē Python vai Golang (vai bieži esat redzējis Python instalētu, piemēram, uzņēmuma direktora vai biroja darbinieku maŔīnās?), vai arÄ« iepriekÅ” samontētam. binārais (faktiski python) ir jāievelk uz Ŕīs maŔīnas un skripts vienā pudelē) un palaist Å”o bināro jau tur. Un exe lejupielāde un pēc tam tā palaiÅ”ana ir arÄ« paraksts vietējam antivÄ«rusam vai HIPS.

Kopumā secinājums liek domāt ā€“ mums ir nepiecieÅ”ams powershell risinājums. Tagad pie mums lidos tomāti - saka, ka powershell jau viss ir izjaukts, tiek uzraudzÄ«ts, bloķēts utt. un tā tālāk. PatiesÄ«bā ne visur. Mēs deklarējam atbildÄ«gi. Starp citu, ir ļoti daudz veidu, kā apiet bloÄ·Ä“Å”anu (Å”eit atkal ir modÄ«ga frāze par hello RKN šŸ™‚), sākot ar stulbu powershell.exe pārdēvÄ“Å”anu -> cmdd.exe un beidzot ar powerdll utt.

Sāksim izgudrot

Skaidrs, ka vispirms meklēsim Google un... neko par Å”o tēmu neatradÄ«sim (ja kāds ir atradis, ievietojiet saites komentāros). Ir tikai Ä«stenoÅ”anu Socks5 uz powershell, taču tas ir parasts ā€œtieÅ”aisā€ sox, kuram ir vairāki savi trÅ«kumi (par tiem mēs runāsim vēlāk). JÅ«s, protams, varat ar vieglu rokas kustÄ«bu pārvērst to pretējā virzienā, bet tas bÅ«s tikai viena vÄ«tnes sox, kas mums nav gluži tas, kas mums vajadzÄ«gs.

Tātad, mēs neesam atraduÅ”i neko gatavu, tāpēc mums joprojām bÅ«s jāizgudro savs ritenis. Mēs ņemsim par pamatu mÅ«su velosipēdam mÅ«su attÄ«stÄ«ba reverse sox Golangā, un mēs tam ievieÅ”am klientu Powershell.

RSocksTun
Tātad, kā darbojas rsockstun?

RsocksTun (turpmāk tekstā rs) darbÄ«ba balstās uz diviem programmatÅ«ras komponentiem - Yamux un Socks5 serveri. Socks5 serveris ir parasts vietējais socks5, tas darbojas uz klienta. Un savienojumu multipleksÄ“Å”ana ar to (atceries par daudzpavedienu?) tiek nodroÅ”ināta, izmantojot yamux (vēl viens multiplekseris). Å Ä« shēma ļauj palaist vairākus klienta socks5 serverus un izplatÄ«t tiem ārējos savienojumus, pārsÅ«tot tos caur vienu TCP savienojumu (gandrÄ«z kā mērinstrumentā) no klienta uz serveri, tādējādi ievieÅ”ot vairāku pavedienu režīmu, bez kura mēs vienkārÅ”i neiztiksim. spēj pilnvērtÄ«gi strādāt iekŔējos tÄ«klos.

Yamux darbÄ«bas bÅ«tÄ«ba ir tāda, ka tas ievieÅ” papildu tÄ«kla straumju slāni, ievieÅ”ot to 12 baitu galvenes veidā katrai paketei. (Å eit mēs apzināti lietojam vārdu ā€œstraumeā€, nevis pavediens, lai nesajauktu lasÄ«tāju ar programmas straumes ā€œpavedienuā€ - Å”o jēdzienu izmantosim arÄ« Å”ajā rakstā). Yamux galvenē ir straumes numurs, karodziņi straumes instalÄ“Å”anai/pārtraukÅ”anai, pārsÅ«tÄ«to baitu skaits un pārsÅ«tÄ«Å”anas loga lielums.

Mēs rakstām Reverse socks5 starpniekserveri Powershell. 1. daļa

Papildus straumes instalÄ“Å”anai/pārtraukÅ”anai yamux ievieÅ” uzturÄ“Å”anas mehānismu, kas ļauj pārraudzÄ«t izveidotā sakaru kanāla veiktspēju. Keeplive ziņojumu mehānisma darbÄ«ba tiek konfigurēta, veidojot Yamux sesiju. Faktiski no iestatÄ«jumiem ir tikai divi parametri: iespējot/atspējot un pakeÅ”u sÅ«tÄ«Å”anas biežums sekundēs. Keepalive ziņojumus var nosÅ«tÄ«t yamux serveris vai yamux klients. Saņemot saglabāŔanas ziņojumu, attālajai pusei ir jāatbild uz to, nosÅ«tot tieÅ”i tādu paÅ”u ziņojuma identifikatoru (faktiski numuru), ko tā saņēma. Vispār keepalive ir tas pats ping, tikai priekÅ” yamux.

Visa multipleksora darbÄ«bas tehnika: pakeÅ”u veidi, savienojuma iestatÄ«Å”anas un beigu karodziņi, kā arÄ« datu pārsÅ«tÄ«Å”anas mehānisms ir detalizēti aprakstÄ«ts specifikācijas uz Yamux.

Secinājums pirmajai daļai

Tātad raksta pirmajā daļā iepazināmies ar dažiem reverso tuneļu organizÄ“Å”anas rÄ«kiem, apskatÄ«jām to priekÅ”rocÄ«bas un trÅ«kumus, izpētÄ«jām Yamux multipleksora darbÄ«bas mehānismu un aprakstÄ«jām pamatprasÄ«bas jaunizveidotajam powershell modulim. Nākamajā daļā mēs izstrādāsim paÅ”u moduli, praktiski no nulles. Turpinājums sekos. Nepārslēdzies :)

Avots: www.habr.com

Pievieno komentāru