Analiza możliwości zablokowania aplikacji do zdalnego zarządzania komputerem w sieci, na przykładzie AnyDesk.

Kiedy pewnego pięknego dnia szef porusza kwestię: „Dlaczego niektórzy mają zdalny dostęp do komputera roboczego bez uzyskiwania dodatkowych zezwoleń na jego użycie?”,
pojawia się zadanie, aby „zamknąć” lukę.

Analiza możliwości zablokowania aplikacji do zdalnego zarządzania komputerem w sieci, na przykładzie AnyDesk.
Aplikacji do zdalnego zarządzania w sieci jest pod dostatkiem: Chrome Remote Desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control i inne. Jeśli „Chrome Remote Desktop” ma oficjalny podręcznik dotyczący przeciwdziałania dostępowi do usługi, to TeamViewer ma ograniczenia licencyjne dotyczące czasu lub zapytań z sieci, a użytkownicy „zgrzytając zębami” w ten czy inny sposób „świecą” się przed administratorami, to ulubieniec wielu do użytku prywatnego — AnyDesk, wymaga szczególnej uwagi, tym bardziej, że szef powiedział „Nie wolno!”.

Analiza możliwości zablokowania aplikacji do zdalnego zarządzania komputerem w sieci, na przykładzie AnyDesk.
Jeśli wiesz, czym jest blokowanie pakietów sieciowych po ich zawartości i to Ci odpowiada, to pozostały materiał
nie jest przeznaczony dla Ciebie.

Próbując podejść od odwrotnej strony, mówi się o tym, co powinno być dozwolone do pracy programu, w związku z czym zablokowano rekord DNS stronie *.net.anydesk.com . Ale AnyDesk nie jest prosty, blokada nazwy domeny mu nie straszna.Kiedyś miałem rozwiązane zadanie blokady „Anyplace Control”, które dostawało się do nas z jakimś podejrzanym oprogramowaniem i zostało ono rozwiązane przez blokację zaledwie kilku adresów IP (dodatkowo zabezpieczałem się antywirusowo). Zadanie z AnyDesk, po tym jak ręcznie zebrałem ponad dziesięć adresów IP,

podsyciło pragnienie unikania rutynowej, ręcznej pracy. Zostało również odkryte, że w „C:ProgramDataAnyDesk” znajduje się kilka plików z ustawieniami itp., a w pliku

ad_svc.trace zbierane są zdarzenia dotyczące połączeń i niepowodzeń. 1. Obserwacja

Jak już wspomniano, blokada *.anydesk.com nie przyniosła żadnych rezultatów w działaniu programu, postanowiono przeanalizować

zachowanie programu w stresowych sytuacjach. . TCPView od Sysinternals w ręce i do przodu!1.1. Widać, że „wiszą” kilka interesujących nas procesów, i tylko ten, który łączy się z zewnętrznym adresem jest dla nas interesujący. Porty, do których się łączy, są różne, z tego, co widziałem, to: 80, 443, 6568. 🙂 80 i 443 na pewno nie możemy zablokować.

Analiza możliwości zablokowania aplikacji do zdalnego zarządzania komputerem w sieci, na przykładzie AnyDesk.

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

1.3. Konsola to nasze WSZYSTKO! Określamy PID i tu trochę mi się poszczęściło, że AnyDesk został zainstalowany jako usługa, więc poszukiwany PID jest jedyny.

Analiza możliwości zablokowania aplikacji do zdalnego zarządzania komputerem w sieci, na przykładzie AnyDesk.

1.4. Określamy po PID procesu adres IP serwera usług.
1.4. Określamy adres IP serwera usług po PID procesu.

Analiza możliwości zablokowania aplikacji do zdalnego zarządzania komputerem w sieci, na przykładzie AnyDesk.

2. Przygotowanie

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

2.1. Wszystkie metody identyfikacji poszukiwanego adresu IP są już znane, pozostało je tylko zrealizować.

string pid1_; // poznajemy PID usługi 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(','); // przekształcamy odpowiedź na tablicę
 pid1_ = pid1[1].Replace(""", ""); // bierzemy 2. element bez cudzysłowów
}

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

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

Jej wynikiem będzie:

Analiza możliwości zablokowania aplikacji do zdalnego zarządzania komputerem w sieci, na przykładzie AnyDesk.
Z tego wiersza analogicznie, jak w poprzednim kroku, wydobywamy 3. kolumnę i usuwamy wszystko po ":". W rezultacie otrzymujemy poszukiwany IP.

2.2. Blokowanie IP w Windows. Jeśli w Linuxie mamy Blackhole i iptables, to metoda blokowania adresu IP w jednej linii, bez użycia zapory ogniowej, w Windows okazała się niezwykła,
ale cóż, takie były narzędzia...

route add nasz_znaleziony_IP_adres mask 255.255.255.255 10.113.113.113 if 1 -p

Kluczowy parametr "if 1" wysyła trasę do Loopback (Dostępne interfejsy można wyświetlić, wykonując route print). I WAŻNE! Teraz program musi być uruchamiany z uprawnieniami administratora, ponieważ zmiana trasy wymaga podniesienia uprawnień.

2.3. Wyświetlanie i zapisywanie zidentyfikowanych adresów IP to trywialne zadanie i nie wymaga wyjaśnień. Jeśli się nad tym zastanowić, można również przetwarzać plik zbierane są zdarzenia dotyczące połączeń i niepowodzeń. samego AnyDesk, ale o tym od razu nie pomyślałem + być może na niego występuje ograniczenie.

2.4. Dziwne, nierówne zachowanie programu polega na tym, że przy „taskkill” procesu usługi w Windows 10, jest on automatycznie restartowany, w Windows 8 kończy się, pozostawiając tylko proces konsoli, bez ponownego połączenia, ogólnie logicznie to nie ma sensu i jest to niedokładne.

Usunięcie procesu połączonego z serwerem pozwala „wymusić” ponowne połączenie na następny adres. Implementuje się to analogicznie do poprzednich poleceń, dlatego podaję tylko:

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

Dodatkowo uruchamiamy program AnyDesk.

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

2.5. Sprawdzamy stan AnyDesk raz na minutę (lub częściej?), a jeśli się połączy, tzn. połączenie ESTABLISHED — zablokuj ten adres IP i zacznij od nowa — czekaj, aż się połączy, zablokuj i czekaj.

3. Atak

Kod został "przygotowany", aby zobrazować proces, postanowiono "+" wskazywać znaleziony i zablokowany adres IP, a "." — powtórzenie kontroli bez udanego połączenia ze strony AnyDesk.

Analiza możliwości zablokowania aplikacji do zdalnego zarządzania komputerem w sieci, na przykładzie AnyDesk.

Kod projektu

Wynik...

Analiza możliwości zablokowania aplikacji do zdalnego zarządzania komputerem w sieci, na przykładzie AnyDesk.
Program działał na kilku komputerach z różnymi wersjami systemu Windows i wersjami AnyDesk 5 i 6. W 500 iteracjach zbierano około 80 adresów. W 2500 — 87 i tak dalej...

Z czasem liczba blokowanych adresów IP wzrosła do 100+.

Link do finalnego pliku tekstowego z adresami: raz i dwa

Zadanie ukończone! Pul adresów IP został dodany do reguł głównego routera i AnyDesk po prostu nie może nawiązać zewnętrznego połączenia.

Jest dziwna kwestia, z początkowych logów widać, że w przesyłaniu informacji uczestniczy adres boot-01.net.anydesk.com. Oczywiście zablokowaliśmy wszystkie hosty *.net.anydesk.com ogólną regułą, ale dziwność w tym, że za każdym razem przy zwykłym pingowaniu z różnych komputerów ta nazwa domenowa daje różny adres IP. Sprawdzanie w Linux:

host boot-01.net.anydesk.com

jak i DNSLookup dają tylko jeden adres IP, ale ten adres jest zmienny. Przy analizie połączeń TCPView otrzymujemy zapisy PTR adresów IP typu relay-*.net.anydesk.com.

Teoretycznie: jeśli ping czasami przechodzi na nieznany niezablokowany host boot-01.net.anydesk.com możemy znaleźć te adresy IP i zablokować je, ta realizacja może być zrobiona za pomocą zwykłego skryptu pod system Linux, tu akurat instalacja AnyDesk nie jest potrzebna. Analiza pokazała, że te IP często "przecinają się" z tymi znalezionymi w naszej liście. Możliwe, że to właśnie ten host, do którego program się łączy przed tym, jak zaczyna "przeszukiwać" znane adresy IP. Prawdopodobnie później uzupełnię artykuł drugą częścią poszukiwań hostów, chociaż w tej chwili sam program w sieci wewnętrznej w ogóle nie nawiązuje zewnętrznych połączeń.

Mam nadzieję, że nie dostrzegli Państwo nic niezgodnego z prawem w powyższym opisie, a twórcy AnyDesk podejdą do moich działań sportowo.

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster