Tải bản đầy đủ (.docx) (75 trang)

Nghiên cứu một số kỹ thuật bẻ khóa mật khẩu và thử nghiệm trên GPU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (708.83 KB, 75 trang )

EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC

LỜI CẢM ƠN
Những kiến thức căn bản trong luận văn này là kết quả của ba năm
(2013-2016) tôi có may mắn được các thầy cô giáo trong trường Học viện Kỹ
thuật Quân sự trực tiếp giảng dậy, đào tạo và dìu dắt.
Tôi xin bày tỏ lời cảm ơn chân thành tới các thầy cô giáo trong khoa
Công nghệ thông tin – Học viện Kỹ thuật Quân sự, Phòng đào tạo sau đại học
– Học viện Kỹ thuật Quân sự đã tạo điều kiện thuận lợi cho tôi trong thời gian
học tập tại trường.
Tôi xin bày tỏ lòng biết ơn chân thành, lời cảm ơn sâu sắc nhất với thầy
giáo PGS.TS Nguyễn Hiếu Minh đã trực tiếp hướng dẫn, định hướng cho tôi
giải quyết các vấn đề trong luận văn.
Tôi cũng xin cảm ơn các anh chị em đồng nghiệp ở trường Cao đẳng
Thống kê đã ủng hộ giúp đỡ tôi trong quá trình thực hiện luận văn.
Luân văn cũng xin được là lời chia vui với người thân, đồng nghiệp, bạn
bè và các bạn đồng môn lớp Cao học K25A.
Hà Nội, tháng 09 năm 2016
Học viên

Phạm Văn Sỹ


EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC

MỤC LỤC
Trang
Trang phụ bìa.......................................................................................................
Bản cam đoan......................................................................................................
Mục lục................................................................................................................
Tóm tắt luận văn..................................................................................................


Danh mục các bảng.............................................................................................
Danh mục hình vẽ................................................................................................


EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC

DANH MỤC VIẾT TẮT
CUDA
GPU
NTLM
SAM
SIMT

Compute Unified Device Architecture
Graphics Processing Unit
NT LAN Manager
Security Accounts Manager
Single-Instruction, Multiple-Thread


EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC

DANH MỤC HÌNH VẼ


EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC

DANH MỤC BẢNG BIỂU



EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC

TÓM TẮT LUẬN VĂN
Họ và tên học viên: Phạm Văn Sỹ
Chuyên ngành: Khoa học máy tính khóa: 25
Cán bộ hướng dẫn: PGS.TS Nguyễn Hiếu Minh
Tên đề tài: Nghiên cứu một số kỹ thuật bẻ khóa mật khẩu và thử
nghiệm trên GPU
Tóm tắt: Luận văn nghiên cứu hai phần chính một là nghiên cứu tổng
quan về mật khẩu trên Windows, một số phương pháp tấn công mật khẩu,
cách thức phòng chống tấn công mật khẩu trên Windows. Hai là nghiên cứu
về công nghệ GPU, lập trình CUDA. Từ những nghiên cứu trên tác giả luận
văn áp dụng phương pháp vét cạn, sử dụng thuật toán song song tính giá trị
băm chạy trên GPU để tìm mật khẩu Windows giúp giảm thiểu thời gian tìm
mật khẩu.


7

MỞ ĐẦU
Nhu cầu tính toán trong lĩnh vực khoa học, công nghệ ngày càng cao và
trở thành một thách thức lớn. Từ đó các giải pháp nhằm tăng tốc độ tính toán
đã được ra đời, từ năm 2001 đến năm 2003 tốc độ của Pentium 4 đă tăng gấp
đôi từ 1.5GHz lên đến 3GHz. Tuy nhiên hiệu năng của CPU (Central
Processing Unit) không tăng tương xứng như mức gia tăng xung của CPU và
việc gia tăng tốc độ xung của CPU nhanh chóng chạm phải ngưỡng tối đa mà
cụ thể trong khoảng thời gian 2 năm từ năm 2003 đến năm 2005 tốc độ của
CPU chỉ tăng từ 3GHz lên 3.8GHz. Trong quá trình tăng tốc độ xung của
CPU các nhà sản xuất đã gặp phải vấn đề về nhiệt độ của CPU. Các công
nghệ làm mát có thể không đáp ứng được do bề mặt tiếp xúc của CPU ngày

càng nhỏ.
Trước tình hình này, các nhà nghiên cứu vi xử lý đã chuyển hướng sang
phát triển công nghệ đa lõi, nhiều lõi, với cơ chế xử lý song song trong các
máy tính nhằm tăng hiệu năng và tiết kiệm năng lượng.
Một trong các công nghệ xử lý song song ra đời đó là GPU (Graphics
Processing Unit - bộ xử lý đồ họa). Ban đầu, việc chế tạo GPU chỉ với những
mục đích công việc phù hợp với khả năng là tăng tốc độ xử lý đồ họa, cũng
như trong ngành trò chơi là chủ yếu. Tuy nhiên ngày nay với công nghệ
CUDA được phát triển bởi hãng NVIDIA đã cho phép thực hiện các tính toán
song song với các phép tính phức tạp như dấu chấm động. Với hiệu suất cả
ngàn lệnh trong một thời điểm. Chính vì vậy một xu hướng nghiên cứu mới ra
đời đó là phát triển các thuật toán song song thực hiện trên GPU. Với CUDA,
các lập trình viên có thể nhanh chóng phát triển các ứng dụng song song trong
rất nhiều lĩnh vực khác nhau như: Điện toán, sắp xếp, tìm kiếm, xử lý tín hiệu
số, ảnh,…


8

CUDA là bộ công cụ phát triển phần mềm trên GPU được xây dựng
bằng ngôn ngữ lập trình C. Với CUDA các lập trình viên dùng để điều khiển
GPU để xử lý, tính toán song song các dữ liệu lớn.
Mật khẩu là hàng phòng thủ đầu tiên chống lại tội phạm mạng, tội phạm
hệ thống, thế nhưng hầu hết người dùng đều chọn mật khẩu dựa trên những
thông tin có sẵn, dẫn đến một lượng lớn các tài khoản các tài khoản người
dùng có nguy có bị chiếm đoạt dựa vào một số suy đoán đơn giản và logic
điều này sẽ giúp cho kẻ tấn công mật khẩu sẽ giới hạn được số ký tự tạo mật
khẩu và sẽ dễ dàng chiếm đoạt được tài khoản người dùng. Bên cạnh đó cũng
có nhiều người dùng đặt mật khẩu chưa đủ mạnh. Kẻ tấn công sẽ lợi dụng
những thói quen của người dùng như trên và kết hợp với những công cụ xử lý

trên thiết bị có tốc độ tính toán cao như GPU để dò tìm mật khẩu.
Xuất phát từ những ưu điểm của GPU và tầm quan trọng của mật khẩu
tôi đã chọn đề tài: “Nghiên cứu một số kỹ thuật bẻ khóa mật khẩu và thử
nghiệm trên GPU”.
Luận văn gồm 3 chương:
Chương 1: Tổng quan về bẻ khóa mật khẩu, chương này nghiên cứu
các kiến thức tổng quan về mật khẩu, một số phương pháp tấn công mật khẩu
trên Windows và cách thức phòng chống tấn công mật khẩu trên Windows.
Chương 2: Nghiên cứu công nghệ GPU và lập trình CUDA, chương
này nghiên cứu hai phần chính một là nghiên cứu các kiến thức cơ bản về
công nghệ GPU, sự khác nhau giữa GPU và CPU. Hai là nghiên cứu về lập
trình CUDA.
Chương 3: Xây dựng ứng dụng bẻ khóa mật khẩu dựa trên lập trình
song song trên GPU, trên cơ sở các kiến thức được trình bày ở hai chương
trên, tác giả luận văn đã tiến hành cài đặt và thử nghiệm mô phỏng bài toán
trên CPU và GPU.


9

Chương trình được tác giả luận văn xây dựng với mục đích nghiên cứu,
học hỏi và mong muốn giúp người sử dụng lấy lại mật khẩu trong trường hợp
người dùng bị quên mật khẩu, hoặc người dùng bị chiếm đoạt tài khoản và bị
thay đổi mật khẩu đăng nhập vào Windows. Tác giải luận văn lên án mọi hành
vi lợi dụng chương trình bẻ khóa mật khẩu Windows vào mục đích trái pháp
luật.


10


Chương 1. TỔNG QUAN VỀ BẺ KHÓA MẬT KHẨU
Nội dung chính trong chương 1sẽ nghiên cứu các kiến thức tổng quan về
mật khẩu trên hệ điều hành Windows, các kỹ thuật và phương pháp tấn công
mật khẩu trên Windows, cách thức phòng chống tấn công mật khẩu trên
Windows.
1.1. Bẻ khóa mật khẩu
Bẻ khóa mật khẩu là quá trình khôi phục mật khẩu từ các dữ liệu đã được
truyền bởi một hệ thống máy tính hoặc lưu giữ trong nó. Mục đích của việc bẻ
mật khẩu có thể giúp người dùng khôi phục mật khẩu bị quên hoặc bị mất, nó
cũng có thể được sử dụng để truy cập trái phép vào hệ thống [5].
Mật khẩu là phần quan trọng của thông tin cần thiết để truy cập vào hệ
thống. Do đó, hầu hết kẻ tấn công sử dụng các kỹ thuật bẻ mật khẩu để truy
cập trái phép vào hệ thống và làm cho hệ thống dễ bị tổn thương, không hoạt
động. Mật khẩu có thể bị bẻ khóa các công cụ tự động như một từ điển hoặc
phương pháp vét cạn.
Các chương trình bẻ khóa mật khẩu có chức năng kiểm tra số lượng mật
khẩu trên mỗi giây. Thông thường người dùng trong khi tạo mật khẩu, chọn
mật khẩu sẽ dễ mắc phải mật khẩu yếu như sử dụng tên của một con vật cưng
hoặc lựa chọn mật khẩu đơn giản để dễ nhớ. Hầu hết các kỹ thuật bẻ mật khẩu
thành công là do mật khẩu yếu hoặc dễ dàng đoán.
Mật khẩu phức tạp đóng một vai trò quan trọng trong việc cải thiện an
ninh chống lại các cuộc tấn công. Nó là yếu tố quan trọng mà người dùng nên
đảm bảo trong khi tạo ra một mật khẩu. Mật khẩu không nên đơn giản vì mật
khẩu đơn giản là dễ bị tấn công. Các mật khẩu khi chọn nên luôn luôn phức
tạp, dài và khó nhớ. Các mật khẩu mà bạn thiết lập cho tài khoản phải đáp
ứng các yêu cầu thiết lập phức tạp. Mật khẩu ký tự phải là một sự kết hợp của
các ký tự chữ và số. Chữ và số ký tự bao gồm chữ cái, số, dấu chấm câu, các


11


ký hiệu toán học và các ký tự thông thường khác. Chúng ta có thể đặt theo
quy tắc sau:
Mật khẩu có chứa chữ cái, ký tự đặc biệt, và con số: apl@ 52
Mật khẩu chỉ chứa số: 23698217
• Mật khẩu chỉ chứa các ký tự đặc biệt: &*#@!(%)
• Mật khẩu chỉ chứa các chữ cái và các chữ số: meetlt23
• Mật khẩu chỉ chứa các chữ cái: POTHMYDE
• Mật khẩu mà chỉ chứa các chữ cái và ký tự đặc biệt: bob@&ba
• Mật khẩu hứa các ký tự đặc biệt và các chữ số: 123@$4
1.2. Kỹ thuật bẻ khóa mật khẩu [5]
Bẻ khóa mật khẩu là kỹ thuật được sử dụng để phát hiện ra mật khẩu.



Đây là cách cổ điển để đạt được các đặc quyền cho một hệ thống máy tính
hoặc mạng. Các phương pháp phổ biến để bẻ khóa mật khẩu là cố gắng đoán
mật khẩu với các kết hợp khác nhau cho đến khi bạn có được mật khẩu chính
xác. Có năm kỹ thuật để bẻ mật khẩu, như sau:
1.2.1. Tấn công Từ điển [5]
Trong một cuộc tấn công từ điển, một tập tin từ điển được nạp vào các
ứng dụng bẻ khóa để dò tài khoản người dùng. Chương trình sử dụng tất cả
các từ có trong từ điển để tìm mật khẩu. Các cuộc tấn công từ điển có nhiều
hữu ích hơn so với các cuộc tấn công vét cạn. Tấn công từ điển không thể dò
tìm mật khẩu với hệ thống sử dụng cụm từ làm mật khẩu.
Tấn công từ điển có thể áp dụng theo hai tình huống:
- Trong phân tích mật mã, nó được sử dụng để tìm ra khóa giải mã để có
được bản rõ từ bản mã.
- Trong bảo mật máy tính, để tránh xác thực và truy cập vào máy tính
bằng cách đoán mật khẩu.

1.2.2. Tấn công vét cạn [5]
Các thuật toán mã hóa phải đủ mạnh để ngăn chặn một cuộc tấn công vét
cạn. Tìm kiếm vét cạn, là những kỹ thuật cơ bản để dò lần lượt khóa cho đến
khi khóa chính xác được xác định.


12

Khi kẻ tấn công cố tạo ra tất cả khóa mã đơn cho dữ liệu cho đến khi tìm
ra mật khẩu, đây là thuật ngữ tấn công hàng loạt. Cho đến ngày này, kiểu tấn
công này đã được thực hiện bởi những máy tính có khả năng xử lý mạnh mẽ.
Việc tấn công bằng vét cạn luôn là:
- Là quá trình tốn nhiều thời gian.
- Mật khẩu cuối cùng cũng được tìm ra.
1.2.3. Tấn công lai [5]
Là cấp độ tiếp theo của kẻ tấn công, một nỗ lực nếu mật khẩu không thể
được tìm thấy bằng cách sử dụng tấn công bằng từ điển. Các cuộc tấn công lai
bắt đầu với một tệp tin từ điển và thay thế các con số và các ký hiệu cho các
ký tự trong mật khẩu. Ví dụ, nhiều người sử dụng thêm số 1 vào cuối mật
khẩu của họ để đáp ứng yêu cầu mật khẩu mạnh. Tấn công lai được thiết kế
để tìm những loại bất thường trong mật khẩu.
1.2.4. Tấn công âm tiết [5]
Là sự kết hợp của tấn công vét cạn và tấn công từ điển. Kỹ thuật này
được sử dụng khi mật khẩu không phải là một từ. Những kẻ tấn công sử dụng
từ điển và các phương pháp khác để bẻ khóa và cũng có thể sử dụng sự kết
hợp có thể có của mỗi từ có trong từ điển.
1.2.5. Tấn công theo quy tắc [5]
Kiểu tấn công này được sử dụng khi những kẻ tấn công biết được một số
thông tin về mật khẩu. Đây là kiểu tấn công mạnh mẽ nhất bởi vì kẻ tấn công
biết rõ về mật khẩu. Ví dụ, nếu kẻ tấn công biết rằng mật khẩu có chứa một số

hai, hoặc ba chữ số, sau đó chúng sẽ sử dụng một số kỹ thuật và trích xuất các
mật khẩu trong thời gian ngắn.
1.3. Các loại tấn công mật khẩu
Bẻ mật khẩu là một trong những giai đoạn quan trọng của một hệ thống
tấn công. Bẻ mật khẩu sử dụng cho các mục đích hợp pháp khôi phục mật
khẩu bị quên lãng của một người sử dụng; nếu nó được sử dụng bởi người
dùng bất hợp pháp, thì chúng có thể có đặc quyền trái phép vào mạng hoặc hệ


13

thống. Các cuộc tấn công mật khẩu được phân loại dựa trên các hành động
của kẻ tấn công để bẻ khóa mật khẩu. Thông thường có bốn loại như sau:
1.3.1. Tấn công thụ động trực tuyến
Một cuộc tấn công thụ động trực tuyến là đánh hơi (sniffing) để tìm các
dấu vết, các mật khẩu trên mạng. Mật khẩu bị bắt (capture) trong quá trình
xác thực và sau đó có thể được so sánh với một từ điển (dictionary) hoặc là
danh sách mật khẩu (word list). Tài khoản người dùng có mật khẩu thường
được băm (hashed) hoặc mã hóa (encrypted) trước khi gửi lên mạng để ngăn
chặn truy cập trái phép và sử dụng. Nếu mật khẩu được bảo vệ bằng cách trên,
một số công cụ đặc biệt giúp kẻ tấn công có thể phá vỡ các thuật toán mã hóa
mật khẩu. Có ba dạng tấn công thụ động trực tuyến là [5]:
Đánh hơi (Wire sniffing).
Người trung gian (Man-in-the-middle).
Tấn công lặp lại (Replay).






1.3.2. Tấn công chủ động trực tuyến
Một cuộc tấn công chủ động trực tuyến là cách dễ nhất để có được quyền
quản trị truy cập vào hệ thống. Có bốn loại của tấn công chủ động trực tuyến
là [5]:





Đoán mật khẩu (Password guessing).
Trojan/spyware/key logger.
Chích băm (Hash injection).
Lừa đảo (Phishing).
1.3.3. Tấn công ngoại tuyến
Các cuộc tấn công ngoại tuyến xảy ra khi kẻ đột nhập sẽ kiểm tra tính

hợp lệ của các mật khẩu. Nếu tên người dùng và mật khẩu được lưu trữ trong
một tệp tin có thể đọc được, nó sẽ trở nên dễ dàng cho kẻ xâm nhập để đạt
được quyền truy cập vào hệ thống. Để bảo vệ danh sách các mật khẩu của
người dùng, thì danh sách mật khẩu đó luôn luôn được mã hóa.


14

Cuộc tấn công ngoại tuyến thường tốn thời gian. Tấn công ngoại tuyến
thành công là vì các hàm băm dễ bị phá vỡ.
Để ngăn chặn tấn công ngoại tuyến ta có thể sử dụng các kỹ thuật sau:
 Sử dụng mật khẩu phải mạnh.
 Xóa hàm băm LM trên hệ thống.
 Sử dụng phương pháp mã hóa an toàn cho các mật khẩu.

Có ba dạng của tấn công ngoại tuyến:
 Tấn công tính giá trị băm.
 Tấn công mạng phân tán.
 Bảng cầu vồng.
1.3.4. Tấn công phi điện tử
Các cuộc tấn công phi điện tử được gọi là các cuộc tấn công phi kỹ thuật.
Loại tấn công này không yêu cầu bất kỳ kiến thức kỹ thuật về các phương
pháp xâm nhập vào một hệ thống. Do đó, nó được gọi là một cuộc tấn công
phi điện tử. Có ba loại tấn công phi điện tử.
 Thế vai (Shoulder surfing).
 Kỹ thuật xã hội (Social engineering).
 Tìm kiếm thùng rác (Dumpster diving).
1.4. Cơ sở lý thuyết xác thực Microsoft
1.4.1. Cơ sở dữ liệu SAM
Cơ sở dữ liệu SAM (Security Accounts Manager) [5] được sử dụng bởi
Windows để quản lý tài khoản người dùng và mật khẩu trong các định dạng
băm (định dạng băm này là một chiều). Thông tin trong SAM được lưu trữ ở
định dạng băm để bảo vệ khỏi các cuộc tấn công. Cơ sở dữ liệu SAM được
thực hiện như một tệp tin Registry và Windows sẽ giữ một khóa hệ thống tệp
tin độc quyền trên tệp tin SAM. Khi tệp tin này được cung cấp với một khóa
tệp tin hệ thống, điều này cung cấp một số biện pháp bảo đảm cho việc lưu trữ
các mật khẩu. Không thể sao chép tệp tin SAM đến một vị trí khác trong
trường hợp là các cuộc tấn công trực tuyến. Khi tệp tin SAM được khóa với
khóa hệ thống độc quyền thì nó không thể sao chép hay di chuyển trong khi
Windows đang chạy. Các khóa này sẽ không được phát hành trừ khi lỗi màn


15

hình xanh ngoại lệ hoặc hệ điều hành đã tắt. Tuy nhiên, có thể tấn công ngoại

tuyến giá trị băm của mật khẩu bằng phương pháp vét cạn, và việc sao chép
tệp tin SAM có thể sử dụng các kỹ thuật khác nhau.
Microsoft giới thiệu chương trình SYSKEY trong Windows NT 4.0 để
cải thiện bảo mật cho cơ sở dữ liệu SAM chống lại các phần mềm bẻ khóa.
Bản sao trên máy tính của tệp tin SAM được mã hóa khi SYSKEY được kích
hoạt. Bằng cách này tất cả các giá trị băm của mật khẩu của các tài khoản
người dùng cục bộ lưu trong SAM sẽ được mã hóa với một khóa.
Ngay cả khi nội dung của nó đã được phát hiện thì khóa của nó được mã
hóa với hàm băm một chiều, việc giải mã là vô cùng khó.
1.4.2. Xác thực NTLM
NTLM (NT LAN Manager) [5] là một giao thức độc quyền được sử
dụng bởi nhiều sản phẩm của Microsoft để thực hiện chứng thực thách
thức/đáp ứng (challenge/response), và nó là cơ chế xác thực mặc định mà
tường lửa và máy chủ proxy sử dụng. Việc xác thực NTLM bao gồm hai giao
thức: giao thức xác thực NTLM và giao thức xác thực LM. Hai giao thức này
dùng phương pháp băm khác nhau để lưu trữ mật khẩu của người dùng trong
cơ sở dữ liệu SAM.
1.4.2.1. Giá trị băm LM
Hàm băm LM (LAN Manager) [5] là băm chính mà Microsoft LAN
Manager và Microsoft Windows sử dụng để lưu mật khẩu người dùng, và mật
khẩu được tự động thêm vào cho tới 14 ký tự, và được sử dụng trong các
phiên bản Microsoft Windows từ Windows NT trở về trước. Nó vẫn hỗ trợ
cho các phiên bản Windows sau này cho tương thích nhưng được Micosoft
khuyến cáo lên tắt nó.
Microsoft Windows NT lưu hai dạng của mật khẩu [9]: mật khẩu LAN
Manager và mật khẩu Windows NT. Ví dụ, chúng ta giả sử mật khẩu là
‘PassWord123’. Khi mật khẩu này được mã hóa bằng thuật toán LM, trước
tiên phải được chuyển đổi thành chữ hoa: ‘PASSWORD123’. Nếu mật khẩu



16

có độ dài ngăn hơn độ dài của 14 ký tự thì mật khẩu sẽ được đệm thêm các ký
tự 0 để mật khẩu có độ dài là 14 ký tự. Ở giai đoạn này mật khẩu trở thành
‘PASSWORD123000’. Trước khi mã hóa 14 ký tự của mật khẩu sẽ được chia
làm hai phần 7 byte. Một chuỗi 7 byte với ‘PASSWOR’ và chuỗi 7 byte còn
lại là ‘D123000’. Mỗi một phần 7 byte sẽ được mã hóa riêng. Nối hai chuỗi
mã hóa riêng biệt ta sẽ thu được kết quả. Từ mỗi 7 byte đầu, 8 byte khóa DES
được xây dựng, mỗi 8 byte khóa DES được mã hóa với một số ma thuật
(magic

number).

Kết

quả mã

hóa số ma

thuật được nối

vào một giá

trị băm một chiều mười sáu byte.
Giá trị này là LAN Manager băm một chiều của mật khẩu. 8 byte đầu
tiên được bắt đầu từ 7 ký tự đầu của mật khẩu, 8 byte thứ hai được bắt đầu từ
ký tự thứ 8 của 14 ký tự mật khẩu. Kết hợp là một giá trị băm 16 byte được
xây dựng từ mật khẩu có độ dài không quá 14 ký tự.
Có thể tóm tắt quá trình sinh giá trị băm LM bằng một quá trình 6 bước
như sau:

1. Mật khẩu người dùng được chuyển đổi thành tất cả các ký tự in hoa.
2. Mật khẩu được bổ sung thêm các ký tự 0 vào cho tới khi có đủ 14 ký tự.
3. Mật khẩu mới được chia thành hai hash có 7 ký tự.
4. Các giá trị này được sử dụng để tạo hai khóa mã hóa DES, mỗi nửa đều được
thêm vào một bit chẵn lẻ để tạo các khóa 64 bit.
5. Mỗi khóa DES sẽ được sử dụng để mã hóa một chuỗi ASCII định sẵn (KGS!
@#$%), cho kết quả ra trong hai chuỗi văn bản mật 8 byte.
6. Hai chuỗi văn bản mật 8 byte này sẽ được kết hợp để tạo thành một giá trị 16byte, giá trị này chính là một hash LM hoàn chỉnh.
Vậy mật khẩu “PassWord123” sẽ được chuyển đổi như sau:
1. PASSWORD123
2. PASSWORD123000
3. PASSWOR and D123000


17

4. PASSWOR1 and D1230001
5. E52CAC67419A9A22 and 664345140A852F61
6. E52CAC67419A9A22664345140A852F61

Hình 1.1: Mật khẩu được biến đổi thành giá trị băm LM
1.4.2.2. Giá trị băm NTLM
NT LAN Manager (NTLM) [9] là một giao thức thẩm định của
Microsoft, giao thức này được tạo ra để kế vị giao thức LM. Có nhiều cải tiến,


18

NTLM được chấp nhận như một phương pháp thẩm định mới đáng để lựa
chọn và được thực thi trong Windows NT 4.

Quá trình tạo một giá trị băm NTLM (hay còn gọi là băm NT) là một quá
trình đơn giản, nó dựa vào thuật toán băm MD4 để tạo giá trị băm nhờ một
loạt các tính toán toán học. Sau khi chuyển đổi mật khẩu sang ký tự Unicode,
thuật toán MD4 được sử dụng để tính giá trị băm NT. Trong thực tế, mật khẩu
“PassWord123” qua một lần chuyển đổi, sẽ có kết quả là:
“67A54E1C9058FCA16498061B96863248”.
Thuật toán MD4 được xem là mạnh hơn nhiều so với thuật toán DES vì
nó cho phép mật khẩu có độ dài hơn, phân biệt giữa chữ hoa và chữ thường và
không chia mật khẩu thành phần nhỏ hơn.
Có lẽ phàn nàn lớn nhất với các hàm băm NTLM là Windows không sử
dụng kỹ thuật mang tên salting (thêm giá trị phụ). Salting là một kỹ thuật mà
trong đó một số ngẫu nhiên được tạo ra để tính toán giá trị băm cho mật khẩu.
Điều này có nghĩa là cùng một mật khẩu có thể có hai giá trị giá trị băm khác
nhau hoàn toàn, đây thực sự là điều lý tưởng.
1.4.3. Giao thức Kerberos
Là một giao thức xác thực mạng [5]. Nó được thiết kế để cung cấp cơ
chế xác thực mạnh cho các ứng dụng client/server bằng cách sử dụng mật
khẩu khóa bí mật, điều này cung cấp việc xác thực lẫn nhau. Cả máy chủ và
người dùng kiểm chứng nhận dạng của nhau. Bản tin được gửi thông qua giao
thức Kerberos được bảo vệ chống lại các cuộc tấn công lặp lại và xem trộm.
Kerberos sử dụng trung tâm phân phối khóa và cần một bên thứ ba mà cả
hai phía tham gia giao dịch tin tưởng. Do đó việc xác thực sẽ bao gồm hai


19

phần riêng biệt: là máy chủ xác thực, và máy chủ cung cấp vé. Kerberos làm
việc trên cơ sở của "vé" để chứng minh danh tính của người dùng.
1.5. Một số công cụ dùng để bẻ khóa mật khẩu
1.5.1. pwdump7 và fgdump

Pwdump7 [5] là một ứng dụng lấy giá trị băm mật khẩu từ cơ sở dữ liệu
SAM. Pwdump7 sẽ trích xuất giá trị băm LM và NTLM của tài khoản người
dùng cục bộ từ cơ sở dữ liệu SAM. Một tính năng rất mạnh của pwdump7 là
nó có thể vượt qua được chế độ bảo vệ tệp tin SAM.

Hình 1.2: pwdump7 trích xuất băm mật khẩu trong Windows.
Từ hình 1.2 ta thấy hệ thống đã tắt tính năng băm LM. Tài khoản
Administrator có giá trị băm NTLM là:
3DBDE697D71690A769204BEB12283678
Tài khoản Admin có giá trị băm là:


20

704624CF8BBF37EE8B959CCC44AFBBA9
Tài khoản Guest đã bị hệ thống khóa nên không có giá trị băm.
Fgdump hoạt động cơ bản là giống với pwdump. Fgdump có đầy đủ tính
năng của pwdump và fgdump có khả năng lấy thông tin lưu trữ và cho phép
thực hiện từ các mạng từ xa.

Hình 1.3: fgdump trích xuất giá trị băm mật khẩu Windows ra tệp tin .txt.
1.5.2. L0phtCrack
L0phtCrack [5] là một công cụ được thiết kế để kiểm toán mật khẩu và
phục hồi các ứng dụng. Nó được sử dụng để phục hồi mật khẩu đã mất của
Windows với từ điển, tấn công lai, bảng cầu vòng, vét cạn và nó cũng được sử
dụng để đánh giá độ mạnh của mật khẩu. Các khiếm khuyết về bảo mật đang
cố hữu trong hệ thống xác thực mật khẩu của Windows có thể được tiết lộ dễ
dàng với công cụ L0phtCrack.
Hệ điều hành Windows xác thực dựa trên giao thức mạng LAN Manager,
sử dụng xác thực hệ thống gồm 8 byte thách thức (challenge) trả về 24 byte

phản ứng (response) trên mạng từ máy khách đến máy chủ trong định dạng
thách thức/phản ứng (challenge/response).


21

Máy chủ so khớp đáp ứng độc lập với 24 byte đáp ứng, xác thực thành
công khi việc so khớp 24 byte trùng nhau. Thuật toán chia mật mã thành 7 kí
tự rồi băm một cách riêng lẻ, kẻ tấn công lợi dụng điều này để hạn chế kí tự
dò tìm mật khẩu dưới 7 kí tự làm cho việc tấn công hệ thống dễ dàng hơn rất
nhiều.
Điểm yếu của băm mật khẩu cùng với truyền các băm qua mạng trong
định dạng thách thức/phản ứng làm cho hệ thống dựa trên LM rất dễ bị bắt
gói tin và tiếp theo là dùng từ điển, vét cạn để có mật khẩu bởi L0phtCrack.
L0phtCrack6 có khả năng nhập mật khẩu từ Windows ở xa, bao gồm cả phiên
bản 64 bit của Windows Vista, Windows 7 và các máy UNIX mà không yêu
cầu tiện ích của bên thứ ba.

Hình 1.4: L0phtCrack trích xuất giá trị băm trong tệp tin SAM
1.5.3. Ophcrack


22

Ophcrack [5] là một công cụ bẻ khóa mật khẩu Windows sử dụng bảng
cầu vồng để dò tìm mật khẩu. Ophcrack sử dụng giao diện người dung đồ họa
và có thể chạy được trên nhiều hệ điều hành khác nhau như Windows,
Linux,/Unix,…
Tính năng của OPhcrack
- Bẻ khóa băm LM và NTLM.

- Vét cạn những mật khẩu đơn giản.
- Đồ thị thời gian thực phân tích mật khẩu.
- Trích xuất băm từ file SAM.

Hình 1.5: Trích xuất giá trị băm từ tệp tin SAM.


23

1.5.4. Cain & Abel
Cain & Abel [5] là một công cụ dùng để khôi phục mật khẩu. Nó chạy
trên hệ điều hành Microsoft. Cain & Abel cho phép phục hồi lại các mật khẩu
bằng cách đánh hơi mạng, tìm mật khẩu sử dụng từ điển, vét cạn và các cuộc
tấn công giải mã mật khẩu, ghi âm cuộc gọi thoại VoIP, phục hồi mật khẩu
mạng wifi, khám phá bộ nhớ cache mật khẩu và phân tích các giao thức định
tuyến. Với sự giúp đỡ của Cain & Abel, mật khẩu và các thông tin từ các
nguồn khác có thể được phục hồi dễ dàng. Nó bao gồm APR (Arp Poison
Routing) cho phép đánh hơi trên chuyển mạch mạng LAN và tấn công người
trung gian. Chức năng phân tích mạng trong công cụ này cũng có khả năng
phân tích các giao thức mã hóa như HTTP và SSH 1, và chứa các bộ lọc để
nắm bắt thông tin từ một loạt các cơ chế xác thực.

1.6. Phòng chống tấn công mật khẩu
Để ngăn ngừa tấn công mật khẩu chúng ta cần áp dụng các chính sách
mật khẩu mạnh có độ dài trên 8 kí tự, với sự kết hợp của nhiều dạng ký tự
khác nhau gồm các ký tự đặc biệt, chữ hoa, chữ thường và các số sẽ làm cho
quá trình tấn công dò từ điển hay vét cạn sẽ trở nên khó khăn. Bên cạnh đó
người dùng nên sử dụng ứng dụng Syskey trên Windows, một chức năng bảo
vệ và mã hóa mật khẩu nâng cao có thể phòng chống rất tốt các công cụ như
L0phtCrack, Ron The Ripper.

Để sử dụng Syskey ta chỉ cần thực thi dòng lệnh Syskey trên cửa sổ
dòng lệnh và chọn update như hình dưới.


24

Hình 1.6: Bật hộp thoại Syskey.
Sau đây là một số quy tắc đặt mật khẩu cần tuân theo để phòng chống
tấn công mật khẩu.
- Không bao giờ sử dụng mật khẩu mặc định.
- Không bao giờ sử dụng các mật khẩu đơn giản có thể tấn công thông qua từ
điển, như các mật khẩu: password, abcdef, 123456 là những mật khẩu được
thống kê là bị tấn công nhiều nhất.
- Không bao giờ sử dụng mật khẩu liên quan đến tên máy tính, tên miền hay
những thông tin mà kẻ tấn công dễ dàng tìm kiếm qua Whois.
- Không bao giờ sử dụng mật khẩu liên quan đến thú cưng, ngày sinh của bạn
hay người yêu vì đây là những đối tượng mà kẻ tấn công sẽ nghĩ đến đầu tiên
khi dò tìm mật khẩu.
Thay đổi mật khẩu thường xuyên là một trong những tiêu chí hàng đầu
trong việc bảo vệ mật khẩu, theo khuyến nghị của chính sách an toàn thông
tin ISO 27001:2005 thì người dùng nên thay đổi mật khẩu sau 24 ngày hoặc
48 ngày tuỳ vào nhu cầu của tổ chức. Mặc dù điều này sẽ gây ra chút bất tiện
cho người dùng nhưng sẽ hạn chế được rất nhiều khả năng mật khẩu bị tấn
công và tái sử dụng để truy cập bất hợp pháp vào hệ thống. Việc thiết lập


25

chích sách này có thể thực hiện qua Group Policy Editor trong phần Security
Setting\Account Policies như hình dưới.


Hình 1.7: Các chính sách bảo mật của hệ thống Windows.
Hình 1.7 minh họa vị trí chính sách dùng để thay đổi thời gian tồn tại của
mật khẩu trên Windows 8.1. Đối với hệ thống Windows phiên bản khác ta
cũng có thể thực hiện thông qua Local Group Policy Editor dễ dàng. Tuy
nhiên, để đạt hiệu quả cao hơn người dùng nên thiết lập chính sách này chung
cho toàn bộ hệ thống thông qua máy tính điều khiển miền. Mặc dù với
phương pháp này chúng ta không thể hoàn toàn ngăn ngừa bị tấn công mật
khẩu dạng vét cạn nhưng sẽ gây trở ngại lớn cho kẻ tấn công khi siết chặt
chính sách bảo mật (Security Policy) ví dụ như nếu kẻ tấn công đăng nhập sai
mật khẩu quá 5 lần sẽ bị khoá trong vòng 15 phút.
Theo dõi Event Viewer Log, trong vai trò quản trị hệ thống hay người
phụ trách vấn đề an ninh mạng của tổ chức các bạn cần thường xuyên theo dõi


×