Analisis kemungkinan menyekat aplikasi untuk kawalan komputer jauh melalui rangkaian, menggunakan contoh AnyDesk

Apabila suatu hari bos menimbulkan soalan: "Mengapa sesetengah orang mempunyai akses jauh ke komputer kerja, tanpa mendapatkan kebenaran tambahan untuk digunakan?"
Tugas timbul untuk "menutup" kelemahan.

Analisis kemungkinan menyekat aplikasi untuk kawalan komputer jauh melalui rangkaian, menggunakan contoh AnyDesk
Terdapat banyak aplikasi untuk kawalan jauh melalui rangkaian: Desktop jauh Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, dsb. Jika desktop jauh Chrome mempunyai manual rasmi untuk memerangi akses kepada perkhidmatan, TeamViewer mempunyai sekatan pelesenan pada masa atau permintaan daripada rangkaian dan pengguna "mengetuk gigi" dalam satu atau lain cara "bersinar" dengan pentadbir, maka kegemaran ramai untuk kegunaan peribadi - AnyDesk masih memerlukan perhatian khusus, terutamanya jika bos berkata "Tidak!"

Analisis kemungkinan menyekat aplikasi untuk kawalan komputer jauh melalui rangkaian, menggunakan contoh AnyDesk
Jika anda tahu apa yang menyekat paket rangkaian dengan kandungannya dan anda berpuas hati dengannya, maka bahan yang lain
tidak diniatkan untuk awak.

Cuba untuk pergi dari sebaliknya, sebenarnya Online ia mengatakan apa yang mesti dibenarkan untuk program berfungsi; oleh itu, rekod DNS telah disekat *.net.anydesk.com. Tetapi AnyDesk tidak mudah; ia tidak peduli tentang menyekat nama domain.

Pada suatu masa dahulu, saya menyelesaikan masalah menyekat "Anyplace Control", yang datang kepada kami dengan beberapa perisian yang meragukan, dan ia diselesaikan dengan menyekat hanya beberapa IP (saya menyandarkan antivirus). Masalah dengan AnyDesk, selepas saya mengumpul lebih daripada sedozen alamat IP secara manual, tegur saya lari dari kerja manual rutin.

Ia juga mendapati bahawa dalam "C:ProgramDataAnyDesk" terdapat beberapa fail dengan tetapan, dsb., dan dalam fail ad_svc.trace Peristiwa tentang sambungan dan kegagalan dikumpulkan.

1. Pemerhatian

Seperti yang telah disebutkan, menyekat *.anydesk.com tidak memberikan sebarang hasil dalam pengendalian program, ia telah memutuskan untuk menganalisis tingkah laku program dalam situasi tertekan. TCPView daripada Sysinternals di tangan anda dan pergi!

Analisis kemungkinan menyekat aplikasi untuk kawalan komputer jauh melalui rangkaian, menggunakan contoh AnyDesk

1.1. Dapat dilihat bahawa beberapa proses yang menarik minat kami "tergantung", dan hanya proses yang berkomunikasi dengan alamat dari luar yang menarik minat kami. Port yang disambungkan dipilih, daripada apa yang saya lihat: 80, 443, 6568. πŸ™‚ Kami pasti tidak boleh menyekat 80 dan 443.

1.2. Selepas menyekat alamat melalui penghala, alamat lain dipilih secara senyap.

Analisis kemungkinan menyekat aplikasi untuk kawalan komputer jauh melalui rangkaian, menggunakan contoh AnyDesk

1.3. Konsol adalah SEGALANYA! Kami menentukan PID dan kemudian saya agak bernasib baik kerana AnyDesk telah dipasang oleh perkhidmatan, jadi PID yang kami cari adalah satu-satunya.
1.4. Kami menentukan alamat IP pelayan perkhidmatan daripada proses PID.

Analisis kemungkinan menyekat aplikasi untuk kawalan komputer jauh melalui rangkaian, menggunakan contoh AnyDesk

2. Persediaan

Memandangkan program untuk mengenal pasti alamat IP mungkin hanya akan berfungsi pada PC saya, saya tidak mempunyai sekatan ke atas kemudahan dan kemalasan, jadi C#.

2.1. Semua kaedah untuk mengenal pasti alamat IP yang diperlukan sudah diketahui, ia masih perlu dilaksanakan.

string pid1_;//ΡƒΠ·Π½Π°Π΅ΠΌ PID сСрвиса AnyDesk
using (var p = new Process()) 
{p.StartInfo.FileName = "cmd.exe";
 p.StartInfo.Arguments = " /c "tasklist.exe /fi "imagename eq AnyDesk.exe" /NH /FO CsV | findstr "Services""";
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.CreateNoWindow = true;
 p.StartInfo.StandardOutputEncoding = Encoding.GetEncoding("CP866");
 p.Start();
 string output = p.StandardOutput.ReadToEnd();
 string[] pid1 = output.Split(',');//ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ ΠΎΡ‚Π²Π΅Ρ‚ Π² массив
 pid1_ = pid1[1].Replace(""", "");//Π±Π΅Ρ€Π΅ΠΌ 2ΠΉ элСмСнт Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ
}

Begitu juga, kami dapati perkhidmatan yang mewujudkan sambungan, saya hanya akan memberikan talian utama

p.StartInfo.Arguments = "/c " netstat  -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED""";

Hasilnya akan menjadi:

Analisis kemungkinan menyekat aplikasi untuk kawalan komputer jauh melalui rangkaian, menggunakan contoh AnyDesk
Dari baris, sama seperti langkah sebelumnya, ekstrak lajur ke-3 dan keluarkan semuanya selepas ":". Akibatnya, kami mempunyai IP yang kami kehendaki.

2.2. Penyekatan IP dalam Windows. Jika Linux mempunyai Blackhole dan iptables, maka kaedah menyekat alamat IP dalam satu baris, tanpa menggunakan firewall, dalam Windows ternyata luar biasa,
tapi alat apa yang ada...

route add наш_Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ_IP_адрСс mask 255.255.255.255 10.113.113.113 if 1 -p

Parameter utama "sekiranya 1" hantar laluan ke Loopback (Anda boleh memaparkan antara muka yang tersedia dengan menjalankan cetakan laluan). DAN PENTING! Sekarang program perlu dilancarkan dengan hak pentadbir, kerana menukar laluan memerlukan ketinggian.

2.3. Memaparkan dan menyimpan alamat IP yang dikenal pasti adalah tugas remeh dan tidak memerlukan penjelasan. Jika anda memikirkannya, anda boleh memproses fail tersebut ad_svc.trace AnyDesk sendiri, tetapi saya tidak memikirkannya serta-merta + mungkin terdapat had padanya.

2.4. Tingkah laku program yang tidak sekata yang aneh ialah apabila "membunuh tugas" proses perkhidmatan dalam Windows 10, ia dimulakan semula secara automatik, dalam Windows 8 ia berakhir, hanya meninggalkan proses konsol dan tanpa menyambung semula, secara amnya ia tidak logik dan ini tidak tepat.

Mengalih keluar proses yang telah disambungkan ke pelayan membolehkan anda "memaksa" penyambungan semula ke alamat seterusnya. Ia dilaksanakan dengan cara yang sama seperti arahan sebelumnya, jadi saya hanya akan memberikannya:

p.StartInfo.Arguments = "/c taskkill /PID " + pid1_ + " /F";

Selain itu, lancarkan program AnyDesk.

 //запускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ которая располоТСна ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ path_pro
if (File.Exists(path_pro)){ 
Process p1 = Process.Start(path_pro);}

2.5. Kami akan menyemak status AnyDesk sekali seminit (atau lebih kerap?), dan jika ia disambungkan, i.e. sambungan DITUBUHKAN - sekat IP ini, dan sekali lagi sekali lagi - tunggu sehingga ia bersambung, sekat dan tunggu.

3. Serangan

Kod itu "dilakar" dan diputuskan untuk menggambarkan proses "+" nyatakan IP yang ditemui dan disekat, dan "."β€”ulang semakan tanpa sambungan jiran yang berjaya daripada AnyDesk.

Analisis kemungkinan menyekat aplikasi untuk kawalan komputer jauh melalui rangkaian, menggunakan contoh AnyDesk

β†’ Kod projek

Akibatnya…

Analisis kemungkinan menyekat aplikasi untuk kawalan komputer jauh melalui rangkaian, menggunakan contoh AnyDesk
Program ini berfungsi pada beberapa komputer dengan OS Windows yang berbeza, dengan versi AnyDesk 5 dan 6. Lebih 500 lelaran, kira-kira 80 alamat telah dikumpulkan. Untuk 2500 - 87 dan seterusnya...

Dari masa ke masa, bilangan IP yang disekat mencecah 100+.

Pautan ke akhir fail teks dengan alamat: masa ΠΈ Π΄Π²Π°

Ia dilakukan! Kumpulan alamat IP telah ditambahkan pada peraturan penghala utama melalui skrip dan AnyDesk tidak boleh membuat sambungan luaran.

Terdapat satu perkara yang aneh, dari log awal jelas bahawa alamat terlibat dalam pemindahan maklumat boot-01.net.anydesk.com. Sudah tentu, kami menyekat semua hos *.net.anydesk.com sebagai peraturan umum, tetapi itu bukan perkara yang pelik. Setiap kali dengan ping biasa dari komputer yang berbeza, nama domain ini memberikan IP yang berbeza. Menyemak pada Linux:

host boot-01.net.anydesk.com

seperti DNSLookup mereka hanya memberikan satu alamat IP, tetapi alamat ini berubah-ubah. Apabila menganalisis sambungan TCPView, kami dikembalikan rekod PTR alamat IP jenis geganti-*.net.anydesk.com.

Secara teorinya: kerana ping kadangkala pergi ke hos yang tidak disekat yang tidak diketahui boot-01.net.anydesk.com kita boleh mencari ips ini dan menyekatnya, jadikan pelaksanaan ini skrip biasa di bawah OS Linux, di sini tidak perlu memasang AnyDesk. Analisis menunjukkan bahawa IP ini sering "bersilang"dengan yang ditemui daripada senarai kami. Mungkin hanya hos ini yang disambungkan oleh program sebelum ia mula "menyisih" IP yang diketahui. Saya mungkin akan menambah artikel itu kemudian dengan bahagian kedua carian hos, walaupun pada masa ini program itu sendiri tidak memasang dalam rangkaian luar gabungan secara umum.

Saya harap anda tidak melihat apa-apa yang menyalahi undang-undang dalam perkara di atas, dan pencipta AnyDesk akan melayan tindakan saya secara bersukan.

Sumber: www.habr.com

Tambah komen