Nulis Reverse socks5 proxy ing powershell.Part 1

Crita babagan riset lan pangembangan ing 3 bagean. Bagian 1 yaiku eksplorasi.
Ana akeh wit beech - malah luwih akeh keuntungan.

Formulasi masalah

Sajrone kampanye pentest lan RedTeam, ora mesthi bisa nggunakake alat standar Pelanggan, kayata VPN, RDP, Citrix, lsp. minangka jangkar kanggo mlebu jaringan internal. Ing sawetara panggonan, VPN standar bisa digunakake nggunakake MFA lan token hardware digunakake minangka faktor liya, ing liyane dipantau kanthi brutal lan login VPN kita langsung katon, kaya sing dikandhakake, kanthi kabeh sing dibutuhake, nanging ing liyane ana mung ora cara kuwi.

Ing kasus kasebut, kita kudu terus-terusan nggawe "terowongan terbalik" - sambungan saka jaringan internal menyang sumber eksternal utawa server sing kita kontrol. Ing jero trowongan kasebut, kita wis bisa nggarap sumber daya internal Pelanggan.

Ana sawetara jinis terowongan bali iki. Sing paling misuwur yaiku, mesthi, Meterpreter. Terowongan SSH kanthi port forwarding mbalikke uga dikarepake banget ing kalangan peretas. Ana cukup akeh cara kanggo ngleksanakake tunneling mbalikke lan akeh sing diteliti lan diterangake kanthi apik.
Mesthine, kanggo bagean kasebut, pangembang solusi keamanan ora mandheg lan aktif ndeteksi tumindak kasebut.
Contone, sesi MSF kasil dideteksi dening IPS modern saka Cisco utawa Positive Tech, lan trowongan SSH mbalikke bisa dideteksi dening meh wae firewall normal.

Mulane, supaya tetep ora diweruhi ing kampanye RedTeam sing apik, kita kudu mbangun trowongan mbalikke nggunakake cara non-standar lan adaptasi sabisa kanggo mode operasi nyata saka jaringan.

Ayo nyoba golek utawa nyipta sing padha.

Sadurunge nggawe apa wae, kita kudu ngerti apa asil sing pengin digayuh, fungsi apa sing kudu ditindakake pembangunan. Apa sing bakal dadi syarat kanggo trowongan supaya bisa digunakake ing mode siluman maksimal?

Cetha yen kanggo saben kasus, syarat kasebut bisa beda-beda, nanging adhedhasar pengalaman kerja, sing utama bisa diidentifikasi:

  • bisa ing Windows-7-10 OS. Wiwit umume jaringan perusahaan nggunakake Windows;
  • klien nyambung menyang server liwat SSL supaya ora ngrungokake bodho nggunakake ips;
  • Nalika nyambungake, klien kudu ndhukung karya liwat server proxy karo wewenang, amarga Ing pirang-pirang perusahaan, akses menyang Internet dumadi liwat proxy. Nyatane, mesin klien bisa uga ora ngerti apa-apa, lan proxy digunakake ing mode transparan. Nanging kita kudu nyedhiyakake fungsi kasebut;
  • bagean klien kudu ringkes lan portabel;
    Cetha yen bisa digunakake ing jaringan Pelanggan, sampeyan bisa nginstal OpenVPN ing mesin klien lan nggawe trowongan lengkap menyang server sampeyan (untung, klien openvpn bisa digunakake liwat proxy). Nanging, sepisanan, iki ora mesthi bisa digunakake, amarga kita ora bisa dadi admin lokal ing kana, lan nomer loro, bakal nggawe gangguan banget yen SIEM utawa HIPS sing layak bakal langsung "nyolong" kita. Saenipun, klien kita kudu dadi perintah inline, kayata akeh cangkang bash sing dileksanakake, lan diluncurake liwat baris perintah, contone, nalika nglakokake perintah saka makro tembung.
  • trowongan kita kudu multi-Utas lan ndhukung akeh sambungan bebarengan;
  • sambungan klien-server kudu duwe sawetara wewenang supaya trowongan ditetepake mung kanggo klien kita, lan ora kanggo saben wong sing teka ing server kita ing alamat lan port sing ditemtokake. Saenipun, kaca kebangkrutan karo kucing utawa topik profesional sing ana hubungane karo domain asli kudu mbukak kanggo "pangguna pihak katelu."
    Contone, yen Pelanggan minangka organisasi medis, mula kanggo administrator keamanan informasi sing mutusake mriksa sumber daya sing diakses karyawan klinik, kaca kanthi produk farmasi, Wikipedia kanthi deskripsi diagnosis, utawa blog Dr Komarovsky, etc .kudu mbukak.

Analisis piranti sing wis ana

Sadurunge nyipta maneh sepedha dhewe, sampeyan kudu nganalisa sepeda sing wis ana lan ngerti manawa kita pancene butuh lan, mesthine, ora mung kita sing mikir babagan kabutuhan sepeda fungsional kasebut.

Googling ing Internet (kita katon ing google biasane), uga nggoleki ing Github nggunakake tembung kunci "kaos kaki mbalikke" ora menehi akeh asil. Sejatine, iku kabeh teka kanggo mbangun trowongan ssh kanthi port forwarding mbalikke lan kabeh sing ana gandhengane. Saliyane trowongan SSH, ana sawetara solusi:

github.com/klsecservices/rpivot
A implementasine long-ngadeg saka trowongan mbalikke saka wong lanang ing Kaspersky Lab. Jeneng ndadekake cetha apa script iki dimaksudaké kanggo. Dilaksanakake ing Python 2.7, trowongan beroperasi ing mode cleartext (amarga saiki wis modis - hello RKN)

github.com/tonyseek/rsocks
Implementasi liyane ing Python, uga ing cleartext, nanging luwih akeh kemungkinan. Iki ditulis minangka modul lan duwe API kanggo nggabungake solusi menyang proyek sampeyan.

github.com/llkat/rsockstun
github.com/mis-team/rsockstun
Link pisanan minangka versi asli saka implementasine sox mbalikke ing Golang (ora didhukung dening pangembang).
Link kapindho yaiku revisi kita kanthi fitur tambahan, uga ing Golang. Ing versi kita, kita ngetrapake SSL, nggarap proxy kanthi wewenang NTLM, wewenang ing klien, kaca kebangkrutan yen ana tembung sandhi sing salah (utawa, pangalihan menyang kaca kebangkrutan), mode multi-threaded (yaiku sawetara wong. bisa nggarap trowongan ing wektu sing padha), sistem ping klien kanggo nemtokake manawa dheweke urip utawa ora.

github.com/jun7th/tsocks
Implementasi saka reverse sox saka "kanca Cina" ing Python. Ing kana, kanggo wong sing kesed lan "abadi", ana binar (exe), sing dirakit dening wong Tionghoa lan siap digunakake. Ing kene, mung Gusti Allah Tionghoa sing ngerti apa sing bisa dikandung binar iki saliyane fungsi utama, mula gunakake kanthi resiko lan resiko dhewe.

github.com/securesocketfunneling/ssf
Cukup proyek menarik ing C ++ kanggo ngleksanakake reverse sox lan liyane. Saliyane trowongan mbalikke, bisa nindakake port forwarding, nggawe cangkang printah, etc.

MSF meterpreter
Ing kene, kaya sing dikandhakake, ora ana komentar. Kabeh peretas sing luwih akeh utawa kurang sinau ngerti babagan iki lan ngerti carane gampang bisa dideteksi dening piranti keamanan.

Kabeh alat sing diterangake ing ndhuwur bisa digunakake kanthi nggunakake teknologi sing padha: modul binar eksekusi sing wis disiapake diluncurake ing mesin ing jero jaringan, sing nggawe sambungan karo server eksternal. Server nganggo server SOCKS4/5 sing nampa sambungan lan ngirim menyang klien.

Kerugian kabeh alat ing ndhuwur yaiku Python utawa Golang kudu diinstal ing mesin klien (apa sampeyan wis kerep ndeleng Python diinstal ing mesin, contone, direktur perusahaan utawa buruh kantor?), Utawa pre-dirakit. binar (bener python) kudu nyeret menyang mesin iki lan script ing siji botol) lan mbukak binar iki wis ana. Lan ndownload exe banjur diluncurake uga minangka tandha kanggo antivirus lokal utawa HIPS.

Umumé, kesimpulan kasebut nyaranake dhewe - kita butuh solusi powershell. Saiki tomat bakal mabur menyang kita - ujar manawa powershell wis diretas, dipantau, diblokir, lsp. lan liya-liyane. Nyatane, ora nang endi wae. We ngumumake tanggung jawab. Miturut cara, ana akeh cara kanggo ngliwati pamblokiran (ing kene maneh ana tembung modis babagan hello RKN 🙂), wiwit saka bodho ngganti jeneng powershell.exe -> cmdd.exe lan dipungkasi karo powerdll, lsp.

Ayo dadi miwiti nggawe

Cetha yen pisanan kita bakal katon ing Google lan ... kita ora bakal nemokake apa-apa ing topik iki (yen ana sing nemokake, kirim pranala ing komentar). mung ana implementasine Socks5 ing powershell, nanging iki biasa "langsung" sox, kang wis sawetara cacat dhewe (kita bakal pirembagan bab mau mengko). Sampeyan bisa, mesthi, karo gerakan sethitik saka tangan, nguripake menyang mbalikke, nanging iki mung siji-Utas sox, kang ora cukup kanggo kita.

Dadi, kita durung nemokake apa-apa sing wis siap, mula kita isih kudu nggawe maneh roda. Kita bakal njupuk minangka basis kanggo mancal kita pembangunan kita mbalikke sox ing Golang, lan kita ngleksanakake klien kanggo ing powershell.

RSocksTun
Dadi carane rsockstun bisa?

Operasi RsocksTun (sabanjuré diarani rs) adhedhasar rong komponen piranti lunak - server Yamux lan Socks5. Server Socks5 minangka socks5 lokal biasa, mlaku ing klien. Lan multiplexing sambungan kasebut (elinga babagan multithreading?) Disedhiyakake nggunakake yamux (durung multiplexer liyane). Skema iki ngidini sampeyan miwiti sawetara server socks5 klien lan nyebarake sambungan eksternal menyang wong-wong mau, diterusake liwat siji sambungan TCP (meh kaya ing meterpreter) saka klien menyang server, saéngga ngleksanakake mode multi-threaded, tanpa kita ora bakal bisa. bisa kanthi lengkap ing jaringan internal.

Inti saka cara kerja yamux yaiku ngenalake lapisan jaringan tambahan saka stream, ngleksanakake ing wangun header 12-bait kanggo saben paket. (Ing kene kita sengaja nggunakake tembung "stream" tinimbang thread, supaya ora mbingungake pembaca karo program stream "thread" - kita uga bakal nggunakake konsep iki ing artikel iki). Header yamux ngemot nomer stream, gendera kanggo nginstal / mungkasi stream, jumlah bita sing ditransfer, lan ukuran jendela transfer.

Nulis Reverse socks5 proxy ing powershell.Part 1

Saliyane nginstal / mungkasi stream, yamux ngetrapake mekanisme keepalive sing ngidini sampeyan ngawasi kinerja saluran komunikasi sing diadegake. Operasi mekanisme pesen keeplive dikonfigurasi nalika nggawe sesi Yamux. Bener, setelan mung ana rong paramèter: ngaktifake / mateni lan frekuensi ngirim paket ing sawetara detik. Pesen Keepalive bisa dikirim dening server yamux utawa klien yamux. Nalika nampa pesen keepalive, pihak sing adoh kudu nanggapi kanthi ngirim pengenal pesen sing padha (sajatine nomer) sing ditampa. Umumé, keepalive iku ping sing padha, mung kanggo yamux.

Kabeh teknik operasi multiplexer: jinis paket, persiyapan sambungan lan panji terminasi, lan mekanisme transfer data diterangake kanthi rinci ing spesifikasi kanggo yamux.

Kesimpulan kanggo bagean pisanan

Dadi, ing bagean pisanan artikel, kita kenal karo sawetara alat kanggo ngatur trowongan mbalikke, ndeleng kaluwihan lan kekurangane, sinau mekanisme operasi multiplexer Yamux lan nerangake syarat dhasar kanggo modul powershell sing mentas digawe. Ing bagean sabanjure kita bakal ngembangake modul kasebut dhewe, praktis saka awal. Diterusake. Aja ngalih :)

Source: www.habr.com

Add a comment