Nulis Reverse socks5 proxy dina powershell.Bagian 1

Carita ngeunaan panalungtikan sareng pamekaran dina 3 bagian. Bagian 1 nyaéta éksplorasi.
Aya loba tangkal beech - malah leuwih mangpaat.

Ngarumuskeun masalah

Salila kampanye pentests sareng RedTeam, henteu salawasna mungkin ngagunakeun alat standar Pelanggan, sapertos VPN, RDP, Citrix, jsb. salaku jangkar pikeun asup ka jaringan internal. Di sababaraha tempat, VPN standar tiasa dianggo nganggo MFA sareng token hardware dianggo salaku faktor kadua, di batur dipantau sacara brutal sareng login VPN kami langsung katingali, sakumaha anu aranjeunna nyarios, kalayan sagala anu diperyogikeun, tapi di batur aya saukur euweuh hartosna sapertos.

Dina kasus sapertos kitu, urang kedah teras-terasan ngadamel anu disebut "torowongan balikan" - sambungan tina jaringan internal ka sumber éksternal atanapi server anu urang kontrol. Di jero torowongan sapertos kitu, urang parantos tiasa damel sareng sumber internal Pelanggan.

Aya sababaraha jinis torowongan balik ieu. Anu paling kasohor di antarana nyaéta, tangtosna, Meterpreter. Torowongan SSH sareng diteruskeun port ngabalikkeun ogé dipénta pisan di antara massa hacker. Aya seueur cara pikeun ngalaksanakeun tunneling sabalikna sareng seueur di antarana anu ditaliti sareng dijelaskeun.
Tangtosna, pikeun bagianna, pamekar solusi kaamanan henteu tinggaleun sareng aktip ngadeteksi tindakan sapertos kitu.
Contona, sesi MSF suksés dideteksi ku IPS modern ti Cisco atanapi Positive Tech, sarta torowongan SSH sabalikna bisa ditandaan ku ampir sagala firewall normal.

Ku alatan éta, dina urutan tetep unnoticed dina kampanye RedTeam alus, urang kudu ngawangun torowongan sabalikna ngagunakeun hartosna non-standar sarta adaptasi sacaket mungkin ka mode operasi nyata jaringan.

Hayu urang coba pikeun manggihan atawa invent hal sarupa.

Sateuacan nimukeun naon waé, urang kedah ngartos hasil naon anu urang hoyongkeun, naon fungsi anu kedah dilakukeun ku pangwangunan urang. Naon anu bakal janten sarat pikeun torowongan supados urang tiasa damel dina mode siluman maksimal?

Ieu jelas yén pikeun tiap kasus syarat misalna bisa jadi béda pisan, tapi dumasar kana pangalaman gawé, nu utama bisa dicirikeun:

  • dianggo dina Windows-7-10 OS. Kusabab kalolobaan jaringan perusahaan nganggo Windows;
  • klien nyambung ka server via SSL pikeun nyegah déngékeun bodo maké ips;
  • Nalika nyambungkeun, klien kudu ngarojong karya ngaliwatan server proxy kalawan otorisasina, sabab Dina loba pausahaan, aksés ka Internét lumangsung ngaliwatan proxy. Kanyataanna, mesin klien malah bisa jadi teu nyaho nanaon tentang eta, sarta proxy dipaké dina modeu transparan. Tapi urang kedah nyayogikeun fungsionalitas sapertos kitu;
  • bagian klien kedah singket tur portabel;
    Éta jelas yén pikeun damel dina jaringan Pelanggan, anjeun tiasa masang OpenVPN dina mesin klien sareng nyiptakeun torowongan pinuh ka server anjeun (untungna, klien openvpn tiasa dianggo ngaliwatan proxy). Tapi, mimitina, ieu moal salawasna jalan, saprak urang bisa jadi teu jadi admins lokal di dinya, sarta Bréh, éta bakal nyieun jadi loba noise yén hiji SIEM santun atanapi HIPS bakal geuwat "snitch on" kami. Ideally, klien kami kudu disebut paréntah inline, contona, loba cangkang bash dilaksanakeun, sarta dijalankeun ngaliwatan garis paréntah, contona, nalika executing paréntah tina makro kecap.
  • torowongan urang kudu multi-threaded tur ngarojong loba sambungan sakaligus;
  • sambungan klien-server kudu boga sababaraha jenis otorisasina ambéh torowongan dijieun ngan pikeun klien kami, sarta henteu for everyone anu datang ka server kami di alamat nu tangtu sarta port. Ideally, kaca badarat jeung ucing atawa jejer profésional patali domain aslina kudu muka pikeun "pamaké pihak-katilu".
    Salaku conto, upami Palanggan mangrupikeun organisasi médis, maka pikeun administrator kaamanan inpormasi anu mutuskeun pikeun mariksa sumber daya anu diaksés ku karyawan klinik, halaman kalayan produk farmasi, Wikipedia kalayan pedaran diagnosis, atanapi blog Dr Komarovsky, jsb. .kudu buka.

Analisis parabot nu aya

Sateuacan nyiptakeun sapédah anjeun nyalira, anjeun kedah ngalakukeun analisa sapédah anu tos aya sareng ngartos naha urang leres-leres peryogina sareng, sigana, urang sanés ngan ukur anu panginten peryogi sapédah fungsional sapertos kitu.

Googling dina Internét (urang sigana google normal), ogé milarian dina Github nganggo kecap konci "kaos kaki sabalikna" henteu masihan seueur hasil. Dasarna, éta sadayana turun pikeun ngawangun torowongan ssh kalayan diteruskeun port sabalikna sareng sadayana anu aya hubunganana. Salian torowongan SSH, aya sababaraha solusi:

github.com/klsecservices/rpivot
A palaksanaan lila-nangtung tina torowongan sabalikna ti guys di Kaspersky Lab. Ngaranna ngajelaskeun naon anu dimaksud naskah ieu. Dilaksanakeun dina Python 2.7, torowongan beroperasi dina modeu cleartext (sakumaha ayeuna modis - halo RKN)

github.com/tonyseek/rsocks
palaksanaan sejen di Python, ogé dina cleartext, tapi kalawan leuwih kamungkinan. Éta ditulis salaku modul sareng gaduh API pikeun ngahijikeun solusi kana proyék anjeun.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Link munggaran nyaéta versi aslina tina palaksanaan balik sox di Golang (teu dirojong ku pamekar).
Link kadua nyaéta révisi kami kalayan fitur tambahan, ogé di Golang. Dina versi urang, urang nerapkeun SSL, dianggo ngaliwatan proxy kalawan otorisasina NTLM, otorisasina on klien, kaca badarat bisi tina sandi salah (atawa rada, alihan ka kaca badarat), mode multi-threaded (ie sababaraha urang. tiasa dianggo sareng torowongan dina waktos anu sami), sistem ping ka klien pikeun nangtukeun naha anjeunna hirup atanapi henteu.

github.com/jun7th/tsocks
Palaksanaan reverse sox ti urang "babaturan Cina" dina Python. Di dinya, pikeun anu puguh sareng "abadi", aya binér anu siap-siap (exe), dirakit ku Cina sareng siap dianggo. Di dieu, ngan ukur Dewa Cina anu terang naon deui anu tiasa dikandung binér ieu salian ti fungsi utama, janten paké dina bahaya sareng résiko anjeun nyalira.

github.com/securesocketfunneling/ssf
Proyék anu cukup pikaresepeun dina C ++ pikeun ngalaksanakeun reverse sox sareng seueur deui. Salian torowongan sabalikna, éta tiasa ngalakukeun port diteruskeun, nyiptakeun cangkang paréntah, jsb.

MSF méteran
Di dieu, sabab nyebutkeun, euweuh komentar. Kabéh hacker malah leuwih atawa kirang dididik pisan akrab jeung hal ieu sarta ngarti kumaha gampang eta bisa ditandaan ku parabot kaamanan.

Sadaya alat anu dijelaskeun di luhur dianggo nganggo téknologi anu sami: modul binér anu tiasa dieksekusi sateuacana diluncurkeun dina mesin di jero jaringan, anu ngawangun sambungan sareng server éksternal. server ngajalankeun hiji SOCKS4 / 5 server nu narima sambungan na relays aranjeunna ka klien nu.

Karugian tina sadaya alat di luhur nyaéta yén Python atanapi Golang kedah dipasang dina mesin klien (naha anjeun sering ningali Python dipasang dina mesin, contona, direktur perusahaan atanapi padamel kantor?), atanapi anu dipasang sateuacana. binér (saleresna python) kedah nyeret kana mesin ieu sareng naskah dina hiji botol) sareng ngajalankeun binér ieu parantos aya. Sareng unduh exe teras ngaluncurkeun éta ogé tanda tangan pikeun antipirus lokal atanapi HIPS.

Sacara umum, kacindekan nunjukkeun sorangan - urang peryogi solusi powerhell. Ayeuna tomat bakal ngapung ka urang - aranjeunna nyarios yén powershell parantos di-hackney, dipantau, diblokir, jsb. teras salajengna. Kanyataanna, teu madhab. Urang nyatakeun tanggung jawab. Ku jalan kitu, aya loba cara pikeun bypass blocking (di dieu deui aya frase fashionable ngeunaan halo RKN 🙂), mimitian ti renaming bodo tina powershell.exe -> cmdd.exe sarta ditungtungan make powerdll, jsb.

Hayu urang mimitian inventing

Ieu jelas yén mimitina urang bakal néangan on Google na ... urang moal manggihan nanaon dina topik ieu (lamun batur geus kapanggih eta, posting Tumbu dina komentar). Aya ngan palaksanaan Socks5 on powershell, tapi ieu téh biasa "langsung" sox, nu ngabogaan sajumlah kalemahan sorangan (urang bakal ngobrol ngeunaan aranjeunna engké). Anjeun tiasa, tangtosna, ku gerakan slight leungeun anjeun, balikkeun kana sabalikna, tapi ieu ngan bakal single-threaded sox, nu teu cukup naon urang butuhkeun pikeun urang.

Janten, kami henteu acan mendakan naon waé anu siap-siap, janten kami masih kedah nyiptakeun deui roda kami. Urang bakal nyandak salaku dadasar pikeun sapédah urang pangwangunan urang ngabalikeun sox di Golang, sarta kami nerapkeun klien pikeun eta dina powerhell.

RSocksTun
Janten kumaha jalanna rsockstun?

Operasi RsocksTun (saterusna disebut rs) dumasar kana dua komponén software - Yamux na Socks5 server. Socks5 server mangrupakeun socks5 lokal biasa, eta dijalankeun dina klien nu. Sareng multiplexing sambungan kana éta (émut ngeunaan multithreading?) Disadiakeun nganggo yamux (acan multiplexer sejen). Skéma ieu ngidinan Anjeun pikeun ngajalankeun sababaraha server socks5 klien tur ngadistribusikaeun sambungan éksternal ka aranjeunna, diteruskeun ngaliwatan hiji sambungan TCP tunggal (ampir kawas di meterpreter) ti klien ka server, kukituna nerapkeun mode multi-threaded, tanpa nu urang ngan saukur moal jadi. tiasa pinuh dianggo dina jaringan internal.

Intina kumaha yamux jalanna nyaéta ngenalkeun lapisan jaringan tambahan tina aliran, ngalaksanakeunana dina bentuk lulugu 12-bait pikeun unggal pakét. (Di dieu urang ngahaja ngagunakeun kecap "aliran" tinimbang thread, ku kituna teu galau nu maca kalawan program stream "thread" - urang ogé bakal ngagunakeun konsep ieu dina artikel ieu. Lulugu yamux ngandung nomer stream, umbul pikeun masang / ngeureunkeun aliran, jumlah bait anu ditransfer, sareng ukuran jandela transfer.

Nulis Reverse socks5 proxy dina powershell.Bagian 1

Salian masang / terminating stream a, yamux implements a keepalive mékanisme nu ngidinan Anjeun pikeun ngawas kinerja saluran komunikasi ngadegkeun. Operasi mékanisme pesen keeplive dikonpigurasi nalika nyieun sési Yamux. Sabenerna, tina setélan ngan aya dua parameter: aktipkeun / mareuman sareng frékuénsi ngirim pakét dina sababaraha detik. Pesen Keepalive tiasa dikirim ku server yamux atanapi klien yamux. Nalika nampi pesen keepalive, pihak anu jauh kedah ngabales ku ngirimkeun identifier pesen anu sami (saleresna sajumlah) anu ditampi. Sacara umum, keepalive mangrupikeun ping anu sami, ngan ukur pikeun yamux.

Sakabeh téknik operasi multiplexer: jenis pakét, setelan sambungan na terminasi bandéra, sarta mékanisme mindahkeun data dijelaskeun dina jéntré dina spésifikasi nuju yamux.

Kacindekan kana bagian kahiji

Janten, dina bagian mimiti tulisan, urang kenal sareng sababaraha alat pikeun ngatur torowongan sabalikna, ningali kaunggulan sareng kalemahanana, diajar mékanisme operasi Yamux multiplexer sareng ngajelaskeun syarat dasar pikeun modul powershell anu nembé diciptakeun. Dina bagian salajengna urang bakal ngamekarkeun modul sorangan, praktis ti scratch. Ngalajengkeun. Tong ngalih :)

sumber: www.habr.com

Tambahkeun komentar