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

Există o mulțime de aplicații pentru controlul de la distanță prin rețea: desktop la distanță Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control etc. Dacă desktopul la distanță Chrome are un manual oficial pentru combaterea accesului la serviciu, TeamViewer are restricții de licențiere la timp sau solicitări din rețea și utilizatorii „scrâșnesc din dinți” într-un fel sau altul „strălucesc” cu administratorii, apoi preferatul multora pentru uz personal - AnyDesk încă necesită o atenție specială, mai ales dacă șeful a spus „Nu!”

Dacă știi ce înseamnă blocarea unui pachet de rețea prin conținutul său și ești mulțumit de el, atunci restul materialului
neintenționat Pentru dumneavoastră.
Încerc să treci de la opus, de fapt spune ce trebuie permis pentru ca programul să funcționeze; în consecință, înregistrarea DNS a fost blocată *.net.anydesk.com. Dar AnyDesk nu este simplu; nu-i pasă de blocarea unui nume de domeniu.
Cândva, am rezolvat problema blocării „Anyplace Control”, care ne-a venit cu niște software dubios și s-a rezolvat prin blocarea doar a câtorva IP-uri (am făcut backup pentru antivirus). Problema cu AnyDesk, după ce am colectat manual mai mult de o duzină de adrese IP, m-a îndemnat scăpați de 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șier ad_svc.trace Sunt colectate evenimente despre conexiuni și defecțiuni.
1. Observare
După cum sa menționat deja, blocarea *.anydesk.com nu a dat niciun rezultat în funcționarea programului, s-a decis să se analizeze comportamentul programului în situații stresante. TCPView de la Sysinternals în mâinile tale și du-te!

1.1. Se poate observa că mai multe procese care ne interesează sunt „atârnate”, și ne interesează doar cel care comunică cu adresa din exterior. Sunt selectate porturile la care se conectează, din câte am văzut: 80, 443, 6568. 🙂 Cu siguranță nu putem bloca 80 și 443.
1.2. După blocarea adresei prin router, o altă adresă este selectată în liniște.

1.3. Consola este TOTUL nostru! Determinăm PID-ul și apoi am fost puțin norocos că AnyDesk a fost instalat de serviciu, așa că PID-ul pe care îl căutam a fost singurul.
1.4. Determinăm adresa IP a serverului de servicii din PID-ul procesului.

2. Pregătire
Deoarece programul de identificare a adreselor IP va funcționa probabil doar pe computerul meu, nu am restricții cu privire la comoditate și lene, deci C#.
2.1. Toate metodele de identificare a adresei IP necesare sunt deja cunoscute, rămâne de implementat.
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й элемент без кавычек
}La fel, găsim serviciul care a stabilit legătura, voi da doar linia principală
p.StartInfo.Arguments = "/c " netstat -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED""";Rezultatul căruia va fi:
![]()
Din rând, în mod similar cu pasul anterior, extrageți a 3-a coloană și eliminați totul după „:”. Drept urmare, avem IP-ul dorit.
2.2. Blocarea IP-urilor în Windows. Dacă în Linux Dacă aveți Blackhole și iptables, atunci există o metodă de blocare a adreselor IP pe o singură linie, fără a utiliza un firewall, în Windows s-a dovedit a fi neobișnuit,
dar ce fel de instrumente erau acolo...
route add наш_найденный_IP_адрес mask 255.255.255.255 10.113.113.113 if 1 -pParametru cheie "dacă 1" trimite ruta la Loopback (Puteți afișa interfețele disponibile rulând ruta print). ȘI IMPORTANT! Acum programul trebuie lansat cu drepturi de administrator, deoarece schimbarea traseului necesită cotă.
2.3. Afișarea și salvarea adreselor IP identificate este o sarcină banală și nu necesită explicații. Dacă vă gândiți bine, puteți procesa fișierul ad_svc.trace AnyDesk în sine, dar nu m-am gândit imediat la asta + poate că există o limitare.
2.4. Comportamentul ciudat și neuniform al programului este că atunci când „opriți” procesul de service în Windows 10 repornește automat, în Windows 8 se termină, lăsând doar procesul consolei și fără reconectare, în general este ilogic și acest lucru este inexact.
Eliminarea unui proces care s-a conectat la server vă permite să „forțați” reconectarea la următoarea adresă. Este implementat în același mod ca și comenzile anterioare, așa că îi voi da doar:
p.StartInfo.Arguments = "/c taskkill /PID " + pid1_ + " /F";În plus, lansați 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?), iar dacă este conectat, de ex. conexiune STABILITĂ - blocați acest IP și din nou din nou - așteptați până se conectează, blocați și așteptați.
3. Atacul
Codul a fost „schițat” și s-a decis să se vizualizeze procesul „+" indica IP-ul găsit și blocat și ".„—repetați verificarea fără o conexiune reușită a vecinului de la AnyDesk.

→
Ca urmare…

Programul a funcționat pe mai multe computere cu diferite Windows Sistem de operare, cu versiunile 5 și 6 de AnyDesk. După 500 de iterații, au fost colectate aproximativ 80 de adrese. După 2500, 87 și așa mai departe...
De-a lungul timpului, numărul de IP-uri blocate a ajuns la peste 100.
Link către finală fisier text cu adrese: и
E gata! Grupul de adrese IP a fost adăugat la regulile routerului principal prin script și AnyDesk pur și simplu nu poate crea o conexiune externă.
Există un punct ciudat, din jurnalele inițiale reiese clar că adresa este implicată în transferul de informații boot-01.net.anydesk.comCa regulă generală, am blocat toate gazdele *.net.anydesk.com, dar nu asta e ciudat. De fiecare dată când trimitem ping acestui nume de domeniu de pe computere diferite, acesta returnează o adresă IP diferită. Înregistrare Linux:
host boot-01.net.anydesk.com
ca DNSLookup, ei dau o singură adresă IP, dar această adresă este variabilă. Când analizăm o conexiune TCPView, ni se returnează înregistrări PTR ale adreselor IP de acest tip releu-*.net.anydesk.com.
Teoretic: deoarece ping-ul ajunge uneori la o gazdă necunoscută neblocata boot-01.net.anydesk.com Putem găsi aceste adrese IP și le putem bloca. Acest lucru poate fi implementat folosind un script obișnuit în sistemul de operare. Linux, nu este nevoie să instalați AnyDesk aici. Analizele au arătat că aceste adrese IP sunt adesease intersectează„cu cele găsite din lista noastră. Poate că tocmai această gazdă la care se conectează programul înainte de a începe să „sorteze” IP-urile cunoscute. Probabil că mai târziu voi completa articolul cu a doua parte a căutărilor de gazdă, deși în momentul de față programul în sine nu se instalează în rețeaua exterioară unire în general.
Sper că nu ați văzut nimic ilegal în cele de mai sus, iar creatorii AnyDesk vor trata acțiunile mele într-un mod sportiv.
Sursa: www.habr.com
