Kur një ditë të bukur shefi ngre pyetjen: «Pse disa kanë qasje të largët në kompjuterin e punës pa marrë leje shtesë për përdorim?»,
del detyra për të «mbyllur» këtë hapësirë.

Aplikacione për menaxhim të largët përmes rrjetit ka plot: Сhrome remote desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control etj. Nëse për «Сhrome remote desktop» ekziston një manual zyrtar për kufizimin e qasjes te shërbimi, ndërsa TeamViewer ka kufizime licencimi sipas kohës ose kërkesave nga rrjeti dhe përdoruesit, «me dhëmbë të shtrënguar», në një mënyrë ose tjetër bien në sy te administratorët, atëherë i preferuari i shumëkujt për përdorim personal — AnyDesk — ende kërkon vëmendje të veçantë, sidomos kur shefi ka thënë: «Nuk lejohet!».

Nëse e dini çfarë është bllokimi i paketave të rrjetit sipas përmbajtjes së tyre dhe kjo ju përshtatet, atëherë pjesa tjetër e materialit
nuk është menduar për ju.
Duke provuar të nisem nga e kundërta, në fakt thuhet se çfarë duhet të lejohet që programi të funksionojë, përkatësisht u bllokua regjistrimi DNS *.net.anydesk.com. Por AnyDesk nuk është aq i thjeshtë; bllokimi i emrit të domenit nuk i bën përshtypje.
Dikur e kisha zgjidhur çështjen e bllokimit të «Anyplace Control», i cili na vinte bashkë me ndonjë softuer të dyshimtë, dhe kjo u arrit duke bllokuar vetëm disa IP (për siguri shtesë mbështetesha edhe te antivirusi). Ndërsa detyra me AnyDesk, pasi mblodha me dorë më shumë se një duzinë adresash IP, më nxiti të largohem nga puna rutinë manuale.
Gjithashtu u zbulua se te «C:ProgramDataAnyDesk» ka një sërë skedarësh me cilësime etj., ndërsa në skedarin ad_svc.trace grumbullohen ngjarjet për lidhjet dhe dështimet.
1. Vëzhgimi
Siç u tha më lart, bllokimi i *.anydesk.com nuk dha asnjë rezultat në funksionimin e programit, ndaj u vendos të analizohej sjellja e programit në situata stresi. TCPView nga Sysinternals në dorë dhe le t’ia nisim!

1.1. Shihet se janë «varur» disa procese që na interesojnë, dhe na intereson vetëm ai që lidhet me një adresë nga jashtë. Portat me të cilat lidhet ndryshojnë; nga sa kam parë, këto janë: 80, 443, 6568. 🙂 80 dhe 443 sigurisht që nuk mund t’i bllokojmë.
1.2. Pas bllokimit të adresës përmes ruterit, zgjidhet qetësisht një adresë tjetër.

1.3. Konsola është gjithçka! Gjejmë PID-in dhe këtu pata pak fat, sepse AnyDesk ishte instaluar si shërbim, prandaj PID-i i kërkuar ishte i vetmi.
1.4. Sipas PID-it të procesit përcaktojmë adresën IP të serverit të shërbimeve.

2. Përgatitja
Meqë programi për zbulimin e adresave IP me shumë gjasë do të funksionojë vetëm në kompjuterin tim, nuk kam asnjë kufizim sa i përket komoditetit apo dembelizmit, prandaj C#.
2.1. Të gjitha metodat për gjetjen e adresës IP të kërkuar tashmë dihen, mbetet vetëm implementimi.
string pid1_;//marrim PID-in e shërbimit 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(',');//e kthejmë përgjigjen në varg
pid1_ = pid1[1].Replace(""", "");//marrim elementin e 2-të pa thonjëza
}Në mënyrë të ngjashme gjejmë shërbimin që ka vendosur lidhjen; do të jap vetëm rreshtin kryesor
p.StartInfo.Arguments = "/c " netstat -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED""";Rezultati do të jetë:
![]()
Nga rreshti, njësoj si në hapin e mëparshëm, nxjerrim kolonën e 3-të dhe heqim gjithçka pas ":". Si rezultat marrim IP-në që kërkojmë.
2.2. Bllokimi i IP-së në Windows. Nëse në Linux ekzistojnë Blackhole dhe iptables, ku metoda e bllokimit të adresës IP bëhet me një rresht të vetëm, pa përdorur firewall-in, në Windows kjo doli disi e pazakontë,
por këto ishin mjetet që kishte...
route add наш_найденный_IP_адрес mask 255.255.255.255 10.113.113.113 if 1 -pParametri kyç "if 1" e dërgon rrugën te Loopback (Ndërfaqet e disponueshme mund t’i shihni duke ekzekutuar route print ). Dhe E RËNDËSISHME! Tani programi duhet të niset me të drejta administratori, pasi ndryshimi i rrugës kërkon ngritje të privilegjeve.
2.3. Shfaqja dhe ruajtja e adresave IP të zbuluara është një detyrë triviale dhe nuk kërkon shpjegim. Po të mendohet pak, mund të përpunohet edhe skedari ad_svc.trace i vetë AnyDesk-ut, por këtë nuk e mendova menjëherë + ndoshta mbi të ka kufizime.
2.4. Sjellja e çuditshme dhe jo e njëjtë e programit qëndron në faktin se gjatë përdorimit të «taskkill» për procesin e shërbimit në Windows 10 ai riniset automatikisht, ndërsa në Windows 8 përfundon, duke lënë vetëm procesin e konsolës dhe pa rilidhje; në përgjithësi është joligjike dhe e pasaktë.
Mbyllja e procesit që është lidhur me serverin lejon të «detyrohet» rilidhja te adresa e radhës. Zbatohet njësoj si komandat e mëparshme, prandaj po jap vetëm:
p.StartInfo.Arguments = "/c taskkill /PID " + pid1_ + " /F";Gjithashtu nisim programin AnyDesk.
//запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){
Process p1 = Process.Start(path_pro);}2.5. Gjendjen e AnyDesk do ta kontrollojmë 1 herë në minutë (apo më shpesh?), dhe nëse lidhet, pra lidhja është ESTABLISHED — ta bllokojmë këtë IP, pastaj gjithçka nga e para: të presim derisa të lidhet, ta bllokojmë dhe të presim.
3. Sulmi
U hartua një kod i thjeshtë dhe, për ta vizualizuar procesin, u vendos që me "+" të tregohet IP-ja e gjetur dhe e bllokuar, ndërsa me "." — përsëritja e kontrollit pa lidhje të suksesshme nga ana e AnyDesk.

→
Si rezultat…

Programi punoi në disa kompjuterë me versione të ndryshme të Windows dhe me AnyDesk 5 e 6. Gjatë 500 iteracioneve u mblodhën rreth 80 adresa. Gjatë 2500 — 87 e kështu me radhë…
Me kalimin e kohës, numri i IP-ve të bllokuara arriti në 100+.
Lidhja për te skedari tekst me adresat: dhe
Puna u krye! Grupi i adresave IP u shtua përmes skriptit në rregullat e ruterit kryesor dhe AnyDesk thjesht nuk mund të krijojë lidhje të jashtme.
Ka një moment të çuditshëm: nga log-et fillestare shihet se në transmetimin e të dhënave merr pjesë adresa boot-01.net.anydesk.com. Sigurisht, ne i bllokuam të gjithë hostët *.net.anydesk.com me një rregull të përgjithshëm, por çudia nuk është këtu. Sa herë që bëhet një ping i zakonshëm nga kompjuterë të ndryshëm, ky emër domain kthen IP të ndryshme. Verifikimi në Linux:
host boot-01.net.anydesk.com
si edhe DNSLookup japin vetëm një adresë IP, por kjo adresë ndryshon. Gjatë analizës së lidhjeve, TCPView na kthen regjistrime PTR të adresave IP të tipit relay-*.net.anydesk.com.
Teorikisht: meqë ping ndonjëherë kalon te një host i panjohur dhe i pabllokuar, boot-01.net.anydesk.com ne mund t’i gjejmë këto IP dhe t’i bllokojmë; këtë zbatim mund ta bëjmë me një skript të zakonshëm në Linux, pasi këtu nuk ka nevojë të instalohet AnyDesk. Analiza tregoi se këto IP shpesh "përputhen" me ato që kemi gjetur në listën tonë. Ndoshta është pikërisht ky hosti me të cilin programi lidhet përpara se të nisë «provimin» e IP-ve të njohura. Ka gjasa që më vonë ta plotësoj artikullin me një pjesë të dytë për kërkimin e hostëve, megjithëse aktualisht vetë programi brenda rrjetit nuk krijon fare lidhje të jashtme.
Shpresoj që në sa më sipër të mos keni parë asgjë të paligjshme dhe që krijuesit e AnyDesk t’i marrin veprimet e mia me sportivitet.
Burimi: habr.com
