Phân tích khả năng chặn một ứng dụng điều khiển máy tính từ xa qua mạng, sử dụng ví dụ về AnyDesk

Khi một ngày nọ, ông chủ đặt ra câu hỏi: “Tại sao một số người có quyền truy cập từ xa vào máy tính làm việc mà không có được quyền sử dụng bổ sung?”
Nhiệm vụ nảy sinh là “đóng” lỗ hổng.

Phân tích khả năng chặn một ứng dụng điều khiển máy tính từ xa qua mạng, sử dụng ví dụ về AnyDesk
Có rất nhiều ứng dụng để điều khiển từ xa qua mạng: Chrome remote desktop, AmmyAdmin, LiteManager, TeamViewer, Anyplace Control, v.v. Nếu Chrome remote desktop có hướng dẫn chính thức để ngăn chặn quyền truy cập vào dịch vụ, TeamViewer sẽ có các hạn chế cấp phép về thời gian hoặc yêu cầu từ mạng và người dùng “nghiến răng” bằng cách này hay cách khác “tỏa sáng” với quản trị viên, rồi được nhiều người yêu thích cho mục đích sử dụng cá nhân - AnyDesk vẫn cần được đặc biệt chú ý, đặc biệt nếu sếp nói “Không!”

Phân tích khả năng chặn một ứng dụng điều khiển máy tính từ xa qua mạng, sử dụng ví dụ về AnyDesk
Nếu bạn biết việc chặn gói mạng theo nội dung của nó là gì và bạn hài lòng với nó, thì phần còn lại của tài liệu
không có ý định Cho bạn.

Trên thực tế, đang cố gắng đi ngược lại website nó nói những gì phải được phép để chương trình hoạt động; do đó, bản ghi DNS đã bị chặn *.net.anydesk.com. Nhưng AnyDesk không đơn giản, nó không quan tâm đến việc chặn một tên miền.

Ngày xửa ngày xưa, tôi đã giải quyết được vấn đề chặn “Kiểm soát mọi nơi”, vấn đề đến với chúng tôi bằng một số phần mềm đáng ngờ và nó đã được giải quyết bằng cách chỉ chặn một số IP (tôi đã sao lưu phần mềm chống vi-rút). Vấn đề với AnyDesk, sau khi tôi thu thập hơn chục địa chỉ IP theo cách thủ công, kích thích tôi thoát khỏi lao động chân tay thường ngày.

Người ta cũng phát hiện ra rằng trong “C:ProgramDataAnyDesk” có một số tệp có cài đặt, v.v. và trong tệp ad_svc.trace Các sự kiện về kết nối và lỗi được thu thập.

1. Quan sát

Như đã đề cập, việc chặn *.anydesk.com không mang lại bất kỳ kết quả nào trong hoạt động của chương trình, người ta đã quyết định phân tích hành vi của chương trình trong những tình huống căng thẳng. TCPView từ Sysiternals trong tay bạn và bắt đầu!

Phân tích khả năng chặn một ứng dụng điều khiển máy tính từ xa qua mạng, sử dụng ví dụ về AnyDesk

1.1. Có thể thấy rằng một số quy trình mà chúng tôi quan tâm đang bị “treo” và chỉ có quy trình giao tiếp với địa chỉ từ bên ngoài mới được chúng tôi quan tâm. Các cổng mà nó kết nối đã được chọn, theo những gì tôi thấy: 80, 443, 6568. 🙂 Chúng tôi chắc chắn không thể chặn 80 và 443.

1.2. Sau khi chặn địa chỉ thông qua bộ định tuyến, một địa chỉ khác sẽ được chọn một cách lặng lẽ.

Phân tích khả năng chặn một ứng dụng điều khiển máy tính từ xa qua mạng, sử dụng ví dụ về AnyDesk

1.3. Bảng điều khiển là MỌI THỨ của chúng tôi! Chúng tôi xác định được PID và sau đó tôi hơi may mắn khi AnyDesk đã được dịch vụ cài đặt, vì vậy PID mà chúng tôi đang tìm kiếm là cái duy nhất.
1.4. Chúng tôi xác định địa chỉ IP của máy chủ dịch vụ từ quy trình PID.

Phân tích khả năng chặn một ứng dụng điều khiển máy tính từ xa qua mạng, sử dụng ví dụ về AnyDesk

2. Chuẩn bị

Vì chương trình xác định địa chỉ IP có thể sẽ chỉ hoạt động trên PC của tôi nên tôi không có hạn chế nào về sự thuận tiện và lười biếng, vì vậy C#.

2.1. Tất cả các phương pháp xác định địa chỉ IP cần thiết đều đã được biết đến, nó vẫn đang được triển khai.

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

Tương tự, chúng tôi tìm dịch vụ đã thiết lập kết nối, tôi sẽ chỉ cung cấp dòng chính

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

Kết quả của việc đó sẽ là:

Phân tích khả năng chặn một ứng dụng điều khiển máy tính từ xa qua mạng, sử dụng ví dụ về AnyDesk
Từ hàng, tương tự như bước trước, trích xuất cột thứ 3 và xóa mọi thứ sau dấu “:”. Kết quả là chúng ta có IP mong muốn.

2.2. Chặn IP trong Windows. Nếu Linux có Blackhole và iptables, thì phương pháp chặn địa chỉ IP trên một dòng mà không cần sử dụng tường lửa trong Windows hóa ra là không bình thường,
nhưng ở đó có loại công cụ gì...

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

Tham số chính "nếu 1" gửi tuyến đường tới Loopback (Bạn có thể hiển thị các giao diện có sẵn bằng cách chạy in tuyến đường). VÀ QUAN TRỌNG! Bây giờ chương trình cần được khởi chạy với quyền quản trị viên, vì việc thay đổi tuyến đường yêu cầu độ cao.

2.3. Hiển thị và lưu các địa chỉ IP đã xác định là một nhiệm vụ tầm thường và không cần giải thích. Nếu bạn nghĩ về nó, bạn có thể xử lý tập tin ad_svc.trace Bản thân AnyDesk, nhưng tôi chưa nghĩ về nó ngay + có lẽ có một hạn chế nào đó đối với nó.

2.4. Hành vi không đồng đều kỳ lạ của chương trình là khi “taskkilling” tiến trình dịch vụ trong Windows 10, nó tự động khởi động lại, trong Windows 8 thì kết thúc, chỉ để lại tiến trình console và không kết nối lại, nói chung là phi logic và điều này không chính xác.

Việc xóa một tiến trình đã kết nối với máy chủ cho phép bạn "buộc" kết nối lại với địa chỉ tiếp theo. Nó được triển khai theo cách tương tự như các lệnh trước đó, vì vậy tôi sẽ chỉ đưa ra:

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

Ngoài ra, hãy khởi chạy chương trình AnyDesk.

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

2.5. Chúng tôi sẽ kiểm tra trạng thái của AnyDesk mỗi phút một lần (hoặc thường xuyên hơn?) và liệu nó có được kết nối hay không, tức là. kết nối ĐƯỢC THIẾT LẬP - chặn IP này và lặp lại tất cả - đợi cho đến khi nó kết nối, chặn và đợi.

3. Tấn công

Mã đã được "phác thảo" và người ta quyết định trực quan hóa quy trình "+" cho biết IP được tìm thấy và bị chặn, và "."—lặp lại việc kiểm tra mà không có kết nối hàng xóm thành công từ AnyDesk.

Phân tích khả năng chặn một ứng dụng điều khiển máy tính từ xa qua mạng, sử dụng ví dụ về AnyDesk

Mã số dự án

Kết quả là…

Phân tích khả năng chặn một ứng dụng điều khiển máy tính từ xa qua mạng, sử dụng ví dụ về AnyDesk
Chương trình hoạt động trên một số máy tính có hệ điều hành Windows khác nhau, với các phiên bản AnyDesk 5 và 6. Hơn 500 lần lặp, khoảng 80 địa chỉ đã được thu thập. Với 2500 - 87, v.v....

Theo thời gian, số lượng IP bị chặn đã lên tới hơn 100.

Liên kết đến cuối cùng tập tin văn bản với các địa chỉ: thời gian и два

Thế là xong! Nhóm địa chỉ IP đã được thêm vào các quy tắc của bộ định tuyến chính thông qua tập lệnh và AnyDesk đơn giản là không thể tạo kết nối bên ngoài.

Có một điểm kỳ lạ, từ nhật ký ban đầu cho thấy rõ địa chỉ này có liên quan đến việc truyền thông tin boot-01.net.anydesk.com. Tất nhiên, chúng tôi đã chặn tất cả các máy chủ *.net.anydesk.com như một quy tắc chung, nhưng đó không phải là điều kỳ lạ. Mỗi lần ping bình thường từ các máy tính khác nhau, tên miền này sẽ cho một IP khác nhau. Kiểm tra trên Linux:

host boot-01.net.anydesk.com

giống như DNSLookup, chúng chỉ cung cấp một địa chỉ IP, nhưng địa chỉ này có thể thay đổi. Khi phân tích kết nối TCPView, chúng tôi nhận được bản ghi PTR của các địa chỉ IP thuộc loại tiếp sức-*.net.anydesk.com.

Về mặt lý thuyết: vì ping đôi khi đi đến một máy chủ không bị chặn boot-01.net.anydesk.com chúng ta có thể tìm thấy những ip này và chặn chúng, biến việc triển khai này thành một tập lệnh thông thường trong HĐH Linux, ở đây không cần cài đặt AnyDesk. Phân tích cho thấy các IP này thường "giao nhau"với những thứ được tìm thấy trong danh sách của chúng tôi. Có lẽ chương trình chỉ kết nối với máy chủ này trước khi bắt đầu "sắp xếp" các IP đã biết. Sau này, có lẽ tôi sẽ bổ sung phần thứ 2 của bài viết về tìm kiếm máy chủ, mặc dù hiện tại Bản thân chương trình không cài đặt trong phạm vi kết nối bên ngoài của mạng nói chung.

Tôi hy vọng bạn không thấy bất cứ điều gì bất hợp pháp ở trên và những người tạo ra AnyDesk sẽ xử lý hành động của tôi theo cách thể thao.

Nguồn: www.habr.com

Thêm một lời nhận xét