Trình kiểm tra RDP tự động cho cấu hình

Xem xét chủ đề về các lỗ hổng hệ thống Windows, chúng ta sẽ tiếp tục nói về các cuộc tấn công nhằm vào các mạng công ty bị ảnh hưởng. Điều đáng ngạc nhiên là kỹ thuật Pass-the-Hash hiện hoạt động cho các kết nối RDP. Nghĩa là, chúng tôi có thể xác thực bằng cách sử dụng hàm băm NTLM của người dùng khi kết nối qua RDP!

Mặt khác, gần đây tôi được biết rằng không phải tất cả mọi người đều biết PtH là gì. Vì vậy tôi sẽ nói ngắn gọn với bạn về vấn đề này.
Vì vậy, hãy bắt đầu với thực tế là HĐH Windows là một hệ thống nhiều người dùng và do đó nó cần lưu trữ mật khẩu của người dùng. Nhưng việc lưu trữ chúng trong bản rõ không an toàn và do đó chúng được lưu trữ dưới dạng băm. Băm là hàm một chiều, kết quả của hàm này không thể được xác định từ giá trị đầu vào (nghĩa là không thể “giải mã”). Băm NT là định dạng mà Windows lưu trữ mật khẩu. Hơn nữa, tôi muốn nhấn mạnh rằng ngay cả khi đó là máy chủ hoặc miền riêng biệt thì định dạng lưu trữ vẫn giống nhau.


Điểm quan trọng thứ hai là sự hỗ trợ sâu sắc cho Đăng nhập một lần (“xác thực tự động một lần”) của Windows dựa trên xác thực NTLM. Nó không truyền văn bản rõ ràng về mật khẩu hoặc hàm băm NT. Thuật toán như sau: đầu tiên máy khách gửi yêu cầu kết nối, sau đó máy chủ trả về một chuỗi (thử thách) được tạo ngẫu nhiên. Sau đó, khách hàng lấy hàm băm của người dùng, kết nối nó với thử thách, băm nó và gửi nó đến máy chủ. Đến lượt anh ấy cũng làm như vậy. Và nếu các giá trị băm khớp nhau thì người dùng đã đúng.

Kết luận ở đây là hàm băm NT tương đương chính xác với mật khẩu của người dùng. Xét cho cùng, hầu hết tất cả các dịch vụ tồn tại trong hệ sinh thái Windows đều hỗ trợ xác thực NTLM. Ví dụ: HTTP, SMB (thông qua đó chúng ta có thể kết nối và quản lý máy chủ từ xa), SMTP, FTP, kết nối với máy chủ SQL, v.v.

Do đó, bằng cách hack một số máy chủ trong miền, chúng tôi có thể lấy giá trị băm của người dùng từ bộ nhớ và sau đó di chuyển khắp mạng, xác thực với họ ở mọi nơi. Kỹ thuật này được gọi là Pass-the-Hash. Kết quả là, việc bảo vệ miền gấp lại như một ngôi nhà bằng thẻ.

Ngoại lệ luôn là giao thức RDP. Trước đây, bạn chỉ có thể kết nối bằng cách nhập mật khẩu. Và đây là một vấn đề, vì thường có các phân đoạn đóng (ví dụ như DMZ) trong mạng công ty, nơi chỉ cho phép truy cập RDP trên tường lửa (để quản trị viên có thể quản trị).

Vì vậy, theo mặc định, trong Windows 8.1 và 2012 R2 hiện đã hỗ trợ xác thực hàm băm. Nhưng ban đầu Microsoft gọi chức năng này là Chế độ quản trị viên hạn chế và tất nhiên họ không nói về việc “hỗ trợ” cho PtH.

Vì vậy, hãy gửi lời cảm ơn đến các nhà nghiên cứu từ labs.portcullis.co.uk vì đã nói cho thế giới biết toàn bộ sự thật (để biết chi tiết, hãy xem video ở đó). Bây giờ nói ngắn gọn về thực hành. Tất cả những gì chúng ta cần kết nối là kết quả nỗ lực của Dự án FreeRPD, tức là một ứng dụng khách RDP nguồn mở (được bao gồm trong Kali theo mặc định). Sau khi xuất bản nghiên cứu, họ đã xây dựng hỗ trợ PtH ngay trong nghiên cứu. Do đó, để kết nối chúng ta cần dòng sau trong bảng điều khiển:

xfreerdp /d:domain_name /u:Quản trị viên /pth: 8846F7EAEE8FB117AD06BDD830B7586C/v: 192.168.0.1

trong đó sau /d: là tên miền,
sau /u: - tên người dùng,
sau /pth: -hash,
sau /v: - IP máy chủ.

Cần bán một trình kiểm tra cấu hình máy chủ RDP đa luồng hoàn toàn tự động. Trình kiểm tra được viết bằng C++ và dựa trên giao thức RDP thuần túy mà không sử dụng bất kỳ thư viện của bên thứ ba nào. Việc tổ chức đa luồng hợp lý cho phép bạn tận dụng tối đa phần cứng và giảm thiểu thời gian cần thiết để quét các danh sách lớn.

Máy kiểm tra có những ưu điểm sau
Hoạt động trong một số chủ đề, không phải quy trình. Điều này chủ yếu là do việc triển khai giao thức bằng socket thuần túy được sử dụng. Không có thư viện chuyên dụng nào của Microsoft được sử dụng.
Quá trình xác minh máy chủ hoàn toàn tự động. Không cần thao tác thủ công! Chỉ cần chạy trình kiểm tra một lần và quên hoạt động của nó là đủ. Anh ấy sẽ tự mình làm phần còn lại.
Hoạt động với tất cả các phiên bản của hệ điều hành Windows - từ XP đến Windows 10. Hệ điều hành máy chủ cũng được hỗ trợ. Nhiều máy đã tham gia thử nghiệm, bao gồm Windows 7, Windows Server 2003, Windows Server 2008, Windows Server 2012.
Trong quá trình hoạt động, clipboard vẫn còn nguyên. Một sơ đồ đồng bộ hóa tệp được sử dụng, giúp ẩn hoạt động của trình kiểm tra trên máy. Bạn có thể bình tĩnh tiếp tục công việc của mình và quên rằng anh ấy đang làm công việc của mình.
Chỉ một thư mục tạm thời đặc biệt được chia sẻ chứ không phải toàn bộ đĩa. Điều này cho phép bạn chạy trình kiểm tra mà không sợ ai đó từ máy chủ có thể lấy hoặc thay đổi các tệp trên máy đang chạy trình kiểm tra.

Người kiểm tra có thể làm
Khởi chạy các tệp exe tùy ý (với số lượng bất kỳ) trên máy từ xa.
Nhận thông tin hệ thống về máy tính: tên và phiên bản hệ điều hành, độ sâu bit của hệ điều hành, tài khoản có quyền quản trị hay không, kiểu bộ xử lý và số lõi, kích thước RAM.
Xác định tốc độ vào và ra của kết nối Internet (máy chủ gần nhất để kiểm tra được xác định tự động).
Xác định địa chỉ IP thực bên ngoài và từ đó xác định quốc gia, khu vực, thành phố, ZIP, nhà cung cấp, ISP, máy chủ thư, múi giờ.
Kiểm tra địa chỉ IP bên ngoài thực sự để biết sự hiện diện của nó trong danh sách đen, đồng thời xác định điểm proxy của địa chỉ này.
Xác định trình duyệt mặc định.

Tính năng kiểm tra
Khả năng tạm dừng trình kiểm tra và tiếp tục từ nơi nó dừng lại.
Khả năng thay đổi nóng số lượng chủ đề trong thời gian tạm dừng. Không cần phải bắt đầu lại quá trình kiểm tra chỉ để thay đổi số lượng chủ đề. Bạn có thể thay đổi hoàn toàn các cài đặt khác theo cách tương tự. Bạn chỉ cần tạm dừng, thực hiện thay đổi và sau đó tiếp tục.
Kiểm soát hoàn toàn tất cả thời gian chờ.
Khả năng chỉ định số lần thử với thời gian chờ tự động tăng trong trường hợp thử kết nối không thành công. Điều này cho phép bạn kết nối với cả những máy chủ rdp có vấn đề nhất.

Yêu cầu hệ thống
Phải cài đặt Microsoft Visual C++ 2012 Redistributable trên hệ thống
Số lượng luồng có thể phụ thuộc hoàn toàn vào RAM và khả năng xử lý. Dung lượng bộ nhớ trung bình cần thiết cho một luồng là 3 megabyte.

Chi phí kiểm tra: 0,7 BTC (không được liên kết) [~$400]
liên hệ jid:

Giống như các phiên bản máy khách trước đây của hệ điều hành Microsoft, người dùng phiên bản Pro và Enterprise của phiên bản Windows 10 (nhưng không phải Home) có thể kết nối từ xa với máy tính của họ thông qua Dịch vụ Máy tính Từ xa (RDP). Tuy nhiên, có giới hạn về số lượng phiên RDP đồng thời - mỗi lần chỉ một người dùng từ xa có thể làm việc. Khi cố gắng mở phiên RDP thứ hai, phiên của người dùng đầu tiên sẽ được nhắc kết thúc.

Trong phiên bản tiếng Anh, cảnh báo là:

Một người dùng khác đã đăng nhập. Nếu bạn tiếp tục, chúng sẽ bị ngắt kết nối. Bạn vẫn muốn đăng nhập?

Thực tế là trong các phiên bản máy tính để bàn của hệ điều hành Microsoft có những hạn chế chính sau đây đối với việc sử dụng dịch vụ máy tính từ xa:

  1. Hỗ trợ truy cập RDP chỉ khả dụng trong các phiên bản Windows cũ hơn (Chuyên nghiệp trở lên) và trong các phiên bản gia đình (Trang chủ), chức năng này bị tắt.
  2. Chỉ có thể có một kết nối RDP từ xa. Khi cố gắng mở phiên RDP thứ hai, người dùng sẽ được nhắc chấm dứt kết nối hiện có.
  3. Trong trường hợp đó, có một người dùng đang làm việc trên bảng điều khiển máy tính (cục bộ), có kết nối RDP từ xa, phiên của anh ta sẽ bị ngắt kết nối (bị chặn). Tuyên bố ngược lại cũng đúng: phiên RDP từ xa bị buộc phải chấm dứt nếu người dùng đăng nhập vào bảng điều khiển hệ thống

Trên thực tế, giới hạn về số lượng kết nối rdp đồng thời không phải là kỹ thuật mà là giới hạn cấp phép, cấm tạo kết nối dựa trên máy trạm. phần cuối Máy chủ RDP cho nhiều người dùng. Mặc dù từ quan điểm kỹ thuật, bất kỳ phiên bản Windows nào, nếu có đủ bộ nhớ, đều có thể hỗ trợ công việc đồng thời của vài chục người dùng từ xa (trung bình cần 150-200 MB bộ nhớ cho một phiên người dùng, không bao gồm các ứng dụng đang chạy) . Những thứ kia. Về lý thuyết, số lượng phiên đồng thời tối đa chỉ bị giới hạn bởi tài nguyên máy tính.

Chúng tôi sẽ xem xét hai cách để vô hiệu hóa giới hạn số lượng kết nối RDP đồng thời trong Windows 10:

Quan trọng. Ban đầu, trong phiên bản đầu tiên của bài viết, tùy chọn hoạt động chính để loại bỏ giới hạn về số lượng kết nối người dùng RDP đồng thời là phương pháp sửa đổi và thay thế tệp termrv.dll trong thư mục %SystemRoot%\System32. Tuy nhiên, khi cài đặt bản dựng Windows 10 mới hoặc một số bản cập nhật bảo mật, tệp này sẽ được cập nhật. Kết quả là bạn phải chỉnh sửa tệp này bằng trình soạn thảo Hex mỗi lần, điều này khá tẻ nhạt. Do đó, cách chính để tổ chức một máy chủ đầu cuối miễn phí trên máy khách Windows 10 là xem xét tiện ích Thư viện trình bao bọc RDP.

Ghi chú. Các sửa đổi hệ thống được mô tả trong bài viết này có thể sẽ bị coi là vi phạm Thỏa thuận cấp phép Windows và chịu mọi hậu quả sau đó.

Thư viện trình bao bọc RDP

Một cách khác để sửa đổi tệp termsrv.dll là sử dụng dự án Thư viện trình bao bọc RDP. Chương trình này hoạt động như một lớp giữa trình quản lý kiểm soát dịch vụ (SCM-Service Control Manager) và dịch vụ đầu cuối (Dịch vụ đầu cuối) và cho phép bạn không chỉ kích hoạt hỗ trợ cho một số phiên RDP đồng thời mà còn kích hoạt hỗ trợ cho RDP Host trên các phiên bản gia đình của Windows 10. RDP Wrapper không thực hiện thay đổi nào đối với tệp termsrv.dll, chỉ cần tải termsrv với các tham số đã thay đổi.

Như vậy, giải pháp này sẽ hoạt động ngay cả khi bạn cập nhật phiên bản của file termsrv.dll nên bạn không phải lo lắng về các bản cập nhật Windows.

Quan trọng. Trước khi cài đặt RDP Wrapper: điều quan trọng là bạn phải sử dụng phiên bản gốc (chưa được vá) của tệp termsrv.dll. Nếu không, RDP Wrapper có thể không hoạt động ổn định hoặc hoàn toàn không khởi động.

Bạn có thể tải xuống RDP Wrapper từ kho GitHub: https://github.com/binarymaster/rdpwrap/releases (phiên bản mới nhất hiện có của RDP Wrapper Library v1.6.2 đã được phát hành tương đối gần đây - ngày 28 tháng 12 năm 2017). Đánh giá theo thông tin trên trang của nhà phát triển, tất cả các phiên bản Windows đều được hỗ trợ. Windows 10 được hỗ trợ lên tới bản dựng Insider Preview 10.0.17063.1000 ngày 13 tháng 12 năm 2017.

Khuyên bảo. Nhân tiện, các nguồn Thư viện trình bao bọc RDP có sẵn, cho phép bạn tự lắp ráp các tệp thực thi nếu muốn.

Kho lưu trữ RDPWrap-v1.6.2.zip chứa một số tệp:

  • RDPWinst.exe - chương trình cài đặt/gỡ bỏ cho Thư viện trình bao bọc RDP
  • RDPConf.exe - Tiện ích cấu hình RDP Wrapper
  • RDPCheck.exe - Local RDP Checker - Tiện ích kiểm tra RDP
  • install.bat, uninstall.bat, update.bat - các tệp bó để cài đặt, gỡ cài đặt và cập nhật RDP Wrapper

Để cài đặt tiện ích, hãy chạy file install.bat với quyền quản trị viên.

Sau khi cài đặt xong, hãy chạy RDPConfig.exe. Và hãy chắc chắn rằng trong phần Chẩn đoán tất cả các yếu tố được sơn màu xanh lá cây.

Ghi chú. Trong trường hợp của tôi, bởi vì Không có quyền truy cập Internet trên máy tính; chương trình không thể lấy được từ Github phiên bản hiện tại của tệp INI có cài đặt cho phiên bản Windows của tôi. Đó là lý do tại sao trạng thái nói . Tải xuống tệp rdpwrap.ini từ tài nguyên phát triển và đặt nó vào thư mục cài đặt. Khởi động lại dịch vụ và đảm bảo rằng nhãn thay đổi thành .

Trong số các tính năng thú vị của phiên bản RDP Wrapper mới:

  • lựa chọn Trốnngười dùngTRÊNđăng nhậpmàn hình- cho phép.
  • Khi bạn tắt tùy chọn Phiên duy nhất cho mỗi người dùng- một số phiên RDP đồng thời sẽ được phép trong một tài khoản (khóa đăng ký được đặt fSingleSessionPerUser= 0 trong nhánh HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser).

Nếu sau khi cập nhật phiên bản Windows, RDP Wrapper không hoạt động, hãy kiểm tra xem phần Chẩn đoán có chứa dòng chữ hay không.

Hãy thử cập nhật tệp ini bằng tập lệnh cập nhật.bat hoặc cài đặt lại dịch vụ theo cách thủ công

rdpwinst.exe -u
rdpwinst.exe -i

Chúng tôi đang cố gắng mở phiên RDP thứ hai. Mọi thứ đã làm ra! Giờ đây, Windows 10 của chúng tôi cho phép hai người dùng từ xa kết nối đồng thời qua RDP.

Tiện ích này sẽ hoạt động trên tất cả các phiên bản Windows hiện được hỗ trợ: Windows Vista, Windows 7, Windows 8, Windows 8.1 và Windows 10. Do đó, bạn có thể tạo một máy chủ đầu cuối từ bất kỳ phiên bản máy khách nào của Windows.

Sửa đổi tập tin termsrv.dll

Ghi chú. Phương pháp này được áp dụng chỉ một sang phiên bản RTM của Windows 10 x64 (10240).

Bạn có thể loại bỏ giới hạn về số lượng kết nối RDP bằng cách sửa đổi tệp termsrv.dll (tệp thư viện được dịch vụ Remote Desktop Services sử dụng). Tệp nằm trong thư mục C:\Windows\System32).

Trước khi sửa đổi tệp termsrv.dll, bạn nên tạo một bản sao lưu của tệp đó (nếu cần, bạn có thể quay lại phiên bản gốc của tệp):

sao chép c:\Windows\System32\termsrv.dll termsrv.dll_backup

Trước khi chỉnh sửa tệp termsrv.dll, bạn cần phải trở thành chủ sở hữu của nó và cung cấp cho nhóm quản trị viên toàn quyền đối với tệp đó (tất cả các thao tác được thực hiện tương tự như các thao tác được mô tả trong bài viết). Sau đó dừng dịch vụ Remote Desktop (TermService) từ bảng điều khiển services.msc hoặc từ dòng lệnh:

Dịch vụ dừng ròng

Đối với phiên bản Windows 10 x64 RTM (phiên bản tệp termsrv.dll - 10.0.10240.16384): Mở tệp termsrv.dll bằng bất kỳ trình soạn thảo HEX nào (ví dụ: Tiny Hexer)

Tìm dòng:

39 81 3C 06 00 00 0F 84 73 42 02 00

Và thay thế nó bằng:

B8 00 01 00 00 89 81 38 06 00 00 90

Lưu tệp và khởi động dịch vụ TermService.