banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận thâm nhập Kỹ thuật tấn công Pass the Hash và cách phòng chống  XML
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 23/08/2010 15:52:34 (+0700) | #1 | 218988
hvthang
Member

[Minus]    0    [Plus]
Joined: 20/07/2005 03:26:58
Messages: 187
Offline
[Profile] [PM]
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
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 23/08/2010 16:04:56 (+0700) | #2 | 218989
hvthang
Member

[Minus]    0    [Plus]
Joined: 20/07/2005 03:26:58
Messages: 187
Offline
[Profile] [PM]
Em đọc bài viết này thấy khá hay nên lược dịch lại.
Qua đó em cũng có một số câu hỏi thảo luận:
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
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.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 26/08/2010 08:28:44 (+0700) | #3 | 219152
[Avatar]
invalid-password
Member

[Minus]    0    [Plus]
Joined: 09/03/2010 21:22:46
Messages: 161
Offline
[Profile] [PM]

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.
Spam thêm một bài là góp một viên gạch xây diễn đàn lớn mạnh
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 26/08/2010 14:29:44 (+0700) | #4 | 219190
[Avatar]
rongchaua
Elite Member

[Minus]    0    [Plus]
Joined: 19/01/2003 04:09:23
Messages: 124
Offline
[Profile] [PM]
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?
My website: http://rongchaua.net
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 26/08/2010 17:04:24 (+0700) | #5 | 219205
PXMMRF
Administrator

Joined: 26/09/2002 07:17:55
Messages: 946
Offline
[Profile] [PM]

Hoan nghênh bài dịch có phân tích thêm của bạn hvthang.
Bài này mới đăng trên website Windowssecurity.com vào tháng 7 vừa rồi và có nhiều điểm rất đáng tham khảo.
Trong quá trình check bảo mật các website server, có không ít lần tôi tìm được một số password dưới dạng Hash, nhưng rất ngại brute force nó ra, vì tốn rất nhiều thời gian, đặc biệt là với các pass. có nhiều ký tự.
Vì vậy đây là một kỹ thuật cũng khá hay.

========
Góp ý:
Trong bài dịch của bạn cần chú ý dịch kỹ những đoạn quan trong nhất, để người đọc dễ hiểu. 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ỉ...

The absence of disagreement is not harmony, it's apathy.
(Socrates)
Honest disagreement is often a good sign of progress.
(Mahatma Gandhi)
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 27/08/2010 07:03:40 (+0700) | #6 | 219229
[Avatar]
invalid-password
Member

[Minus]    0    [Plus]
Joined: 09/03/2010 21:22:46
Messages: 161
Offline
[Profile] [PM]

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.
Spam thêm một bài là góp một viên gạch xây diễn đàn lớn mạnh
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 17/01/2011 08:21:58 (+0700) | #7 | 229629
[Avatar]
radiohead
Member

[Minus]    0    [Plus]
Joined: 07/01/2009 22:19:36
Messages: 12
Offline
[Profile] [PM]

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) ).






[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 24/01/2011 23:21:07 (+0700) | #8 | 230278
[Avatar]
angel-pc
Member

[Minus]    0    [Plus]
Joined: 01/01/2011 01:15:32
Messages: 63
Offline
[Profile] [PM]
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 smilie

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
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 00:28:58 (+0700) | #9 | 230282
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]

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 smilie

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 smilie , 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 smilie

Rất mong bồ có ý tưởng đề xuất smilie
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 02:04:46 (+0700) | #10 | 230283
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@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.
Mind your thought.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 08:04:50 (+0700) | #11 | 230291
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]

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




-- w~ --
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 09:09:10 (+0700) | #12 | 230298
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@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.
Mind your thought.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 09:22:23 (+0700) | #13 | 230299
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]

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.
-- w~ --
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 09:43:57 (+0700) | #14 | 230302
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]

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"?
Mind your thought.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 10:13:17 (+0700) | #15 | 230304
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]

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


-- w~ --
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 11:08:19 (+0700) | #16 | 230313
[Avatar]
angel-pc
Member

[Minus]    0    [Plus]
Joined: 01/01/2011 01:15:32
Messages: 63
Offline
[Profile] [PM]

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 smilie

Rất mong bồ có ý tưởng đề xuất smilie 


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ợ smilie

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?
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 11:39:15 (+0700) | #17 | 230318
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]

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" smilie.

[1] - http://mitworld.mit.edu/video/42

-m
http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 16:32:17 (+0700) | #18 | 230331
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
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?
Mind your thought.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 17:55:55 (+0700) | #19 | 230341
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]
@StarGhost: ờ thì sử dụng OTP thì sẽ phải giải quyết những hạn chế của OTP. ví dụ như vấn đề mà StarGhost đưa ra thì làm sao đảm bảo key (hoặc key stream) chỉ dùng một lần thôi.

khi đưa ra ví dụ sử dụng OTP, ý mình chỉ là nó là một ví dụ đơn giản rõ ràng cho một cái hệ mã có tính giao hoán, để minh hoạ như là một lời giải của bài toán "một hòm hai chìa khoá" :-D.

-m

http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 25/01/2011 18:17:51 (+0700) | #20 | 230343
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]
@SG: ah há, sao khi gửi cái reply vừa rồi mình mới hiểu ý của SG. đúng là nếu dùng OTP thì cái scheme sẽ hoàn toàn bị phá vỡ một cách đơn giản. haha hình như trong cái video mình gửi, đoạn sau ông giáo sư có nói đến cái này.

giải thích cho bạn nào muốn tìm hiểu (ghi sẵn mã latex, để mai mốt anh conmale có hỗ trợ latex thì nó thành hình cho đẹp):

- giả sử message là P, key của server [latex]K_s[/latex], key của client là [latex]K_c[/latex].

- dùng OTP, nên client sẽ gửi cho server: [latex]C_1 = K_c \oplus P[/latex].

- server nhận được [latex]C_1[/latex], sẽ gửi ngược lại cho client:

[latex]C_2 = K_s \oplus C_1 = K_s \oplus K_c \oplus P[/latex].

- lúc này attacker có [latex]C_1[/latex] và [latex]C_2[/latex], nên sẽ tính được:

[latex]C_1 \oplus C_2 = K_c \oplus P \oplus K_s \oplus C_1 \oplus P = K_s[/latex].

- nhận được C_2, client sẽ gửi ngược lại cho server:

[latex]C_3 = C_2 \oplus K_c = K_s \oplus P[/latex].

- có C_3, có K_s, attacker sẽ tính được P.

-m
http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 26/01/2011 19:42:50 (+0700) | #21 | 230394
eicar
Member

[Minus]    0    [Plus]
Joined: 25/01/2011 06:49:53
Messages: 13
Offline
[Profile] [PM]

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.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 26/01/2011 20:00:54 (+0700) | #22 | 230396
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
Bạn 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.
Mind your thought.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 26/01/2011 23:15:43 (+0700) | #23 | 230401
eicar
Member

[Minus]    0    [Plus]
Joined: 25/01/2011 06:49:53
Messages: 13
Offline
[Profile] [PM]
Vâng, đúng là em sai hoàn toàn, nếu 2 bên không có thoả thuận trước về bộ phân cực photon thì cũng chẳng có cách nào để biết khoá sẽ sử dụng là gì.

Ý 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.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 27/01/2011 08:41:05 (+0700) | #24 | 230412
mrro
Administrator

Joined: 27/12/2001 05:07:00
Messages: 745
Offline
[Profile] [PM]
@eicar: cho mình hỏi một cái này ngoài lề chút. bạn nói là kiểm tra tính đúng đắn của giao thức và kiểm tra sự tồn tại của virus trong trường hợp tổng quát là NP-complete, nhưng mà theo mình thấy thì mấy bài toán dạng này phải là undecidable giống như bài toán dừng chứ nhỉ?

-m
http://tinsang.net

TetCon 2013 http://tetcon.org

Làm an toàn thông tin thì học gì?/hvaonline/posts/list/42133.html
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 27/01/2011 08:57:06 (+0700) | #25 | 230414
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]

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. smilie 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?
Mind your thought.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 27/01/2011 11:23:35 (+0700) | #26 | 230429
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
Thấy vấn đề đi lạc đến đâu rồi.

Pass the hash có vẻ là cách replay attack, khi login, hacker chỉ đơn giản gửi cái hash đã biết mà ko cần biết cái gì tạo nên cái hash đó.
Cái này hình như chống bằng cách là challenge-response. server ko chỉ gửi yêu cầu xác thực mà còn cả chuỗi challenge, client bắt buộc phải dùng chuỗi đó để tính, hợp với pass.
Ví dụ:
server gửi: c (chuỗi ngẫu nhiên, có remember lại, hoặc 1 uniqID không bao giờ lặp lại cùng với 1 user).
client trả lời: hash = md5(login-password + c)
server kiểm tra bằng cách tính lại: md5(db-password + c), do password lưu trong DB. Nếu 2 chuỗi này = nhau thì login-password sẽ tương thích db-password, xác thực thành công.
Nếu hacker ăn trộm cái hash của client, thì không thể xài với c khác mà server trả về.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 27/01/2011 12:44:56 (+0700) | #27 | 230435
[Avatar]
WinDak
Researcher

Joined: 27/01/2002 11:15:00
Messages: 223
Offline
[Profile] [PM]
Trên thực tế, theo mình nếu muốn bảo đảm thông tin trao đổi 1 cách an toàn thì tốt nhất sử dụng các protocol đã được implement sẵn, vd thay vì http -> https. chứ không nên "re-invent the wheel" dễ dẫn đến các sai lầm như pass-the-hash
-- w~ --
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 27/01/2011 15:43:16 (+0700) | #28 | 230447
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@myquartz: protocol của bạn chỉ đảm bảo là password không truyền qua môi trường Internet dưới dạng plaintext, nhưng nó lại bị lưu trong server dưới dạng plaintext. Ngoài ra, protocol này còn cho phép nghe lén sau đó brute-force để tìm ra password. Trên thực tế, lời khuyên của 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.
Mind your thought.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 28/01/2011 05:14:59 (+0700) | #29 | 230463
myquartz
Member

[Minus]    0    [Plus]
Joined: 04/01/2005 04:58:30
Messages: 563
Offline
[Profile] [PM]
SG à, không nhất thiết phải lưu mật khẩu dạng clear text. Mật khẩu cũng có thể hash 1 lần rồi.
Giống như HTTP Digest Authentication, người ta cũng làm như vậy. Chỉ cần lưu HA1 thôi, ko cân clear-text password.
Còn brute force ra mật khẩu, thì nó chỉ phụ thuộc vào sức mạnh của hàm hash và độ phức tạp của mật khẩu thôi. Đặt mật khẩu mạnh thì ko thể ra nhanh được đâu.
[Up] [Print Copy]
  [Article]   Kỹ thuật tấn công Pass the Hash và cách phòng chống 28/01/2011 06:22:05 (+0700) | #30 | 230464
StarGhost
Elite Member

[Minus]    0    [Plus]
Joined: 29/03/2005 20:34:22
Messages: 662
Location: The Queen
Offline
[Profile] [PM]
@myquartz: Ừ bạn có thể hash cái mật khẩu đó, nhưng nếu vậy attacker cũng không cần biết cái mật khẩu đó là gì, chỉ cần biết cái giá trị hash thôi là đủ để xác thực thành công rồi. Nói cách khác, với cái kiểu protocol của bạn, giả sử attacker chẳng may truy cập được file password của server thì hoàn toàn có thể login vào bằng bất cứ username nào trong file password đó mà không cần tốn công sức gì cả.

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. Tuy nhiên, nếu những người thiết kế các giao thức authentication mà luôn giả định rằng user sẽ đặt mật khẩu đủ mạnh thì người ta còn cần đến những cái key dài dài làm gì hả bạn?
Mind your thought.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|