Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računarom preko mreže, na primjeru AnyDesk-a

Kada jednog dana šef postavi pitanje: „Zašto neki ljudi imaju daljinski pristup radnom računaru bez dobijanja dodatnih dozvola za korišćenje?“,
postoji zadatak da se "pokrije" rupa.

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računarom preko mreže, na primjeru AnyDesk-a
Postoji mnogo aplikacija za daljinsko upravljanje preko mreže: 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 servisu, TeamViewer ima licencna ograničenja na vrijeme ili zahtjeve sa mreže i korisnici koji "škrguću zubima" nekako "sijaju" kod admina, tada mnogima miljenik za ličnu upotrebu - AnyDesk ipak zahteva posebnu pažnju, pogotovo ako je šef rekao "Ne!".

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računarom preko mreže, na primjeru AnyDesk-a
Ako znate šta je blokiranje mrežnog paketa po njegovom sadržaju i odgovara vam, onda ostatak materijala
nije predviđeno za tebe.

Pokušavam ići od suprotnosti, zapravo site kaže šta treba dozvoliti da program radi, odnosno blokiran je DNS zapis *.net.anydesk.com. Ali AnyDesk nije jednostavan, nije ga briga za blokiranje naziva domene.

Jednom sam riješio problem blokiranja "Anyplace Control" koji nam je došao sa nekim sumnjivim softverom, a riješen je blokiranjem samo nekoliko IP adresa (osigurao sam antivirus). Problem sa AnyDeskom, nakon što sam ručno prikupio više od desetak IP adresa, provocirao maknite se od rutinskog ručnog rada.

Takođe je utvrđeno da u "C: ProgramDataAnyDesk" postoji niz fajlova sa postavkama itd., a u datoteci ad_svc.trace prikupljaju se događaji o vezama i kvarovima.

1. Opservacija

Kao što je već spomenuto, blokiranje *.anydesk.com nije dalo nikakve rezultate u programu, odlučeno je da se analizira programsko ponašanje u stresnim situacijama. TCPView iz Sysinternals u ruke i napred!

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računarom preko mreže, na primjeru AnyDesk-a

1.1. Vidi se da „visi“ nekoliko procesa koji nas zanimaju, a interesantan nam je samo onaj koji sa adresom komunicira spolja. Portovi na koje se povezuje su premješteni, koliko sam vidio: 80, 443, 6568. 🙂 80 i 443 definitivno ne možemo blokirati.

1.2. Nakon blokiranja adrese putem rutera, tiho se bira druga adresa.

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računarom preko mreže, na primjeru AnyDesk-a

1.3. Naša konzola je SVE! Određujemo PID i onda sam imao malo sreće da je AnyDesk instalirao servis, odnosno PID koji sam tražio je jedini.
1.4. Određujemo IP adresu servisnog servera pomoću PID-a procesa.

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računarom preko mreže, na primjeru AnyDesk-a

2. Priprema

Pošto će program za otkrivanje IP adresa vjerovatno raditi samo na mom računaru, nemam ograničenja u pogledu pogodnosti i lijenosti, pa C#.

2.1. Sve metode za identifikaciju željene IP adrese su već poznate, ostaje da se implementira.

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 servis koji je uspostavio vezu, dat ću samo glavnu liniju

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

čiji će rezultat biti:

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računarom preko mreže, na primjeru AnyDesk-a
Iz linije, slično kao u prethodnom koraku, izdvajamo 3. stupac i uklanjamo sve iza ":". Kao rezultat, imamo željenu IP adresu.

2.2. IP blokiranje u Windowsu. Ako Linux ima Blackhole i iptables, tada se metoda blokiranja IP adrese u jednom redu, bez korištenja firewall-a, pokazala neobičnom u Windowsu,
Ali koji su alati bili...

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

Ključni parametar "ako 1" pošalji rutu na Loopback (možete prikazati dostupna sučelja pokretanjem route print ). I VAŽNO! Sada je potrebno pokrenuti program sa administratorskim pravimajer promjena rute zahtijeva nadmorsku visinu.

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

2.4. Čudno nejednako ponašanje programa je da kada se servisni proces „završi zadatak“ u Windowsu 10, on se automatski ponovo pokreće, u Windowsu 8 završava, ostavljajući samo proces konzole i bez ponovnog povezivanja, općenito je nelogično i netačno.

Brisanje procesa koji se povezao sa serverom omogućava vam da "prisilno" ponovno povezivanje na sljedeću adresu. Implementirano je slično kao i prethodne naredbe, pa dajem samo:

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

Osim toga, pokrenite program AnyDesk.

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

2.5. Status AnyDeska ćemo provjeravati jednom u minuti (ili češće?), a da li je povezan, tj. USPOSTAVLJENA veza - blokirajte ovaj IP, i opet sve iznova - sačekajte dok se ne poveže, blokirajte i sačekajte.

3. Napad

Kod je "nacrtan", odlučeno je da se vizualizira proces "+" naznačite pronađenu i blokiranu IP adresu, i "." - ponovljena provjera bez uspješne veze sa AnyDeska.

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računarom preko mreže, na primjeru AnyDesk-a

Šifra projekta

Kao rezultat…

Analiza mogućnosti blokiranja aplikacije za daljinsko upravljanje računarom preko mreže, na primjeru AnyDesk-a
Program je radio na nekoliko računara sa različitim Windows OS-om, sa AnyDesk verzijama 5 i 6. Oko 500 adresa je prikupljeno u 80 iteracija. Za 2500 - 87 i tako dalje...

Vremenom je broj blokiranih IP adresa dostigao 100+.

Link do finala tekstualnu datoteku sa adresama: puta и два

Gotovo je! Skup IP adresa se dodaje pravilima glavnog rutera putem skripte, a AnyDesk jednostavno ne može stvoriti eksternu vezu.

Čudan je trenutak, prema prvim logovima, jasno je da je adresa uključena u prijenos informacija boot-01.net.anydesk.com. Naravno, po pravilu smo blokirali sve *.net.anydesk.com hostove, ali to nije neobično. Svaki put kada normalan ping sa različitih računara ovaj naziv domene daje drugačiji IP. Provjera u Linuxu:

host boot-01.net.anydesk.com

kao DNSLookup, oni daju samo jednu IP adresu, ali ova adresa je promjenjiva. Kada analiziramo TCPView konekciju, vraćamo PTR zapise IP adresa kao što je relay-*.net.anydesk.com.

Teoretski: pošto ping ponekad ide nepoznatom deblokiranom hostu boot-01.net.anydesk.com možemo pronaći ove ip i blokirati, učinite ovu implementaciju redovnom skriptom pod Linux OS-om, ovdje ne morate instalirati AnyDesk. Analiza je pokazala da su ove IP adrese često "presecati" sa onima koji su pronađeni sa naše liste. Možda je ovo samo ovaj host, na koji se program povezuje pre nego što počne da "razređuje" poznate IP adrese. Verovatno ću kasnije dopuniti članak sa 2. delom pretraživanja hostova, iako trenutno program sam po sebi ne instalira vanjski spoj općenito.

Nadam se da u navedenom niste vidjeli ništa protivzakonito, a kreatori AnyDeska će se prema mojim postupcima odnositi na sportski način.

izvor: www.habr.com

Dodajte komentar