Kada jednog lijepog dana šef postavi pitanje: „Zašto neki imaju daljinski pristup radnom računalu bez dobivanja dodatnih dozvola za korištenje?“,
javlja se zadatak „zaključati“ rupu.

Aplikacija za daljinsko upravljanje putem mreže ima dovoljno: Chrome remote desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control itd. Ako „Chrome remote desktop“ ima službeni priručnik za suočavanje s prisutnošću pristupa usluzi, TeamViewer ima licencne ograničenja prema vremenu ili zahtjevima s mreže, a korisnici „grizući zube“ se na neki način „vide“ kod administratora, tada omiljeni izbor mnogih za osobnu upotrebu — AnyDesk i dalje zahtijeva posebnu pozornost, osobito ako je šef rekao „Ne smije!“

Ako znate što je blokiranje mrežnog paketa prema njegovom sadržaju i to vam odgovara, onda ostali materijal
nije namijenjen vama.
Pokušavajući prići s druge strane, na samom se govori o tome što bi trebalo biti dopušteno za rad programa, sukladno tome je blokiran DNS zapis *.net.anydesk.com. No AnyDesk nije jednostavan, blokiranje domena mu nije prepreka.
Nekada sam imao riješen zadatak blokiranja „Anyplace Control“ koji nam je dolazio s nekim sumnjivim softverom i riješen je blokadom samo nekoliko IP adresa (osiguravao sam antivirus). Međutim zadatak s AnyDeskom, nakon što sam ručno prikupio više od desetak IP adresa, potaknuo da se oslobodim rutinskog ručnog rada.
Također je otkriveno da u „C:ProgramDataAnyDesk“ postoji niz datoteka s postavkama itd., a u datoteku ad_svc.trace sakupljaju se događaji o povezivanju i neuspjesima.
1. Praćenje
Kao što je već rečeno, blokiranje *.anydesk.com nije dalo nikakve rezultate u radu programa, odlučeno je analizirati ponašanje programa u stresnim situacijama.. TCPView od Sysinternals u ruke i naprijed!

1.1. Vidljivo je da „visi“ nekoliko zanimljivih procesa, a samo onaj koji se povezuje s adresom izvana nas zanima. Portovi na koje se povezuje se pretražuju, iz onoga što sam vidio to su: 80, 443, 6568. 🙂 80 i 443 ne smijemo blokirati.
1.2. Nakon blokade adrese preko usmjerača, mirno se bira druga adresa.

1.3. Konzola je sve! Utvrđujemo PID i tu mi je malo sreće pristupilo, jer je AnyDesk instaliran servisom, stoga je traženi PID jedini.
1.4. Utvrđujemo IP adresu servera po PID-u procesa.

2. Priprema
Budući da će program za otkrivanje IP adresa vjerojatno raditi samo na mom računalu, nemam nikakvih ograničenja u pogledu udobnosti i lijenosti, pa koristim C#.
2.1. Svi metodi za otkrivanje tražene IP adrese su već poznati, ostaje ih implementirati.
string pid1_; // saznajemo PID servisa 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(','); // prevodimo odgovor u niz
pid1_ = pid1[1].Replace(""", ""); // uzimamo 2. element bez navodnika
}Slično nalazimo servis koji je uspostavio vezu, navest ću samo osnovni redak.
p.StartInfo.Arguments = " /c " netstat -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED"";Rezultat će biti:
![]()
Iz retka, slično prethodnom koraku, izvlačimo 3. stupac i uklanjamo sve što je nakon ":". Kao rezultat imamo naš traženi IP.
2.2. Blokiranje IP-a u Windows-u. Ako u Linuxu postoje Blackhole i iptables, metoda blokiranja IP adrese u jednom retku, bez korištenja vatrozida, u Windows-u se pokazala neobičnom.
No, kakvi su alati bili…
route add naš_najđen_IP_adres mask 255.255.255.255 10.113.113.113 if 1 -pKljučni parametar "if 1" šalje rutu na Loopback (Možete prikazati dostupne sučelje pomoću komande route print). I VAŽNO! Sada program treba pokretati s pravima administratora, jer promjena rute zahtijeva podizanje privilegija.
2.3. Prikazivanje i spremanje otkrivenih IP adresa je trivijalna zadaća i ne zahtijeva objašnjenja. Ako razmislite, može se obraditi i datoteka ad_svc.trace samog AnyDesk-a, ali na to nisam odmah pomislio + možda postoje ograničenja.
2.4. Čudno neujednačeno ponašanje programa leži u tome što kada se izvrši "taskkill" procesa servisa u Windows 10 on se automatski restartuje, dok u Windows 8 završava, ostavljajući samo proces konzole i bez ponovnog povezivanja, u svakom slučaju nelogično i netočno.
Uklanjanje procesa povezanog na poslužitelj omogućava "forsiranje" ponovne veze na sljedeću adresu. Implementirano je slično prethodnim naredbama, zato navodim samo:
p.StartInfo.Arguments = "\/c taskkill \/PID " + pid1_ + " \/F";Dodatno pokrećemo program AnyDesk.
//запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){
Process p1 = Process.Start(path_pro);}2.5. Provjeravat ćemo stanje AnyDesk-a jednom u minuti (ili češće?), i ako se poveže, tj. veza je ESTABLISHED — taj IP blokiramo, i opet sve iznova — čekamo dok se poveže, blokiramo i čekamo.
3. Napad
Kod je "nabacivan" za vizualizaciju procesa, odlučeno je "+" navesti pronađeni i blokirani IP, a "." — ponovnu provjeru bez uspješne veze sa strane AnyDesk-a.

→
Kao rezultat…

Program je radio na nekoliko računala s različitim verzijama Windows operativnog sustava, s verzijama AnyDesk 5 i 6. U 500 iteracija prikupljeno je oko 80 adresa. U 2500 — 87 i tako dalje…
S vremenom je broj blokiranih IP adresa porastao na više od 100.
Veza na konačni tekstualni fajl s adresama: i
Posao je završen! Skup IP adresa putem skripte dodat je u pravila glavnog usmjerivača i AnyDesk jednostavno ne može uspostaviti vanjsku vezu.
Postoji čudan trenutak, prema prvotnim logovima vidi se da u prijenosu informacija sudjeluje adresa boot-01.net.anydesk.com. Naravno, blokirali smo sve hostove *.net.anydesk.com općim pravilom, ali čudnost nije u tome. Svaki put pri običnom pingu s različitih računala ovo domena daje različiti IP. Provjera u Linuxu:
host boot-01.net.anydesk.com
tako i DNSLookup daju samo jednu IP adresu, ali ta adresa varira. Pri analizi veza TCPView vraća nam PTR zapise IP adresa tipa relay-*.net.anydesk.com.
Teoretski: budući da ping ponekad prolazi na nepoznatu, neblokiranu domaćin boot-01.net.anydesk.com možemo pronaći te IP adrese i blokirati ih, ovu implementaciju možemo učiniti običnom skriptom za Linux, ovdje ne treba instalirati AnyDesk. Analiza je pokazala da se ovi IP često "presijecaju" s onima koje smo pronašli u našoj listi. Moguće je da je to zapravo ovaj domaćin, na koji se program povezuje prije nego što počne "pretraživati" poznate IP adrese. Vjerovatno ću kasnije dopuniti članak drugom dijelu pretraživanja domaćina, iako trenutno sama aplikacija unutar mreže ne uspostavlja vanjsku vezu uopće.
Nadam se da niste vidjeli ništa protuzakonito u napisanome, a da će se stvaratelji AnyDesk-a prema mojim postupcima odnositi sportski.
Izvor: habr.com
