Kirjutame Reverse socks5 proxy Powershellis. Osa 1

Lugu uurimisest ja arendamisest kolmes osas. Osa 1 — uurimistegevus.
TĂ€hte on palju — kasu veelgi enam.

Ülesande seadmine

Pentestide ja RedTeam kampaaniate kĂ€igus ei Ă”nnestu alati kasutada Klientide tavalisi vahendeid, nagu VPN, RDP, Citrix jne, sisenemiseks sisemisse vĂ”rku. Kusagil töötab tavaline VPN MFA kaudu ja teise faktorina kasutatakse raudset tokenit, kusagil jĂ€lgitakse seda rangelt ning meie sisenemine VPN-i on kohe nĂ€htav, nagu öeldakse — kĂ”ikide tagajĂ€rgedega, ja kusagil ei ole selliseid vahendeid lihtsalt olemas.

Sellistel juhtudel tuleb pidevalt luua nn «tagasiĂŒhendusi» — ĂŒhendused sisemisest vĂ”rgust vĂ€liste ressursside vĂ”i meie kontrollitava serveriga. Sellise tunni sees saame juba töötada Klientide sisemiste ressurssidega.

Selliseid tagasivĂ”rke on mitu tĂŒĂŒpi. KĂ”ige tuntum neist on muidugi Meterpreter. Samuti on suurt nĂ”udlust rahva hĂ€kkerite seas SSH-tunnelite jĂ€rele, millel on tagasivoolu portide suunamine. Tagasivoolu realiseerimiseks on olemas palju vahendeid ja paljusid neist on hĂ€sti uuritud ja kirjeldatud.
Muidugi ei jÀÀ kaitselahenduste arendajad kÔrvale ja tuvastavad aktiivselt selliseid tegevusi.
NĂ€iteks MSF-seansid tuvastatakse edukalt tĂ€napĂ€evaste IPS-ide poolt Cisco vĂ”i Positive Techilt, samas kui tagasivoolu SSH-tunnelit saab tuvastada praktiliselt ĂŒkskĂ”ik millise normaalse tulemĂŒĂŒriga.

Seega, et hea RedTeam kampaania kĂ€igus mĂ€rkamatuks jÀÀda — peame ehitama tagasivoolu tunni ebatavaliste vahendite abil ja maksimaalselt kohanduma vĂ”rgu reaalse tööreĆŸiimiga.

Proovime leida vÔi vÀlja mÔelda midagi sellist.

Enne kui midagi vĂ€lja mĂ”elda, peaksime aru saama, millist tulemust soovime saavutada, milliseid funktsioone peaks meie arendus tĂ€itma. Millised on nĂ”uded tunnelile, et saaksime töötada maksimaalse varjatuse reĆŸiimis?

On selge, et igal juhul vÔivad need nÔuded oluliselt erineda, kuid kogemuste pÔhjal vÔib vÀlja tuua peamised:

  • töö Windows 7-10 operatsioonisĂŒsteemiga. Kuna enamikus ettevĂ”ttevĂ”rkudes kasutatakse just Windowsi.
  • kliendi ĂŒhendus serveriga SSL-i kaudu, et vĂ€ltida salajast kuulamist IPS-i meetoditega;
  • ĂŒhenduse loomisel peab klient toetama autoriseeritud proksiserveri kaudu töötamist, kuna paljudes ettevĂ”tetes toimub internetiĂŒhendus lĂ€bi proksi. Tegelikult ei pruugi kliendi masin sellest isegi teadlik olla ja proksi kasutatakse lĂ€bipaistvas reĆŸiimis. Kuid selline funktsioon peab olema meie poolt ette nĂ€htud;
  • kliendi osa peab olema lakooniline ja kantav;
    On selge, et tellija vÔrgus töötamiseks saab kliendi masinasse paigaldada OpenVPN ja luua tÀieliku tunneli oma serverisse (Ônneks oskavad OpenVPN kliendid töötada lÀbi proksi). Kuid esiteks ei pruugi see alati Ônnestuda, kuna me ei pruugi olla seal kohalikud adminnid, ja teiseks teeb see liiga palju lÀrmi, et korralik SIEM vÔi HIPS meid kohe "trahviks". Ideaalis peaks meie klient olema nn inline meeskond, nagu on paljudes bash-shellides, ja kÀivituma kÀsurealt, nÀiteks word-makrode kÀivitamisel.
  • meie tunnel peab olema mitmeoksaline ja toetama mitut samal ajal ĂŒhendust;
  • kliendi-serveri ĂŒhendusel peab olema mingi autoriseerimine, et tunneli asutamine toimuks ainult meie kliendi jaoks, mitte kĂ”igi jaoks, kes meie serverisse kinnitatud aadressi ja pordi kaudu pÀÀsevad. Ideaalis peaks "kolmandate kasutajate" jaoks avanema maandumisleht kasside vĂ”i professionaalse teemaga, mis on seotud algse domeeniga.
    NÀiteks, kui tellija on meditsiiniasutus, peaks infojulgeoleku administraator, kes otsustab kontrollida ressurssi, mille poole kliiniku töötaja pöördus, nÀgema lehte farmaatsiatoodete, diagnooside kirjelduste vÔi arst Komarovski blogiga jne.

O existente nĂĄituse analĂŒĂŒs

Enne kui leiutame oma jalgratta — on vaja analĂŒĂŒsida olemasolevaid jalgrattaid ja mĂ”ista, kas meil on seda tĂ”eliselt vaja ning tĂ”enĂ€oliselt ei mĂ”tle me selle funktsionaalsuse vajadusele ĂŒksi.

Internetis otsimine (me googeldame vist normaalselt) ning samuti Githubis avasĂ”nadega „reverse socks“ ei andnud eriti palju tulemusi. Peamiselt seisneb kĂ”ik SSH-tunnelite loomises tagasiheidetavate portide jaoks ja kĂ”igega, mis sellega seotud on. SSH-tunnelitest kĂ”rval on vĂ€lja toodud veel mĂ”ned lahendused:

github.com/klsecservices/rpivot
Pikalt arendatud tagasitunneli lahendus Kaspersky laborist. Nimi juba rÀÀgib, milleks see skript mÔeldud on. Tehtud Python 2.7-s, tunnel töötab selgelt (justkui oleks moodne öelda - tere RKN)

github.com/tonyseek/rsocks
Veel ĂŒks rakendus Pythoni keeles, samuti selges tekstis, kuid rohkem vĂ”imalusi. Kirjutatud moodulina, millel on API lahenduse integreerimiseks oma projektidesse.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Esimene link - algne versioon tagasivoolu sokist Golan keeles (arendaja ei toeta enam).
Teine link - see on juba meie tĂ€iustatud versioon koos tĂ€iendavate funktsioonidega, samuti Golan keeles. Meie versioonis oleme rakendanud SSL-i, töö lĂ€bi proxy NTLM-autentimisega, klientimise autentimise, vale parooli korral suunamise maandumislehele (tĂ€psemalt - suunamise maandumislehele), mitme lĂ”ime reĆŸiimi (s.t. tunneliga vĂ”ivad töötada korraga mitmed inimesed), kliendi pingimise sĂŒsteemi selleks, et teada saada - kas ta on elus vĂ”i mitte.

github.com/jun7th/tsocks
Tagasirendise sokk meie „hiina sĂ”pradelt“ Pythonis. Seal on ka laiskadele ja „surematutele“ valmis binaarfail (exe), mille on kokku pannud hiinlased ja mis on kasutamiseks valmis. Siin teab ainult ĂŒks hiina jumal, mis sellel binaaril veel olla vĂ”ib, vĂ€lja arvatud pĂ”hifunktsionaalsus, seega kasutage oma riski ja ohtu.

github.com/securesocketfunneling/ssf
Üsna huvitav projekt C++ keeles tagasivoolu sokkide ja mitte ainult. Lisaks tagasihea tunneli loomisele suudab see teha sadamate edastamist, kĂ€skude shelli loomist jne.

MSF meterpreter
Siin, nagu öeldakse, pole kommentaare. KÔik enam-vÀhem haritud hÀkkerid tunnevad seda asja hÀsti ja mÔistavad, kui kergelt seda kaitsevahendid avastavad.

KĂ”ik eespool kirjeldatud tööriistad toimivad sarnase tehnoloogia alusel: seadmes sees vĂ”rgus kĂ€ivitatakse eelnevalt valmistatud kĂ€ivitatav binaarmoodul, mis loob ĂŒhenduse vĂ€lise serveriga. Serveris kĂ€ivitatakse SOCKS4/5 server, mis vĂ”tab ĂŒhendusi vastu ja edastab need kliendile.

Kasutamisel on kĂ”ikidel nimetatud tööriistadel puudus, et kas kliendiseadmes peab olema installitud Python vĂ”i Golang (kui sageli olete kohanud Python-i installatsiooni nĂ€iteks ettevĂ”tte juhi vĂ”i kontoritöötaja seadmes?), vĂ”i tuleb sinna masinasse tuua eelnevalt kokku pandud binaarfail (praktiactually python ja skript ĂŒhes paketis) ja kĂ€ivitada see seal. Exe-faili allalaadimine ja kĂ€ivitamine on kohalikule viirusetĂ”rjele vĂ”i HIPS-ile juba piisav signatuur.

Seega, jĂ€reldus on selge — vajame lahendust powershelli pealt. Praegu lendavad meile tomatid — et powershell on juba kĂ”ikidest nurkadest lĂ€bi kĂ€idud, seda jĂ€lgitakse, blokeeritakse jne. Tegelikult ei ole see kaugeltki igal pool nii. Vastutustundlikult ĂŒtleme. Muide, blokeeringutest möödumise viise on palju (siin jĂ€lle see trendikas fraas tere RKN 🙂), alates lihtsalt powershell.exe ĂŒmbernimetamisest cmdd.exe-ks ja lĂ”petades powerdll-i jpt.

Alustame oma leiutamist

Ilmselgelt vaatame kĂ”igepealt Google'i ja... ei leia selle teema kohta peaaegu midagi (kui keegi leidis, siis visake lingid kommentaaridesse). On olemas ainult rakendus Socks5 powershellil, kuid see on tavaline "otse" socks, millel on oma puudused (millest rÀÀgime hiljem). Loomulikult saab seda lihtsa liigutusega muuta tagurpidi, kuid see oleks ainult ĂŒhesuunaline socks, mis pole meie jaoks just see, mida vajame.

Nii et, me ei leidnud midagi valmiskujul, seega peame ikkagi oma jalgratta leiutama. Meie jalgratta aluseks on meie arendus tagasipööratud socks golangil ja kliendi selle jaoks teeme powershellis.

RSocksTun
Nii et, kuidas rsockstun töötab?

RsocksTun'i (edaspidi — rs) töö aluseks on kaks tarkvarakomponenti — Yamux ja Socks5 server. Socks5 server on tavaline kohalik socks5, see kĂ€ivitatakse kliendil. Ja ĂŒhenduste multiplexerimise funktsiooni (kas mĂ€letate mitme protsessi töötlust?) tĂ€idab yamux (veel ĂŒks multiplexer). See skeem vĂ”imaldab kĂ€ivitada mitmeid kliente socks5 servereid ja suunata vĂ€lised ĂŒhendused nende kaudu, edastades need ĂŒheainsa TCP-ĂŒhenduse kaudu (peaaegu nagu meterpreter) kliendi ja serveri vahel, luues seelĂ€bi mitme lĂ”ime reĆŸiimi, ilma milleta me ei saaks sisemise vĂ”rgus korralikult töötada.

Yamux'i tööpĂ”himĂ”te seisneb selles, et see lisab tĂ€iendava vĂ”rgu taseme voogudele, tehes selle iga paketi jaoks 12-baidise pĂ€ise kujul. (Siin kasutame me meelevaldselt sĂ”na „voog“ ja mitte „stream“, et mitte segadusse ajada lugejat programmivooga „thread“ – seda mĂ”istet kasutame me samuti kĂ€esolevas artiklis). Yamux’i pĂ€ises sisaldub voolu number, lipud voolu avamiseks/katkestamiseks, edastatud baitide arv ja edastusakna suurus.

Kirjutame Reverse socks5 proxy Powershellis. Osa 1

Lisaks voolu avamise/katkestamise vĂ”imalusele on yamuxis rakendatud ka keepalive mehhanism, mis vĂ”imaldab jĂ€lgida loodud sidekanali töökindlust. Keepalive sĂ”numite töö mehhanism seadistatakse Yamux seansi loomisel. Tegelikult on seal seadeteks ainult kaks parameetrit: lubamine/keeldumine ja pakettide saatmise sagedus sekundites. Keepalive sĂ”numeid saab saata nii yamux-server kui yamux-klient. Saades keepalive sĂ”numi, peab eemalolev pool sellele vastama tĂ€pselt sama sĂ”numi identifikaatoriga (tĂ”eliselt – numbriga), mille ta on saanud. Üldiselt on keepalive sama mis ping, lihtsalt yamuxi jaoks.

KĂ€esolevas artiklis on ĂŒksikasjalikult vĂ€lja toodud mitmepleksori töö tehnika: paketidĂŒĂŒbid, ĂŒhenduse avamise ja katkestamise lipud, andmete edastamise mehhanism. spetsiifikatsioon yamux'ile.

Esimese osa kokkuvÔte

Seega tutvusime artikli esimeses osas teatud tööriistadega tagasitunneli korraldamiseks, vaatasime nende eeliseid ja puudusi, uurisime Yamuxi mitmepleksori töömehhanismi ning kirjeldasime uusi nĂ”udeid loodavale powershell-moodulile. JĂ€rgmises osas kĂ€sitleme mooduli arendamist praktiliselt nullist. JĂ€tkub. Ära lĂŒlitu vĂ€lja 🙂

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster