Học viện Cơng Nghệ Bưu Chính Viễn Thơng
TIỂU LUẬN
Tìm hiểu, nghiên cứu về giao thức Kerberos
và Ứng Dụng
Hà Nội - 2021
1
Phân cơng nhiệm vụ:
Đồn Văn Thìn: Giới thiệu về giao thức kerberos
Nguyễn Văn Trung: Một số khái niệm(KDC, SS, AS, TGS)
Nguyễn Đình Quyết: Nguyên lý hoạt động
Trịnh Phúc Bình : Ưu nhược điểm của kerberos,demo
Nguyễn Văn Kiên: Kerberos attack
Vũ Mạnh Phương: Vấn đề giao thức bảo mật
Đặng Đoàn Huy: demo
Nguyễn Thanh Tùng: demo
2
Mục lục
1.1. Giới thiệu về giao thức xác thực kerberos
7
1.1.1 Tổng quan
7
1.1.2. Lịch sử phát triển
7
1.1.3. Mục tiêu và yêu cầu của Kerberos
8
1.1.3.1. Mục tiêu:
8
1.1.3.2. Yêu cầu:
8
1.2. Một số khái niệm
9
1.2.1. KDC – Key Distribution Center
9
1.2.2. SS, AS, TGS
9
1.2.3. Ticket và Session key
10
1.2.4. Ticket cache
11
1.3. Nguyên lý hoạt động
12
1.3.1. Mô hình tiêu biểu
12
1.3.2. Mơ tả giao thức
12
1.3.3. Kiến trúc
13
1.3.3.1. Hình thức mã hóa
13
1.3.3.2. Mã hóa trong Kerberos
13
1.3.3.3. Cơ sở dữ liệu Kerberos
14
1.3.3.4. Nguyên lý hoạt động:
14
1.3.4. Phân tích ưu nhược điểm
17
1.4. Các dạng tấn công Kerberos
18
1.4.1 Kerberos Attack
19
1.4.2. Other Attack
20
1.4.3. Vấn đề giao thức bảo mật
20
1.5. Kết luận
24
3
1.6. Demo
24
DANH MỤC TÀI LIỆU THAM KHẢO
28
1.1.
Giới thiệu về giao thức xác thực kerberos
1.1.1 Tổng quan
Kerberos là một giao thức mật mã dùng để xác thực trong các mạng máy tính hoạt
động trên những đường truyền khơng an tồn.
Giao thức Kerberos có khả năng chống lại việc nghe lén hay gửi lại các gói tin cũ và
đảm bảo tính tồn vẹn của dữ liệu. Mục tiêu khi thiết kế giao thức này là nhằm vào
mơ hình máy chủ-máy khách (client-server) và đảm bảo nhận thực cho cả hai chiều.
Giao thức được xây dựng dựa trên mật mã hóa khóa đối xứng và cần đến một bên thứ
ba mà cả hai phía tham gia giao dịch tin tưởng
1.1.2. Lịch sử phát triển
Kerberos được phát triển bởi Học viện kỹ thuật Massachusetts (MIT) nhằm
bảo vệ những dịch vụ được cung cấp bởi dự án Athena. Kerberos trải qua nhiều
phiên bản, trong đó, các phiên bản từ 1 – 3 chỉ được sử dụng nội bộ bên trong MIT.
Giao thức được đặt tên dựa theo một nhân vật trong thần thoại Hy Lạp
Kerberos (hay Cerberus), đó là một con chó săn 3 đầu khổng lồ dưới âm phủ. Steve
Miller và Clifford Neuman, những thiết kế gia chính của Kerberos phiên bản 4, đã
cơng bố phiên bản này vào cuối thập niên 80, mặc dù mục đích chính của họ vẫn là
dùng để phục vụ cho dự án Athena.
Phiên bản 5, được phát triển bởi John Kohl và Clifford Neuman, xuất hiện
trong RFC 1510 vào 1993, với mục đích khắc phục những giới hạn và các vấn đề
liên quan đến bảo mật trong phiên bản 4.
Windows 2000, XP và 2003 Server sử dụng Kerberos như là một phương
pháp chứng thực mặc định. Hệ điều hành Mac OS cũng sử dụng Kerberos trong các
phiên bản Clients và Server của mình.
1.1.3. Mục tiêu và yêu cầu của Kerberos
4
1.1.3.1. Mục tiêu:
- Mật khẩu của người dùng không bị thất lạc trên mạng.
- Đảm bảo mật khẩu của khách hàng không lưu trữ trực tiếp trên máy người dùng
mà được loại bỏ ngay sau khi sử dụng.
- Mật khẩu của người dùng không bao giờ nên được cất giữ trong một hình thức
khơng được mật mã ngay cả trong cơ sở dữ liệu máy chủ dịch vụ.
- Người sử dụng có yêu cầu nhập mật khẩu duy nhất một lần mỗi phiên làm việc.
Vì vậy người sử dụng có thể truy cập tất cả các dịch vụ mà họ được ủy uyền cho
mà không cần phải nhập lại mật khẩu trong phiên này. Đặc tính này được gọi là
Single Sign-On
- Quản lý thông tin xác thực là tập trung và cư trú trên máy chủ xác thực.
- Các máy chủ ứng dụng không trực tiếp xác thực thông tin cho người dùng của
họ, điều này làm cho hệ thống có được các hệ quả:
+ Người Quản trị quản lý tập trung tài khoản người dùng trên các máy chủ
xác thực mà không cần thao tác trên các máy chủ dịch vụ.
+ Khi người dùng thay đổi mật khẩu của mình, nó được thay đổi cho tất cả
các dịch vụ cùng một lúc.
+ Khơng có sự xác thực thừa nhằm bảo vệ được mật khẩu.
- Không chỉ những người sử dụng phải chứng minh rằng họ là những người họ nó
mà các máy chủ ứng dụng phải xác thực lại của khách hàng của họ có đúng
khơng. Đặc tính này được gọi là xác thực chéo.
- Sau khi hoàn thành xác nhận và uỷ quyền, Client và Server phải có khả năng
thiết lập một kết nối đã mã hóa, nếu được yêu cầu. Đối với mục đích này,
Kerberos cung cấp hỗ trợ cho các thế hệ và trao đổi của một khố mật mã sẽ
được sử dụng để mã hóa dữ liệu
1.1.3.2. Yêu cầu:
● Để Kerberos đạt được mục tiêu đã đặt ra, phải đảm bảo các yêu cầu sau:
- Bảo mật(security)
- Tin cậy(reliability)
- Minh bạch (transparency)
- Uyển chuyển (scalability).
1.2. Một số khái niệm
1.2.1. KDC – Key Distribution Center
Key Distribution Center – trung tâm phân phối khóa của Kerberos (KDC), là
5
một phần của hệ thống Kerberos. Trên lý thuyết KDC bao gồm ba thành phần:
- Database của tất cả các principal và các khố đã mã hố của nó để gia nhập
- Authentication Server
- Ticket Granting Server
Người ta thường gom chúng lại trong một chương trình duy nhất và chạy cùng
nhau trong một process duy nhất
1.2.2. SS, AS, TGS
SS - Service Server:
• Máy chủ dịch vụ.
• Service Server là nơi cung cấp dịch vụ nào đó.
AS - Authentication Server: Máy chủ xác thực
• Khi một user muốn tham gia vào 1 realm của Kerberos thì thay vì user
phải xác thực với KDC thì phải xác thực với AS
• Các khách hàng sẽ gửi một dạng cleartext thông điệp của ID người
dùng đến AS (Authentication Server) yêu cầu dịch vụ thay mặt người
sử dụng. (Lưu ý: Cả khóa bí mật và mật khẩu đều khơng được gửi tới
AS.)
• AS kiểm tra xem máy khách có trong cơ sở dữ liệu của nó hay khơng.
Nếu đúng như vậy, AS tạo khóa bí mật bằng cách băm mật khẩu của
người dùng được tìm thấy trong cơ sở dữ liệu (ví dụ: Active Directory
trong Windows Server) và gửi lại hai thông báo sau cho máy khách:
Thơng báo A: Khóa phiên ứng dụng khách / TGS được mã hóa bằng
khóa bí mật của ứng dụng khách / người dùng.
Thông điệp B: Ticket-Grant-Ticket (TGT, bao gồm ID khách hàng,
địa chỉ mạng khách hàng , thời hạn hiệu lực của vé và Khóa phiên
ứng dụng khách / TGS ) được mã hóa bằng khóa bí mật của TGS.
•
Khi máy khách nhận được thơng điệp A và B, nó sẽ cố gắng giải mã
6
thơng báo A bằng khóa bí mật được tạo từ mật khẩu do người dùng nhập.
Nếu người dùng đã nhập mật khẩu không khớp với mật khẩu trong cơ sở
dữ liệu AS, khóa bí mật của máy khách sẽ khác và do đó khơng thể giải
mã thơng điệp A. Với mật khẩu hợp lệ và khóa bí mật, máy khách sẽ giải
mã thơng báo A để lấy Khóa phiên máy khách / TGS . Khóa phiên này
được sử dụng để liên lạc thêm với TGS. (Lưu ý: Máy khách không thể
giải mã Thơng điệp B, vì nó được mã hóa bằng khóa bí mật của TGS.)
Tại thời điểm này, máy khách có đủ thơng tin để tự xác thực với TGS.
TGS - Máy chủ cấp phát vé:
• TGS là bộ phận nhận vé chấp thuật TGT (Ticket Granting Ticket) từ
user. TGS có nhiệm vụ kiểm tra các vé TGT có giá trị khơng bằng cách
kiểm tra xem nó có được mã hố bởi key với key của TGT server
Kerberos khơng. Nếu đúng thì gửi cho user vé dịch vụ mà user muốn sử
dụng. TGS xác nhận việc sử dụng vé cho một mục đích cụ thể chẳng
hạn như truy cập dịch vụ mạng
*Realm: Tên của một vùng đã phát ra thẻ đó. KDC có thể phát ra các thẻ chỉ cho
các server trong miền của nó, do đó trường này cũng là tên của vùng của server.
*Principal: Đó là một định danh cho một dịch vụ cụ thể được cung cấp bởi một máy
chủ cụ thể trong một miền xác thực
1.2.3. Ticket và Session key
Ticket:
Ticker(vé) trong hệ thống Kerberos chính là các chứng thực chứng minh tính
hợp lệ của người sử dụng.Mỗi người sử dụng (cả máy chủ và máy khách) trong hệ
thống chia sẻ một khóa chung với máy chủ Kerberos. Việc sở hữu thơng tin về khóa
chính là bằng chứng để chứng minh tính hợp lệ của một người sử dụng. Trong mỗi
giao dịch giữa hai người sử dụng trong hệ thống, máy chủ Kerberos sẽ tạo ra một khóa
phiên dùng cho phiên giao dịch đó.
Vé tạo ra có 2 mục đích: xác nhận danh tính của người tham gia và khởi tạo
một khóa ngắn hạn để hai bên có thể giao tiếp an tồn (gọi là khố phiên).
Các trường chính mà mọi vé của Kerberos đều có là:
7
• IP
• ID
• Khi nào thì vé có hiệu lực, khi nào thì vé hết hiệu lực (Timestamp,
Lifetime)
• Khóa phiên
Một vé được tạo bởi KDC được mã hoá để đảm bảo rằng những người khơng có
khố khơng mở được nó để chính sửa, như là tăng lifetime của nó lên hoặc tên định
danh của client principal.
Bởi vì Kerberos chỉ xác thực một lần khi đăng nhập nên sau khi đăng nhập thì bất
kỳ ai ngồi trên máy đó có thể tham gia vào hệ thống Kerberos. Vì vậy, vé trong
Kerberos có lifetime ngắn, khoảng từ 10-24h. Điều này thuận tiện cho việc đăng
nhập một lần trong ngày làm việc của user, hạn chế việc tấn công lấy mất dữ liệu
quan trọng
Session key: Được sử dụng cho một phiên làm việc giữa client và server
1.2.4. Ticket cache
Tất cả các vé của Kerberos đều được lưu trong một file nằm trong bộ nhớ cache
gọi là Credential cache. Microsoft và Apple đã lựa chọn phương án này. Khi đăng
nhập vào hệ thống Kerberos thì các vé được lưu trong bộ nhớ cache và khi đăng xuất
thì mọi thứ được xố hết. Các thơng tin chứa trong cache gồm: user principal, các vé
mà user có trong suốt phiên đăng nhập của họ.
1.3.
Nguyên lý hoạt động
1.3.1. Mơ hình tiêu biểu
Dưới đây là mơ hình hệ thống Kerberos tiêu biểu mà chúng ta thường thấy hiện nay,
bao gồm:
- Client hay user
- Thiết bị truyền thông: router, switch, hub, ....
- Kerberos System: AS, TGS, database
- Server cung cấp dịch vụ: Mail server, máy in, ......
8
Hình 2. 1. Mơ hình kerberos tiêu biểu
1.3.2. Mơ tả giao thức
Theo hệ thống ký hiệu giao thức mật mã, Kerberos được mơ tả như sau (trong đó
Alice(A) sử dụng máy chủ (S) để nhận thực với Bob (B)):
An ninh của giao thức phụ thuộc rất nhiều vào các trường T (đánh dấu thời
điểm) và L (thời hạn) của các gói tin. Đây chính là các chỉ thị về tính chất mới của
các gói tin và chống lại các tấn cơng gửi lại các gói tin cũ.
Trong các bản tin ở trên, máy chủ S bao gồm cả dịch vụ nhận thực và cung cấp
vé. Trong gói tin , chính là khóa phiên giữa A và B; là vé gửi từ máy khách tới máy
chủ; là phần để nhận thực A với B; và để khẳng định lại nhân dạng của B và thơng
qua đó chấp nhận A. Điều này cần thiết để hai bên nhận dạng lẫn nhau.
1.3.3. Kiến trúc
1.3.3.1. Hình thức mã hóa
● Kerberos dựa trên mơ hình mã hóa đối xứng ( cùng 1 khóa được sử dụng để
mã hóa và giải mã)
E là mã hóa, D là giải mã, ta có:
ciphertext = E_key (plaintext)
plaintext = D_key (ciphertext )
9
(HÌNH ẢNH)
1.3.3.2. Mã hóa trong Kerberos
- Kerberos sử dụng mã hóa đối xứng
- Sử dụng hàm băm string2key(password, principals)
- Thuật toán băm : MD5, CRC32, SHA1
- Hoạt động :
def string2key(passwd, principals):
return algorithm.hash(“passwd” + “principals”)
key = string2key(password, principals)
● Lợi thế khi sử dụng mã hóa trong Kerberos
- Các service khác nhau cùng một người dùng sẽ cùng sử dụng chung 1
password để đồng bộ
- 2 principals có cùng user,realm và password nhưng khác lĩnh vực làm
việc sẽ mã hóa 2 key khác nhau (qua hàm hash), dễ dàng trong việc quản
lý các công việc khác nhau.
1.3.3.3. Cơ sở dữ liệu Kerberos
- Principal
- Encryption key & related kvno
- Thời hạn tối đa của ticket liên quan đến principal
- Thời hạn tối đa của ticket liên quan đến principal có thể gia hạn (chỉ
kerberos 5)
- Attributes hoặc flag đặc trưng của vé tickets
- Hạn sử dụng của password
10
- Hạn sử dụng của principal và dựng hoạt động cấp vé ticket
1.3.3.4. Ngun lí hoạt động:
Hình 2. 2. Ngun lý hoạt động của Kerberos
Kerberos sử dụng một đối tác tin cậy thứ ba để thực hiện quá trình chứng
thực, được gọi là Trung tâm phân phối khóa (Key Distribution Center – KDC), bao
gồm 2 phần riêng biệt: một server chứng thực (Authentication Server – AS) và một
server cấp ticket (Ticket Granting Server – TGS). Kerberos làm việc dựa trên các
ticket để thực hiện quá trình chứng thực người dùng.
Kerberos duy trì một cơ sở dữ liệu chứa các secret key; mỗi thực thể trên
mạng – client hoặc server – đều chia sẽ một secret key chỉ giữa bản thân nó với
Kerberos. Để thực hiện q trình giao tiếp giữa 2 thực thể, Kerberos tạo ra một
session key. Khóa này dùng để bảo mật quá trình tương tác giữa các thực thể với
nhau.Mỗi người sử dụng (cả máy chủ và máy khách) trong hệ thống chia sẻ một
khóa chung với máy chủ Kerberos.
Việc sở hữu thơng tin về khóa chính là bằng chứng để chứng minh tính hợp lệ
của một người sử dụng. Trong mỗi giao dịch giữa hai người sử dụng trong hệ thống,
máy chủ Kerberos sẽ tạo ra một khóa phiên dùng cho phiên giao dịch đó.
Một cách vắn tắt: người sử dụng chứng thực mình với máy chủ chứng thực
11
AS, sau đó chứng minh với máy chủ cấp vé TGS rằng mình đã được chứng thực để
nhận vé, cuối cùng chứng minh với máy chủ dịch vụ SS rằng mình đã được chấp
thuận để sử dụng dịch vụ.
Dưới đây là một mơ tả về q trình hoạt động của giao thức (AS =
Authentication Server, TGS = Ticket Granting Server, C = Client, S = Service):
1.
Người dùng nhập vào username và password ở phía client.
2.
Client thực hiện thuật tốn băm một chiều trên password được nhập
vào, và nó trở thành secret key của client.
3.
Client gửi một message dưới dạng clear-text đến AS để u cầu dịch
vụ.
Chú ý: khơng có secret key cũng như password nào được gửi đến AS.
4.
AS kiểm tra xem có tồn tại người dùng C trong cơ sở dữ liệu của nó
hay khơng. Nếu có, nó gửi ngược lại cho client 2 message:
Message A: chứa Client/TGS session key được mã hóa bởi secret key của
người dùng (client).
Message B: chứa Ticket Granting Ticket (bao gồm Client ID, Client Network
Address, Ticket Validity Period, và một Client/TGS session key) được mã hóa sử
dụng secret key của TGS.
5.
Khi client nhận được Message A và B, nó giải mã Message A để lấy
Client/TGS session key. Session key này được sử dụng cho quá trình giao đổi tiếp
theo với TGS. Chú ý: client khơng thể giải mã Message B, bởi vì nó được mã hóa
bởi secret key của TGS.
6.
Khi yêu cầu dịch vụ (S), client gửi 2 message sau đến TGS:
Message C: bao gồm Message B và ID của dịch vụ được yêu cầu.
Message D: chứa Authenticator (gồm client ID và timestamp), được mã hóa bởi
Client/TGS session key.
7.
Khi nhận được Message C và D, TGS giải mã Message D sử dụng
Client/TGS session key và gởi 2 message ngược lại cho client:
Message E: chứa Client-to-Server Ticket (bao gồm Client ID, Client Network
Address, Ticket Validity Period, và một Client/Service session key) được mã hóa bởi
12
secret key của Service.
Message F: chứa Client/Server session key được mã hóa bởi Client/TGS
session key.
8.
Khi nhận được Message E và F, Client sau đó gửi một Authenticator
mới và một Client-to-Server ticket đến Server chứa dịch vụ được yêu cầu.
Message G: chứa Client-to-Server ticket được mã hóa sử dụng secret key của
Server.
Message H: một Authenticator mới, chứa Client ID, Timestamp và được mã
hóa sử dụng Client/Server session key.
9.
Sau đó, Server giải mã Ticket sử dụng secret key của chính nó, và gởi
một message cho client để xác nhận tính hợp lệ thực sự của client và sự sẵn sàng
cung cấp dịch vụ cho client.
Message I: chứa giá trị Timestamp trong Authenticator được gởi bởi client sẽ
được cộng thêm 1, được mã hóa bởi Client/Server session key.
10.
Client sẽ giải mã sự xác nhận này sử dụng khóa chia sẽ giữa nó với
server, và kiểm tra xem giá trị timestamp có được cập nhật đúng hay khơng. Nếu
đúng, Client có thể tin tưởng Server và bắt đầu đưa ra các yêu cầu dịch vụ gởi đến
Server.
11.
Server cung cấp dịch vụ được yêu cầu đến client.
1.3.4. Phân tích ưu nhược điểm
a. Ưu điểm
Cho đến nay, Kerberos vẫn được phân phối miễn phí từ MIT và một số nguồn
khác. Nó được tích hợp sẵn trong các hệ điều hành như Windows, Mac OS, Unix…
và một số sản phẩm khác. Kerberos được đánh giá là giao thức xác thực an tồn nhờ
các đặc điểm sau:
• Khi sử dụng Kerberos, mật khẩu không bao giờ truyền đi trong mạng dưới dạng
rõ mà ln được mã hóa.
• Xác thực nhanh
• Hỗ trợ việc xác thực qua lại
13
• Hỗ trợ việc uỷ quyền xác thực
• Hỗ trợ tính năng đăng nhập thẻ thơng minh
• Kerberos khơng u cầu người dùng lặp đi lặp lại thao tác nhập mật khẩu trước
khi truy cập vào các dịch vụ, hạn chế nguy cơ tấn cơng ăn cắp dữ liệu.
• Giao thức được mã hóa theo các chuẩn mã hóa cao cấp như Triple DES, RC4,
AES nên rất an tồn.
• Tất cả các trao đổi giữa các máy đều chứa timestamp nên vé bị đánh cắp không
thể tái sử dụng, chống được tấn công dùng lại (replay attack).
b. Nhược điểm (Lỗ hổng trong Kerberos)
Lỗ hổng trong Kerberos là rất nguy hiểm bởi Kerberos là một trong những giao
thức định danh được sử dụng phổ biến nhất hiện nay trên mạng Internet. Giao
thức này còn được sử dụng trong rất nhiều các sản phẩm thương mại như hệ
điều hành, router...
• Độ bảo mật của hệ thống phụ thuộc vào sự an toàn của hệ thống KDC. Nếu
KDC bị tấn cơng thì tồn bộ các thành phần trong hệ thống cũng bị tê liệt.
Các nhà phát triển hệ thống xác thực Kerberos của MIT vừa công bố bản vá lỗi
dành cho một số lỗ hổng bảo mật nghiêm trọng trong hệ thống này, từng cho
phép kẻ tấn cơng từ xa có thể đánh cắp thông tin nhạy cảm, shutdown trái phép
hệ thống, và thực thi mã độc hại.
• Do tất cả các trao đổi đều gắn timestamp nên địi hỏi các máy tính trong hệ thống
phải đồng bộ về thời gian (không chênh lệch nhau quá 5 phút). Nếu không đảm
bảo điều này, cơ chế xác thực dựa trên thời hạn sử dụng sẽ khơng hoạt động.
• Với cơ chế đăng nhập một lần trên một máy tính, nếu máy tính đó rơi vào tay
những kẻ tấn cơng mạng thì tồn bộ dữ liệu người dùng sẽ bị đánh cắp và gây
nguy cơ cho tồn bộ hệ thống.
1.4. Các dạng tấn cơng Kerberos
Điều quan trong là nhận ra rằng Kerberos thực hiện trên mạng của bạn khơng
đảm bảo an ninh hồn hảo. Trong khi Kerberos là rất an toàn trong một ý thức lý
thuyết, có rất nhiều vấn đề an ninh thực tế để được xem xét. Ngoài ra, điều quan trong
14
là hãy nhớ rằng Kerberos chỉ cung cấp một dịch vụ chứng thực, nó khơng ngăn cản
thỏa hiệp gây ra lỗi phần mềm máy chủ, quản trị viên cấp giấy phép cho người sử
dụng trái phép, hoặc các mật khẩu kém chọn. Có nhiều đánh giá Kerberos là an tồn
nhất có thể, tuy nhiên, vẫn cịn những vấn đề an ninh cần chú ý:
1.4.1 Kerberos Attack
Việc hacker có thể tấn công hệ thống Kerberos KDC là không dễ dàng. Nhưng có
một số cuộc tấn cơng điện tử có thể thỏa hiệp sự bảo mật của hệ thống Kerberos của
bạn. Dưới đây là một số thỏa hiệp hiệu quả tiềm năng về độ an toàn của hệ thống
Kerberos:
- Root Compromise of a Kerberos KDC machine: Một thỏa hiệp gốc của 1 máy
chủ KDC cho phép kẻ tấn cơng tồn quyền kiểm sốt tồn bộ hệ thống xác thực
Kerberos. Mặc dù các cơ sở dữ liệu Kerberos được mã hóa trên ổ cứng với khóa
kerberos master, khóa master được giữ trên ổ cứng KDC vì thế khơng có bất kì
sự can thiệp bằng tay nào được yêu cầu (nhập password master) khi server KDC
bắt đầu.
- Compromise of a Kerberos administrator's credentials: Nếu 1 hacker lấy được
mật khẩu của người quản trị, hacker có thể hồn thành tấn cơng trên tồn bộ
database kerberos.
- Root compromise of a server machine: Để giao thức Kerberos làm việc, 1 dịch
vụ phải có truy cập đến 1 dịch vụ chính. Các dịch vụ chính nằm trên hệ thống
tập tin của máy chủ, hoặc nằm trên 1 keytab được thực thi bởi Unix. Nếu một kẻ
tấn công lấy được quyền truy cập vào một máy chủ, tất cả các dịch vụ
Kerberized đang chạy trên máy bị tổn hại.
- Root compromise of a client machine: Một thỏa hiệp gốc của một máy client sẽ
cung cấp cho kẻ tấn công với tất cả các vé đã được lưu trên máy đó. Khi các vé
có giới hạn thời gian, nó khơng phải là một thỏa hiệp quan trọng như một kẻ tấn
công lấy mật khẩu của người dùng. Tuy nhiên, với sự truy cập gốc đến máy
client, những kẻ tấn công bí mật có thể cài đặt một sniffer để nắm bắt một mật
khẩu người dùng khi đăng nhập vào máy tính của họ.
- Compromise of user credentials: Có 2 khả năng trong kịch bản này: hoặc bộ nhớ
lưu vé người dùng đã bị lộ, hoặc mật khẩu của người dùng bị thỏa hiệp. Nếu
hacker lấy được bộ nhớ các vé chưa được mã hóa, các vé chứa trong bộ nhớ
cache mà chỉ có hiệu lực trong khoảng thời gian quy định trong vé. Mặt khác,
nếu kẻ tấn công sử dụng lại mật khẩu của người dùng, những kẻ tấn công có thể
mạo danh người dùng đó cho đến khi người dùng thay đổi mật khẩu của mình.
Từ danh sách trên, thực tế là một trong những nền tảng rằng tất cả những kịch bản có
tầm quan trọng trong việc giữ tất cả các máy trong mạng của bạn an toàn. Cài đặt
Kerberos trên mạng của bạn không làm giảm tầm quan trọng của việc giữ tất cả các
15
máy móc, máy tính người dùng an tồn từ tấn cơng bên ngồi. Những thỏa hiệp của
bất kì 1 máy nào trong mạng sẽ có một số hiệu ứng bất lợi về bảo mật của hệ thống
xác thực Kerberos của bạn.
1.4.2. Other Attack
- Denial of service (từ chối dịch vụ)
- The "insider" (người trong cuộc)
- Social engineering and password exposure (kỹ thuật cộng đồng và tiếp xúc với
mật -khẩu)
- Security holes in the Kerberos software itself (các lỗ hổng bảo mật trong chính
phần mềm Kerberos)
1.4.3. Vấn đề giao thức bảo mật
● Dictionary and Brute – Force attacks (buộc tấn công)
Trong giao thức Kerberos 4 bản gốc các KDC tạo một TGT được mã hóa cho
khách hàng nào có y/c nó. TGT được mã hóa với khóa bí mật của người dùng. An ninh
của toàn bộ hệ thống phụ thuộc vào việc khơng thể giải mã thơng điệp này, vì nếu một
kẻ tấn cơng có thể lấy chìa khóa được sử dụng để mã hóa các tin nhắn, giờ đây hắn có
mật khẩu của người dùng và có thể mạo danh người dùng đó theo ý thích. Do đó nếu
một kẻ tấn cơng muốn có được mật khẩu của người dùng, nó có thể yêu cầu KDC cho
một TGT hợp lệ với tên người dùng nạn nhân. Trong khi khơng có cách để phá vỡ
những phương pháp mã hóa được sử dụng trong Kerberos vé trực tiếp, những kẻ tấn
công sau đó có thể tiếp tục brute-force giải mã của TGT bằng cách tung ra một cuộc
tấn công từ điển ngoại tuyến
Trong một cuộc tấn công từ điển, kẻ tấn công có một nguồn cấp dữ liệu là danh
sách các mật khẩu thường được sử dụng, hoặc một từ điển, với một chương trình bẻ.
Đối với mỗi mục trong từ điển, một chương trình cố gắng giải mã thơng điệp bằng
cách sử dụng mật khẩu. Nếu được thực hiện, chương trình báo cáo lại cho kẻ tấn công
của người sử dụng mật khẩu.
Khi chuyển đổi từ mật khẩu của người dùng sang khóa mật mã được biết đến, nó là
tầm thường cho một kẻ tấn công để xây dựng một chương trình mà có thể dịch các mật
khẩu thường thành những khố mật mã Kerberos. Sau đó, kẻ tấn cơng thu thập một số
lượng lớn TGTs hợp lệ từ các KDC và tiếp tục công việc bẻ các TGTs off-line; với
từng cố gắng giải mã, anh ta khơng có liên hệ với các KDC. Thay vào đó, một khi các
TGTs được yêu cầu từ các KDC, không giao tiếp hơn nữa là cần thiết để tấn công các
mật khẩu
Phương pháp này có thể thực hiện được vì có một bản rõ đã biết được đưa vào
TGT, cụ thể là bản thân chuỗi “tgt”. Tên chính của Dịch vụ cấp vé Kerberos ln là
“krbtgt” và tên chính đó là tín hiệu cho biết giải mã thành công. Vào thời điểm kẻ tấn
16
công đã xác định thành công mật khẩu, vé không được mã hóa hiện đã hết hạn; tuy
nhiên, kẻ tấn cơng hiện có một tổ hợp tên người dùng / mật khẩu hợp lệ cho máy chủ
Kerberos và có thể lấy vé mới bằng tên người dùng và mật khẩu hợp lệ đó.
Một cuộc tấn cơng từ điển tạo thành một giới hạn thấp hơn đối với tính bảo mật của
bất kỳ hệ thống xác thực dựa trên mật khẩu nào. Cho dù sử dụng phương thức mã hóa
lạ mắt nào, nếu mật khẩu của người dùng là một từ đơn giản, dễ đốn thì nó sẽ nhanh
chóng chống chọi với cuộc tấn công từ điển. Một cuộc tấn công khác, cuộc tấn công
vũ phu , tạo thành giới hạn trên về bảo mật của Kerberos. Thay vì cố gắng giải mã các
tin nhắn bằng cách lặp lại các từ trong từ điển được xác định trước, cuộc tấn công
brute-force sẽ thử từng khóa mã hóa, từng khóa một, cho đến khi tìm thấy khóa phù
hợp. Các hệ thống mật mã được thiết kế với khơng gian khóa lớn để làm cho các cuộc
tấn công bạo lực trở nên không thực tế. Tuy nhiên, với tốc độ phát triển rất nhanh của
công nghệ, những không gian quan trọng từng bị coi là khơng thể tìm kiếm giờ đây đã
nằm trong tầm tay của ngay cả những kẻ tấn cơng có động cơ vừa phải.
Các mã hóa được sử dụng trong Kerberos v4, cũng như loại mã hóa phổ biến nhất
trong Kerberos v5, là DES. Single DES, thiết kế vào cuối những năm 1970, có chiều
dài 56-bit. Khi Kerberos được thiết kế (trong cuối những năm 1980), brute-forcing một
khóa 56-bit đã không thực hiện được bởi tốc độ của các bộ vi xử lý có sẵn. Theo tiêu
chuẩn hiện nay, với 56-bit, khơng gian chính của DES được xem là tương đối khơng
an tồn. Năm 1998, Electronic Frontier Foundation đã chứng minh rằng với vốn đầu tư
$ 200.000, một kẻ tấn cơng có thể xác dựng một " DES cracker" mà có thể brute-force
khố mật mã từ một tin nhắn DES trong vịng một 1 ngày. Với bộ xử lí hiện nay (năm
2002), thời gian để giải mã một thông điệp được mã hóa bằng cách sử dụng DES trong
phạm vi một vài giờ.
Rất may, trong Kerberos v5, một số tính năng giao thức mới được giới thiệu để
giảm thiểu nguy cơ này. Đầu tiên là hỗ trợ loại mã hóa mở rộng, cho phép đối với việc
bổ sung các kỹ thuật mã hóa mạnh hơn. Ngồi ra, giai đoạn tiền xác thực đã được bổ
sung, các client phải chứng thực danh tính trước khi KDC cung cấp vé cho client. Tiền
xác thực hạn chế được các vấn đề của tấn cơng offline brute-force, hay tấn cơng từ
điển. Thay vào đó, 1 hacker từ xa phải liên lạc với KDC mỗi khi hacker cố gắng tìm 1
mật khẩu mới.
Tuy nhiên, các phương pháp mã hóa mới trong Kerberos v5 và đặc tính tiền xác
thực khơng hồn tồn chống lại được tấn cơng từ điển hay brute-force. Các phương
pháp mã hóa mới chắc chắn sẽ khiến cho các tấn công brute force ít khả thi bằng cách
gia tăng sự khó khăn của brute-forcing tin nhắn mã hóa. Tuy nhiên, tất cả các máy chủ,
client, và KDCs trên mạng phải hỗ trợ loại mã hóa mới. Việc phát hành phiên bản 1,3
sắp tới của MIT Kerberos 5 sẽ hỗ trợ các thuật toán mã hóa RC4 được sử dụng bởi
Windows, và do đó tăng cường mã hóa được sử dụng cho truyền thơng giữa hai thực
thi.
17
Với giao thức tiền xác thực, hacker đã khơng cịn nhiều khả năng. vé được mã hóa
theo yêu cầu từ các KDC. Tuy nhiên, kẻ tấn cơng có thể sử dụng một mạng lưới
"sniffer" để có được KDC responses khi chúng được gửi đến client. Những responses
sẽ bao gồm vé được mã hóa với khóa người dùng. Trong khi các cuộc tấn cơng trở nên
khó khăn hơn do việc tăng cường độ bảo mật, thì đó là 1 vấn đề tiềm năng. Ngoài ra,
hầu hết sự thực thi Kerberos đều không bắt buộc sử dụng tiền xác thực là mặc định,
phủ định khả năng bảo mật của tiến xác thực.
● Replay Attacks
Vì tất cả các giao thức trao đổi là các tin nhắn được gửi qua một mạng máy tính, kẻ
tấn cơng có thể lắng nghe các tin nhắn một mạng lưới trao đổi xác thực thành công, tạo
một bản sao của tin nhắn, và phát lại chúng ở lần sau. Những kẻ tấn cơng khơng cần
phải đốn mật khẩu của người dùng hoặc giải mã thông điệp nào trong tấn công này.
Kể từ khi cuộc tấn công replay yêu cầu truy cập để nghe tất cả các tin nhắn trong mạng
cũng như khả năng gửi tin nhắn giả, một cuộc tấn công replay là một cuộc tấn công
chủ động.
Chúng tôi thấy rằng Alice thành công lấy được vé để xác thực tới máy chủ thư của
cô. Bob, kẻ tấn cơng, bí mật nghe tất cả lưu lượng mạng giữa Alice, máy chủ thư, và
KDC Kerberos. Bob không thể trực tiếp sử dụng TGT mà Alice yêu cầu ở bước trước,
TGT phải được giải mã với mật khẩu của Alice, Bob khơng biết mật khẩu đó. Tuy
nhiên, khi Alice gửi vé được mã hóa của mình và nhận thực, Bob có thể chặn thư đó
và phát lại nó để mạo danh Alice đến máy chủ thư. (vd)
Vé này được mã hóa với khóa máy chủ thư, và nhận thực được mã hóa với khóa
phiên chia sẻ giữa Alice và máy chủ thư. Khi máy chủ thư nhận vé và nhận thực, nó
giải mã vé bằng khóa của mình, lấy khóa từ phiên giao vé, và sử dụng khóa phiên để
giải mã nhận thực. Nếu tất cả việc giải mã thành cơng, thì xác thực thành cơng.
Kerberos được thiết lập bảo vệ chống lại tấn công replay attacks. Là quản trị, bạn
khơng phải lo lắng về sự kích hoạt những sự bảo vệ này; chúng được thiết lập trong sự
thực thi Kerberos mà bạn đang sử dụng. Những sự bảo vệ đó là:
- Address field in tickets: khi 1 client yêu cầu vé từ KDC, nó sẽ liệt kê các địa chỉ
mạng có các vé hợp lệ. Ví dụ, nếu địa chỉ IP của máy trạm là 192.168.1.1, các
máy trạm sẽ điền địa chỉ này vào trong trường địa chỉ ở vé yêu cầu, và KDC sẽ
sao chép vào trong vé và trả lại cho máy trạm. sự bảo vệ này giải quyết vấn đề
hacker cố gắng gửi lại vé hợp lệ trên một máy trạm không được liệt kê trong
trường địa chỉ của vé. Tuy nhiên, bảo vệ này là không đủ để ngăn chặn các
replay attacks; trường địa chỉ có thể được để trống, và vé sẽ có giá trị cho tất cả
các địa chỉ. Hoặc, nếu kẻ tấn cơng có quyền truy cập vào một máy được liệt kê
trong trường địa chỉ, nó có thể đăng nhập và phát lại các vé từ đó.
- Time-based authenticators: việc an ninh trên nền địa chỉ là hoàn hảo, Kerberos
sử dụng một đề án để ngăn chặn replay attacks. Mỗi khi một khách hàng muốn
18
sử dụng một dịch vụ Kerberized, cô đã tạo ra một nhận thực, được gửi cùng với
vé vào dịch vụ để xác thực. Nhận thực chứa một timestamp, được mã hóa với
khóa phiên tạo ra bởi các KDC cho việc thực hiện trao đổi vé. Khi dịch vụ nhận
được nhận thực, nó sẽ kiểm tra các dấu thời gian với đồng hồ hệ thống của
mình. Nếu có sự chênh lệch 5 phút, các dịch vụ sẽ từ cấp bán vé và từ chối xác
thực người dùng. Khoảng thời gian 5 phút được thiết kế cho phép 1 vài sự biến
đổi nào đó giữa sự khác nhau giữa các đồng hồ trong mạng. Tuy nhiên, 5 phút
có thể là nhiều để hacker có thể gửi lại các vé hợp lệ, đặc biệt là nếu hacker sử
dụng một chương trình tự động để bắt và phát lại vé.
- Replay caches: cách cuối cùng của sự phòng thủ mà Kerberos chống lại replay
attack là Replay caches. Cả Kerberos v4 và v5 đều bao gồm các giao thức dựa
trên thời gian nhận thực. Kerberos v5 sử dụng bộ nhớ replay caches để tránh kẻ
tấn công sử dụng lại vé trong khoảng thời gian ngắn mà nhận thực cho là hợp lệ.
Mỗi dịch vụ Kerberized duy trì một bộ nhớ cache của nhận thực mà nó vừa
nhận được. Khi dịch vụ nhận được nhận thực, nó sẽ kiểm tra bộ nhớ replay
caches. Nếu dịch vụ tìm thấy một bản sao của nhận thực đã có trong bộ nhớ
cache, nó từ chối u cầu. Nếu khơng, dịch vụ chấp nhận yêu cầu và bổ sung
xác thực vào trong bộ nhớ replay caches cho các yêu cầu hợp lệ lần sau.
● Man-in-the-Middle Attacks:
Cuối cùng, một cuộc tấn công man-in-the-middle ảnh hưởng đến hầu hết mọi
giao thức cố gắng xác minh danh tính của các điểm cuối kết nối (trong trường hợp này
là người dùng và máy mà họ muốn tiếp cận). Một cuộc tấn công man-in-the-middle là
một cuộc tấn công chủ động , nghĩa là kẻ tấn cơng phải có khả năng đọc tất cả các tin
nhắn trên mạng cũng như gửi ra các tin nhắn tùy ý do chính hắn thiết kế.
Mục tiêu của cuộc tấn công man-in-the-middle là mạo danh máy chủ, dẫn đến
việc người dùng nghĩ rằng anh ta đã kết nối với máy chủ hợp pháp, trong khi thực tế
anh ta đang nói chuyện với kẻ tấn cơng. Khi kẻ tấn cơng có quyền kiểm sốt phiên, cơ
ta có thể hoạt động như một người chuyển qua đơn giản (chuyển thông báo giữa người
dùng và máy chủ hợp pháp, mà không cần sửa đổi) hoặc cơ ta có thể chủ động chèn,
sửa đổi hoặc xóa thơng báo giữa người dùng và máy chủ . Kẻ tấn cơng hiện là một
phần của cuộc trị chuyện giữa người dùng và máy chủ hợp pháp và có thể sửa đổi bất
kỳ tin nhắn nào đi qua cơ ấy, do đó có tên là “man-in-the-middle”.
Tin tốt là Giao thức Kerberos được tích hợp tính năng bảo vệ chống lại các cuộc
tấn cơng kẻ trung gian. Vì Kerberos thực hiện xác thực lẫn nhau, bằng cách xác nhận
không chỉ danh tính của người dùng cuối mà cịn cả danh tính của máy chủ, các cuộc
tấn cơng man-in-the-middle sẽ bị cản trở.
19
Để ngăn chặn các cuộc tấn công của kẻ trung gian, một số cơ chế để xác thực
khóa mã hóa của máy chủ phải tồn tại. Các giao thức khác sử dụng xác minh thủ công
(chẳng hạn như Secure Shell, nơi "dấu vân tay" của khóa cơng khai của máy chủ được
in trên màn hình khi người dùng kết nối lần đầu) hoặc cơ quan ký tên (trong trường
hợp các trang web hỗ trợ SSL). Kerberos sử dụng thực tế là một bản sao của tất cả các
khóa cho cả dịch vụ và người dùng được lưu trữ trên KDC để đảm bảo bảo vệ khỏi các
cuộc tấn công kẻ trung gian. Vì khóa phiên được tạo bởi KDC và sau đó được gửi đến
dịch vụ được mã hóa bằng khóa của dịch vụ, kẻ tấn cơng khơng thể khơi phục khóa
phiên mà khơng có khóa bí mật của dịch vụ.
Sau đó, khách hàng có thể phát hiện xem máy chủ mà anh ta đang nói chuyện có
phải là chính hãng hay không bằng cách yêu cầu xác thực lẫn nhau, trong đó máy chủ
phải chứng minh danh tính của mình bằng cách khơi phục khóa phiên, mã hóa phản
hồi và gửi lại cho máy khách. Nếu máy chủ không phải là chính hãng và khơng có bản
sao của khóa dịch vụ, thì máy chủ khơng thể gửi lại tin nhắn mã hóa hợp lệ và máy
khách ngắt kết nối.
Trong khi Kerberos cung cấp khả năng thực hiện xác thực lẫn nhau, các ứng
dụng phải có mã để kích hoạt tính năng bảo vệ đó. Ngồi ra, một số ứng dụng, chẳng
hạn như các mơ-đun PAM có sẵn để xác thực đối với mật khẩu Kerberos, khơng sử
dụng quy trình xác thực dựa trên vé. Thay vào đó, họ lấy một mật khẩu qua mạng (hy
vọng được mã hóa) và xác minh nó ở phía máy chủ bằng cách u cầu KDC cung cấp
TGT và sau đó giải mã TGT. Đây là nơi mà một cuộc tấn công trung gian thực tế có
thể được thực hiện để chống lại Kerberos.
Trong trường hợp này, kẻ tấn cơng muốn đặt mình vào giữa máy chủ và KDC,
để cơ ta có thể giả mạo máy chủ ứng dụng để nghĩ rằng cô ta là KDC thực. Vì các yêu
cầu và phản hồi của KDC là các thông điệp UDP đơn giản, kẻ tấn cơng rất dễ dàng gửi
các thơng điệp giả mạo có chủ đích từ địa chỉ IP thực của KDC. Do đó, cuộc tấn cơng
được thực hiện theo quy trình sau:
- Những kẻ tấn công tạo một mật khẩu để sử dụng cho tài khoản mà chúng mong
muốn được truy cập vào.
- Những kẻ tấn cơng sau đó thiết lập một chương trình để lắng nghe các yêu cầu
trên mạng, để xem khi nào client yêu cầu một TGT cho người sử dụng A. Khi
nhận được 1 TGT, chương trình sẽ gửi TGT-responses trả lại cho yêu cầu và
được mã hóa với password đã chọn.
20
- Sau đó, kẻ tấn cơng truy nhập vào server, tạo username A và pass đã chọn. Vào
thời điểm đó, chương trình sẽ gửi tới máy chủ TGT được mã hóa với mật khẩu
mà những kẻ tấn cơng đã chọn thay vì mật khẩu thực.
- Nếu máy chủ nhận được responses giả trước, nó sẽ giải mã thành cơng TGT từ
mật khẩu phù hợp. Để ngăn chặn cuộc tấn công này, máy chủ phải lấy khóa dịch
vụ máy chủ của mình từ keytab, sau đó u cầu 1 khóa dịch vụ từ KDC dùng
TGT đang tồn tại đại diện cho người sử dụng. Chỉ máy chủ và KDC biết khóa
dịch vụ máy chủ, một kẻ tấn cơng từ bên ngồi không thể tạo một thông điệp
giả mạo và tài khoản bị từ chối truy cập
Để ngăn chặn cuộc tấn công này, máy chủ phải truy xuất khóa dịch vụ máy
chủ từ keytab của nó, sau đó yêu cầu khóa dịch vụ từ KDC bằng TGT mà nó vừa lấy
được thay mặt cho người dùng. Vì chỉ máy chủ và KDC biết khóa dịch vụ máy chủ,
kẻ tấn cơng bên ngồi không thể tạo ra thông báo giả mạo và tài khoản bị từ chối
truy cập.
1.5. Kết luận
Kerberos là một giao thức mật mã dùng để xác thực trong các mạng máy tính
hoạt động trên những đường truyền khơng an tồn. Giao thức Kerberos có khả năng
chống lại việc nghe lén hay gửi lại các gói tin cũ và đảm bảo tính tồn vẹn của dữ
liệu. Mục tiêu khi thiết kế giao thức này là nhằm vào mơ hình máy chủ-máy khách
(client-server) và đảm bảo nhận thực cho cả hai chiều.
1.6. Demo
21
Máy client chưa join vào domain
22
Chưa có gói tin kerberos
23
Máy client join vào domain
24
25