Analiza możliwości zablokowania aplikacji umożliwiającej zdalne sterowanie komputerem przez sieć na przykładzie AnyDesk

Kiedy pewnego dnia szef zadaje pytanie: „Dlaczego niektórzy ludzie mają zdalny dostęp do służbowego komputera, bez uzyskania dodatkowych uprawnień do korzystania?”
Powstaje zadanie „zamknięcia” luki.

Analiza możliwości zablokowania aplikacji umożliwiającej zdalne sterowanie komputerem przez sieć na przykładzie AnyDesk
Istnieje wiele aplikacji do zdalnej kontroli przez sieć: zdalny pulpit Chrome, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control itp. Jeśli zdalny pulpit Chrome ma oficjalną instrukcję dotyczącą zwalczania dostępu do usługi, TeamViewer ma ograniczenia licencyjne dotyczące czasu lub żądań z sieci, a użytkownicy „zgrzytają zębami” w taki czy inny sposób „błyszczą” z administratorami, to ulubieniec wielu do użytku osobistego - AnyDesk nadal wymaga szczególnej uwagi, zwłaszcza jeśli szef powiedział „Nie!”

Analiza możliwości zablokowania aplikacji umożliwiającej zdalne sterowanie komputerem przez sieć na przykładzie AnyDesk
Jeśli wiesz na czym polega blokowanie pakietu sieciowego według jego zawartości i jesteś z tego zadowolony, to reszta materiału
niezamierzone Dla Was.

Właściwie to próbuję przejść od czegoś przeciwnego witryna internetowa mówi, co musi być dozwolone, aby program działał; w związku z tym rekord DNS został zablokowany *.net.anydesk.com. Ale AnyDesk nie jest prosty; nie przejmuje się blokowaniem nazwy domeny.

Dawno, dawno temu rozwiązałem problem blokowania „Anyplace Control”, który przyszedł do nas z jakimś podejrzanym oprogramowaniem i rozwiązano go poprzez zablokowanie tylko kilku adresów IP (wykonałem kopię zapasową programu antywirusowego). Problem z AnyDesk, po ręcznym zebraniu kilkunastu adresów IP, wkurzyłeś mnie oderwij się od rutynowej pracy fizycznej.

Odkryto również, że w „C:ProgramDataAnyDesk” znajduje się szereg plików z ustawieniami itp., a w pliku ad_svc.trace Gromadzone są zdarzenia dotyczące połączeń i awarii.

1. Obserwacja

Jak już wspomniano, zablokowanie *.anydesk.com nie dało żadnych rezultatów w działaniu programu, postanowiono przeanalizować zachowanie programu w sytuacjach stresowych. TCPView od Sysinternals w Twoich rękach i gotowe!

Analiza możliwości zablokowania aplikacji umożliwiającej zdalne sterowanie komputerem przez sieć na przykładzie AnyDesk

1.1. Widać, że kilka interesujących nas procesów „zawiesza się”, a interesuje nas tylko ten, który komunikuje się z adresem z zewnątrz. Wybrane są porty, z którymi się łączy, z tego co widziałem: 80, 443, 6568. 🙂 Zdecydowanie nie możemy blokować 80 i 443.

1.2. Po zablokowaniu adresu przez router, po cichu wybierany jest inny adres.

Analiza możliwości zablokowania aplikacji umożliwiającej zdalne sterowanie komputerem przez sieć na przykładzie AnyDesk

1.3. Konsola to nasze WSZYSTKO! Ustalamy PID i wtedy miałem trochę szczęścia, że ​​usługa zainstalowała AnyDesk, więc PID, którego szukaliśmy, był jedyny.
1.4. Adres IP serwera usługi ustalamy na podstawie PID procesu.

Analiza możliwości zablokowania aplikacji umożliwiającej zdalne sterowanie komputerem przez sieć na przykładzie AnyDesk

2. Przygotowanie

Ponieważ program do identyfikacji adresów IP będzie działał prawdopodobnie tylko na moim komputerze, nie mam ograniczeń co do wygody i lenistwa, więc C#.

2.1. Wszystkie metody identyfikacji wymaganego adresu IP są już znane, pozostaje je wdrożyć.

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

Podobnie znajdziemy usługę, która nawiązała połączenie, podam tylko linię główną

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

Wynikiem czego będzie:

Analiza możliwości zablokowania aplikacji umożliwiającej zdalne sterowanie komputerem przez sieć na przykładzie AnyDesk
Z wiersza podobnie jak w poprzednim kroku wyodrębnij trzecią kolumnę i usuń wszystko po „:”. W rezultacie mamy pożądane IP.

2.2. Blokowanie adresów IP w systemie Windows. Jeśli Linux ma Blackhole i iptables, to sposób blokowania adresu IP w jednej linii, bez użycia firewalla, w Windowsie okazał się nietypowy,
ale jakie narzędzia tam były...

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

Kluczowy parametr „jeśli 1" wyślij trasę do Loopback (Możesz wyświetlić dostępne interfejsy uruchamiając drukowanie trasy). ORAZ WAŻNE! Teraz należy uruchomić program z uprawnieniami administratora, ponieważ zmiana trasy wymaga wzniesienia.

2.3. Wyświetlanie i zapisywanie zidentyfikowanych adresów IP jest zadaniem banalnym i nie wymagającym wyjaśnień. Jeśli się nad tym zastanowisz, możesz przetworzyć plik ad_svc.trace Sam AnyDesk, ale nie od razu o tym pomyślałem + być może jest w tym jakieś ograniczenie.

2.4. Dziwne nierówne zachowanie programu polega na tym, że podczas „zabijania zadań” proces serwisowy w Windows 10 uruchamia się automatycznie ponownie, w Windows 8 kończy się, pozostawiając jedynie proces konsoli i bez ponownego łączenia, ogólnie jest to nielogiczne i niedokładne.

Usunięcie procesu, który połączył się z serwerem, pozwala „wymusić” ponowne połączenie na kolejny adres. Jest zaimplementowany w taki sam sposób, jak poprzednie polecenia, więc po prostu podam:

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

Dodatkowo uruchom program AnyDesk.

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

2.5. Raz na minutę (czy może częściej?) będziemy sprawdzać stan AnyDeska i czy jest on podłączony, tj. połączenie NAWIĄZANE - zablokuj to IP i jeszcze raz od nowa - poczekaj aż się połączy, zablokuj i czekaj.

3. Atak

Kod został „naszkicowany” i postanowiono zwizualizować proces”+" wskaż znaleziony i zablokowany adres IP oraz ".„—powtórz sprawdzenie bez pomyślnego połączenia sąsiada z AnyDesk.

Analiza możliwości zablokowania aplikacji umożliwiającej zdalne sterowanie komputerem przez sieć na przykładzie AnyDesk

Kod projektu

W rezultacie…

Analiza możliwości zablokowania aplikacji umożliwiającej zdalne sterowanie komputerem przez sieć na przykładzie AnyDesk
Program działał na kilku komputerach z różnymi systemami operacyjnymi Windows, z wersjami AnyDesk 5 i 6. W ponad 500 iteracjach zebrano około 80 adresów. Za 2500 - 87 i tak dalej...

Z biegiem czasu liczba zablokowanych adresów IP osiągnęła ponad 100.

Link do finału plik tekstowy z adresami: czas и два

Zrobione! Pula adresów IP została dodana do reguł głównego routera za pomocą skryptu i AnyDesk po prostu nie może utworzyć połączenia zewnętrznego.

Jest dziwny punkt, z początkowych logów jasno wynika, że ​​adres bierze udział w przekazywaniu informacji boot-01.net.anydesk.com. Oczywiście z reguły blokowaliśmy wszystkie hosty *.net.anydesk.com, ale nie jest to dziwne. Za każdym razem przy normalnym pingu z różnych komputerów ta nazwa domeny daje inny adres IP. Sprawdzanie na Linuksie:

host boot-01.net.anydesk.com

podobnie jak DNSLookup, dają tylko jeden adres IP, ale adres ten jest zmienny. Analizując połączenie TCPView zwracane są rekordy PTR adresów IP danego typu przekaźnik-*.net.anydesk.com.

Teoretycznie: ponieważ ping czasami trafia do nieznanego odblokowanego hosta boot-01.net.anydesk.com możemy znaleźć te adresy IP i zablokować je, uczynić tę implementację zwykłym skryptem pod systemem operacyjnym Linux, tutaj nie ma potrzeby instalowania AnyDesk. Analiza wykazała, że ​​te adresy IP często „przecinać"z tymi znalezionymi na naszej liście. Być może to właśnie z tym hostem program łączy się, zanim zacznie "sortować" znane adresy IP. Prawdopodobnie później uzupełnię artykuł o drugą część wyszukiwania hostów, choć w tej chwili sam program ogólnie nie instaluje się w zewnętrznym połączeniu sieci.

Mam nadzieję, że nie widziałeś w powyższym nic nielegalnego, a twórcy AnyDesk potraktują moje działania w sposób sportowy.

Źródło: www.habr.com

Dodaj komentarz