<![CDATA[Latest posts for the topic "Kỹ thuật tấn công Pass the Hash và cách phòng chống"]]> /hvaonline/posts/list/12.html JForum - http://www.jforum.net Kỹ thuật tấn công Pass the Hash và cách phòng chống Phân tích kỹ thuật tấn công Pass the Hash Cách thức hoạt động của kỹ thuật tấn công Pass the Hash và minh họa các quá trình sử dụng thành công giá trị hash của mật khẩu lấy được mà không cần phải crack để có các nội dung đã được che giấu của nó. 1. Giới thiệu Trong vai trò là một chuyên gia bảo mật, bạn thường tập trung thời gian vào việc đảm bảo cho các chính sách mật khẩu sao cho tỉ mỉ và đủ phức tạp để làm sao chúng không bị crack bởi các cá nhân với mục đích xấu. Thực tế là, mật khẩu của hệ thống Windows có thể bị crack một cách khá dễ dàng bằng cách thức trong bài viết này http://www.windowsecurity.com/articles/How-Cracked-Windows-Password-Part1.html. Trong bài viết này, chúng tôi cung cấp cho các bạn một cái nhìn tổng quan về cách thức các mật khẩu được hash, được lưu trữ và cách thức kẻ tấn công thực hiện nhằm break các mật khẩu này. Bạn nghĩ sao nếu chúng tôi nói rằng trong các tình huống thích hợp chúng tôi thậm chí không cần phải crack các mật khẩu của bạn mà vẫn có thể có được quyền truy nhập vào hệ thống như thể chúng tôi đang sử dụng username và mật khẩu của bạn. Tình huống này không liên quan đến một số cải tiến mở rộng của khai thác 0-day hay các thủ thuật đánh lừa bạn click vào một đường dẫn trong email giả mạo. Việc này này được thực hiện một cách rất đơn giản với kỹ thuật có tên gọi Pass the Hash. Trong bài viết này, chúng ta sẽ xem xét cách thức hoạt động của kỹ thuật này, và minh họa các quá trình sử dụng cách giá trị hash của mật khẩu lấy được và sử dụng chúng thành công để có được quyền truy nhập hệ thống mà không cần crack để có các nội dung đã được che dấu của chúng. Và luôn luôn, bên cạnh giới thiệu kỹ thuật tấn công chúng tôi sẽ giới thiệu một số ký thuật phát hiện và phòng chống để làm sao bạn không trở thành nạn nhân của kỹ thuật tấn công này. 2. Hash ở mức gói dữ liệu Mỗi khi bạn tạo một mật khẩu cho một tài khoản trong Windows, nó sẽ chuyển đổi mật khẩu đó thành một chuỗi giá trị hash. Giá trị hash là kết quả của một hàm mật mã thực hiện trên một chuỗi dữ liệu có độ dài tùy ý, sau đó thực hiện một hàm mã hóa toán học trên chuỗi dữ liệu này, kết quả là một chuỗi có độ dài cố định. Kết quả cuối cùng thay vì mật khẩu có dạng “Password123” bạn sẽ có được một chuỗi giá trị hash dạng “94354877D5B87105D7FEC0F3BF500B33”. Một số nguyên nhân của việc này. Đầu tiên, mật khẩu của bạn sẽ không lưu trữ trên đĩa cứng dưới dạng văn bản rõ mà ai cũng có thể truy cập được. Thứ hai, mật khẩu của bạn sẽ không truyền dưới dạng văn bản rõ khi truyền qua mạng trong trường hợp bạn phải thực hiện thao tác xác thực với các thiết bị khác (máy chủ Domain Controller chẳng hạn). Chúng tôi sẽ không nói lại cách các giá trị hash được tạo ra trong bài viết này, bạn có thể xem thêm tại đây http://www.windowsecurity.com/articles/How-Cracked-Windows-Password-Part1.html Mỗi khi bạn truy cập vào một tài nguyên nào đó trên một máy tính được bảo vệ bởi cơ chế xác thực username và mật khẩu bạn sẽ phải thực hiện một yêu cầu xác thực khở tạo bởi máy chủ. Thông thường, bạn cần cung cấp username và mật khẩu. Khi bạn nhập mật khẩu, máy tính của bạn sẽ thực hiện hàm hash lên mật khẩu và gửi trình kết quả cho máy chủ, máy chủ sẽ tiến hành so sánh với giá trị hash có sẵn trong cơ sở dữ liệu xác thực. Nếu các giá trị hash khớp nhau, bạn được cấp quyền truy nhập.
Hình 1. Một phiên xác thực thông thường 1. User thử truy cập tài nguyên 2. Server gửi yêu cầu xác thực 3. User cung cấp username và mật khẩu 4. Mật khẩu được cung cấp được chuyển thành giá trị hash 5. Giá trị hash được gửi đến server 6. Server kiểm tra giá trị hash dựa vào giá trị đã có trong cơ sở dữ liệu 7. Quyền truy cập tài nguyên được cung cấp Bây giờ chúng ta xem xét một kịch bản khác. Điều gì xảy ra khi chúng ta thiết lập một kết nối thủ công tới máy chủ có tài nguyên mà chúng ta muốn truy cập, dĩ nhiên là thay vì cung cấp username và mật khẩu không có đặc quyền thì chúng ta cung cấp cho nó username quản trị và giá trị hash của mật khẩu của quản trị mà chúng ta đánh cắp được. Những gì chúng ta vừa thực hiện sẽ cho phép ta có quyền truy cập của quản trị vào máy chủ mục tiêu. Cần nhớ rằng, tất cả những gì máy chủ quan tâm là việc nhận được một giá trị hash trùng khớp với giá trị hash nó mong đợi. Điều này có nghĩa là bạn không cần phải thực hiện hàm hash một chiều lên mật khẩu mà chỉ cần cung cấp giá trị hash của mật khẩu cho máy chủ, đây là điểm mấu chốt của kỹ thuật tấn công này.
Hình 2. Chuyển giá trị hash trực tiếp đến máy chủ mục tiêu 1. Hacker thử truy cập tài nguyên 2. Server gửi yêu cầu xác thực 3. Hacker cung cấp username và giá trị hash của mật khẩu đánh cắp được 4. Giá trị hash được gửi đến server 5. Server kiểm tra giá trị hash dựa vào giá trị đã có trong cơ sở dữ liệu 6. Quyền truy cập tài nguyên được cung cấp 3. Sử dụng Metasploit để thực hiện tấn công Pass the Hash Trên đây là các lý thuyết của kỹ thuật tấn công Pass the Hash, bây giờ chúng ta sẽ thực hiện nó. Trong thử nghiệm này chúng ta sẽ chuyển một giá trị hash lấy được của một người dùng có đặc quyền quản trị đến hệ thống nạn nhân. Để thực hiện tấn công này, chúng ta cần hai thứ. Một là, giá trị hash của mật khẩu của user có quyền quản trị. Có nhiều cách để lấy được giá trị hash này, tham khảo http://www.windowsecurity.com/articles/How-Cracked-Windows-Password-Part2.html. Hai là, một công cụ để thực hiện tấn công - ở đây chúng ta sử dụng metasploit. Với giá trị hash lấy được và metasploit trong tay chúng ta bắt đầu thực hiện tấn công. Một số module sử dụng trong metasploit để thực hiện tấn công Pass the Hash: - Psexec - shell_reverse_tcp Các thông tin cần thiết để thực hiện tấn công: - Địa chỉ IP của nạn nhân - Hash đánh cắp của nạn nhân - Username của nạn nhân - Địa chỉ IP của máy tính thực hiện tấn công Thực hiện tấn công thành công
Hình 3. Tấn công Pass the Hash thành công 4. Phòng chống tấn công Pass the Hash Kỹ thuật tấn công Pass the Hash là khó phát hiện và ngăn chặn do cách thức nó khai thác vào quy trình xác thực. Có một số cách phòng chống như sau: - Sử dụng hệ thống phát hiện xâm nhập - Cách ly các hệ thống nhạy cảm - Sử dụng giải pháp xác thực thay thế (xác thực đa nhân tố) - Hạn chế truy nhập với quyền quản trị 5. Kết luận Pass the Hash là một kỹ thuật rất dễ thực hiện và rất nguy hiểm cho nạn nhân. Như những gì bạn thấy qua bài viết này, tất cả những gì cần thiết để thực hiện cuộc tấn công là thông tin về giá trị hash và một công cụ phổ biến. Khi đó, kẻ tấn công có tất cả những gì hắn cần để làm tê liệt hoàn toàn cơ sở hạ tầng của bạn. Hy vọng rằng với những hiểu biết về kỹ thuật tấn công này cũng như các chiến lược phát hiện và ngăn chặn mà chúng ta đã thảo luận bạn sẽ có sự chuẩn bị tốt hơn để phòng chống và ứng xử với kỹ thuật tấn công này. Bài viết của tác giả Chris Sanders được lược dịch bởi hvthang. Nguồn từ Windowsecurity.com Link gốc: http://www.windowsecurity.com/articles/Dissecting-Pass-Hash-Attack.html?printversion]]>
/hvaonline/posts/list/35603.html#218988 /hvaonline/posts/list/35603.html#218988 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/0/19653.html#193616 2. Kỹ thuật này có được thực hiện ở dạng ứng dụng khác không? Các hệ thống xác thực khác windows. 3. Các cách phòng chống như trên có đủ, và nên chọn cách nào hoặc có cách nào hiệu quả hơn nữa không? 4. Độ bền vững của thuật toán hash có ảnh hưởng đến kiển tấn công này không? (em nghĩ là không) Thân mến.]]> /hvaonline/posts/list/35603.html#218989 /hvaonline/posts/list/35603.html#218989 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

hvthang wrote:
1. Như vậy là kỹ thuật tấn công đối với giải pháp hash mật khẩu là có thể thực hiện được. Điều này em cũng đã có lần thảo luận ở chủ đề: /hvaonline/posts/list/0/19653.html#193616 
Mình vừa đọc cái topic này và thấy khá nhiều bạn không hiểu ý bạn, đúng là có thể thực hiện được.

hvthang wrote:
2. Kỹ thuật này có được thực hiện ở dạng ứng dụng khác không? Các hệ thống xác thực khác windows. 
Được, nếu biết protocol hay packet format của ứng dụng. Trước đây mình có viết ứng dụng tcp client-server, client có thể lấy thông tin từ server bằng cách gửi các dòng command line trong gói tcp. Khi client kết nối xong đến server (3-way handshake) thì server gửi chuỗi "Authen:", client sẽ gửi username+MD5(passsword) đến server, server sẽ gửi lại "OK" hay "FAILED". Sau khi "OK" thì client có thể gửi các lệnh text đến server để lấy thông tin, đơn giản vậy thôi. Nhưng sau khi hoàn thành ứng dụng và capture gói tin, thì mình nhận thấy có thể viết ra ứng dụng client "fake" bắt chước client chuẩn để đăng nhập vào server, trong đó quá trình gửi password thì nó sẽ gửi trực tiếp hash password mà mình capture được. Kết quả vẫn đăng nhập được vào server.

hvthang wrote:
3. Các cách phòng chống như trên có đủ, và nên chọn cách nào hoặc có cách nào hiệu quả hơn nữa không? 
Sau này thì mình dùng cách hash 2 lần với khoá k ngẫu nhiên từ server. Khi client kết nối, server sẽ gửi lại một khoá k ngẫu nhiên. Client sẽ gửi h = MD5(k, MD5(clear_text_password)) cho server. Nếu h bị capture thì không thể giải ra k và password. Nếu dùng kỹ thuật "Pass the hash" - gủi trực tiếp h đã capture được - thì cũng failed vì lần sau server sẽ gửi khoá k khác. Bây giờ thì mình ưa thích dùng giải thuật HMAC để hash password, cho nó có chuẩn !

hvthang wrote:
4. Độ bền vững của thuật toán hash có ảnh hưởng đến kiển tấn công này không? (em nghĩ là không) 
Không ảnh hưởng.]]>
/hvaonline/posts/list/35603.html#219152 /hvaonline/posts/list/35603.html#219152 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống Sau này thì mình dùng cách hash 2 lần với khoá k ngẫu nhiên từ server. Khi client kết nối, server sẽ gửi lại một khoá k ngẫu nhiên. Client sẽ gửi h = MD5(k, MD5(clear_text_password)) cho server. Nếu h bị capture thì không thể giải ra k và password. Nếu dùng kỹ thuật "Pass the hash" - gủi trực tiếp h đã capture được - thì cũng failed vì lần sau server sẽ gửi khoá k khác.   Mình không hiểu làm thế nào mà User có thể đăng nhập vào hệ thống nếu hệ thống hoạt động như trên. Mỗi lần server tạo ra một cái khoá khác nhau và dẫn đến h cũng khác nhau vậy Client gởi h đến Server mỗi lần cũng khác nhau thì làm thế nào server verify được User? Bạn có thể giải thích rõ hơn một chút được không?]]> /hvaonline/posts/list/35603.html#219190 /hvaonline/posts/list/35603.html#219190 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống Cố dịch cho dễ hiểu. Tôi chỉ đề cập đến những đoạn quan trong nhất, không nói các đoạn thông thường. Thí dụ đoạn này: A hash is the result of a cryptographic function that takes an arbitrarily sized string of data, performs a mathematical encryption function on it, and returns a fixed-size string. Nên dịch là: Hash được tạo ra từ một quá trình mã hóa. Quá trình này sử dung một thuật toán mã hóa để chuyển đổi một chuỗi dữ liệu có độ dài bất kỳ, thành một chuỗi dữ liệu dạng Hash có chiều dài cố định. Thay vì dịch như bạn: Giá trị hash là kết quả của một hàm mật mã thực hiện trên một chuỗi dữ liệu có độ dài tùy ý, sau đó thực hiện một hàm mã hóa toán học trên chuỗi dữ liệu này, kết quả là một chuỗi có độ dài cố định (Function không chỉ có nghĩa là hàm, hàm số mà có nghĩa là chức năng, quá trình...) Hay This means that you don’t have to perform the one-way hashing function on the password, you just have to supply the hash Nên dịch là : Nghĩa là bạn không cần phải thực hiên giai đoạn đầu là mã hóa mật khẩu dưới dạng hash nữa, mà ..... thay vì: Điều này có nghĩa là bạn không cần phải thực hiện hàm hash một chiều lên mật khẩu mà chỉ... ]]> /hvaonline/posts/list/35603.html#219205 /hvaonline/posts/list/35603.html#219205 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

rongchaua wrote:
Mình không hiểu làm thế nào mà User có thể đăng nhập vào hệ thống nếu hệ thống hoạt động như trên. Mỗi lần server tạo ra một cái khoá khác nhau và dẫn đến h cũng khác nhau vậy Client gởi h đến Server mỗi lần cũng khác nhau thì làm thế nào server verify được User? Bạn có thể giải thích rõ hơn một chút được không? 
Server nó lưu trữ MD5(clear_text_password), sau đó mỗi lần có client mở kết nối thì server ghi nhớ session (src_IP, src_Port của client) và khoá k ngẫu nhiên đã cấp cho session đó (dĩ nhiên có timeout), khi nó nhận h từ client thì server tính lại h1 = MD5(k, MD5(password)) với k đã lưu sẵn ứng với session đó, coi h1 có khớp h hay không.]]>
/hvaonline/posts/list/35603.html#219229 /hvaonline/posts/list/35603.html#219229 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống

invalid-password wrote:
Sau này thì mình dùng cách hash 2 lần với khoá k ngẫu nhiên từ server. Khi client kết nối, server sẽ gửi lại một khoá k ngẫu nhiên. Client sẽ gửi h = MD5(k, MD5(clear_text_password)) cho server. Nếu h bị capture thì không thể giải ra k và password. Nếu dùng kỹ thuật "Pass the hash" - gủi trực tiếp h đã capture được - thì cũng failed vì lần sau server sẽ gửi khoá k khác. Bây giờ thì mình ưa thích dùng giải thuật HMAC để hash password, cho nó có chuẩn !  
Cách của invalid-passwd sẽ bị qua mặt nếu kẻ tấn công đã từng thu được bản hass của pass trước đó (sniff từ trước khi có giải pháp thêm k, hoặc kẻ tấn công thu đc file lưu hash password của server. Vì khóa k ngẫu nhiên nhưng vẫn phải gửi clear text cho client hiểu nên việc tính ra h= MD5 (k, MD5(clear_text_pass)) là vẫn khả thi cho dù ko cần biết clear_text_pass Có thể sử dụng cách này h = MD5 (clear_text_pass, k) Vì kẻ tấn công trong quá khứ chỉ có được MD5 (clear_text_pass), và kết quả hash khác hoàn toàn so với MD5 (clear_text_pass, k) nên có thể giải quyết kiểu tấn công pass the hash (với điều kiện clear_text_pass phải đủ dài để ko thể bị đoán ngược từ bản MD5(clear_text) ). ]]>
/hvaonline/posts/list/35603.html#229629 /hvaonline/posts/list/35603.html#229629 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230278 /hvaonline/posts/list/35603.html#230278 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

angel-pc wrote:
Quanh đi quẩn lại thì cuối củng hash lại trở thành pass, quay về điểm xuất phát :D Theo mình để ngăn chuyện này mấu chốt chính là làm sao để xác định cái từ client gởi đi là do chính user nhập vào chứ không phải do giả lập qui trình chứng thực. Nói đúng hơn là kiểm tra từ lớp ứng dụng 
Chính xác :D , thế bồ có ý tưởng gì về phương pháp giúp xác thực cái hash kia là do người dùng mới nhập password vào và được "hash" ra thay vì là một cái hash đã bị chôm trước đó không , ý tưởng này có lần được đề cập đến trong Topic "Phương pháp chống DDoS" nhằm tạo ra một cái cookie không thể bị giả tạo, vấn đề khác nhưng ý tưởng giống :D Rất mong bồ có ý tưởng đề xuất :D]]>
/hvaonline/posts/list/35603.html#230282 /hvaonline/posts/list/35603.html#230282 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230283 /hvaonline/posts/list/35603.html#230283 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

StarGhost wrote:
@radiohead: quá chuẩn. Mình biết có một ý tưởng như sau: làm một cái hòm có 2 ổ khoá, user sau khi cho password vào hòm sẽ khoá lại bằng ổ của mình, sau đó gửi đến server. Server sau đó khoá cái ổ còn lại và gửi về user. User mở khoá của mình và gửi hòm lại server. Server mở khoá hòm và lấy password, sau đó hash nó và so sánh với giá trị hash trong database. Để hiện thực hoá cần hai one-to-one mappings f và g (tượng trưng cho 2 ổ khoá) với commutative composition. Ví dụ lý tưởng là commutative encryption. Mình thấy cũng thú vị nếu các bạn thảo luận về những vấn đề liên quan đến giải pháp này.  
Ý tưởng này của StarGhost hình như có 1 bài hỏi trước kia rồi. Đây là lý thuyết của Three-pass protocol. Nôm na là cần cái E để E(k1,E(k2,x)) = E(k2,E(k1(x)). Kiếm được cái E thế này, mà lại an toàn thì coi bộ cũng căng, một cái có ý tưởng cùng với Diffie-Hellman E(e,M) = M^e (mod p) & D(d,M) = M^d (mod p) e.d = 1 (mod p-1) vậy thì E(k1,E(k2,x)) = M^k1^k2 = M^k2^k1 (mod p) = E(k2,E(k1,M)) Vì chỉ biết E = M^x (mod p) thì khó tìm được M mà không có thông tin về x nên hàm mã hoá này an toàn. Nhưng phương pháp 3-pass này dễ dàng bị tấn công bởi MITM ]]>
/hvaonline/posts/list/35603.html#230291 /hvaonline/posts/list/35603.html#230291 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống WinDak thử mô tả xem tấn công MITM diễn ra như thế nào. Riêng mình thì mình không nghĩ là có thể tấn công MITM, tuy nhiên impersonation thì được. ]]> /hvaonline/posts/list/35603.html#230298 /hvaonline/posts/list/35603.html#230298 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

StarGhost wrote:
@WinDak: bất cứ một kết nối nào (sử dụng bất cứ một loại cryptographic protocol nào) không có secure authentication của ít nhất một end-point thì đều có thể bị MITM hoặc/và impersonation attack. Vì vậy, đối với mô hình trong topic, đòi hỏi về security không nên quá tham vọng, mà chỉ nên dừng lại ở 2 mục tiêu quan trọng: i) không lưu password dưới dạng plaintext và ii) không truyền password dưới dạng plaintext để chống sniffing. Ngoài ra, bạn WinDak thử mô tả xem tấn công MITM diễn ra như thế nào. Riêng mình thì mình không nghĩ là có thể tấn công MITM, tuy nhiên impersonation thì được.  
Đúng như StarGhost nói, nếu chỉ có nhiêu đó thôi mà không có các hình thức authenticate thì chắc chắn sẽ vulnerable. Vì cái protocol đưa ra này chưa hoàn chỉnh nên đưa ra phương pháp tấn công cũng chưa thật logic, đại khái mình nêu ý tưởng sẽ như thế này : A contact đến B sau khi authenticate đến bước trao đổi khoá, C ở giữa và thay vì gửi hòm đến B thì C khoá bằng khoá của C và giả làm B. C có thể không contact luôn đến B, hoặc giả làm A contact đến B. Như vậy sau 2 quá trình trao đổi khoá trong hòm, C có khoá A<->C và C<->B, C có thể thoải mái forward message từ A đến B như thật, trong khi 2 người này hoàn toàn không biết có người ở giữa. Không biết cái này là impersonation hay là MITM ? xin StarGhost cho mở mang tầm mắt. Trên thực tế thì có thể thêm identity của A và B ở trong hòm thì sẽ không bị trường hợp này, nhưng có bị các kiểu attack khác không thì phải đưa full protocol ra mới xem xét được. wd. ]]>
/hvaonline/posts/list/35603.html#230299 /hvaonline/posts/list/35603.html#230299 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống

WinDak wrote:
A contact đến B sau khi authenticate đến bước trao đổi khoá, C ở giữa và thay vì gửi hòm đến B thì C khoá bằng khoá của C và giả làm B. C có thể không contact luôn đến B, hoặc giả làm A contact đến B. Như vậy sau 2 quá trình trao đổi khoá trong hòm, C có khoá A<->C và C<->B, C có thể thoải mái forward message từ A đến B như thật, trong khi 2 người này hoàn toàn không biết có người ở giữa. Không biết cái này là impersonation hay là MITM ? xin StarGhost cho mở mang tầm mắt.  
Trước hết mình cần làm rõ quan điểm của mình về sự khác nhau giữa impersonation và MITM. Impersonation xảy ra khi attacker có thể giả dạng một end-point để giao tiếp với end-point còn lại. MITM xảy ra khi attacker có thể đứng giữa và cùng một lúc giả dạng mỗi end-point và giao tiếp với end-point kia. Còn cái attack kia của bạn là attack dành cho commutative encryption ở mức độ tổng quát, còn cái chúng ta đang bàn ở đây là khi commutative encryption được sử dụng để truyền password như mô hình của chủ topic.

WinDak wrote:
Trên thực tế thì có thể thêm identity của A và B ở trong hòm thì sẽ không bị trường hợp này. 
Bạn thêm identity bằng cách nào để "không bị trường hợp này"?]]>
/hvaonline/posts/list/35603.html#230302 /hvaonline/posts/list/35603.html#230302 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống

StarGhost wrote:
Bạn thêm identity bằng cách nào để "không bị trường hợp này"?  
Đưa ra cái ý tưởng để mọi người phát triển thêm thôi, chứ mình solo tiếp thì hơi mất tính thú vị của thảo luận. Bà con có thể thảo luận thêm cách chống MITM / impersonation trong trường hợp mà mình đã đưa ra, nếu mà topic chìm quá thì mình sẽ solo tiếp ]]>
/hvaonline/posts/list/35603.html#230304 /hvaonline/posts/list/35603.html#230304 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống

xnohat wrote:
thế bồ có ý tưởng gì về phương pháp giúp xác thực cái hash kia là do người dùng mới nhập password vào và được "hash" ra thay vì là một cái hash đã bị chôm trước đó không , ý tưởng này có lần được đề cập đến trong Topic "Phương pháp chống DDoS" nhằm tạo ra một cái cookie không thể bị giả tạo, vấn đề khác nhưng ý tưởng giống :D Rất mong bồ có ý tưởng đề xuất :D 
Mình là dân ngoại đạo trong lĩnh vực này, không dám múa rìu qua mắt thợ :D Nhưng sao không thấy ai đề cập tới captchar nhỉ, nó là cách hay nhất để xác định dữ liệu có phải được gởi từ lớp ứng dụng không. Nếu coi captchar như k thì sao ta? Sử dụng quá nhiều thuật toán chỉ làm giảm hiệu suất vận hành chi bằng sử dụng captchar biết đâu nó lại đem lại hiệu quả thì sao?]]>
/hvaonline/posts/list/35603.html#230313 /hvaonline/posts/list/35603.html#230313 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống

StarGhost wrote:
Mình biết có một ý tưởng như sau: làm một cái hòm có 2 ổ khoá, user sau khi cho password vào hòm sẽ khoá lại bằng ổ của mình, sau đó gửi đến server. Server sau đó khoá cái ổ còn lại và gửi về user. User mở khoá của mình và gửi hòm lại server. Server mở khoá hòm và lấy password, sau đó hash nó và so sánh với giá trị hash trong database. Để hiện thực hoá cần hai one-to-one mappings f và g (tượng trưng cho 2 ổ khoá) với commutative composition. Ví dụ lý tưởng là commutative encryption. Mình thấy cũng thú vị nếu các bạn thảo luận về những vấn đề liên quan đến giải pháp này.  
Hi hi mình thấy cái ví dụ ổ khoá này giống cái ví dụ ở trong một cái video mà mình có xem qua ([1]). Ở đó ông giáo sư có nói đến một giải pháp đơn giản là dùng one-time pad. Bản chất của one-time pad là phép cộng trên trường hữu hạn GF(2), và phép cộng này có tính giao hoán (commutative), nên, như StarGhost nói, có thể dùng nó để hiện thực hóa giao thức "một hòm hai khóa" ;-). [1] - http://mitworld.mit.edu/video/42 -m ]]>
/hvaonline/posts/list/35603.html#230318 /hvaonline/posts/list/35603.html#230318 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống mrro thân mến, one-time pad đúng là có commutative, nhưng mà nếu như biết ciphertext và plaintext thì sẽ suy ra được key, thế nên nó căn bản khó có thể áp dụng trong trường hợp này được. Trong khi đó thuật toán như bạn WinDak đề cập thì dựa vào vấn đề discrete log để ngăn việc tìm key. @angel-pc: ở đây đang nói đến vấn đề xác thực, mình không hiểu captchar thì dùng để xác thực thế nào?]]> /hvaonline/posts/list/35603.html#230331 /hvaonline/posts/list/35603.html#230331 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230341 /hvaonline/posts/list/35603.html#230341 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230343 /hvaonline/posts/list/35603.html#230343 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

StarGhost wrote:
@WinDak: bất cứ một kết nối nào (sử dụng bất cứ một loại cryptographic protocol nào) không có secure authentication của ít nhất một end-point thì đều có thể bị MITM hoặc/và impersonation attack.  
Cái này em suy nghĩ qua thì thấy không hiển nhiên lắm (ít nhất em chỉ ra một trường hợp không đúng là sử dụng trao đổi khoá lượng tử), anh StarGhost có thể đưa ra một chứng minh chặt chẽ cho khẳng định này với trường hợp cổ điển (khi không có định lý bất khả sao chép của Wooters) không ?. Đối với việc kiểm tra sự an toàn cho các giao thức thông thường, em biết đã có nhiều phương pháp hình thức để kiểm tra cũng như chỉ ra attack của các giao thức (bài báo của Blanchet và Pointcheval là một ví dụ). Tất nhiên trong trường hợp tổng quát, việc kiểm tra một giao thức bất kỳ là NP-complete, nhưng trong thực tế phần lớn các giao thức đều có thể kiểm tra được.]]>
/hvaonline/posts/list/35603.html#230394 /hvaonline/posts/list/35603.html#230394 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống eicar thân mến, câu hỏi của bạn rất hay. Tuy nhiên bạn còn chưa đọc kĩ câu của mình, mình nói là "MITM hoặc/và impersonation". Ngay cả trao đổi khoá lượng tử cũng không thể chống được impersonation, một khi không có secure authentication. Còn MITM thì không phải lúc nào cũng xảy ra, như như ví dụ mình đã nêu ra ở trên, hoặc ví dụ của bạn, là không khả thi. Lí do tại sao có khẳng định của mình thực ra rất là hiển nhiên thôi, và không cần phải kiểm trả một giao thức nào để dẫn đến NP-complete. Giải thích rất đơn giản: authentication của một party hoạt động dựa vào những gì mà party đó sở hữu. Trong trường hợp no authentication/weak authentication, attacker (thường là PPT) hoàn toàn có thể thu thập hoặc giả lập các sở hữu đó, và tiến hành impersonation. Đính chính: viết xong bài này mình mới nghía qua xem trao đổi khoá lượng tử nó là cái gì. Tuy nhiên mình đọc thấy nó chỉ chống eavesdropping, chứ đâu có chống được MITM. Về cơ bản, nếu impersonation có thể thực hiện được hai chiều thì nó hiển nhiên dẫn đến MITM. ]]> /hvaonline/posts/list/35603.html#230396 /hvaonline/posts/list/35603.html#230396 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230401 /hvaonline/posts/list/35603.html#230401 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230412 /hvaonline/posts/list/35603.html#230412 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

eicar wrote:
Ý sau thì anh hiểu nhầm cái em muốn nói, anh mrro muốn mô tả một cái attack đối với scheme sử dụng OTP. Ý em là hiện nay các kiểu xác định attack như vậy không phải là một điều gì khó khăn, vì đã có các phương pháp hình thức rất tốt để làm điều này. Về mặt lý thuyết, thì bài toán kiểm tra một giao thức bất kỳ là NP-complete, tuy nhiên trong thực tế đối với phần lớn các giao thức hiện tại (em không rõ có phải tất cả hay không) thì các thuật toán kiểm tra đều rất hiệu quả. Điều này cũng giống như việc phát hiện virus, trong trường hợp tổng quát, bài toán kiểm tra sự tồn tại của virus cũng là NP-complete, tuy vậy thực tế vẫn tồn tại các chương trình diệt virus rất tốt. Nhưng về mặt lý thuyết, vẫn có thể thiết kế các virus mà cực kỳ khó phát hiện (em chưa biết trong thực tế điều này đã được ứng dụng để viết virus phá hoại hay chưa), theo nghĩa độ phức tạp tính toán mà không phải theo nghĩa nó sử dụng các tricks khó khăn về mặt kỹ thuật. 
Về crypto thì may ra mình còn quờ quạng, chứ còn về complexity theory và formal methods thì mù tịt, nên có lẽ là không hiểu được ý của bạn. :^) Mấy cái phương pháp kiểm tra protocols mà bạn đề cập có phải đại loại như Dolev-Yao?]]>
/hvaonline/posts/list/35603.html#230414 /hvaonline/posts/list/35603.html#230414 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230429 /hvaonline/posts/list/35603.html#230429 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230435 /hvaonline/posts/list/35603.html#230435 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống WinDak là hoàn toàn chính xác, trừ phi bạn là một nhà nghiên cứu về crypto có kinh nghiệm, thì mới nên tự tin về protocol của mình. ]]> /hvaonline/posts/list/35603.html#230447 /hvaonline/posts/list/35603.html#230447 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230463 /hvaonline/posts/list/35603.html#230463 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230464 /hvaonline/posts/list/35603.html#230464 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

WinDak wrote:

StarGhost wrote:
Bạn thêm identity bằng cách nào để "không bị trường hợp này"?  
Đưa ra cái ý tưởng để mọi người phát triển thêm thôi, chứ mình solo tiếp thì hơi mất tính thú vị của thảo luận. Bà con có thể thảo luận thêm cách chống MITM / impersonation trong trường hợp mà mình đã đưa ra, nếu mà topic chìm quá thì mình sẽ solo tiếp  
em cũng có ý tưởng như sau: tạo ra một en-point trung gian như C. Khi đó, C hoạt động thì sẽ tiếp nhận dữ liệu do A và B gửi đến và khóa nó lại rồi gửi hòm đến B cho B mở rồi lại tiếp nhận hòm đã mở từ B gửi về A. Cũng như muốn bảo vệ tổng thống thì cần dùng nhiều xe mạo danh tổng thống để kẻ tấn công không nhận ra. Trên đây là ý tưởng của em cho thảo luận thêm sôi nổi và không biết nó có khả thi không ạ? :D]]>
/hvaonline/posts/list/35603.html#230467 /hvaonline/posts/list/35603.html#230467 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230470 /hvaonline/posts/list/35603.html#230470 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

StarGhost wrote:
Còn chuyện brute-force mật khẩu không có phụ thuộc vào sức mạnh của hàm hash (đã gọi là brute-force mà), mà chỉ phụ thuộc vào độ phức tạp của mật khẩu. 
Nhầm rồi. Hàm hash phức tạp (1000 vòng lặp chẳng hạn), cần 100 ms để hash xong 1 chuỗi thì nó sẽ làm thời gian brute-force tăng gấp 100.000 lần so với dùng md5 (xem như 1 giây hash được 1 triệu md5). Đa số các hệ thống mới đều dùng strengthening kiểu này.]]>
/hvaonline/posts/list/35603.html#230483 /hvaonline/posts/list/35603.html#230483 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống

jcisio wrote:
Nhầm rồi. Hàm hash phức tạp (1000 vòng lặp chẳng hạn), cần 100 ms để hash xong 1 chuỗi thì nó sẽ làm thời gian brute-force tăng gấp 100.000 lần so với dùng md5 (xem như 1 giây hash được 1 triệu md5). Đa số các hệ thống mới đều dùng strengthening kiểu này. 
Cái này là anh jcisio tuyên bố bừa bãi hay có chứng minh Toán học cụ thể ạ ? ]]>
/hvaonline/posts/list/35603.html#230485 /hvaonline/posts/list/35603.html#230485 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống myquartz đọc kĩ security considerations của nó sẽ hiểu cái trade-off của nó là gì. Mình thì không phải dân kĩ thuật, nhưng mà HTTP digest auth thì mình cũng biết được từ khá lâu, chỉ là không rõ nó phổ biến ra sao thôi. Mình nghĩ là vì ở các góc nhìn khác nhau nên căn bản là không thể đưa đến được sự thống nhất tư tưởng. Các phương pháp chúng ta đưa ra ở đây có lẽ đều đạt mục tiêu chống pass the hash như chủ topic đưa ra. Thân mến.]]> /hvaonline/posts/list/35603.html#230487 /hvaonline/posts/list/35603.html#230487 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230499 /hvaonline/posts/list/35603.html#230499 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230505 /hvaonline/posts/list/35603.html#230505 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230507 /hvaonline/posts/list/35603.html#230507 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230520 /hvaonline/posts/list/35603.html#230520 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

eicar wrote:
Anh jcisio, em trích dẫn câu trả lời của anh vì câu đấy khá mơ hồ và sai lầm về một số mặt. Thứ nhất, anh cũng biết là số phép tính cần thiết để hash một chuỗi phụ thuộc vào thuật toán hash và kích thước của chuỗi đó. Điều thứ hai, anh nói hàm hash phức tạp "1000 vòng lặp" thì em cũng không rõ cái 1000 vòng lặp ở đây là cái gì, anh cũng biết là độ mạnh hay yếu của các thuật toán hash không chỉ phụ thuộc vào các "vòng lặp". Điều cuối cùng là việc tìm collision của hàm hash, ngay cả dùng brute-force đi nữa, thì trong thực tế người ta cũng không sai lầm đến mức mỗi lần thực hiện là sinh ra hàng tỉ tỉ giá trị hash để so sánh. Em không biết tất cả các phương pháp hiện tại, nhưng có một bài báo của Hellman viết cách đây cũng khá lâu mô tả phương pháp để tạo ra trade-off giữa thời gian và bộ nhớ cho việc tìm collision. Hiện nay thì em biết ý tưởng này người ta sử dung trong cái gọi là RainbowTable. Do vậy cái phép chia của anh sai lầm cả trên lý thuyết lẫn thực tế. 
- Về lí thuyết: a) cái 1000 vòng lập mình nói là thay vì tính X = H(a) thì mình tính X = H'(a) = H(H(H(H(...(H(a))))) (1000 lần, không salt cho đơn giản), thời gian sẽ gấp 1000 thôi. Khi nói đến strengthen mình không nói đến hàm băm cụ thể nào. b) Còn khi brute force, tất nhiên không sinh ra hoàn bộ hash, mình có thể suy luận được cái đó, vì nếu không thì chẳng có gì để nghiên cứu nữa. Số phép thử nhỏ hơn toàn bộ (chứ không thì 2^128 còn lớn hơn số lượng nguyên tử có trong vũ trụ này), nhưng cũng rất lớn đó. Và do đó thời gian tính H' gấp 1000 lần H, thời gian để bẻ khoá đương nhiên tăng 1000 lần. c) RainbowTable bạn đi google thì sẽ thấy nó không phải là cái bạn nói, và cũng không để tìm collision. Với lại với brute force (bẻ 1 khoá cụ thể) với collision là 2 cái khác nhau hoàn toàn, mặc dù khi có collision thì vấn đề bẻ bất kì khoá nào cũng trở nên dễ dàng hơn nhiều (nghe đồn thế, chứ chưa đọc chứng minh cụ thể). - Về thực tế: mình đã nói ở bài trước. Bạn xem phpass.]]>
/hvaonline/posts/list/35603.html#230524 /hvaonline/posts/list/35603.html#230524 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230527 /hvaonline/posts/list/35603.html#230527 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230530 /hvaonline/posts/list/35603.html#230530 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống

jcisio wrote:
@eicar: 100 ms / 1 us = 100.000 là hiển nhiên rồi, chứng minh gì nữa? @SG: mình không có tham gia tranh cãi, mình chỉ bảo câu bạn nói (được trích) là sai thôi, đó là một ngộ nhận rất nguy hiểm. Việc xây dựng một hàm hash đòi hỏi thời gian tính toán "lâu" là rất quan trọng. 2 trong 3 CMS phổ biến nhất (Drupal, Joomla, WP) đã dùng phpass rồi http://www.openwall.com/phpass/ 
Haha, bạn jcisio nói đúng, mình đã ngộ nhận, còn nguy hiểm như thế nào thì mình còn chưa rõ. Mình ngộ nhận như vậy, căn bản là vì mình luôn giả sử rằng người ta thiết kể các hash function với một thuộc tính bất di bất dịch: càng nhanh càng tốt. Chính vì vậy mình luôn mặc định rằng sự biến thiên về độ phức tạp là không đáng kể. Quan điểm của mình là cái gì được thiết kế ra và test kĩ lưỡng để dùng với mục đích này thì chỉ nên dùng nó với mục đích đó, và không nên trao cho nó trọng trách khác, vì có thể gây ra nhiều phiền toái bất ngờ trong tương lai. Còn bạn cho nó hash n lần (n=1000) thì mình công nhận là gây khó khăn cho quá trình brute-force. Tuy nhiên, mình cho rằng đây là một hạ sách. Vì sao? Security bao giờ cũng có cái giá của nó. Tuy nhiên, khi thay đổi một hệ thống để tăng cường security cho một điểm yếu, người ta cố gắng làm sao để chi phí càng ít càng tốt, và security được tăng cường càng nhiều càng tốt, đồng thời không tạo ra điểm yếu ở chỗ khác. Với việc hash 1000 lần, hoặc thiết kế một hàm hash khác có độ phức tạp hơn 1000 lần hàm hash cũ, bạn làm cho nỗ lực brute-force tăng thêm 1000 lần, nhưng đồng thời cũng làm cho chí phí trong quá trình xác thực của hệ thống tăng thêm 1000 lần. Nói cách khác, security và cost có cùng tỉ lệ. Giả sử kẻ tấn công có khả năng brute-force password khi bạn dùng hàm hash cũ. Bây giờ bạn có khả năng tăng 1000 lần chi phí cho việc xác thực, phải chăng attacker không có khả năng tăng 1000 lần chi phí cho việc tấn công, thậm chí là tệ hơn nữa nếu cái mớ chi phí đó không hoàn toàn do attacker bỏ ra? Ngoài ra, việc tăng cường độ phức tạp tính toán trong quá trình xác thực còn gây ra một vấn đề, đó là DoS, khi mà thời gian xác thực mất tới 100ms. Thú thực mình không biết là phương pháp này đã được cài đặt vào các sản phẩm nào, và bao nhiều phần trăm các hệ thống trên thế giới sử dụng các sản phẩm đó, và bao nhiêu phần trăm trong số đó enable chức năng này. Nếu bạn (hoặc ai đó tham gia topic) có thống kê thì có thể đưa ra để cùng thảo luận, vì có thể phương pháp này còn có ưu điểm khác mà mình chưa nhận ra. ]]>
/hvaonline/posts/list/35603.html#230648 /hvaonline/posts/list/35603.html#230648 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống

StarGhost wrote:

jcisio wrote:
@eicar: 100 ms / 1 us = 100.000 là hiển nhiên rồi, chứng minh gì nữa? @SG: mình không có tham gia tranh cãi, mình chỉ bảo câu bạn nói (được trích) là sai thôi, đó là một ngộ nhận rất nguy hiểm. Việc xây dựng một hàm hash đòi hỏi thời gian tính toán "lâu" là rất quan trọng. 2 trong 3 CMS phổ biến nhất (Drupal, Joomla, WP) đã dùng phpass rồi http://www.openwall.com/phpass/ 
Haha, bạn jcisio nói đúng, mình đã ngộ nhận, còn nguy hiểm như thế nào thì mình còn chưa rõ. Mình ngộ nhận như vậy, căn bản là vì mình luôn giả sử rằng người ta thiết kể các hash function với một thuộc tính bất di bất dịch: càng nhanh càng tốt. Chính vì vậy mình luôn mặc định rằng sự biến thiên về độ phức tạp là không đáng kể. Quan điểm của mình là cái gì được thiết kế ra và test kĩ lưỡng để dùng với mục đích này thì chỉ nên dùng nó với mục đích đó, và không nên trao cho nó trọng trách khác, vì có thể gây ra nhiều phiền toái bất ngờ trong tương lai. Còn bạn cho nó hash n lần (n=1000) thì mình công nhận là gây khó khăn cho quá trình brute-force. Tuy nhiên, mình cho rằng đây là một hạ sách. Vì sao? Security bao giờ cũng có cái giá của nó. Tuy nhiên, khi thay đổi một hệ thống để tăng cường security cho một điểm yếu, người ta cố gắng làm sao để chi phí càng ít càng tốt, và security được tăng cường càng nhiều càng tốt, đồng thời không tạo ra điểm yếu ở chỗ khác. Với việc hash 1000 lần, hoặc thiết kế một hàm hash khác có độ phức tạp hơn 1000 lần hàm hash cũ, bạn làm cho nỗ lực brute-force tăng thêm 1000 lần, nhưng đồng thời cũng làm cho chí phí trong quá trình xác thực của hệ thống tăng thêm 1000 lần. Nói cách khác, security và cost có cùng tỉ lệ. Giả sử kẻ tấn công có khả năng brute-force password khi bạn dùng hàm hash cũ. Bây giờ bạn có khả năng tăng 1000 lần chi phí cho việc xác thực, phải chăng attacker không có khả năng tăng 1000 lần chi phí cho việc tấn công, thậm chí là tệ hơn nữa nếu cái mớ chi phí đó không hoàn toàn do attacker bỏ ra? Ngoài ra, việc tăng cường độ phức tạp tính toán trong quá trình xác thực còn gây ra một vấn đề, đó là DoS, khi mà thời gian xác thực mất tới 100ms. Thú thực mình không biết là phương pháp này đã được cài đặt vào các sản phẩm nào, và bao nhiều phần trăm các hệ thống trên thế giới sử dụng các sản phẩm đó, và bao nhiêu phần trăm trong số đó enable chức năng này. Nếu bạn (hoặc ai đó tham gia topic) có thống kê thì có thể đưa ra để cùng thảo luận, vì có thể phương pháp này còn có ưu điểm khác mà mình chưa nhận ra.  
Điểm bạn ngộ nhận là điểm quan trọng khi thiết kế hệ thống, do đó mới "nguy hiểm". Về key stretching/strengthening thì bạn hãy đọc http://en.wikipedia.org/wiki/Key_strengthening. Do mình không làm về bảo mật, nên cũng chẳng biết sản phẩm nào dùng cái này. Chỉ biết 2 cái CMS phổ biến là WP và Drupal đang dùng như đã nói ở trên. Wi-Fi (WPA, WPA2) cũng dùng. Việc xác thực tốn thời gian, nhưng thời gian đó chẳng đáng kể gì so với công việc khác. Laptop của mình có thể tính 1 triệu MD5 trong 1 giây, tức tính 1000 lần chỉ mất 1 ms. Do dù là 100 ms đi nữa (rất rất an toàn!), con số này thường không đáng kể so với thời gian làm chuyện khác. Nếu bạn DDoS trang đăng nhập, thà đi DDoS các trang khác như search, post... còn hiệu quả hơn.]]>
/hvaonline/posts/list/35603.html#230678 /hvaonline/posts/list/35603.html#230678 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230682 /hvaonline/posts/list/35603.html#230682 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230687 /hvaonline/posts/list/35603.html#230687 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống /hvaonline/posts/list/35603.html#230692 /hvaonline/posts/list/35603.html#230692 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống Mình không nghĩ một administrator nào lại có thể nói rằng: à hệ thống của thằng kia DDoS dễ hơn kìa, sao mày không tấn công nó đi, tấn công tao làm gì.
Cả 2 trong cùng 1 hệ thống mà. Nhà bạn có 2 cửa: một cửa dễ vào, một cửa khó vào (trang đăng nhập không bao giờ là trang tiêu tốn tài nguyên nhiều nhất, nó chẳng phải làm gì ngoài việc tính hash), thế ăn trộm vào nó chọn cửa nào? PS: cho rằng một hệ thống dùng hash, thí dụ MD5, cũng an toàn như một hệ thống khác dùng key strenngthening (cũng với MD5 luôn) mà không nguy hiểm hả trời!]]> /hvaonline/posts/list/35603.html#230700 /hvaonline/posts/list/35603.html#230700 GMT Kỹ thuật tấn công Pass the Hash và cách phòng chống PS: cho rằng một hệ thống dùng hash, thí dụ MD5, cũng thiếu an toàn như một hệ thống khác dùng key strenngthening (cũng với MD5 luôn) thì có nguy hiểm hay không?  
Một khi mình đã giả định rằng hàm hash hoạt động nhanh, tức là mình đã không còn tính phụ thuộc vào nó như là một miếng vá security. Như vậy có nghĩa là mình sẽ tính đến việc sử dụng các giải pháp khác thay thế/bọc lót để chống password cracking. Như vậy thì có nguy hiểm chăng? Như đã nói ở trên, mình công nhận là trong hầu hết trường hợp thì việc áp dụng vẫn cho hiệu quả. Tuy nhiên, mình vẫn bảo lưu 2 quan điểm rằng kĩ thuật này không có "stand the test of time", và không nên dùng với hệ thống quan trọng và cần sự ổn định lâu dài. Bạn thử tưởng tượng attacker nắm trong tay hệ thống tính toán gồm vài chục nghìn máy tính thì sao? ]]>
/hvaonline/posts/list/35603.html#230709 /hvaonline/posts/list/35603.html#230709 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống

StarGhost wrote:
Một khi mình đã giả định rằng hàm hash hoạt động nhanh, tức là mình đã không còn tính phụ thuộc vào nó như là một miếng vá security. Như vậy có nghĩa là mình sẽ tính đến việc sử dụng các giải pháp khác thay thế/bọc lót để chống password cracking. Như vậy thì có nguy hiểm chăng? Như đã nói ở trên, mình công nhận là trong hầu hết trường hợp thì việc áp dụng vẫn cho hiệu quả. Tuy nhiên, mình vẫn bảo lưu 2 quan điểm rằng kĩ thuật này không có "stand the test of time", và không nên dùng với hệ thống quan trọng và cần sự ổn định lâu dài. Bạn thử tưởng tượng attacker nắm trong tay hệ thống tính toán gồm vài chục nghìn máy tính thì sao?  
Chẳng hiểu bạn chống kiểu nào, ở đây đang so sánh khi có và không có key strenthening. Thôi, cứ coi như bạn dùng thêm nhiều cái khác nữa để đảm bảo không ai ngó được vào hash vậy, nên cái sai của bạn không "nguy hiểm". Còn vài chục nghìn máy hay vài triệu máy cũng vậy thôi mà. Mặc áo giáp chống đạn đương nhiên tốt hơn áo thun ba lỗ cả chục lần. Nhưng cầm cây súng phóng lựu bắn một phát thì cũng như nhau! Còn bạn muốn bảo lưu quan điểm gì thì cứ bảo lưu, khi nào rảnh đọc mấy tài liệu về key strengthening rồi mà có thay đổi ý kiến thì vào đây nói vài dòng nhé. @mrro & các admin: có vẻ như các Admin của HVA cần làm gì đó để cập nhật kiến thức của thành viên cho có học thuật hơn nhỉ, mặc dù nó không dành cho số đông, không thì quanh quẩn ở mấy kiến thức cũ & nhàm chán. Lâu lâu cũng có vài cái mới nhưng lại chỉ là tiểu tiết. Chứ không thì phát hiện ra padding oracle attack mà HVA lại ít người biết nó là gì thì phí lắm, muốn thảo luận chi tiết kĩ thuật lại toàn nói chuyện với người nước ngoài.]]>
/hvaonline/posts/list/35603.html#230715 /hvaonline/posts/list/35603.html#230715 GMT
Kỹ thuật tấn công Pass the Hash và cách phòng chống

radiohead wrote:

invalid-password wrote:
Sau này thì mình dùng cách hash 2 lần với khoá k ngẫu nhiên từ server. Khi client kết nối, server sẽ gửi lại một khoá k ngẫu nhiên. Client sẽ gửi h = MD5(k, MD5(clear_text_password)) cho server. Nếu h bị capture thì không thể giải ra k và password. Nếu dùng kỹ thuật "Pass the hash" - gủi trực tiếp h đã capture được - thì cũng failed vì lần sau server sẽ gửi khoá k khác. Bây giờ thì mình ưa thích dùng giải thuật HMAC để hash password, cho nó có chuẩn !  
Cách của invalid-passwd sẽ bị qua mặt nếu kẻ tấn công đã từng thu được bản hass của pass trước đó (sniff từ trước khi có giải pháp thêm k, hoặc kẻ tấn công thu đc file lưu hash password của server. Vì khóa k ngẫu nhiên nhưng vẫn phải gửi clear text cho client hiểu nên việc tính ra h= MD5 (k, MD5(clear_text_pass)) là vẫn khả thi cho dù ko cần biết clear_text_pass Có thể sử dụng cách này h = MD5 (clear_text_pass, k) Vì kẻ tấn công trong quá khứ chỉ có được MD5 (clear_text_pass), và kết quả hash khác hoàn toàn so với MD5 (clear_text_pass, k) nên có thể giải quyết kiểu tấn công pass the hash (với điều kiện clear_text_pass phải đủ dài để ko thể bị đoán ngược từ bản MD5(clear_text) ).  
Cách của radiohead (tô màu cam) em nghĩ cũng không đúng. Vì CSDL trên server không lưu trữ clear_text_pass mà chỉ lưu trữ password đã được hash, có thể là MD5(class_text_pass) cho nên việc tái tạo 1 cái h' trên server để so sánh với cái h (tô màu cam) gửi từ phía client là không thể.]]>
/hvaonline/posts/list/35603.html#273074 /hvaonline/posts/list/35603.html#273074 GMT