Báo cáo password cracking
Trang 1Nhóm : GVHD:
Nguyễn Hải Đăng
Nguyễn Hồ VươngTrương Quang Minh
Trang 2Password Crack
I Giới Thiệu SAM
II Tổng Quát cơ chế Mã Hóa Password Trong Windows
III Xử Lý Logon Trong Windows
IV.Các kiểu Tấn Công
V DEMO
Trang 3 SAM (security account manager) lưu trữ username
và password của user
Password của user lưu trong SAM thì đã được mã hóa
Password của user acccount là sự kết hợp của 2 loại password: LAN Manager và Window NT password
Password lưu trong SAM có qua 2 lần mã hóa
Dùng OWF
Mã hóa theo user ID
User có thể thiếu 1 trong 2 loại mật khẩu
Trang 4System key technology
System key(syskey) là 1 kĩ thuật dùng để bảo vệ file SAM của Microsoft
Xuất hiện đầu tiên ở Service Pack 2,nhưng được
phát triển ở Service Pack 3
Thuật toán mã hóa của syskey có chiều dài key 128 bit
Được thực hiện bởi syskey.exe
Trang 5System key
Để kích hoạt syskey :Run-> syskey->update
Password Startup
Store startup key on floppy disk
Store Startup key Locally
Trang 6SAM Registry key
Key SAM được lưu trữ trong
HKEY_LOCAL_MACHINE được quản lí bởi Registry Editor(regedt32.exe)
Chỉ có System mới thay đổi chỉnh sửa được
Trang 7SAM on Storage Subsystems
SAM và Syskey được lưu trong 2 thư mục
Trang 8SAM on Network
Nếu computer là 1 phần của domain thì SAM được lưu trữ trong active directory
SAM lưu trữ thông tin, quyền hạn của user và
group trong domain
Trang 9II.CƠ CHẾ MÃ HÓA PASSWORD CỦA
WINDOWS
Trang 10MÃ HÓA PASSWORD TRONG
WINDOWS
User record được lưu trữ trong cơ sở dữ liệu
Security Accouts Manager(SAM) hoặc trong cơ sở
dữ liệu Active Directory
Mỗi user account được kết hợp bởi 2 password:
+LAN Manager Compatible Password.
+WinDows Password.
Trang 11 Còn được gọi là LM Hash.
Được giới thiệu đầu tiên bởi các hệ điều hành cũ
như Windows 95,98…
Hiện nay vẫn còn được sử dụng bởi windows
2000,windows xp,vista… vì lý do tương thích ngược với các hệ điều hành cũ hơn
LAN Manager-compatible password:
Trang 12 Password này dựa trên OEM character set
Chiều dài tối đa là 14 ký tự
Các bước để tính LM hash:
Password uppercase
Password được null-padded 14bytes
Được chi đôi thành 7bytes mỗi phần.
Mỗi 7bytes 8bytes DES key
Mỗi key dùng để mã hóa constand “KGS!@#$%”ciphertext
2 ciphertext được nối lại với nhauLM hash
LAN Manager-compatible password:
Trang 14 Khuyết điểm:
Chiều dài password<15 ký tự
Không phân biệt ký tự hoa và thường.
Password được chia làm hai phần khiến dễ bị tấn công hơn
vì Spacekey^ 14 >>spacekey^7.
*LM HASH là một weak password
LAN Manager-compatible password:
Trang 15 Được giới thiệu bởi Windows NT, để tăng tính an toàn cho password so với việc sử dụng LM hash.
Dựa trên unicode char set
Chiều dài nó có thể được nâng lên 128 ký tự
Password này được tính bằng cách sử dụng thuật toán mã hóa RSA MD-4
Windows Password(NT HASH)
Trang 16PASSWORD/U SER INFORM
NT window
s Hash
Windows Password(NT HASH)
Trang 17III.XỬ LÝ LOGON TRONG WINDOWS
Trang 18XỬ LÝ LOGON TRONG WINDOWS
LOCAL MACHINE LOGON DOMAIN LOGON
Trang 19 Windows sử dụng LsaLogonUser API để thực hiện quá trình xác thực.
LsaLogonUser API gọi gói phần mềm xác thực
Trang 20 Gói xác thực MSV được chia thành hai phần: top và bottom half.
Top half chạy trên máy tính đăng nhập(local
machine), nó mã hóa password và chuyển nó thành : LAN Manager password và Windows password Tùy vào local machine logon hay domain logon mà nó có những chiến lược xử lý khác nhau.
bottom half chạy trên máy tính chứa thông tin user account,nó truy vấn password trong SAM và so
sánh với password đưa vào để quyết định kết quả của quá trình xác thực.
XỬ LÝ LOGON TRONG WINDOWS
Trang 21LOCAL MACHINE LOGON
process
TOP HALF BOTTOM HALF
M S V 1 _ 0
P a c k e t
1.Encrypt/hash
2.Send
SAM DATAbase
3.Quer y
4.Send stored hash password
User/password
5.compare Reply result
Trang 22DOMAIN LOGON
Trang 23Some LAN Authentication protocols
LM Authentication
NTLM Authentication
+NTLMv1
+NTLMv2
Trang 24NT LAN Manager Authentication
NTLM là một giao thức xác thực được sử dụng bởi Microsoft Windows để xác thực giữa client và server
NTLM là tên một tập các security protocol của
Windows
Nó là một challenge-response style
authentication protocol
Trang 25 Giao thức này sử sử dụng một challenge-response trao đổi messages trình tự giữa client và server:
Trang 26 NEGOTIATE_MESSAGE:
The NEGOTIATE_MESSAGE định nghĩa một NTLM
Negotiate message,nó được gửi từ client đến server Yêu cầu mở một session authentication.
CHALLENGE_MESSAGE
The CHALLENGE_MESSAGE định nghĩa một NTLM
challenge message được gửi từ server đến client, chứa challenge random
AUTHENTICATE_MESSAGE
Chứa respond được tính bởi client (DES(Unicode pwd,
nonce) được gửi đến server.
NT LAN Manager Authentication
Trang 28 C = 8-byte server challenge
random K1 | K2 | K3 = NT-Hash | 5-bytes-0
R1 = DES(K1,C) | DES(K2,C) | DES(K3,C) K1 | K2 | K3 = LM-Hash | 5-bytes-0
R2 = DES(K1,C) | DES(K2,C) | DES(K3,C)
response = R1 | R2
NTLMv1
Trang 30 CS = 8-byte server challenge, random
CC = 8-byte client challenge, random
CC* = (X, time, CC, domain name)
v2-Hash = HMAC-MD5(NT-Hash, user name, domain name)
LMv2 = HMAC-MD5(v2-Hash, CS, CC)
NTv2 = HMAC-MD5(v2-Hash, CS, CC*)
response = LMv2 | CC | NTv2 | CC*
Trang 31NTLMv2
Trang 32DOMAIN LOGON
Trang 33 Top Half MSV hướng cho request đến netlogon
service(nsl) của máy hiện tại Sau đó nsl truyền request đến cho netlogon service của máy remote.
Server trả về “nonce” (16bit challenge), “nonce” và
hashed password được merge với nhau và gửi lại server.
the Netlogon service of the authenticating machine
hướng the request đến bottom half của gói MSV
The bottom half of the MSV Authentication Package truy vấn the passwords trong SAM và so sánh nó để đảm bảo passwords nhập vào có hợp lện không.
Trang 34DOMAIN LOGON
NetLogon service
Bottom HALF
Hashed password
2.Send request 3.nonce
4.Merged password
5.Send m-p
query reply
6.r es ult 7.result
Trang 35IV.Các kiểu tấn công
Trang 37Dictionary Attacks
Dictionary password attack là lôi những từ trong từ điển hay một
danh sách từ(wordlist) để thử tìm ra password của một user.
Dictionary attack sử dụng một từ điển định trước để tìm kiếm sự hợp
nhau giữa password được mã hóa và từ trong từ điển được mã hóa
Dictionary attack khôi phục password của một user trong một thời
gian ngắn nếu những từ trong dictionary được sử dụng đơn giản.
Trang 38Cấu trúc một WordList
Trang 39Hybrid Attacks
Hybrid attack cũng sử dụng một từ điển hay một danh
sách từ tương tự như dictionary attack nhưng nó thông
minh hơn ở chỗ tự động gắn thêm những ký tự và số tới những từ trong từ điển để thử bẻ khóa password của user
Ví dụ:
Một user có password là password
Những biến thể: 1password, password1, p@ssword,
pa44w0rd, …
Trang 40Brute force Attacks
Brute force attack sử dụng những số và ký tự ngẫu nhiên để bẻ khóa
password của một user
Brute force thử kiểm định mỗi bộ kết hợp của letters, numbers, and
characters
Brute force attack trên một password được mã hóa có thể mất nhiều
giờ,ngày,tháng,hoặc năm,phụ thuộc vào độ phức tạp và chiều dài của password
Tốc độ thành công phụ thuộc vào tốc độ công suất CPU
Trang 41Tool: Cain
Cain là công cụ đa năng có khả năng thực hiện nhiều tác
vụ khác nhau,bao gồm: password cracking, Windows
enumeration, and VoIP sniffing,…
Phần password cracking của chương trình có thể thực hiện
là dictionary,brute force,và đặc biệt sử dụng pre-computer
rainbow tables.
Trang 42Password Cracking in Cain
Trang 43Rainbow Attack
Trước đây, dictionary, hybrid, and brute force là những phương pháp chính được sử dụng để khôi phục password hay bẻ khóa chúng
Nhiều password được xem là an toàn vì thời gian để bẻ khóa chúng là khá lâu
Nhân tố thời gian là cái làm cho password thấy được bảo mật
Một phương pháp tương đối mới để bẻ khóa password được nảy sinh trong tư tưởng
-> Rainbow Attack
Trang 44Rainbow Attack
RainbowCrack technique is the implementation of Philippe
Oechslin's faster time-memory trade-off technique.
Nó làm việc dựa trên việc tính trước tất cả password có thể có.
Sau khi quá trình time-consuming này hoàn thành,password và thông tin khác được mã hóa của chúng được chứa trong một file gọi là rainbow table
Một password được mã hóa có thể được so sánh nhanh với giá trị chứa trong table và bẻ khóa trong một vài giây
Ophcrack là công cụ bẻ khóa password áp dụng kỹ thuật
rainbow table.
Trang 46Brute force
• Cách crack hash không phức tạp lắm là brute force
• Với Brute force ,tất cả plaintext đề cử và những hash tương ứng được tính 1-1(1plaintext-1hash)
• So sánh giá trị hash được tính với hash đích
• Nếu giống nhau thì plaintext được tìm ra
• Ngược lại,quá trình tiếp tục cho tới khi tìm hết các plaintext đề cử
Trang 48Xây dựng RainbowCrack
Phần mềm RainbowCrack gồm 3 công cụ chính: rtgen,
rtsort, rcrack
Step 1: Use rtgen program to generate rainbow tables
Step 2: Use rtsort program to sort rainbow tables generated
by rtgen.
Step 3: Use rcrack program to lookup rainbow tables sorted
by rtsort.
Trang 49Step 1: Use rtgen program to generate rainbow tables
rtgen hash_algorithm charset plaintext_len_min
plaintext_len_max table_index chain_len chain_num
part_index
hash_algorithm: LM, NTLM, MD5,…
Charset : Tập hợp tất cả những ký tự có thể dùng làm plaintext trong rainbow table,được định nghĩa trong charset.txt
Trang 50Step 1: Use rtgen program
Table _index: tăng dần từ 0 trở lên,có liên quan đến
"reduce function" được sử dụng trong rainbow table
chain_len: là chiều dài của mỗi “rainbow chain” trong rainbow table Một rainbow table chứa nhiều rainbow chain
Trang 51Step 1: Use rtgen program
to generate rainbow
tables(cont)
chain_num: số rainbow chain trong rainbow table
part_index: tham số này xác định “start point” của
mội dòng rainbow chain được phát sinh
Trang 52Select Good Parameters
key space is the number of possible plaintexts for the charset, plaintext_len_min and plaintext_len_max selected.
table size: 3 GB
success rate : 0.999 (99.9%)
Trang 53 table generation commands :
rtgen md5 loweralpha-numeric 1 7 0 3800 33554432 0 rtgen md5 loweralpha-numeric 1 7 1 3800 33554432 0 rtgen md5 loweralpha-numeric 1 7 2 3800 33554432 0 rtgen md5 loweralpha-numeric 1 7 3 3800 33554432 0 rtgen md5 loweralpha-numeric 1 7 4 3800 33554432 0 rtgen md5 loweralpha-numeric 1 7 5 3800 33554432 0
Lưu ý: nếu sử dụng thuật toán LM thì charset phải là alpha-numeric.LM không bao giờ sử dụng lowercase trong plaintext
Trang 55Step 2: Use rtsort program
to sort rainbow tables
Rtsort được sử dụng để sắp xếp “end point” của tất cả rainbow chain trong rainbow table để cho việc tìm kiếm bảng được dễ dàng
rtsort md5_loweralpha-numeric#1-7_0_3800x33554432_0.rt rtsort md5_loweralpha-numeric#1-7_1_3800x33554432_0.rt rtsort md5_loweralpha-numeric#1-7_2_3800x33554432_0.rt rtsort md5_loweralpha-numeric#1-7_3_3800x33554432_0.rt rtsort md5_loweralpha-numeric#1-7_4_3800x33554432_0.rt rtsort md5_loweralpha-numeric#1-7_5_3800x33554432_0.rt
Mỗi dòng lệnh mất khoảng 1-2phút để hoàn thành
Trang 56Step 3: Use rcrack
program to lookup rainbow tables
Rcrack được sử dụng để tìm rainbow table
Nó chỉ nhận những rainbow table đã được sắp xếp
Giả sử những bảng rainbow đã được sắp xếp được đặt trong
thư mục c:\rt,để crack ta dùng lệnh:
rcrack c:\rt\*.rt -h your_hash_comes_here
- The first parameter specifies the path to the rainbow tables to
lookup
- The "*" and "?" character can be used to specify multiple files.
- Thông thường mất khoảng 2-10s để hoàn thành,nếu plaintext
nằm trong charset được chọn và chiều dài plaintext.Ngược lại
thì mất khá lâu để tìm trong tất cả các bảng
Trang 57Step 3: Use rcrack
program to lookup rainbow tables(cont)
Crack multiple hashes,đặt tất cả hash trong file text,mỗi
hash một dòng :
rcrack c:\rt\*.rt -l hash_list_file
Nếu rainbow table được tạo sử dụng thuật toán LM,thì
chương trình rcrack đặc biệt hỗ trợ nó với tùy chọn “-f”
rcrack c:\rt\*.rt -f pwdump_file
Trang 58Step 3: Use rcrack
program to lookup rainbow tables(cont)
A hash dump file in pwdump format is required as input to rcrack program The file will looks like this:
Administrator:500:1c3a2b6d939a1021aad3b435b51404ee:e24106 942bf38bcf57a6a4b29016eff6:::
Guest:501:a296c9e4267e9ba9aad3b435b51404ee:9d978dda95e51 85bbeda9b3ae00f84b4:::
The pwdump file is the output of pwdump2, pwdump3 or other
utilities It contains both the lm hash and the ntlm hash.
Thuật toán LM chuyển tất cả chữ thường trong plaintext thành chữ
HOA,kết quả là plaintext qua LM hash không bao giờ chứa chữ
thường,trong khi thực tế plaintext có thể chứa chữ thường.Chương
trình rcrack sẽ thử hiệu chỉnh trường hợp đó với NTLM hashes chứa trong file SAM và xuất ra plaintext nguồn.
Trang 59 Crack password trong LAN(pwdump)
Crack trong physical
Crack pass trong Lan (sniffer)
Trang 60Demo Crack password trong
LAN
Giả sử trên máy victim ta đã biết user “minh” password là
“hacker” thuộc group administrators(thông qua việc
Trang 61Demo Crack password trong LAN
pwdump3.exe 10.0.0.2 C:\password.txt minh
Sau đó nhập password của user minh
Trang 62Demo Crack password trong LAN
Trang 63Demo Crack password trong LAN
Trang 64Demo Crack password trong LAN
Trang 65Demo Crack password trong LAN
Trang 66Demo Crack password trong LAN
Trang 67Demo : Physical- lấy file
SAM
Tool : đĩa cd,usb hỗ trợ boot, Cain
Điều kiện : máy victim phải cho phép boot từ thiết bị ngoại vi
Trong môi trường boot copy file SAM trong thư mục
%systemroot%/system32/config sang thiết bị lưu trữ khác như usb …
Dùng tool để crack pass file SAM của victim
Trang 68Demo: Physical- lấy file SAM
Trong cain :
1.Click chọn biểu tượng dấu +
2.Chọn import hashes from SAM databse
3.Click “…” của SAM file name chọn file SAM cần
crack
4.Click “…” của boot key(HEX)-> load system boot key (hoặc chọn đường dẫn đến file syskey)để lấy chuỗi hex
5.Copy chuỗi hex dán vào ô boot key -> next
6.Tiến hành crack
Trang 69 Khởi động máy tính chọn chế độ boot từ cd
Chọn Start mini XP để chạy winXP live Cd
Truy cập vào thư mục windows/system32/config của
ổ đĩa local
Copy 2 file SAM và syskey
Demo: Physical- lấy file SAM
Trang 74 Boot từ cd
Chọn start boot Cd
Chọn password & resgistry tool
Chọn active password changer (hoặc bất kì mục nào cũng được đều có tác dụng tương tự)
Chọn 1 để lấy file sam trên ổ cứng local
Chọn user cần crack
Chọn clear this user pass
Nhấn y , khởi động lại máy
Demo: Physical- Phá
password
Trang 82Demo : Sniffer password
Topology :
1 máy server (10.10.10.253/24) , thư mục chia sẻ Data server, user dang là user để đăng nhập vào server
1 máy tính cùng mạng với server(10.10.10.11/24) sniffer password của user dang trong môi trường LAN
Chọn id của phân vùng chứa file Sam
Trang 100Một số cách hạn chế password
cracking.
Trang 101Làm thế nào để có một mật khẩu bảo
Không sử dụng bất kỳ từ khóa nào trong từ điển
English hay những nước khác
Không sử dụng Password giống tên Username, và phải thay đổi thường xuyên
Chọn Password bạn dễ dàng sử dụng mà người
khác khó đoán biết được
Trang 102Những khuyến cáo đặt password
khác.
Đừng bao giờ sử dụng ghép hai từ với nhau để
được một Password ví như: vnevne
Không đặt Password dễ đoán
Không đặt password quá ngắn
Không đặt Password mà từ thường xuyên gõ đúng như: asdf;lkj
Hãy thay đổi mật khẩu thường xuyên ít nhất một tháng một lần – Hãy thay đổi ngay lập tức khi phát hiện ra mật khẩu của mình bị người khác sử dụng