Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računalom preko mreže na primjeru AnyDeska

Kad jednog dana šef postavi pitanje: "Zašto neki ljudi imaju daljinski pristup radnom računalu, a da pritom nisu dobili dodatna dopuštenja za korištenje?"
Zadatak se pojavljuje da se "zatvori" rupa u zakonu.

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računalom preko mreže na primjeru AnyDeska
Postoji mnogo aplikacija za daljinsko upravljanje mrežom: Chrome udaljena radna površina, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, itd. Ako Chrome udaljena radna površina ima službeni priručnik za borbu protiv pristupa usluzi, TeamViewer ima ograničenja licenciranja u vremenu ili zahtjevima s mreže i korisnici “škripe zubima” na ovaj ili onaj način “sijaju” kod admina, zatim mnogima omiljeni za osobnu upotrebu - AnyDesk i dalje zahtijeva posebnu pažnju, pogotovo ako je šef rekao “Ne!”

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računalom preko mreže na primjeru AnyDeska
Ako znate što je blokiranje mrežnog paketa po sadržaju i zadovoljni ste njime, onda ostatak materijala
nenamjerno za tebe.

Pokušavajući ići od suprotnog, zapravo Online piše što se mora dopustiti da program radi, prema tome DNS zapis je blokiran *.net.anydesk.com. Ali AnyDesk nije jednostavan; nije ga briga za blokiranje naziva domene.

Jednom davno sam riješio problem blokade “Anyplace Controla” koji nam je došao s nekim sumnjivim softverom, a rješavao se blokiranjem samo nekoliko IP-ova (backupovao sam antivirus). Problem s AnyDeskom, nakon što sam ručno prikupio više od desetak IP adresa, potaknuo me maknite se od rutinskog fizičkog rada.

Također je otkriveno da u “C:ProgramDataAnyDesk” postoji niz datoteka s postavkama itd., a u datoteci ad_svc.trag Prikupljaju se događaji o vezama i kvarovima.

1. Promatranje

Kao što je već spomenuto, blokiranje *.anydesk.com nije dalo nikakve rezultate u radu programa, odlučeno je analizirati programirati ponašanje u stresnim situacijama. TCPView iz Sysinternalsa u vaše ruke i krenite!

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računalom preko mreže na primjeru AnyDeska

1.1. Vidi se da nekoliko nama interesantnih procesa “visi”, a interesantan nam je samo onaj koji komunicira s adresom izvana. Odabrani su portovi na koje se povezuje, prema onome što sam vidio: 80, 443, 6568. 🙂 Definitivno ne možemo blokirati 80 i 443.

1.2. Nakon blokiranja adrese putem usmjerivača, tiho se odabire druga adresa.

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računalom preko mreže na primjeru AnyDeska

1.3. Konzola je naše SVE! Određujemo PID i onda sam imao malu sreću da je servis instalirao AnyDesk, pa je PID koji smo tražili bio jedini.
1.4. IP adresu poslužitelja usluge određujemo iz PID-a procesa.

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računalom preko mreže na primjeru AnyDeska

2. Priprema

Budući da će program za identifikaciju IP adresa vjerojatno raditi samo na mom računalu, nemam ograničenja u pogledu praktičnosti i lijenosti, pa C#.

2.1. Sve metode za identifikaciju potrebne IP adrese su već poznate, ostaje ih implementirati.

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й элемент без кавычек
}

Slično, nalazimo uslugu koja je uspostavila vezu, dat ću samo glavnu liniju

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

Rezultat će biti:

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računalom preko mreže na primjeru AnyDeska
Iz retka, slično kao u prethodnom koraku, izdvojite 3. stupac i uklonite sve iza “:”. Kao rezultat toga, imamo željeni IP.

2.2. IP blokiranje u sustavu Windows. Ako Linux ima Blackhole i iptables, tada se metoda blokiranja IP adrese u jednom retku, bez upotrebe vatrozida, u Windowsima pokazala neobičnom,
ali kakvih je alata bilo...

route add наш_найденный_IP_адрес mask 255.255.255.255 10.113.113.113 if 1 -p

Ključni parametar "ako 1" pošaljite rutu u Loopback (Možete prikazati dostupna sučelja pokretanjem ispisa rute). I VAŽNO! Sada je potrebno pokrenuti program s administratorskim pravima, jer promjena rute zahtijeva visinu.

2.3. Prikaz i spremanje identificiranih IP adresa je trivijalan zadatak i ne zahtijeva objašnjenje. Ako razmislite o tome, možete obraditi datoteku ad_svc.trag Sam AnyDesk, ali nisam o njemu odmah razmišljao + možda postoji ograničenje za njega.

2.4. Čudno neujednačeno ponašanje programa je da se prilikom "ukidanja zadataka" servisnog procesa u sustavu Windows 10 automatski ponovno pokreće, u sustavu Windows 8 završava, ostavljajući samo proces konzole i bez ponovnog povezivanja, općenito je nelogično i to je netočno.

Uklanjanje procesa koji se povezao s poslužiteljem omogućuje vam "prisilno" ponovno povezivanje na sljedeću adresu. Implementirana je na isti način kao i prethodne naredbe, pa ću je samo dati:

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

Dodatno, pokrenite program AnyDesk.

 //запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){ 
Process p1 = Process.Start(path_pro);}

2.5. Provjeravat ćemo status AnyDeska jednom u minuti (ili češće?), te je li povezan, tj. veza USPOSTAVLJENA - blokiraj ovaj IP, pa opet sve ispočetka - čekaj da se spoji, blokiraj i čekaj.

3. Napadaj

Kod je "skiciran" i odlučeno je vizualizirati proces "+" označavaju pronađenu i blokiranu IP adresu i "."—ponovite provjeru bez uspješne veze susjeda s AnyDeska.

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računalom preko mreže na primjeru AnyDeska

Kod projekta

Kao rezultat…

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računalom preko mreže na primjeru AnyDeska
Program je radio na nekoliko računala s različitim Windows OS-om, s verzijama AnyDesk 5 i 6. Preko 500 iteracija prikupljeno je oko 80 adresa. Za 2500 - 87 i tako dalje...

S vremenom je broj blokiranih IP adresa dosegnuo 100+.

Link na finale tekstualna datoteka sa adresama: vrijeme и два

Učinjeno je! Skup IP adresa dodan je pravilima glavnog usmjerivača kroz skriptu i AnyDesk jednostavno ne može stvoriti vanjsku vezu.

Postoji jedna čudna točka, iz početnih zapisa je jasno da je adresa uključena u prijenos informacija boot-01.net.anydesk.com. Naravno, blokirali smo sve *.net.anydesk.com hostove kao opće pravilo, ali to nije čudno. Svaki put s normalnim pingom s različitih računala, ovaj naziv domene daje drugačiji IP. Provjera na Linuxu:

host boot-01.net.anydesk.com

kao DNSLookup daju samo jednu IP adresu, ali ta je adresa varijabilna. Prilikom analize TCPView veze vraćaju nam se PTR zapisi IP adresa tipa relay-*.net.anydesk.com.

Teoretski: budući da ping ponekad ide na nepoznati deblokirani host boot-01.net.anydesk.com možemo pronaći te ip-ove i blokirati ih, učiniti ovu implementaciju redovnom skriptom pod Linux OS-om, ovdje nema potrebe za instaliranjem AnyDeska. Analiza je pokazala da te IP adrese često "presijecati"s onima koji su pronađeni s našeg popisa. Možda je upravo ovaj host na koji se program povezuje prije nego što počne "razvrstavati" poznate IP adrese. Vjerojatno ću kasnije dopuniti članak s 2. dijelom pretraživanja hostova, iako trenutno sam program općenito se ne instalira unutar mrežnog vanjskog spajanja.

Nadam se da u gore navedenom niste vidjeli ništa protuzakonito, a kreatori AnyDeska će se prema mojim postupcima odnositi sportski.

Izvor: www.habr.com

Dodajte komentar