Kui ühel kaunil päeval tõstatab ülem küsimuse: "Miks on mõnedel kaugjuurdepääs tööarvutile ilma täiendavate kasutuslubade saamiseta?"
siis tekib ülesanne, et "katta" auk.

Kaugtöötamise rakendusi on küllaga: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control jne. Kui "Chrome Remote Desktop"-il on olemas ametlik juhend teenuse juurdepääsu blokeerimiseks, siis TeamViewer'il on litsentsi suhtes ajapiirangud või võrgu päringud ning kasutajad "hammastega krigistades" ilmuvad haldurite ette, siis paljude lemmik — AnyDesk — vajab erilist tähelepanu, eriti kui ülem ütles "Pole lubatud!".

Kui tead, mis on võrgu paketi sisu põhjal blokeerimine ja see sobib sulle, siis ülejäänud materjal
ei ole mõeldud sulle.
Püüdes tulla vastupidiselt, räägitakse sellest, mis peaks olema programmi tööks lubatud, vastavalt on blokeeritud DNS-kirjed *.net.anydesk.com. Kuid AnyDesk ei ole lihtne, domeeninime blokaad ei takista teda.
Kunagi lahendasin ülesande "Anyplace Control" blokeerimiseks, mis tuli meil koos kahtlase tarkvaraga, ja see lahendati blokeerides vaid mõned IP-aadressid (kindlustasin end viirusevastase tarkvaraga). Ülesanne AnyDeski puhul, pärast seda, kui kogusin käsitsi rohkem kui tosin IP-aadressi, pani mind innustama vabanema rutiinsest käsitsi tööst.
Samuti leiti, et "C:ProgramDataAnyDesk" kaustas on rida seadistusfailide jms, ja faili ad_svc.trace kogutakse ühenduste ja ebaõnnestumiste kohta sündmusi.
1. Tähelepanek
Nagu juba ütlesin, ei andnud *.anydesk.com blokeerimine programmi töös mingeid tulemusi, seega otsustati analüüsida programmi käitumist stressiolukordades.. TCPView Sysinternals'ilt kätte ja edasi!

1.1. Näha on, et "ripub" mitu huvitavat protsessi, ja ainult see, mis suhtub välisest aadressist, on meile huvitav. Sadamad, millega ühendatakse, on järgnevad: 80, 443, 6568. 🙂 80 ja 443 ei saa kindlasti blokeerida.
1.2. Pärast aadressi blokeerimist ruuteri kaudu valitakse rahulikult teine aadress.

1.3. Meie kõik! Määrame PID ja mul vedas, kuna AnyDesk oli installitud teenusena, seega on otsitav PID ainus.
1.4. Määrame serveriteenuse IP-aadressi protsessi PID järgi.

2. Ettevalmistus
Kuna IP-aadresside määramise programm töötab tõenäoliselt ainult minu arvutis, ei ole mul mugavuse ja laiskuse osas mingeid piiranguid, seega C#.
2.1. Kõik meetodid otsitava IP-aadressi määramiseks on juba teada, jääb vaid ellu viia.
string pid1_; // saame AnyDeski teenuse PID
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(','); // tõlgi vastus massiivi
pid1_ = pid1[1].Replace(""", ""); // võtame 2. elemendi ilma jutumärkideta
}Samasugune meetod teenuse leidmiseks, mis on ühenduse loonud, esitan vaid peamise rea.
p.StartInfo.Arguments = "/c " netstat -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED"";Mille tulemuseks on:
![]()
Saame rea põhjal samamoodi nagu eelnevas sammus, tõmmates 3. veeru välja ja eemaldades kõik, mis on pärast ":". Tulemuseks on meie otsitav IP.
2.2. IP aadressi blokeerimine Windowsis. Kui Linuxis on olemas Blackhole ja iptables, siis IP aadressi blokeerimise meetod ühe reale, ilma tulemüürita, osutus Windowsis harjumatuks.
Aga millised tööriistad siis olid…
route add meie_leitud_IP_aadress mask 255.255.255.255 10.113.113.113 if 1 -pOluline parameeter "if 1" suunab marsruudi Loopback'ile (saate saada saadaval olevad liidesed, käivitades route print). Ja OLULINE! Nüüd tuleb programmi käivitada administratori õigustega, sest marsruudi muutmine nõuab õiguste tõstmist.
2.3. Leitud IP aadresside kuvamine ja salvestamine on triviaalne ülesanne, selgitust ei vaja. Kui mõelda, siis saab töödelda ka faili ad_svc.trace ise AnyDesk'i kohta, aga ma ei mõelnud sellele kohe + võib-olla sellele kehtivad piirangud.
2.4. Programmi kummaline erinev käitumine seisneb selles, et pärast teenuse protsessi "taskkill" Windows 10-s ta taaskäivitub automaatselt, Windows 8 lõpetab, jättes ainult konsooli protsessi ja ilma ümberühendamiseta, see on üldiselt loogiline ja ebatäpne.
Serveriga ühendatud protsessi eemaldamine võimaldab „sunniviisilist” ümberühendamist järgmisele aadressile. Rakendatakse analooge eelnevatele käskudele, seega toon välja ainult:
p.StartInfo.Arguments = "/c taskkill /PID " + pid1_ + " /F";Käivitame lisaks programmi AnyDesk.
//запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){
Process p1 = Process.Start(path_pro);}2.5. Kontrollime AnyDeski seisundit kord minutis (või tihedamini?), ja kui see on ühendatud, st ühendus on ESTABLISHED — blokeerime selle IP ja alustame uuesti — ootame, kuni see ühendub, blokeerime ja ootame.
3. Rünnak
Kood „visati kokku”, et visualiseerida protsessi, otsustati "+" näidata leitud ja blokeeritud IP-d ning "." — kontrollimise kordamine ilma AnyDeski edukate ühendusteta.

→
Tulemus on…

Programm töötas mitmel arvutil erinevate Windowsi operatsioonisüsteemidega, AnyDeski versioonidega 5 ja 6. 500 iteratsiooni jooksul koguti umbes 80 aadressi. 2500 puhul — 87 ja nii edasi…
Ajaga kasvas blokeeritavate IP-de arv üle 100.
Viide lõplikule tekstifailile aadressidega: ja
Töö on tehtud! IP aadresside hulk skripti kaudu on lisatud põhiviidikute reeglitesse ja AnyDesk ei suuda lihtsalt luua väliseid ühendusi.
On tähelepanek, et esialgsete logide kohaselt osaleb teabe edastamises aadress boot-01.net.anydesk.com. Loomulikult oleme blokeerinud kõik hostid *.net.anydesk.com üldise reegli alusel, kuid kummaline pole see. Iga kord, kui teeme tavapärast ping-katsed erinevatelt arvutilt, annab see domeeninimi erineva IP-aadressi. kontrollimine Linuxis:
host boot-01.net.anydesk.com
nagu ka DNSLookup annab ainult ühe IP-aadressi, kuid see aadress on varieeruv. TCPView ühenduste analüüsimisel tagastavad meile PTR-kirjed IP-aadresside tüüpidest relay-*.net.anydesk.com.
Teoreetiliselt: kuna ping mõnikord läheb läbi tundmatu, blokeerimata hosti boot-01.net.anydesk.com saame need IP-d leida ja blokeerida, see elluviimine teha tavalise skriptina Linuxi operatsioonisüsteemis, siin pole vaja installida AnyDeski. Analüüs näitas, et need IP-d sageli "ristsadavad" meie nimekirjast leitud IP-aadressidega. Võib-olla on see see host, millega programm ühendub enne, kui ta hakkab „pereliitma“ tuttavaid IP-aadresse. Tõenäoliselt täiendaksin hiljem artiklit teise osaga hostide otsingutest, kuigi praegu ei loo programm üldse väliseid ühendusi.
Loodan, et te ei näinud ühtegi ebaseaduslikku tegevust eespoolt, ja et AnyDeski loojad vaatavad minu tegevusele sportlikult.
Allikas: habr.com
