Quando un bel giorno il capo solleva la questione: «Perché alcuni hanno accesso remoto al computer di lavoro, senza richiedere autorizzazioni aggiuntive?»,
nasce l'esigenza di "coprire" la falla.

Ci sono molte applicazioni per la gestione remota attraverso la rete: Chrome remote desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control e altri. Se per "Chrome remote desktop" esiste un manuale ufficiale per combattere l'accesso al servizio, TeamViewer ha limitazioni di licenza per tempo o richieste dalla rete e gli utenti "sbuffando" in qualche modo si fanno notare dagli amministratori, il preferito da molti per uso personale — AnyDesk richiede ancora particolare attenzione, soprattutto se il capo ha detto "Non si può!".

Se sappiate cosa significa bloccare un pacchetto di rete in base al suo contenuto e vi va bene, allora il resto del materiale
non è destinato a voi.
Cercando di andare per vie alternative, si parla di cosa debba essere consentito per il funzionamento del programma, di conseguenza è stata bloccata la registrazione DNS *.net.anydesk.com . Ma AnyDesk non è così semplice, la bloccatura del nome di dominio non lo ferma.Una volta ho risolto la missione di bloccare "Anyplace Control", che veniva da noi con qualche software discutibile, e l'obiettivo è stato raggiunto bloccando solo pochi IP (io proteggerei l'antivirus). La sfida con AnyDesk, dopo aver raccolto manualmente più di una dozzina di indirizzi IP,
ha stimolato di allontanarmi dal lavoro manuale routinario. È stato inoltre scoperto che in "C:ProgramDataAnyDesk" ci sono vari file di configurazione e simili, e nel file
ad_svc.trace si raccolgono eventi di connessione e fallimento. 1. Osservazione
Come già detto, bloccare *.anydesk.com non ha prodotto risultati nel funzionamento del programma, è stato deciso di analizzare
il comportamento del programma in situazioni di stress . TCPView di Sysinternals è in mano ed è ora di iniziare!1.1. È evidente che "pendono" diversi processi di nostro interesse, e solo quello che si connette con l'indirizzo esterno ci interessa. Le porte a cui ci si collega vengono verificate, da quel che ho visto sono: 80, 443, 6568. 🙂 Non possiamo assolutamente bloccare le porte 80 e 443.

1.2. Dopo aver bloccato l'indirizzo tramite il router, si seleziona tranquillamente un altro indirizzo.
1.3. La console è tutto per noi! Determiniamo il PID e qui un po' di fortuna mi ha assistito, perché AnyDesk era stato installato come servizio, di conseguenza il PID ricercato è unico.

1.4. Determiniamo l'indirizzo IP del server dei servizi in base al PID del processo.
1.4. Determiniamo l'indirizzo IP del server dei servizi in base al PID del processo.

2. Preparazione
Poiché il programma per identificare indirizzi IP funzionerà probabilmente solo sul mio PC, non ho limiti riguardo a comodità e pigrizia, quindi C#.
2.1. Tutti i metodi per individuare l'indirizzo IP desiderato sono già noti, resta solo da implementare.
string pid1_; // scopriamo il PID del servizio 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(','); // traduciamo la risposta in un array
pid1_ = pid1[1].Replace(""", ""); // prendiamo il 2° elemento senza virgolette
}Analogamente, identifichiamo il servizio che ha stabilito la connessione, riporterò solo la riga principale.
p.StartInfo.Arguments = " /c " netstat -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED""";Il risultato sarà:
![]()
Dalla riga, similmente al passo precedente, estraiamo la 3ª colonna e rimuoviamo tutto ciò che segue ":". Come risultato abbiamo il nostro IP cercato.
2.2. Blocco dell'IP in Windows. Se in Linux ci sono Blackhole e iptables, il metodo per bloccare un indirizzo IP in una riga, senza usare un firewall, in Windows si è rivelato insolito,
ma che strumenti c'erano…
route add nostro_IP_trovato mask 255.255.255.255 10.113.113.113 if 1 -pParametri chiave "if 1" inviamo il percorso al Loopback (è possibile visualizzare le interfacce disponibili eseguendo route print). E È IMPORTANTE! Ora il programma deve essere avviato con diritti di amministratore, poiché la modifica del percorso richiede privilegi elevati.
2.3. Visualizzazione e salvataggio degli indirizzi IP rilevati è un compito banale e non richiede spiegazioni. Se ci pensiamo, potremmo elaborare anche il file si raccolgono eventi di connessione e fallimento. stesso AnyDesk, ma questo non mi è venuto in mente subito + potrebbe esserci una limitazione su di esso.
2.4. Il comportamento strano e incoerente del programma consiste nel fatto che quando si utilizza "taskkill" per terminare il processo del servizio in Windows 10, esso si riavvia automaticamente, in Windows 8 termina, lasciando solo il processo della console e senza riconnessione, in generale non ha senso ed è impreciso.
L'eliminazione del processo connesso al server consente di "forzare" la riconnessione all'indirizzo successivo. Si realizza in modo simile ai comandi precedenti, quindi riporto solo:
p.StartInfo.Arguments = " /c taskkill /PID " + pid1_ + " /F";Avviamo anche il programma AnyDesk.
//запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){
Process p1 = Process.Start(path_pro);}2.5. Controlliamo lo stato di AnyDesk una volta al minuto (o più spesso?), e se si connette cioè la connessione è ESTABLISHED — blocchiamo questo IP e ricominciamo tutto da capo — aspettiamo che si connetta, blocchiamo e aspettiamo.
3. Attacco
È stato "scritta" del codice, per visualizzare il processo abbiamo deciso di "+" indicare l'IP trovato e bloccato, e "." — ripetere il controllo senza una connessione riuscita da parte di AnyDesk.

→
Come risultato…

Il programma ha funzionato su diversi computer con diversi sistemi operativi Windows, con versioni di AnyDesk 5 e 6. Dopo 500 iterazioni sono stati raccolti circa 80 indirizzi. Dopo 2500 — 87 e così via…
Nel tempo, il numero di IP bloccati è arrivato a oltre 100.
Link al file finale testo con gli indirizzi: e
L'affare è fatto! Il pool di indirizzi IP è stato aggiunto alle regole del router principale tramite uno script, e AnyDesk semplicemente non può creare una connessione esterna.
C'è un elemento strano, dai log iniziali si vede che nell'invio delle informazioni è coinvolto l'indirizzo boot-01.net.anydesk.com. Certo, abbiamo bloccato tutti gli host *.net.anydesk.com con una regola generale, ma la stranezza non è questa. Ogni volta che pinghiamo normalmente da computer diversi, questo nome di dominio restituisce un IP diverso. Verifica in Linux:
host boot-01.net.anydesk.com
così come DNSLookup restituiscono solo un indirizzo IP, ma questo indirizzo è variabile. Nell'analisi delle connessioni TCPView ci restituiscono record PTR di indirizzi IP del tipo relay-*.net.anydesk.com.
Teoricamente: dato che il ping a volte viene eseguito su un host sconosciuto non bloccato boot-01.net.anydesk.com possiamo trovare questi IP e bloccarli, rendendo questa implementazione uno script comune per OS Linux, dove tra l'altro non è necessario installare AnyDesk. L'analisi ha mostrato che questi IP spesso "si sovrappongono" con quelli trovati nella nostra lista. Probabilmente è proprio questo l'host a cui si collega il programma prima di iniziare a "testare" gli IP noti. Probabilmente aggiungerò più tardi un secondo articolo sulla ricerca di host, anche se per ora il programma stesso all’interno della rete non stabilisce alcuna connessione esterna.
Spero che non abbiate visto niente di illegale in quanto sopra, e che i creatori di AnyDesk prendano le mie azioni con sportività.
Fonte: habr.com
