Analiza posibilității de blocare a aplicației de control de la distanță a computerului prin rețea, folosind exemplul AnyDesk

Când, într-o zi frumoasă, șeful ridică întrebarea: „De ce unii au acces de la distanță la computerul de lucru, fără a obține permisiuni suplimentare pentru utilizare?”,
apare sarcina de a „închide” o breșă.

Analiza posibilității de blocare a aplicației de control de la distanță a computerului prin rețea, folosind exemplul AnyDesk
Există o mulțime de aplicații de control de la distanță: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control și altele. Dacă „Chrome Remote Desktop” are un manual oficial pentru a lupta împotriva accesului la serviciu, TeamViewer are restricții de licență în funcție de timp sau solicitări din rețea, iar utilizatorii „cu dinții strânși” așa sau altfel „apar” la administratori, atunci preferatul multora pentru utilizare personală — AnyDesk necesită în continuare o atenție specială, mai ales dacă șeful a spus „Nu este permis!”.

Analiza posibilității de blocare a aplicației de control de la distanță a computerului prin rețea, folosind exemplul AnyDesk
Dacă știți ce este blocarea pachetului de rețea pe baza conținutului său și aceasta vă convine, atunci restul materialului
nu este destinat pentru dumneavoastră.

Încercând să abordăm problema din sens contrar, la fel site se menționează ce trebuie să fie permis pentru funcționarea programului, prin urmare a fost blocată înregistrarea DNS *.net.anydesk.com. Dar AnyDesk nu este atât de simplu, blocarea numelui de domeniu nu-l afectează.

Cândva, am rezolvat problema blocării „Anyplace Control” care ajungea la noi cu un software dubios și aceasta a fost rezolvată prin blocarea doar a câtorva adrese IP (m-am asigurat cu antivirusul). Problema cu AnyDesk, după ce am adunat manual mai mult de zece adrese IP, a stimulat să renunț la munca manuală de rutină.

De asemenea, s-a descoperit că în „C:ProgramDataAnyDesk” există o serie de fișiere cu setări etc., iar în fișierul ad_svc.trace se adună evenimente despre conexiuni și eșecuri.

1. Observație

După cum am menționat, blocarea *.anydesk.com nu a avut rezultate în funcționarea programului, s-a decis să se analizeze comportamentul programului în situații stresante. TCPView de la Sysinternals în mână și înainte!

Analiza posibilității de blocare a aplicației de control de la distanță a computerului prin rețea, folosind exemplul AnyDesk

1.1. Se observă că mai multe procese interesante „stau”, iar doar cel care se leagă de un adresă externă ne preocupă. Porturile la care se conectează sunt variate, din ceea ce am văzut, acestea sunt: 80, 443, 6568. 🙂 80 și 443 nu putem bloca cu siguranță.

1.2. După blocarea adresei prin router, un alt adresă poate fi selectată fără probleme.

Analiza posibilității de blocare a aplicației de control de la distanță a computerului prin rețea, folosind exemplul AnyDesk

1.3. Consola este TOT! Determinăm PID-ul și am avut un pic de noroc, deoarece AnyDesk a fost instalat ca serviciu, astfel că PID-ul căutat este unic.
1.4. Determinăm adresa IP a serverului de servicii pe baza PID-ului procesului.

Analiza posibilității de blocare a aplicației de control de la distanță a computerului prin rețea, folosind exemplul AnyDesk

2. Pregătirea

Deoarece programul pentru identificarea adreselor IP probabil va funcționa doar pe PC-ul meu, nu am nicio restricție de comoditate și lene, așa că folosesc C#.

2.1. Toate metodele pentru identificarea adresei IP căutate sunt deja cunoscute, rămâne doar să le implementăm.

string pid1_; // aflăm PID-ul serviciului 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(','); // transformăm răspunsul într-un array
 pid1_ = pid1[1].Replace(""", ""); // luăm al doilea element fără ghilimele
}

În mod similar, găsim serviciul care a stabilit conexiunea, voi prezenta doar linia principală

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

Rezultatul va fi:

Analiza posibilității de blocare a aplicației de control de la distanță a computerului prin rețea, folosind exemplul AnyDesk
Din linie, similar pasului anterior, extragem a treia coloană și eliminăm tot ce este după ":". Ca rezultat, avem adresa IP căutată.

2.2. Blochează adresa IP în Windows. Dacă în Linux avem Blackhole și iptables, metoda de blocare a adresei IP într-o singură linie, fără a folosi firewall-ul, în Windows s-a dovedit a fi neobișnuită,
dar ce instrumente aveam...

route add adresa_IP_găsită mask 255.255.255.255 10.113.113.113 if 1 -p

Parametrul cheie "if 1" trimite ruta către Loopback (pentru a vizualiza interfețele disponibile, se poate executa route print). Și IMPORTANT! Acum programul trebuie să fie rulat cu privilegii de administrator, deoarece modificarea rutei necesită promovarea drepturilor.

2.3. Afișarea și salvarea adreselor IP identificate este o sarcină trivială și nu necesită explicații. Dacă ne gândim, putem procesa și fișierul ad_svc.trace al lui AnyDesk, dar la aceasta nu m-am gândit imediat + este posibil să existe o restricție asupra acestuia.

2.4. Comportamentul ciudat și inegal al programului constă în faptul că la "taskkill" al serviciului în Windows 10, acesta se repornește automat, în Windows 8 se încheie, lăsând doar procesul consolei și fără recompunere, în general este ilogic și inexact.

Ștergerea procesului conectat la server permite „forțarea” reconectării la următoarea adresă. Se realizează în mod similar cu comenzile anterioare, de aceea voi menționa doar:

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

În plus, lansăm programul AnyDesk.

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

2.5. Vom verifica starea AnyDesk o dată pe minut (sau mai des?), și dacă aceasta s-a conectat, adică conexiunea este ESTABLISHED — acest IP va fi blocat, și se va relua totul — vom aștepta să se conecteze, blocăm și așteptăm.

3. Atac

A fost „scris” un cod, pentru vizualizarea procesului s-a decis „+a indica IP-ul găsit și blocat, iar „.— o verificare repetată fără o conexiune de succes din partea AnyDesk.

Analiza posibilității de blocare a aplicației de control de la distanță a computerului prin rețea, folosind exemplul AnyDesk

→ Codul proiectului

Ca rezultat...

Analiza posibilității de blocare a aplicației de control de la distanță a computerului prin rețea, folosind exemplul AnyDesk
Programul a funcționat pe mai multe computere cu diferite versiuni de Windows, cu versiunile AnyDesk 5 și 6. În 500 de iterații au fost colectate aproximativ 80 de adrese. În 2500 — 87 și așa mai departe...

În timp, numărul IP-urilor blocate a ajuns la 100+.

Link către finalul fișierului text cu adresele: unu și doi

Lucrarea a fost finalizată! Pool-ul de adrese IP prin script a fost adăugat în regulile routerului principal și AnyDesk pur și simplu nu poate crea o conexiune externă.

Există un moment ciudat, din logurile inițiale se observă că în transmiterea informației participă adresa boot-01.net.anydesk.com. Desigur, am blocat toate hosturile *.net.anydesk.com printr-o regulă generală, dar ciudățenia nu stă în aceasta. De fiecare dată, la un ping obișnuit de pe computere diferite, acest nume de domeniu oferă un IP diferit. Verificare în Linux:

host boot-01.net.anydesk.com

precum și DNSLookup oferă doar un singur IP, dar acest adresă variază. La analiza conexiunilor, TCPView ne returnează înregistrări PTR ale adreselor IP de tipul relay-*.net.anydesk.com.

Teoretic: deoarece pingul uneori trece la un host necunoscut, neblocat boot-01.net.anydesk.com putem găsi aceste IP-uri și le putem bloca, implementarea acestei funcționalități poate fi realizată cu un script obișnuit sub Linux, acolo nu este necesar să instalați AnyDesk. Analiza a arătat că aceste IP-uri deseori „se suprapuncu cele găsite din lista noastră. Probabil acesta este hostul la care se conectează programul înainte de a începe „să verifice” IP-urile cunoscute. Este posibil să completez articolul cu o a doua parte a căutărilor de hosturi, deși momentan programul în rețea nu stabilește deloc o conexiune externă.

Sper că nu ați observat nimic ilegal în cele de mai sus, iar creatorii AnyDesk vor privi acțiunile mele în mod sportiv.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster