Analisi della possibilità di bloccare un'applicazione per il controllo remoto di un computer in rete, utilizzando l'esempio di AnyDesk

Quando un giorno il capo si pone la domanda: “Perché alcune persone hanno accesso remoto a un computer di lavoro senza ottenere ulteriori autorizzazioni per l'utilizzo?”,
c'è il compito di "coprire" una lacuna.

Analisi della possibilità di bloccare un'applicazione per il controllo remoto di un computer in rete, utilizzando l'esempio di AnyDesk
Esistono numerose applicazioni per il controllo remoto in rete: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, ecc. Se Chrome Remote Desktop dispone di un manuale ufficiale per contrastare l'accesso al servizio, TeamViewer ha restrizioni di licenza su tempi o richieste dalla rete e gli utenti "stringendo i denti" in qualche modo "brillano" con gli amministratori, quindi il preferito da molti per uso personale - AnyDesk richiede ancora un'attenzione speciale, soprattutto se il capo ha detto "No!".

Analisi della possibilità di bloccare un'applicazione per il controllo remoto di un computer in rete, utilizzando l'esempio di AnyDesk
Se sai cos'è il blocco di un pacchetto di rete in base al suo contenuto e ti si addice, allora il resto del materiale
non previsto per te.

Cercando di andare dall'opposto, in effetti sito web dice cosa dovrebbe essere consentito affinché il programma funzioni, rispettivamente, il record DNS è stato bloccato *.net.anydesk.com. Ma AnyDesk non è semplice, non si preoccupa di bloccare un nome di dominio.

Una volta ho risolto il problema del blocco di "Anyplace Control" che ci è arrivato con dei software dubbi, ed è stato risolto bloccando solo pochi IP (ho messo in sicurezza l'antivirus). Il problema con AnyDesk, dopo aver raccolto manualmente più di una dozzina di indirizzi IP, provocato allontanarsi dal lavoro manuale di routine.

È stato inoltre riscontrato che in "C: ProgramDataAnyDesk" sono presenti numerosi file con impostazioni, ecc., E nel file ad_svc.trace vengono raccolti eventi relativi a connessioni e errori.

1. Osservazione

Come già accennato, il blocco di *.anydesk.com non ha dato alcun risultato nel programma, si è deciso di analizzarlo comportamento del programma in situazioni di stress. TCPView di Sysinternals in mano e via!

Analisi della possibilità di bloccare un'applicazione per il controllo remoto di un computer in rete, utilizzando l'esempio di AnyDesk

1.1. Si può vedere che diversi processi che ci interessano sono “sospesi” e ci interessa solo quello che comunica con l'indirizzo dall'esterno. Le porte a cui si collega sono spostate, da quello che ho visto: 80, 443, 6568. 🙂 80 e 443 non possiamo assolutamente bloccare.

1.2. Dopo aver bloccato l'indirizzo tramite il router, viene selezionato silenziosamente un altro indirizzo.

Analisi della possibilità di bloccare un'applicazione per il controllo remoto di un computer in rete, utilizzando l'esempio di AnyDesk

1.3. La nostra console è TUTTO! Determiniamo il PID e poi ho avuto un po' di fortuna che AnyDesk sia stato installato dal servizio, rispettivamente, il PID che stavo cercando è l'unico.
1.4. Determiniamo l'indirizzo IP del server del servizio tramite il PID del processo.

Analisi della possibilità di bloccare un'applicazione per il controllo remoto di un computer in rete, utilizzando l'esempio di AnyDesk

2. Preparazione

Dato che il programma per scoprire gli indirizzi IP probabilmente funzionerà solo sul mio PC, non ho restrizioni in termini di comodità e pigrizia, quindi C#.

2.1. Tutti i metodi per identificare l'indirizzo IP desiderato sono già noti, resta da implementare.

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й элемент без кавычек
}

Allo stesso modo troviamo il servizio che ha stabilito la connessione, darò solo la linea principale

p.StartInfo.Arguments = "/c " netstat  -n -o | findstr /I " + pid1_ + " | findstr "ESTABLISHED""";

Il cui risultato sarà:

Analisi della possibilità di bloccare un'applicazione per il controllo remoto di un computer in rete, utilizzando l'esempio di AnyDesk
Dalla riga, analogamente al passaggio precedente, estraiamo la 3a colonna e rimuoviamo tutto dopo ":". Di conseguenza, abbiamo il nostro IP desiderato.

2.2. Blocco IP in Windows. Se Linux ha Blackhole e iptables, il metodo per bloccare un indirizzo IP su una riga, senza utilizzare un firewall, si è rivelato insolito in Windows,
Ma quali strumenti erano...

route add наш_найденный_IP_адрес mask 255.255.255.255 10.113.113.113 if 1 -p

Parametro chiave "se 1" invia il percorso a Loopback (è possibile visualizzare le interfacce disponibili eseguendo route print). E IMPORTANTE! Ora è necessario eseguire il programma con diritti di amministratoreperché cambiare il percorso richiede elevazione.

2.3. Visualizzare e salvare gli indirizzi IP identificati è un compito banale e non richiede spiegazioni. Se ci pensi, puoi elaborare il file ad_svc.trace AnyDesk stesso, ma non ci ho pensato subito + forse c'è una restrizione su di esso.

2.4. Lo strano comportamento ineguale del programma è che quando il processo di servizio viene “taskkilled” in Windows 10, si riavvia automaticamente, in Windows 8 termina, lasciando solo il processo della console e senza riconnettersi, in generale, è illogico e impreciso.

L'eliminazione di un processo che si è connesso al server consente di "forzare" una riconnessione all'indirizzo successivo. È implementato in modo simile ai comandi precedenti, quindi fornisco solo:

p.StartInfo.Arguments = "/c taskkill /PID " + pid1_ + " /F";

Inoltre, avvia il programma AnyDesk.

 //запускаем программу которая расположена по пути path_pro
if (File.Exists(path_pro)){ 
Process p1 = Process.Start(path_pro);}

2.5. Controlleremo lo stato di AnyDesk una volta al minuto (o più spesso?) e se è connesso, ad es. connessione STABILITA - blocca questo IP, e ancora tutto da capo - attendi finché non si connette, blocca e attendi.

3. Assalto

Il codice è stato “redatto”, si è deciso di visualizzare il processo "+" specifica l'IP trovato e bloccato e "." - controllo ripetuto senza connessione riuscita da AnyDesk.

Analisi della possibilità di bloccare un'applicazione per il controllo remoto di un computer in rete, utilizzando l'esempio di AnyDesk

Codice del progetto

Di conseguenza ...

Analisi della possibilità di bloccare un'applicazione per il controllo remoto di un computer in rete, utilizzando l'esempio di AnyDesk
Il programma ha funzionato su diversi computer con diversi sistemi operativi Windows, con AnyDesk versioni 5 e 6. Sono stati raccolti circa 500 indirizzi in 80 iterazioni. Per 2500 - 87 e così via...

Nel corso del tempo, il numero di IP bloccati ha raggiunto oltre 100.

Collegamento alla finale file di testo con indirizzi: tempo и два

È fatta! Un pool di indirizzi IP viene aggiunto alle regole del router principale tramite uno script e AnyDesk semplicemente non può creare una connessione esterna.

C'è un momento strano, secondo i registri iniziali, è chiaro che l'indirizzo è coinvolto nel trasferimento di informazioni boot-01.net.anydesk.com. Ovviamente come regola generale abbiamo bloccato tutti gli host *.net.anydesk.com, ma non è questa la stranezza. Ogni volta che viene eseguito un normale ping da computer diversi, questo nome di dominio fornisce un IP diverso. Verifica in Linux:

host boot-01.net.anydesk.com

come DNSLookup, forniscono solo un indirizzo IP, ma questo indirizzo è variabile. Quando si analizza una connessione TCPView, si ottengono record PTR di indirizzi IP come relè-*.net.anydesk.com.

In teoria: poiché il ping a volte va a un host sconosciuto e non bloccato boot-01.net.anydesk.com possiamo trovare questi IP e bloccarli, rendere questa implementazione uno script normale nel sistema operativo Linux, qui non è necessario installare AnyDesk. L'analisi ha mostrato che questi IP sono spesso "intersecare" con quelli trovati dalla nostra lista. Forse questo è proprio questo host, al quale il programma si connette prima di iniziare a "selezionare" gli IP conosciuti. Probabilmente più tardi integrerò l'articolo con la 2a parte delle ricerche host, anche se al momento il programma stesso non installa l'outer join in generale.

Spero che tu non abbia visto nulla di illegale in quanto sopra e che i creatori di AnyDesk tratteranno le mie azioni in modo sportivo.

Fonte: habr.com

Aggiungi un commento