Powershell-en Reverse socks5 proxy idazten dugu. 1. zatia

Ikerketa eta garapenari buruzko istorio bat 3 zatitan banatuta. 1. zatia esploratzailea da.
Pago asko daude, are onura gehiago.

Arazoaren formulazioa

Pentestetan eta RedTeam kanpainetan, ez da beti posible Bezeroaren tresna estandarrak erabiltzea, hala nola VPN, RDP, Citrix, etab. barne sarean sartzeko aingura gisa. Leku batzuetan, VPN estandar batek MFA erabiliz funtzionatzen du eta hardware-token bat bigarren faktore gisa erabiltzen da, beste batzuetan modu basatian kontrolatzen da eta gure VPN saio-hasiera berehala ikusten da, esan bezala, horrek dakarren guztiarekin, baina beste batzuetan badaude. besterik gabe, halako bitartekorik ez.

Horrelako kasuetan, etengabe egin behar ditugu "alderantzizko tunelak" deiturikoak - barne saretik kanpoko baliabide batera edo kontrolatzen dugun zerbitzari batera konexioak. Halako tunel baten barruan, dagoeneko Bezeroen barne baliabideekin lan egin dezakegu.

Itzulerako tunel hauen hainbat barietate daude. Horietatik ospetsuena, noski, Meterpreter da. Alderantzizko portuen birbidalketa duten SSH tunelak ere eskaera handia dute hacker masen artean. Alderantzizko tunelak ezartzeko baliabide asko daude eta horietako asko ondo aztertu eta deskribatuta daude.
Jakina, bere aldetik, segurtasun-irtenbideen garatzaileek ez dute albo batera uzten eta aktiboki detektatzen dituzte horrelako ekintzak.
Adibidez, MSF saioak Cisco edo Positive Tech-en IPS modernoek arrakastaz detektatzen dituzte eta alderantzizko SSH tunel bat ia suebaki arruntek detektatu dezakete.

Horregatik, RedTeam kanpaina on batean oharkabean geratzeko, estandarrak ez diren bitartekoak erabiliz alderantzizko tunel bat eraiki behar dugu eta sarearen benetako funtzionamendu modura ahalik eta hurbilen egokitu.

Saia gaitezen antzeko zerbait aurkitzen edo asmatzen.

Ezer asmatu baino lehen ulertu behar dugu zer emaitza lortu nahi dugun, zein funtzio bete behar dituen gure garapenak. Zeintzuk izango dira tunelaren baldintzak gehienez ezkutuko moduan lan egin ahal izateko?

Argi dago kasu bakoitzerako eskakizun horiek asko desberdinak izan daitezkeela, baina lan-esperientziaren arabera, nagusiak identifikatu daitezke:

  • Windows-7-10 OS-n lan egin. Sare korporatibo gehienek Windows erabiltzen dutenez;
  • bezeroa zerbitzarira konektatzen da SSL bidez, ips erabiliz entzute ergelak ekiditeko;
  • Konektatzen denean, bezeroak baimena duen proxy zerbitzari baten bidez lan egin behar du, zeren eta Enpresa askotan, Interneterako sarbidea proxy baten bidez gertatzen da. Izan ere, bezero-makinak baliteke horri buruz ezer ere ez jakitea, eta proxya modu gardenean erabiltzen da. Baina funtzionaltasun hori eman behar dugu;
  • bezeroaren zatiak zehatza eta eramangarria izan behar du;
    Argi dago Bezeroaren sarean lan egiteko, OpenVPN bezeroaren makinan instala dezakezula eta zure zerbitzarirako tunel oso bat sor dezakezu (zorionez, openvpn bezeroek proxy baten bidez lan egin dezakete). Baina, lehenik eta behin, honek ez du beti funtzionatuko, agian ez garelako tokiko administratzaileak izango, eta, bigarrenik, hainbesteko zarata egingo du, non SIEM edo HIPS duin batek berehala "snitch" gaituen. Egokiena, gure bezeroak lineako komandoa deritzona izan beharko luke, adibidez bash shell asko inplementatzen baitira, eta komando-lerroaren bidez abiarazi, adibidez, hitz makro batetik komandoak exekutatzen direnean.
  • gure tunelak hari anitzekoa izan behar du eta aldi berean konexio asko onartzen ditu;
  • bezero-zerbitzariaren konexioak nolabaiteko baimena izan behar du, tunela gure bezeroarentzat soilik ezarri dadin, eta ez gure zerbitzarira zehaztutako helbidean eta atakan etortzen diren guztientzat. Egokiena, jatorrizko domeinuarekin lotutako katuak edo gai profesionalak dituen helmuga-orri bat ireki beharko litzateke "hirugarrenen erabiltzaileentzat".
    Adibidez, Bezeroa mediku-erakunde bat bada, klinikako langile batek sartu duen baliabidea egiaztatzea erabakitzen duen informazioaren segurtasuneko administratzaile batentzat, produktu farmazeutikoekin orri bat, diagnostikoaren deskribapenarekin Wikipedia edo Komarovsky doktorearen bloga, etab. ireki beharko luke.

Dauden tresnen analisia

Zure bizikleta berrasmatu baino lehen, lehendik dauden bizikleten azterketa egin eta benetan behar dugun ala ez ulertu eta, ziurrenik, ez gara horrelako bizikleta funtzional baten beharraz pentsatu dugun bakarrak.

Interneten googlen sartzeak (normalean google egiten omen dugu), eta baita Github-en bilaketak "galtzerdi alderantzizko" hitzak erabiliz ez du emaitza askorik eman. Funtsean, dena ssh tunelak eraikitzea da alderantzizko ataka birbidaltzearekin eta horrekin lotuta dagoen guztia. SSH tunelez gain, hainbat irtenbide daude:

github.com/klsecservices/rpivot
Kaspersky Lab-eko mutilen alderantzizko tunel baten ezarpen luzea. Izenak argi uzten du gidoi hau zertarako den. Python 2.7-n inplementatuta, tunelak testu garbi moduan funtzionatzen du (orain esatea modan dagoen moduan - kaixo RKN)

github.com/tonyseek/rsocks
Python-en beste inplementazio bat, testu garbian ere bai, baina aukera gehiagorekin. Modulu gisa idatzita dago eta irtenbidea zure proiektuetan integratzeko API bat dauka.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Lehenengo esteka Golang-en alderantzizko sox ezarpenaren jatorrizko bertsioa da (garatzaileak onartzen ez duena).
Bigarren esteka gure berrikuspena da ezaugarri gehigarriekin, Golang-en ere. Gure bertsioan, SSL inplementatu genuen, proxy baten bidez lan egin genuen NTLM baimenarekin, bezeroaren baimena, pasahitz okerren kasuan lurreratze orri bat (edo hobeto esanda, lurreratze orrira birbideratzea), hari anitzeko modua (hau da, hainbat pertsona). tunelarekin aldi berean lan egin dezake) , bezeroari ping-a egiteko sistema bat, bizirik dagoen ala ez zehazteko.

github.com/jun7th/tsocks
Gure "Txinako lagunen" alderantzizko sox-en ezarpena Python-en. Bertan, alfer eta β€œhilezkorra”rentzat, prest dago bitarra (exe), txinatarrek muntatua eta erabiltzeko prest. Hemen, jainko txinatarrak bakarrik daki bitar honek funtzionaltasun nagusiaz gain zer gehiago eduki dezakeen, beraz, erabili zure arriskuan eta arriskuan.

github.com/securesocketfunneling/ssf
Nahiko proiektu interesgarria C++-n alderantzizko sox eta gehiago ezartzeko. Alderantzizko tunelaz gain, portuak birbidaltzea egin dezake, komando-shell bat sortu, etab.

MSF neurgailua
Hemen, esaten den bezala, komentariorik ez. Gutxiago edo gutxiago ikasitako hacker guztiek oso ezagutzen dute gauza hau eta ulertzen dute zein erraz detektatu dezaketen segurtasun tresnek.

Goian deskribatutako tresna guztiek antzeko teknologia bat erabiltzen dute: aurrez prestatutako modulu bitar exekutagarri bat sare barruko makina batean abiarazten da, kanpoko zerbitzari batekin konexioa ezartzen duena. Zerbitzariak SOCKS4/5 zerbitzari bat exekutatzen du, konexioak onartzen dituena eta bezeroari transmititzen dizkiona.

Aurreko tresna guztien desabantaila da Python edo Golang bezeroaren makinan instalatu behar dela (askotan ikusi al duzu Python instalatuta, adibidez, enpresa-zuzendari edo bulegoko langileen makinetan?), edo aurrez muntatutako bat. binary (benetan python) arrastatu behar da makina honetara eta script botila batean) eta exekutatu bitar hau dagoeneko hor. Eta exe bat deskargatu eta gero abiarazteko tokiko antibirus edo HIPS baten sinadura ere bada.

Oro har, ondorioak berak iradokitzen du: powershell irtenbide bat behar dugu. Orain tomateak hegan egingo gaituzte - Powershell dagoeneko dena hautsita dagoela diote, kontrolatuta dagoela, blokeatuta, etab. eta abar. Izan ere, ez leku guztietan. Arduraz deklaratzen dugu. Bide batez, blokeoa saihesteko modu asko daude (hemen berriro modan dago kaixo RKN πŸ™‚-ri buruzko esaldi bat), powershell.exe -> cmdd.exe-ren izena aldatze ergeletatik hasi eta powerdll-ekin amaitu eta abar.

Has gaitezen asmatzen

Argi dago lehendabizi Googlen begiratuko dugula eta... ez dugula ezer aurkituko gai honi buruz (norbaitek aurkitu badu, bidali estekak iruzkinetan). Bakarrik dago ezartzea Socks5 powershell-en, baina hau "zuzeneko" sox arrunta da, eta bere desabantaila batzuk ditu (geroago hitz egingo dugu). Zure eskuaren mugimendu apur batekin, noski, alderantzizko bihur dezakezu, baina hau hari bakarreko sox bakarrik izango da, eta hori ez da guztiz behar duguna.

Beraz, ez dugu ezer prestaturik aurkitu, beraz, oraindik ere gure gurpila berrasmatu beharko dugu. Gure bizikletaren oinarritzat hartuko dugu gure garapena reverse sox Golang-en, eta bezero bat inplementatzen dugu powershell-en.

RSocksTun
Beraz, nola funtzionatzen du rsockstunek?

RsocksTun-en (aurrerantzean rs deitzen den) funtzionamendua bi software osagaietan oinarritzen da: Yamux eta Socks5 zerbitzaria. Socks5 zerbitzaria tokiko socks5 arrunta da, bezeroan exekutatzen da. Eta hari konexioen multiplexazioa (gogoratzen al duzu multithreading?) yamux erabiliz (beste multiplexer bat). Eskema honek hainbat bezero socks5 zerbitzari abiarazteko eta haietara kanpoko konexioak banatzeko aukera ematen du, TCP konexio bakar baten bidez birbidaliz (ia meterpreter-en bezala) bezero batetik zerbitzaria, eta, horrela, hari anitzeko modua ezarriz, eta hori gabe, besterik gabe, ez gara izango. barne-sareetan guztiz lan egiteko gai.

Yamux-ek funtzionatzen duenaren funtsa sareko korronteen sare-geruza gehigarri bat sartzen duela da, pakete bakoitzeko 12 byte-ko goiburu baten moduan ezarriz. (Hemen nahita erabiltzen dugu "korronte" hitza haria baino, irakurlea programaren "haria" korronte batekin nahasteko; kontzeptu hau ere erabiliko dugu artikulu honetan). Yamux goiburuak korronte-zenbakia, korrontea instalatzeko/amaitzeko banderak, transferitutako byte-kopurua eta transferentzia-leihoaren tamaina ditu.

Powershell-en Reverse socks5 proxy idazten dugu. 1. zatia

Korronte bat instalatzea/amaieraz gain, yamux-ek ezarritako komunikazio-kanalaren errendimendua kontrolatzeko aukera ematen duen keepalive mekanismo bat ezartzen du. Keeplive mezuen mekanismoaren funtzionamendua Yamux saio bat sortzean konfiguratzen da. Egia esan, ezarpenetatik bi parametro baino ez daude: gaitu/desgaitu eta paketeak segundotan bidaltzeko maiztasuna. Keepalive mezuak yamux zerbitzari batek edo yamux bezero batek bidal ditzake. Keepalive mezu bat jasotzean, urruneko alderdiak hari erantzun behar dio jaso duen mezu-identifikatzaile bera (zenbatean, zenbaki bat) bidaliz. Orokorrean, keepalive ping bera da, yamuxentzat bakarrik.

Multiplexatzailearen funtzionamendu-teknika osoa: pakete motak, konexioaren konfigurazioa eta amaiera-markak eta datuak transferitzeko mekanismoa xehetasunez deskribatzen dira. zehaztapenak yamuxera.

Ondorioa lehen zatiari

Beraz, artikuluaren lehen zatian, alderantzizko tunelak antolatzeko tresna batzuk ezagutu genituen, haien abantailak eta desabantailak aztertu, Yamux multiplexagailuaren funtzionamendu mekanismoa aztertu eta sortu berri den powershell moduluaren oinarrizko baldintzak deskribatu genituen. Hurrengo zatian modulua bera garatuko dugu, ia hutsetik. Jarraituko du. Ez aldatu :)

Iturria: www.habr.com

Gehitu iruzkin berria