Aħna niktbu Reverse socks5 proxy fuq powershell.Parti 1

Storja dwar riċerka u żvilupp fi 3 partijiet. Parti 1 hija esploratorja.
Hemm ħafna siġar tal-fagu - saħansitra aktar benefiċċji.

Dikjarazzjoni tal-problema

Waqt pentests u kampanji RedTeam, mhux dejjem ikun possibbli li tuża l-għodod standard tal-Klijent, bħal VPN, RDP, Citrix, eċċ. bħala ankra għad-dħul fin-netwerk intern. F'xi postijiet, VPN standard jaħdem bl-użu ta' MFA u token tal-ħardwer jintuża bħala t-tieni fattur, f'oħrajn huwa mmonitorjat b'mod brutali u l-login VPN tagħna immedjatament isir viżibbli, kif jgħidu, b'dak kollu li jinvolvi, iżda f'oħrajn hemm sempliċiment ebda mezz bħal dan.

F'każijiet bħal dawn, dejjem għandna nagħmlu l-hekk imsejħa "mini reverse" - konnessjonijiet min-netwerk intern għal riżors estern jew server li nikkontrollaw. Ġewwa mina bħal din, diġà nistgħu naħdmu bir-riżorsi interni tal-Klijenti.

Hemm diversi varjetajiet ta 'dawn il-mini tar-ritorn. L-aktar famuż minnhom huwa, ovvjament, Meterpreter. Mini SSH b'reverse port forwarding huma wkoll fid-domanda kbira fost il-mases tal-hackers. Hemm ħafna mezzi għall-implimentazzjoni tar-reverse tunneling u ħafna minnhom huma studjati u deskritti tajjeb.
Naturalment, min-naħa tagħhom, l-iżviluppaturi ta 'soluzzjonijiet ta' sigurtà ma jwarrbux u jiskopru b'mod attiv tali azzjonijiet.
Pereżempju, is-sessjonijiet tal-MSF jiġu skoperti b'suċċess minn IPS moderni minn Cisco jew Positive Tech, u mina SSH inversa tista 'tiġi skoperta minn kważi kull firewall normali.

Għalhekk, sabiex nibqgħu inosservati f'kampanja tajba tar-RedTeam, għandna bżonn nibnu mina inversa bl-użu ta 'mezzi mhux standard u naddattaw kemm jista' jkun għall-mod ta 'tħaddim reali tan-netwerk.

Ejja nippruvaw insibu jew nivvintaw xi ħaġa simili.

Qabel ma nivvinta xi ħaġa, irridu nifhmu x'riżultat irridu niksbu, liema funzjonijiet għandu jwettaq l-iżvilupp tagħna. X'se jkunu r-rekwiżiti għall-mina sabiex inkunu nistgħu naħdmu fil-modalità massima stealth?

Huwa ċar li għal kull każ tali rekwiżiti jistgħu jvarjaw ħafna, iżda abbażi tal-esperjenza tax-xogħol, jistgħu jiġu identifikati dawk ewlenin:

  • taħdem fuq Windows-7-10 OS. Peress li ħafna netwerks korporattivi jużaw Windows;
  • il-klijent jgħaqqad mas-server permezz ta 'SSL biex jevita smigħ stupid bl-użu ta' ips;
  • Meta tikkonnettja, il-klijent għandu jappoġġja x-xogħol permezz ta 'server prokura b'awtorizzazzjoni, għaliex F'ħafna kumpaniji, l-aċċess għall-Internet iseħħ permezz ta' prokura. Fil-fatt, il-magna tal-klijent tista' lanqas tkun taf xejn dwarha, u l-prokura tintuża f'mod trasparenti. Imma rridu nipprovdu tali funzjonalità;
  • il-parti tal-klijent għandha tkun konċiża u portabbli;
    Huwa ċar li biex taħdem fin-netwerk tal-Klijent, tista 'tinstalla OpenVPN fuq il-magna tal-klijent u toħloq mina sħiħa għas-server tiegħek (fortunatament, il-klijenti openvpn jistgħu jaħdmu permezz ta' prokura). Iżda, l-ewwelnett, dan mhux dejjem se jaħdem, peress li nistgħu ma nkunux amministraturi lokali hemmhekk, u t-tieni, se jagħmel tant ħoss li SIEM jew HIPS deċenti immedjatament "snitch on" us. Idealment, il-klijent tagħna għandu jkun l-hekk imsejjaħ kmand inline, peress li pereżempju ħafna bash shells huma implimentati, u mnedija permezz tal-linja tal-kmand, pereżempju, meta tesegwixxi kmandi minn makro kelma.
  • il-mina tagħna trid tkun multi-threaded u tappoġġja ħafna konnessjonijiet fl-istess ħin;
  • il-konnessjoni klijent-server għandu jkollha xi tip ta 'awtorizzazzjoni sabiex il-mina tkun stabbilita biss għall-klijent tagħna, u mhux għal kull min jiġi fis-server tagħna fl-indirizz u l-port speċifikati. Idealment, paġna ta’ destinazzjoni bi qtates jew suġġetti professjonali relatati mad-dominju oriġinali għandha tiftaħ għal “utenti ta’ terzi”.
    Pereżempju, jekk il-Klijent huwa organizzazzjoni medika, allura għal amministratur tas-sigurtà tal-informazzjoni li jiddeċiedi li jiċċekkja r-riżors li aċċessa impjegat tal-klinika, paġna bi prodotti farmaċewtiċi, Wikipedija b'deskrizzjoni tad-dijanjosi, jew il-blog ta' Dr Komarovsky, eċċ. għandha tiftaħ.

Analiżi ta 'għodod eżistenti

Qabel ma tivvinta mill-ġdid ir-rota tiegħek, trid tagħmel analiżi tar-roti eżistenti u tifhem jekk verament għandna bżonnha u, probabbilment, m’aħniex l-uniċi li ħsibna dwar il-ħtieġa ta’ rota funzjonali bħal din.

Googling fuq l-Internet (jidher li google normalment), kif ukoll it-tiftix fuq Github bl-użu tal-kliem kjavi "reverse socks" ma tawx ħafna riżultati. Bażikament, kollox niżel għall-bini ta 'mini ssh b'reverse port forwarding u dak kollu konness miegħu. Minbarra l-mini SSH, hemm diversi soluzzjonijiet:

github.com/klsecservices/rpivot
Implimentazzjoni li ilha teżisti ta' mina inversa mill-ġuvni ta' Kaspersky Lab. L-isem jagħmilha ċara għal xiex hija maħsuba din l-iskrittura. Implimentata f'Python 2.7, il-mina topera fil-modalità tat-test ċar (kif huwa moda li tgħid issa - bonjour RKN)

github.com/tonyseek/rsocks
Implimentazzjoni oħra f'Python, ukoll f'test ċar, iżda b'aktar possibbiltajiet. Huwa miktub bħala modulu u għandu API għall-integrazzjoni tas-soluzzjoni fil-proġetti tiegħek.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
L-ewwel rabta hija l-verżjoni oriġinali tal-implimentazzjoni tar-reverse sox f'Golang (mhux appoġġjat mill-iżviluppatur).
It-tieni link hija r-reviżjoni tagħna b'karatteristiċi addizzjonali, ukoll f'Golang. Fil-verżjoni tagħna, implimentajna SSL, naħdmu permezz ta 'prokura b'awtorizzazzjoni NTLM, awtorizzazzjoni fuq il-klijent, paġna ta' inżul f'każ ta 'password żbaljata (jew aħjar, redirect lejn il-paġna ta' inżul), modalità b'ħafna ħajt (jiġifieri diversi nies jista 'jaħdem mal-mina fl-istess ħin), sistema ta' ping tal-klijent biex jiddetermina jekk hux ħaj jew le.

github.com/jun7th/tsocks
Implimentazzjoni ta 'reverse sox minn "ħbieb Ċiniżi" tagħna f'Python. Hemm, għall-għażżien u "immortali", hemm binarju lest (exe), immuntat miċ-Ċiniżi u lest għall-użu. Hawnhekk, Alla Ċiniż biss jaf x'iktar jista' jkun fih dan il-binarju minbarra l-funzjonalità ewlenija, għalhekk uża għar-riskju u r-riskju tiegħek.

github.com/securesocketfunneling/ssf
Proġett pjuttost interessanti f'C++ għall-implimentazzjoni tar-reverse sox u aktar. Minbarra l-mina b'lura, tista 'tagħmel port forwarding, toħloq qoxra ta' kmand, eċċ.

MSF meterpreter
Hawnhekk, kif jgħidu, l-ebda kummenti. Il-hackers kollha saħansitra aktar jew inqas edukati huma familjari ħafna ma 'din il-ħaġa u jifhmu kemm jista' jiġi skopert faċilment minn għodod tas-sigurtà.

L-għodod kollha deskritti hawn fuq jaħdmu bl-użu ta 'teknoloġija simili: modulu binarju eżekutibbli ppreparat minn qabel jiġi mniedi fuq magna ġewwa n-netwerk, li jistabbilixxi konnessjoni ma' server estern. Is-server imexxi server SOCKS4/5 li jaċċetta konnessjonijiet u jibgħathom lill-klijent.

L-iżvantaġġ tal-għodod kollha ta 'hawn fuq huwa li jew Python jew Golang għandhom jiġu installati fuq il-magna tal-klijent (spiss rajt Python installat fuq il-magni ta', pereżempju, direttur tal-kumpanija jew ħaddiema tal-uffiċċju?), jew immuntat minn qabel binarju (fil-fatt python) għandu jiġi mkaxkra fuq din il-magna u skript fi flixkun wieħed) u mexxi dan il-binarju diġà hemm. U t-tniżżil ta 'exe u mbagħad it-tnedija hija wkoll firma għal antivirus lokali jew HIPS.

B'mod ġenerali, il-konklużjoni tissuġġerixxi lilha nfisha - neħtieġu soluzzjoni powershell. Issa t-tadam se jtir magħna - jgħidu li l-powershell diġà hija kollha mnaqqsa, hija mmonitorjata, imblukkata, eċċ. u l-bqija. Fil-fatt, mhux kullimkien. Aħna niddikjaraw b'mod responsabbli. Mill-mod, hemm ħafna modi biex taqbeż l-imblukkar (hawn għal darb'oħra hemm frażi moda dwar bonjour RKN 🙂), li tibda mit-tismija stupida ta 'powershell.exe -> cmdd.exe u tispiċċa b'powerdll, eċċ.

Ejja nibdew nivvintaw

Huwa ċar li l-ewwel se nħarsu fuq Google u... ma nsibu xejn fuq dan is-suġġett (jekk xi ħadd sabha, poġġi links fil-kummenti). Hemm biss implimentazzjoni Socks5 fuq powershell, iżda dan huwa sox ordinarju "dirett", li għandu numru ta 'żvantaġġi tiegħu stess (se nitkellmu dwarhom aktar tard). Tista ', ovvjament, b'ċaqliq żgħir ta' idejk, iddawwarha f'waħda b'lura, iżda dan se jkun biss sox b'ħajt wieħed, li mhuwiex pjuttost dak li għandna bżonn għalina.

Allura, ma sibna xejn lest, għalhekk xorta jkollna nivvintaw mill-ġdid ir-rota tagħna. Se nieħdu bħala l-bażi għar-rota tagħna l-iżvilupp tagħna reverse sox f'Golang, u nimplimentaw klijent għaliha f'powershell.

RSocksTun
Allura kif jaħdem rsockstun?

L-operazzjoni ta 'RsocksTun (minn hawn 'il quddiem imsejħa rs) hija bbażata fuq żewġ komponenti tas-softwer - Yamux u Socks5 server. Socks5 server huwa socks5 lokali regolari, jaħdem fuq il-klijent. U l-multiplexing ta' konnessjonijiet magħha (tiftakar dwar il-multithreading?) huwa pprovdut bl-użu ta' yamux (multiplexer ieħor). Din l-iskema tippermettilek tniedi diversi kalzetti tal-klijenti5 servers u tqassam konnessjonijiet esterni lilhom, tibgħathom permezz ta 'konnessjoni waħda TCP waħda (kważi bħal f'meterpreter) minn klijent għal server, u b'hekk timplimenta modalità multi-threaded, li mingħajrha sempliċement ma nkunux kapaċi jaħdem bis-sħiħ fin-netwerks interni.

L-essenza ta 'kif jaħdem yamux hija li tintroduċi saff ta' netwerk addizzjonali ta 'flussi, li timplimentah fil-forma ta' header ta '12-byte għal kull pakkett. (Hawn aħna deliberatament nużaw il-kelma "fluss" aktar milli ħajta, sabiex ma nħawdux lill-qarrej ma 'fluss ta' programm "ħajt" - aħna se nużaw ukoll dan il-kunċett f'dan l-artikolu). L-header tal-yamux fih in-numru tal-fluss, bnadar għall-installazzjoni/terminazzjoni tal-fluss, in-numru ta 'bytes trasferiti, u d-daqs tat-tieqa tat-trasferiment.

Aħna niktbu Reverse socks5 proxy fuq powershell.Parti 1

Minbarra l-installazzjoni/terminazzjoni ta 'fluss, yamux jimplimenta mekkaniżmu keepalive li jippermettilek tissorvelja l-prestazzjoni tal-kanal ta' komunikazzjoni stabbilit. It-tħaddim tal-mekkaniżmu tal-messaġġ keeplive huwa kkonfigurat meta tinħoloq sessjoni Yamux. Fil-fatt, mis-settings hemm biss żewġ parametri: jawtorizzaw/iskonnettjaw u l-frekwenza li jintbagħtu l-pakketti f'sekondi. Messaġġi Keepalive jistgħu jintbagħtu minn server yamux jew klijent yamux. Meta tirċievi messaġġ keepalive, il-parti remota trid tirrispondi għalih billi tibgħat eżattament l-istess identifikatur tal-messaġġ (fil-fatt numru) li rċeviet. B'mod ġenerali, keepalive huwa l-istess ping, għal yamux biss.

It-teknika operattiva kollha tal-multiplexer: it-tipi tal-pakketti, is-setup tal-konnessjoni u l-bnadar tat-terminazzjoni, u l-mekkaniżmu tat-trasferiment tad-dejta huma deskritti fid-dettall f' speċifikazzjonijiet to yamux.

Konklużjoni għall-ewwel parti

Għalhekk, fl-ewwel parti tal-artikolu, aħna ltqajna familjari ma 'xi għodod għall-organizzazzjoni ta' mini reverse, ħares lejn il-vantaġġi u l-iżvantaġġi tagħhom, studja l-mekkaniżmu ta 'tħaddim tal-multiplexer Yamux u ddeskrivejna r-rekwiżiti bażiċi għall-modulu powershell maħluq ġdid. Fil-parti li jmiss se niżviluppaw il-modulu innifsu, prattikament mill-bidu. Ser jitkompla aktar il-quddiem. Taqlibx :)

Sors: www.habr.com

Żid kumment