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.
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!”
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
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!
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.
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.
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:
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.
Kao rezultat…
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:
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