Kirjutame Reverse socks5 proxy Powershellis. Osa 1

KĂ€esolev uurimistöö ja arendustegevuse lugu on jagatud kolme ossa. Osa 1 — uurimine.
Palju lisanĂ€itajaid — veelgi rohkem kasu.

Ülesande seadmine

Pentestide ja RedTeam kampaaniate kĂ€igus ei ole alati vĂ”imalik kasutada Tellija tavaressursse, nagu VPN, RDP, Citrix jne, et pÀÀseda sisesĂŒsteemi. MĂ”nes kohas töötab tavapĂ€rane VPN MFA kaudu ja teise faktorina kasutatakse riistvara tokenit, teises kohas jĂ€lgitakse seda rangelt ja meie korraldatud sisenemine VPN-i kaudu on koheselt nĂ€htav, nagu öeldud — kĂ”igi selle tagajĂ€rgedega, kuid mĂ”nes kohas ei ole selliseid vahendeid lihtsalt olemas.

Sellistes olukordades tuleb pidevalt luua nn 'tagasi tunnelid' — ĂŒhendused sisesĂŒsteemist vĂ€listesse ressurssidessse vĂ”i meie kontrolli all olevasse serverisse. Sellise tunneli sees saame juba töötada Tellijate siseressurssidega.

Tagasiulatuvaid tunnelite mitmekesisus on suur. KÔige tuntum neist on muidugi Meterpreter. Samuti on suur nÔudlus SSH tunnelite jÀrele, mille abil tagasiviidud pordid on populaarsed hÀkkerite seas. Tagasiulatuva tunnelimise teostamiseks on palju vahendeid, millest paljud on hÀsti uuritud ja dokumenteeritud.
Muidugi ei jÀÀ turvalahenduste arendajad oma kohustuste tÀitmisega kÔrvale ning nad tuvastavad aktiivselt selliseid tegevusi.
NĂ€iteks tuvastavad kaasaegsed IPS-d, nagu Cisco vĂ”i Positive Tech, MSF seansid edukalt, ja tagasiulatuvat SSH tunnelit saab tuvastada praktiliselt mis tahes normaalse tulemĂŒĂŒriga.

Seega, et jÀÀda mĂ€rkamatuks heades RedTeam kampaaniates, peame looma tagasiulatuva tunneli ebatavaliste vahenditega ja kohandama meid vĂ”imalikult lĂ€hedale vĂ”rgu tegelikule tööreĆŸiimile.

Proovime leida vÔi leiutada midagi sarnast.

Enne midagi vĂ€lja mĂ”elda, tuleb mĂ”ista, millist tulemust soovime saavutada ja milliseid funktsioone meie arendus peab tĂ€itma. Millised on nĂ”uded tunnelile, et saaksime töötada maksimaalse varjamatuse reĆŸiimis?

On selge, et igas olukorras vÔivad need nÔuded erineda, kuid tööpraktika pÔhjal vÔib vÀlja tuua pÔhinÔuded:

  • töötamine Windows 7-10 operatsioonisĂŒsteemidel, kuna enamikus ettevĂ”ttevĂ”rgustikes kasutatakse just Windowsit;
  • klient ĂŒhendub serveriga SSL protokolli kaudu, et vĂ€listada sisemist kuulamist IPS-i vahenditega;
  • ĂŒhendamisel peab klient toetama tööks lĂ€bi autentimisega proxy-serveri, kuna paljudes ettevĂ”tetes toimub internetti pÀÀsemine proxy kaudu. Tegelikult ei pruugi kliendi masin sellest isegi midagi teada, kuna proxy töötatakse vĂ€lja lĂ€bipaistvas reĆŸiimis. Kuid selline funktsionaalsus peab olema meie lahenduses olemas;
  • kliendi osa peab olema kompaktselt kirjutatud ja kantav;
    Selge, et kliendi masinasse saab OpenVPN-i installida ja luua tĂ€isfunktsionaalne tunnel oma serverisse (head seetĂ”ttu, et OpenVPN-i kliendid oskavad töötada lĂ€bi proksi). Kuid esiteks, see ei pruugi alati Ă”nnestuda, kuna me ei pruugi olla seal kohalike administraatorite, ja teiseks, see tekitab nii palju mĂŒra, et korralik SIEM vĂ”i HIPS teatab kohe meile "kuhu vaja". Ideaalis peaks meie klient olema nn inline meeskond, nagu on nĂ€iteks teostatud paljudes bash-shellides, ja kĂ€ivituma kĂ€surealt, nĂ€iteks kĂ€skude tĂ€itmisel Wordi makrost.
  • meie tunnel peaks olema mitmeĂŒhenduslik ja toetama mitmeid ĂŒhendusi korraga;
  • kliendi-serveri ĂŒhendusel peaks olema mingi autentimine, et tunnel luuakse ainult meie kliendile, mitte kĂ”igile, kes tulevad meie serverisse antud aadressi ja pordiga. Ideaalis peaks "kolmandatele kasutajatele" avanema maandumisleht kassidega vĂ”i professionaalse temaatikaga, mis on seotud algse domeeniga.
    NĂ€iteks, kui tellijaks on meditsiiniasutus, siis peab infotehnoloogia administraator, kes otsustab kontrollida ressurssi, millele kutsus ĂŒles kliiniku töötaja, nĂ€gema lehte farmatseutiliste toodete, haiguse kirjelduse vikipeedia vĂ”i dr Komarovski blogiga jne.

Olemasolevate tööriistade analĂŒĂŒs

Enne oma jalgratta leiutamist on oluline analĂŒĂŒsida olemasolevaid jalgrattaid ja mĂ”ista, kas see on meile tĂ”eliselt vajalik ning ilmselt ei ole me ainukesed, kes on mĂ”elnud sellise funktsionaalse jalgratta vajadusele.

Interneti otsing (googeldame me tundub, et normaalselt) ning ka githubis otsing vÔtmesÔnade "reverse socks" jÀrgi ei andnud eriti palju tulemusi. Peamiselt piirduvad kÔik SSH tunnelite loomisega tagasipööratud portide lÀbiviimisega ja kÔik, mis sellega seondub. Lisaks SSH tunnelitele vÔib vÀlja tuua mitmeid lahendusi:

github.com/klsecservices/rpivot
Kauaegu vĂ€ljatöötatud tagasitunneldamise lahendus Kaspersky Labori meeskonnalt. Nimi viitab selgelt, milleks see skript mĂ”eldud on. Teostatud Python 2.7, tunnel töötab selges tekstis (nagu praegu moes on — tervitused RKN-ile)

github.com/tonyseek/rsocks
Veel ĂŒks teostus Pythoni keeles, samuti selges tekstis, kuid rohkem vĂ”imalusi. Kirjutatud moodulina ja pakub API-d lahenduse integreerimiseks oma projektidesse.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Esimene link — algne versioon tagasitunneldamise teostusest Go keeles (arendaja ei toeta).
Teine link — meie tĂ€iustatud versioon koos lisafunktsioonidega, samuti Go keeles. Meie versioonis oleme rakendanud SSL-i, töötamise lĂ€bi proxye NTLM-autentimisega, autentimise kliendil, maandumislehe vale parooli korral (Ă”igemini — suunamise maandumislehele), mitme lĂ”ime reĆŸiimi (s.t. tunnelit saavad kasutada mitu inimest samaaegselt), kliendi pingimissĂŒsteemi selle kohta — kas ta on elus vĂ”i mitte.

github.com/jun7th/tsocks
Meie «hiina sÔprade» koostatud tagasi SOCKS Pythonis. Siin on ka valmis binaar (exe), mille on kokku pannud hiinlased ja mis on kasutamiseks valmis. Ainult hiina jumal teab, mis muidu selle binaari sees on peale peamise funktsionaalsuse, seega kasutage seda omal riskil.

github.com/securesocketfunneling/ssf
Tegemist on ĂŒsna huvitava C++ projektiga tagasi SOCKS-i ja muude otsingute rakendamiseks. Peale tagasi tunneli loomise suudab ta ka porte edastada, luua kĂ€surea ja nii edasi.

MSF meterpreter
Siin, nagu öeldakse, kommentaarideta. KÔik vÀhemalt veidi haritud hÀkkerid tunnevad selle asjaga hÀsti ja mÔistavad, kui kergelt kaitsemeetmed seda avastavad.

KĂ”ik eelnevalt kirjeldatud tööriistad töötavad sarnasel tehnoloogial: vĂ”rgusiseses masinas kĂ€ivitub eelnevalt ettevalmistatud tĂ€idetav binaarmoodul, mis loob ĂŒhenduse vĂ€lise serveriga. Serveris kĂ€ivitub SOCKS4/5 server, mis aktsepteerib ĂŒhendusi ja edastab need kliendile.

KĂ”ikide ĂŒlaltoodud tööriistade puuduseks on see, et kas on vajalik Python vĂ”i Golangi installatsioon kliendimasinas (kui sageli olete kohanud paigaldatud Pythonit nĂ€iteks ettevĂ”tte juhataja vĂ”i kontoritöötajate masinates?), vĂ”i tuleb sellele masinale tuua eelnevalt loodud binaar (pĂ”himĂ”tteliselt python ja skript ĂŒhes pakendis) ja kĂ€ivitada see seal. Ja exe faili allalaadimine ja selle kĂ€ivitamine on kohaliku viirusetĂ”rje vĂ”i HIPS'i jaoks kahtlane signeering.

Üldiselt on jĂ€reldus iseenesestmĂ”istetav — meil on vaja lahendust PowerShellis. NĂŒĂŒd vĂ”ivad meil meid tomatid lendama hakata — et PowerShell on juba kĂ”vasti lĂ€bi kĂ€idud, seda jĂ€lgitakse, blokeeritakse jne. Tegelikult ei ole see sugugi igal pool nii. Vastutustundlikult vĂ€idame. Muide, palju on viise, kuidas blokeeringutest mööda hiilida (siin tuleb jĂ€lle moes lause tervitustega RKN-le 🙂), alates PowerShell.exe lihtsast ĂŒmbernimetamisest cmdd.exe'ks ja lĂ”petades powerdll ja muuga.

Alustame leiutamist

Selge on, et kĂ”igepealt vaatame Google’isse ja... ei leia sellel teemal absoluutselt mitte midagi (kui keegi leidis — saatke lingid kommentaaridesse). Ainult teostamine Socks5 PowerShellis, kuid see on tavaline "otse" sokk, millel on mitmeid oma puudusi (millest rÀÀgime hiljem). Loomulikult vĂ”ib selle kergelt tagasi pöörata, kuid see oleks ainult ĂŒheahelaline sokk, mis ei ole just see, mida vajame.

Noh, me ei leidnud midagi valmis, seega peame ikkagi oma ratta leiutama. Meie ratta aluseks saab olema meie arendus tagasipöörduv sokk golangis, ning klient selle jaoks teostame PowerShellis.

RSocksTun
Noh, kuidas RSocksTun töötab?

RSocksTuni (edaspidi – rs) tööpĂ”himĂ”te pĂ”hineb kahel programmakomponendil – Yamux ja Socks5 server. Socks5 server on tavaline kohalik socks5, see kĂ€ivitub kliendil. Ja ĂŒhenduste multiplexerimine (kas mĂ€letate, et rÀÀgime mitme lĂ”ime kasutamisest?) toimub yamuxi kaudu (veel ĂŒks multiplexer). Selline skeem vĂ”imaldab kĂ€ivitada mitmeid kliendi sokk5 servereid ja suunata vĂ€lised ĂŒhendused nendesse, edastades need lĂ€bi ĂŒhe TCP-ĂŒhenduse (peaaegu nagu meterpreter) kliendi ja serveri vahel, rakendades seega mitme lĂ”ime reĆŸiimi, ilma milleta ei saa me lihtsalt sisetööstuses tĂ€ielikult töötada.

Yamux'i töö seisneb selles, et see loob stream'ide jaoks lisavĂ”rgutaseme, rakendades selle iga paketi puhul 12-baidise pĂ€ise kujul. (Siin kasutame me sihilikult sĂ”na «stream», mitte voog, et mitte segadusse ajada lugejat programmilise vooga «thread» — seda mĂ”istet kasutame me samuti kĂ€esolevas artiklis). Yamux'i pĂ€ises on salvestatud stream'i number, stream'i loomise/katkestamise lipud, edastatavate baitide arv ja edastusaken.

Kirjutame Reverse socks5 proxy Powershellis. Osa 1

Lisaks stream'i loomise/katkestamise funktsioonile on yamux'is rakendatud keepalive mehhanism, mis vĂ”imaldab jĂ€lgida kehtestatud sidekanali toimivust. Keepalive sĂ”numite töö tĂ”husust seadistatakse Yamux-seanssi loomisel. Tegelikult on seal ainult kaks parameetrit: lubamine/keelamine ja pakettide saatmise sagedus sekundites. Keepalive sĂ”numeid vĂ”ib saata nii yamux-server kui ka yamux-kliend. Kui on saadud keepalive sĂ”num, peab kaugpool vastama sellele identsete sĂ”numi identifikaatoritega (praktiliselt - numbriga), mille ta sai. Üldiselt on keepalive sama, mis ping, kuid yamux'i jaoks.

Filip kĂ”igi mulitplexori töömeetodite kohta: pakettide tĂŒĂŒbid, ĂŒhenduste seadistamise ja lĂ”petamise lipud, andmete edastamise mehhanism on kirjeldatud spetsifikatsioonis yamuxis.

Esimese osa jÀreldus

Nii et artikli esimeses osas tutvustasime mĂ”ningaid tööriistu tagas tunneli seadmiseks, vaatasime nende eeliseid ja puudusi, uurisime Yamuxi multiplatvormi töömehhanismi ning kirjeldasime peamisi nĂ”udeid uuele powershelli moodulile. JĂ€rgmisel osal keskendume mooduli arendamisele praktiliselt nullist. JĂ€tkub. PĂŒsige lainel 🙂

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster