Kisah penelitian dan pengembangan dalam 3 bagian. Bagian 1 - penelitian.
Ada banyak beech - bahkan lebih banyak manfaat.
Pernyataan masalah
Selama melakukan kampanye pentest dan RedTeam, tidak selalu mungkin untuk menggunakan sarana pelanggan reguler, seperti VPN, RDP, Citrix, dll. sebagai perbaikan untuk memasuki jaringan internal. Di suatu tempat, VPN reguler berfungsi sesuai dengan MFA dan token besi digunakan sebagai faktor kedua, di suatu tempat ia sangat dipantau dan entri VPN kami segera menjadi terlihat, seperti yang mereka katakan - dengan semua konsekuensinya, tetapi di suatu tempat tidak ada cara seperti itu.
Dalam kasus seperti itu, terus-menerus harus melakukan apa yang disebut "terowongan terbalik" - koneksi dari jaringan internal ke sumber daya eksternal atau server yang kita kontrol. Di dalam terowongan seperti itu, kita sudah bisa bekerja dengan sumber daya internal pelanggan.
Ada beberapa jenis terowongan terbalik. Yang paling terkenal di antara mereka, tentu saja, adalah Meterpreter. Terowongan SSH dengan port forwarding terbalik juga sangat diminati di kalangan massa peretas. Ada banyak alat tunneling terbalik dan banyak dari mereka yang dipelajari dan dijelaskan dengan baik.
Tentu saja, untuk bagian mereka, pengembang solusi perlindungan tidak siaga dan secara aktif mendeteksi tindakan tersebut.
Sebagai contoh, sesi MSF berhasil dideteksi oleh IPS modern dari Cisco atau Positive Tech, dan terowongan SSH terbalik dapat dideteksi oleh hampir semua firewall normal kecil.
Oleh karena itu, agar tidak diketahui dalam kampanye RedTeam yang baik, kita perlu membangun terowongan terbalik dengan cara-cara non-standar dan beradaptasi sedekat mungkin dengan mode nyata jaringan.
Mari kita coba menemukan atau menemukan sesuatu yang serupa.
Sebelum Anda menemukan sesuatu, Anda perlu memahami hasil apa yang ingin kami capai, fungsi apa yang harus dilakukan pengembangan kami. Apa yang akan menjadi persyaratan untuk terowongan sehingga kita dapat bekerja dalam mode stealth maksimum?
Jelas bahwa untuk setiap kasus, persyaratan tersebut dapat sangat berbeda, tetapi dari pengalaman kami dapat membedakan yang utama:
- bekerja pada OS Windows-7-10. Karena sebagian besar jaringan perusahaan menggunakan Windows;
- klien terhubung ke server melalui SSL untuk mencegah mendengarkan bodoh menggunakan ips;
- saat menghubungkan, klien harus mendukung operasi melalui server proxy dengan otorisasi, sebagai Banyak perusahaan mengakses Internet melalui proxy. Bahkan, mesin klien mungkin bahkan tidak tahu apa-apa tentang itu, dan proksi digunakan dalam mode transparan. Tetapi kita harus meletakkan fungsi seperti itu;
- bagian klien harus ringkas dan portabel;
Jelas bahwa untuk bekerja di dalam jaringan Pelanggan pada mesin klien, Anda dapat menginstal OpenVPN dan menaikkan terowongan lengkap ke server Anda (karena klien openvpn dapat bekerja melalui proxy). Tapi, pertama, ini tidak selalu berhasil, karena kita mungkin bukan admin lokal di sana, dan kedua, itu akan membuat begitu banyak suara sehingga SIEM atau HIPS yang layak akan segera “mengetuk kami”. Idealnya, klien kami harus menjadi apa yang disebut perintah inline, seperti banyak bash shell, misalnya, dan dijalankan melalui baris perintah, misalnya, ketika menjalankan perintah dari makro kata. - terowongan kami harus multithreaded dan mendukung banyak koneksi pada saat yang sama;
- Koneksi klien-server harus memiliki semacam otorisasi sehingga terowongan dibuat hanya untuk klien kami, dan tidak untuk semua orang yang datang ke server kami di alamat dan port yang ditentukan. Idealnya, untuk "pengguna pihak ketiga", halaman arahan dengan segel atau topik profesional yang terkait dengan domain sumber harus terbuka.
Misalnya, jika Pelanggan adalah organisasi medis, maka untuk administrator keamanan informasi yang memutuskan untuk memeriksa sumber daya yang digunakan karyawan klinik, halaman dengan barang farmasi, wikipedia dengan deskripsi diagnosis, atau blog Dr. Komarovsky, dll. Harus dibuka.
Analisis alat yang ada
Sebelum menciptakan sepeda Anda, Anda perlu menganalisis sepeda yang ada dan memahami apakah kami benar-benar membutuhkannya dan, mungkin, bukan hanya kami yang memikirkan perlunya sepeda yang fungsional.
Googling di Internet (kami sepertinya baik-baik saja dengan google), serta mencari github untuk kata kunci “kaus kaki terbalik”, tidak memberikan banyak hasil. Pada dasarnya, itu semua bermula untuk membangun terowongan ssh dengan port reverse forwarding dan segala sesuatu yang terhubung dengannya. Selain terowongan SSH, beberapa solusi dapat dibedakan:
github.com/klsecservices/rpivotImplementasi lama dari terowongan terbalik dari orang-orang dari Kaspersky Lab. Dengan namanya jelas untuk apa script ini. Diimplementasikan dalam Python 2.7, terowongan berjalan dalam mode teks-jelas (seperti yang bisa dikatakan sekarang - halo ke ILV)
github.com/tonyseek/rsocksImplementasi python lain juga dalam cleartext, tetapi ada lebih banyak opsi. Itu ditulis sebagai modul dan ada API untuk mengintegrasikan solusi ke dalam proyek Anda.
github.com/llkat/rsockstungithub.com/mis-team/rsockstunTautan pertama adalah versi awal implementasi reverse Sox pada Golang (tidak didukung oleh pengembang).
Tautan kedua sudah kami revisi dengan chip tambahan, juga di golang. Dalam versi kami, kami menerapkan SSL, bekerja melalui proxy dengan otorisasi NTLM, otorisasi klien, halaman arahan dengan kata sandi yang salah (atau lebih tepatnya redirect ke halaman arahan), mode multi-utas (mis. Beberapa orang dapat bekerja dengan terowongan pada saat yang sama) , sistem ping klien untuk apakah itu hidup atau tidak.
github.com/jun7th/tsocksImplementasi Reverse Sox dari "teman-teman Cina" kami di python. Di sana untuk yang malas dan "abadi" terletak binar siap pakai, yang dihimpun oleh orang Cina dan siap digunakan. Di sini, hanya dewa Cina yang tahu bahwa ada lebih dari fungsi utama dalam binar ini, jadi gunakan itu dengan risiko dan risiko Anda sendiri.
github.com/securesocketfunneling/ssfCukup proyek C ++ yang menarik untuk mengimplementasikan kaus kaki terbalik dan banyak lagi. Selain terowongan terbalik, dapat melakukan penerusan port, membuat shell perintah, dll.
Msf meterpreterDi sini, seperti yang mereka katakan, tidak ada komentar. Semua peretas yang berpendidikan sangat akrab dengan hal ini dan memahami betapa mudahnya dapat dideteksi oleh peralatan pelindung.
Semua alat di atas bekerja pada teknologi yang serupa: pada mesin di dalam jaringan, diluncurkan modul biner yang dapat dieksekusi yang diluncurkan, yang membangun koneksi ke server eksternal. Server memulai server SOCKS4 / 5, yang menerima koneksi dan menerjemahkannya ke klien.
Kerugian dari semua alat di atas adalah bahwa baik Python atau Golang diperlukan pada mesin klien (apakah Anda sering melihat Python diinstal pada mesin, misalnya, direktur perusahaan atau pekerja kantor?), Atau Anda perlu menyeret binar yang sudah dirakit sebelumnya ke mesin ini (sebenarnya python dan skrip dalam satu botol) dan jalankan binar ini sudah ada di sana. Dan mengunduh exe dengan peluncuran berikutnya juga merupakan tanda tangan untuk antivirus lokal atau HIPS.
Secara umum, kesimpulannya menunjukkan dirinya sendiri - kita membutuhkan solusi pada PowerShell. Sekarang tomat akan terbang ke arah kita - mereka mengatakan PowerShell - semuanya dipukuli, dipantau, diblokir, dll. dll. Bahkan - tidak di mana-mana. Kami menyatakan secara bertanggung jawab. Ngomong-ngomong, ada banyak cara untuk mem-bypass kunci (di sini sekali lagi frase modis tentang halo ke ILV :)), mulai dari penggantian nama bodoh dari powershell.exe -> cmdd.exe dan diakhiri dengan powerdll, dll.
Mulai menciptakan
Sudah jelas bahwa pada awalnya kita akan mencari di Google dan ... kita tidak akan menemukan apa pun tentang topik ini (jika seseorang menemukan - melemparkan tautan dalam komentar). Hanya ada
implementasi Socks5 pada PowerShell, tetapi ini adalah Sox "langsung" yang biasa, yang memiliki sejumlah kelemahannya (kita akan membicarakannya nanti). Anda tentu saja dapat mengubahnya menjadi terbalik dengan gerakan pergelangan tangan, tetapi itu hanya Sox ulir tunggal, yang tidak persis seperti yang kita butuhkan.
Jadi, kami tidak menemukan apa pun yang siap, jadi kami masih harus menciptakan sepeda kami. Sebagai dasar dari sepeda kami, kami mengambil
pengembangan kaus kaki terbalik pada golang, dan kami menerapkan klien untuk itu di PowerShell.
RSocksTunJadi bagaimana cara kerja rsockstun?
Di jantung karya RsocksTun (selanjutnya disebut rs) adalah dua komponen perangkat lunak - Yamux dan server Socks5. Server Socks5 adalah socks5 lokal biasa, ini berjalan pada klien. Dan koneksi multiplexing ke sana (ingat tentang multithreading?) Apakah disediakan menggunakan yamux (
multiplexer lain ). Skema ini memungkinkan Anda untuk menjalankan beberapa server socks5 klien dan mendistribusikan koneksi eksternal kepada mereka, meneruskannya melalui satu koneksi TCP tunggal (hampir seperti dalam meterpreter) dari klien ke server, sehingga mewujudkan mode multi-threaded, yang tanpanya kita tidak dapat sepenuhnya bekerja di internal jaringan.
Inti dari yamux adalah ia memperkenalkan tingkat aliran jaringan tambahan, mewujudkannya sebagai header 12-byte untuk setiap paket. (Di sini kami sengaja menggunakan kata "aliran", bukan aliran, agar tidak membingungkan pembaca dengan program "utas" - konsep ini juga akan kami gunakan dalam artikel ini). Di dalam header yamux berisi nomor aliran, bendera untuk pengaturan / penghentian aliran, jumlah byte yang ditransfer, ukuran jendela transfer.

Selain menginstal / menyelesaikan streaming, yamux mengimplementasikan mekanisme keepalive yang memungkinkan Anda untuk memantau kesehatan saluran komunikasi yang diinstal. Mekanisme pesan keeplive dikonfigurasi saat membuat sesi Yamux. Sebenarnya, dari pengaturan hanya ada dua parameter: aktifkan / nonaktifkan dan frekuensi pengiriman paket dalam hitungan detik. Server yamux dapat mengirim pesan keepalive, sehingga klien yamux dapat. Setelah menerima pesan keepalive, pihak jauh berkewajiban untuk menanggapinya dengan mengirimkan pengidentifikasi pesan yang persis sama (sebenarnya nomor) yang telah diterima. Secara umum, keepalive adalah ping yang sama, hanya untuk yamux.
Seluruh teknik operasi multiplexer secara terperinci: tipe paket, bendera instalasi dan terminasi, mekanisme transfer data dijelaskan dalam
spesifikasi yamux.
Kesimpulan ke bagian pertama
Jadi, pada bagian pertama artikel kami berkenalan dengan beberapa alat untuk mengatur terowongan terbalik, melihat kelebihan dan kekurangannya, mempelajari mekanisme pengoperasian multiplekser Yamux dan menjelaskan persyaratan dasar untuk modul PowerShell yang baru dibuat. Pada bagian selanjutnya, kita akan mengembangkan modul itu sendiri, praktis, dari awal. Untuk dilanjutkan. Jangan beralih :)