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ẽ................................................................................................
MỞ ĐẦU...........................................................................................................1
Chương 1. TỔNG QUAN VỀ BẺ KHÓA MẬT KHẨU..............................4
1.1. Bẻ khóa mật khẩu....................................................................................4
1.2. Kỹ thuật bẻ khóa mật khẩu......................................................................5
1.2.1. Tấn công Từ điển..............................................................................5
1.2.2. Tấn công vét cạn...............................................................................6
1.2.3. Tấn công lai.......................................................................................6
1.2.4. Tấn công âm tiết................................................................................6
1.2.5. Tấn công theo quy tắc.......................................................................6
1.3. Các loại tấn công mật khẩu.....................................................................7
1.3.1. Tấn công thụ động trực tuyến...........................................................7
1.3.2. Tấn công chủ động trực tuyến...........................................................7
1.3.3. Tấn công ngoại tuyến........................................................................8
1.3.4. Tấn công phi điện tử.........................................................................8
1.4. Cơ sở lý thuyết xác thực Microsoft.........................................................9
1.4.1. Cơ sở dữ liệu SAM...........................................................................9
EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC
1.4.2. Xác thực NTLM................................................................................9
1.4.2.1. Giá trị băm LM............................................................................10
1.4.2.2. Giá trị băm NTLM........................................................................12
1.4.3. Giao thức Kerberos.........................................................................13
1.5. Một số công cụ dùng để bẻ khóa mật khẩu...........................................13
1.5.1. pwdump7 và fgdump......................................................................13
1.5.2. L0phtCrack......................................................................................15
1.5.3. Ophcrack.........................................................................................16
1.5.4. Cain & Abel....................................................................................17
1.6. Phòng chống tấn công mật khẩu...........................................................18
Chương 2. NGHIÊN CỨU CÔNG NGHỆ GPU VÀ
LẬP TRÌNH CUDA......................................................................................22
2.1. Giới thiệu công nghệ GPU....................................................................22
2.1.2. Kiến trúc GPU....................................................................................22
2.1.2.1. Đường ống dẫn đồ họa....................................................................22
2.1.2.2. Tiến hóa của kiến trúc GPU............................................................24
2.1.2.3. Kiến trúc GPU hiện đại...................................................................25
2.1.3. So sánh GPU và CPU.........................................................................27
2.2. Lập trình CUDA....................................................................................29
2.2.1. Giới thiệu về môi trường phát triển CUDA....................................29
2.2.2. Mô hình lập trình.............................................................................31
2.2.2.1. Bộ đồng xử lý đa luồng mức cao..................................................31
2.2.2.2. Gom lô các luồng.........................................................................32
EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC
2.2.2.3. Mô hình bộ nhớ............................................................................33
2.2.2.4. Lập trình không đồng nhất...........................................................34
2.2.3. Thiết lập phần cứng.........................................................................35
2.2.3.1. Kiến trúc SIMT.............................................................................36
2.2.3.2. Phần cứng đa luồng.....................................................................38
2.3. Hướng dẫn thực thi................................................................................39
2.3.1. Chiến lược tối ưu hóa hiệu suất tổng thể........................................39
2.3.2. Tối ưu hóa sử dụng.........................................................................40
2.3.2.1. Mức ứng dụng..............................................................................40
2.3.2.2. Mức thiết bị..................................................................................40
2.3.2.3. Mức bộ đa xử lý...........................................................................41
2.3.3. Tối ưu thông lượng bộ nhớ.............................................................44
2.3.3.1. Truyền dữ liệu giữa máy chủ và thiết bị......................................44
2.3.3.2. Truy cập bộ nhớ thiết bị...............................................................45
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.........................................49
3.1. Bài toán vét cạn tìm mật khẩu Windows..............................................49
3.1.1. Bài toán vét cạn chạy tuần tự..........................................................53
3.1.1.1. Ý tưởng.........................................................................................53
3.1.1.2. Xây dựng bài toán........................................................................53
3.1.2. Bài toán vét cạn chạy trên GPU......................................................55
3.1.2.1. Ý tưởng.........................................................................................55
3.1.2.2. Xây dựng bài toán........................................................................58
EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC
3.2. Mô tả chương trình................................................................................60
3.2.1. Chương trình tuần tự.......................................................................61
3.2.1.1. Mô tả chương trình.......................................................................61
3.2.1.2. Sử dụng chương trình...................................................................62
3.2.2. Chương trình chạy trên GPU..........................................................63
3.2.2.1. Mô tả chương trình......................................................................63
3.2.2.2. Sử dụng chương trình...................................................................63
3.2.3. Một số kết quả chạy thử nghiệm giữa tuần tự và song song...........64
3.2.3.1. Kết quả.........................................................................................64
3.2.3.2. Đồ thị............................................................................................66
KẾT LUẬN VÀ KHUYẾN NGHỊ...............................................................69
1. Kết luận....................................................................................................69
2. Khuyến nghị.............................................................................................69
TÀI LIỆU THAM KHẢO............................................................................70
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
Hình 1.1: Mật khẩu được biến đổi thành giá trị băm LM...............................12
Hình 1.3: pwdump7 trích xuất băm mật khẩu trong Windows.......................14
Hình 1.4: fgdump trích xuất giá trị băm mật khẩu Windows ra tệp tin .txt.. . .14
Hình 1.5: L0phtCrack trích xuất giá trị băm trong tệp tin SAM.....................16
Hình 1.6: Trích xuất giá trị băm từ tệp tin SAM.............................................17
Hình 1.7: Bật hộp thoại Syskey.......................................................................18
Hình 1.8: Các chính sách bảo mật của hệ thống Windows..........................19Y
Hình 2.1: So sánh kiến trúc CPU và GPU.......................................................28
Hình 2.2: So sánh floating-point GPU và CPU...............................................28
Hình 2.3: Kiến trúc bộ phần mềm CUDA.......................................................29
Hình 2.4: Các thao tác thu hồi cấp phát bộ nhớ..............................................30
Hình 2.5: Vùng nhớ dùng chung mang dữ liệu gần ALU...............................31
Hình 2.6: Lưới của khối luồng........................................................................33
Hình 2.7: Mô hình bộ nhớ...............................................................................34
Hình 2.8: Lập trình không đồng nhất..............................................................35
Hình 2.9: Luồng SIMD và SIMT....................................................................38
Hình 2.10: 3 warp, 32x3 luồng phần cứng......................................................39
Hình 3.1: Sơ đồ khối chương trình tuần tự......................................................54
Hình 3.2: Sơ đồ khối bài toán trên GPU..........................................................59
Hình 3.3: Chương trình SAMinside để mở tệp tin SAM................................60
Hình 3.4: Kết quả chạy chương trình tuần tự..................................................62
Hình 3.5: Kết quả chương trình chạy trên GPU..............................................63
EBOOKBKMT.COM - CỘNG ĐỒNG KỸ THUẬT CƠ ĐIỆN VMTC
DANH MỤC BẢNG BIỂU
Bảng 3.1: Kết quả chạy trên GPU và CPU.....................................................64
Bảng 3.2: Kết quả chạy thử nghiệm với số luồng khác nhau trên GPU..........65
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.
1
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,…
2
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
3
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.
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.
4
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
5
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.
6
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.
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ố
7
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ệ
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).
8
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.
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).
9
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
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à
10
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
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ừ
11
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ị 16-byte, 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
4. PASSWOR1 and D1230001
5. E52CAC67419A9A22 and 664345140A852F61
6. E52CAC67419A9A22664345140A852F61
- Xem thêm -