Dictionary attack và brute force attack - Vietnamese password dictionary attack

Thảo luận trong 'Web Security' bắt đầu bởi lowsec, 22/11/13, 09:11 AM.

  1. lowsec

    lowsec W-------

    Tham gia: 04/11/13, 04:11 PM
    Bài viết: 10
    Đã được thích: 0
    Điểm thành tích:
    16
    Dictionary Attack và Brute Force attack

    Đầu tiên cần có chút phân biệt nho nhỏ giữa 2 kiểu tấn công nhắm vào mật khẩu này. Nhưng trước nhất chúng ta nên nói sơ qua về password ( tôi không dùng từ Mật Khẩu vì từ này sai tét bét ).

    Password mà tôi nói tới ở đây thường là một chuỗi tổ hợp ký tự có độ dài giới hạn bao gồm tất cả các ký tự mà bảng mã ký tự lớn nhất hành tinh hiện nay có thể đánh mã số - bảng mã Unicode. Sức mạnh của password nằm ở 2 điểm

    - Chỉ một hoặc một số ít người biết nội dung ( tổ hợp ký tự được dùng ) làm password. Điều này đem tới thứ lợi ích đầu tiên là “bí mật”
    - Nếu một người không biết nội dung của password thì buộc phải dí dao vào cổ thằng có password để đòi hoặc buộc sẽ phải đoán. Tức là phải tốn công sức ở một mức độ nào đó để lấy được Password. Điều này đem đến lợi ích thứ 2 “bảo mật”

    Theo như điểm thứ 2 ở trên thì chúng ta hình thành được 2 con đường để phá vỡ lợi ích “bảo mật” ( bảo vệ bí mật ) của password

    - Dí dao lấy password từ thằng có password. Dĩ nhiên là tôi nói đùa đấy, đây là cách nói cụ thể cho hướng lấy password từ chính người có nó, thông qua tấn công APT, nghe lén, keylogging… Tuy nhiên nếu như người có password là người không dễ để có thể lấy được password, ví dụ: không thể dí dao vào cổ Tổng Thống Mỹ để lấy password ( bạn sẽ bị phơ ngay 1 viên kẹo ), hoặc attack vào máy tính của một chuyên gia bảo mật am tường ( kiểu như lão mrro, gamma95 ) bạn sẽ bị phản “damage” nếu thử attack họ ( ví dụ stl chơi dại khi đụng vào anh TQN )
    - Đoán mò password. Đúng bạn phải “đoán” và “mò” password
    Tôi sẽ nói rõ hơn về vụ “đoán” và “mò” password này. Đây là 2 động từ tiếng Việt của 2 phương pháp kỹ thuật tấn công password dưới đây
    - Đoán: Dictionary Attack
    - Mò: Brute Force Attack

    Brute Force Attack:

    Tôi sẽ nói về cái này trước. Đây là kiểu tấn công mà bạn sẽ “mò” tất cả các tổ hợp ký tự có thể là password cho đến khi có một tổ hợp ký tự trùng khớp với tổ hợp ký tự được dùng làm password. Phương pháp tấn công này giúp ta thấy rõ được điểm mạnh cốt lõi của password.

    Password là bí mật, không ai biết được nó có độ dài bao nhiêu và tổ hợp từ những ký tự gì ngoài người sở hữu nó

    Người tấn công về mặt lý thuyết buộc phải thử “tất cả” các trường hợp có thể có của tổ hợp ký tự cho đến khi tìm ra tổ hợp đúng. Chính cái “tất cả” này làm cho password an toàn. Do năng lực tính toán là có “giới hạn” nên việc “mò” hết “tất cả” các tổ hợp sẽ tốn 1 thứ là “thời gian”. Nếu một password có thể đẩy việc mò ra nó tới một thời gian xa xôi trong tương lai ( tính bằng ngàn năm ) thì coi như nó thắng người tấn công vì người đó không thể chờ tới lúc mò ra được password.

    Để đẩy việc “mò” password tới một thời gian xa xôi trong tương lai người ta có 2 cách, dựa trên 2 thành tố cơ bản tạo thành password: độ dài password và độ dài bảng ký tự được sử dụng.

    Ví dụ:

    Với một bảng ký tự như sau:

    Mã:
    abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
    ta có tất cả 65 ký tự

    Ta tạo thành một mật khẩu: Hvaonline2013

    Có độ dài là 13 ký tự

    Vậy tôi có 369,720,589,101,871,000,000,000 tổ hợp
    Giả sử tôi có một máy tính với khả năng tạo 80,000,000 tổ hợp ký tự trên 1 giây. Thì tôi cần

    Mã:
    4,621,507,363,773,390 second (hoặc)
    77,025,122,729,557 minutes (hoặc)
    1,283,752,045,493 hours (hoặc)
    53,489,668,562 days (hoặc)
    1,782,988,952 months (hoặc)
    148,582,413 years
    Rất nhiều thiên niên kỷ trôi qua để làm công việc này. Do đó password này đạt được thứ lợi ích là “bảo mật”

    ( Hãy nhớ các con số phía trên tôi tính, để lát nữa bạn thấy một điểm yếu khác của password khiến password có thể bị phá vỡ nhanh hơn trên kia. Bên cạnh đó tôi có viết một bài về cách tính số tổ hợp ký tự tại đây http://xnohat.blogspot.com/2011/06/cach-tinh-so-to-hop-mat-khau-can-phai.html )

    Tóm lại, với kiểu tấn công Brute force password tôi sẽ chết già trước khi mò các mật khẩu có độ dài lớn. Và các password sẽ an toàn trước tôi.

    Tuy nhiên đời không như là mơ !

    Dictionary Attack:

    Vấn đề của Brute Force Attack là việc “mò” hết “tất cả” các tổ hợp làm tôi “mất thời gian”. Thể nên kỹ thuật Dictionary Attack ra đời. Kỹ thuật này thay hành động “mò” vô tội vạ bằng hành động “đoán” có tính toán.
    Bạn có thể hiểu sơ sơ về phương thức tấn công này dựa vào cái tên của chính nó “Dictionary” tức “từ điển”, hay nói ngắn gọn bạn có một danh sách các tổ hợp ký tự có “khả năng cao” là password rồi mang dò coi trong cái danh sách đó có cái nào là password không.

    Từ khóa trong đoạn trên là “khả năng”. Chính xác thứ làm cho phương pháp tấn công này trở nên yếu ớt trước password là “khả năng” password nằm trong cái danh sách ( từ điển ) của bạn là “giới hạn”. Vì nếu bạn có một danh sách quá dài, “thời gian” để bạn dò hết danh sách đó cũng sẽ khiến bạn thua cái password nếu nó đẩy bạn tới một giới hạn thời gian xa xôi trong tương lai. Do đó việc cần làm ở đây là “đoán” về “cấu trúc” của password rồi từ đó hình thành một từ điển “ngắn gọn hơn” và có “khả năng cao hơn”. Ví dụ một số điểm có thể được coi là thành phần cấu trúc của password:

    - Password có thể hình thành từ một cụm từ có nghĩa trong một ngôn ngữ cụ thể: Password có thể là một cụm từ tiếng Việt chẳng hạn, ví dụ: phucdeptrai
    - Password có thể được đặt theo một thói quen: kiểu như 123456789, 987654321, 123456, 1234567, 12345678, matkhau, password, admin …
    - Thành phần của password được hình thành theo một khuôn mẫu: ví dụ Xuanthanh2503
    Bằng việc dựa vào các khuôn mẫu nêu trên kèm với việc điều tra tính cách cá nhân người tạo Password, tôi có thể giới hạn danh sách password xuống thành một cái list khá gọn hơn. Ví dụ tôi nhận định một cái list tương đối phù hợp cho người Việt Nam sẽ bao gồm:

    - Ngôn ngữ: tiếng Việt
    - Tổ hợp từ có nghĩa
    - Số từ trong mật khẩu: 2 hoặc 3
    - Theo như tôi thống kê từ khá nhiều DB tôi tiếp cận được ( trong qua trình nghiên cứu, các DB này do các hacker vứt bừa bãi trên các diễn đàn mạng, tôi down về phân tích ). Các password được coi là “mạnh” ở Việt Nam thường có dạng:
    + Cụm 2-3 tự tiếng Việt có nghĩa
    + Chữ cái đầu viết hoa – 2 từ tiếng Việt có nghĩa – từ 3 đến 4 chữ số
    + Ký tự @#$! - Chữ cái đầu viết hoa – 2 từ tiếng Việt có nghĩa – từ 3 đến 4 chữ số - Ký tự @#$!

    Với sự giới hạn lại trong các khuôn mẫu tôi cho rằng ( khá chủ quan ) khả năng password nằm trong danh sách của tôi đối với trường hợp người Việt tạo password là cao

    Một số tính toán:

    Tôi có một danh sách 1556 từ tiếng Việt đơn

    Password dự trù theo dạng Cụm 2-3 “từ” tiếng Việt có nghĩa thì tôi có tổng cộng

    3,767,287,616 tổ hợp “từ”

    Bạn sẽ thấy sự khác biệt ở đây là tôi có 3,767,287,616 tổ hợp “từ” chứ không phải tổ hợp “ký tự”, mà từ thì có thể dài tới 21 ký tự trong trường hợp password có 3 chữ “nghieng” ( từ dài nhất trong tiếng Việt )
    Cũng với máy tính với sức tính toán như trên chúng ta sẽ cần:

    Mã:
    Alphabe Table	1,556	(Word, no number)	
    Password length	3		
    Total combination	3,767,287,616		
    			
    Computing Power	80,000,000	hash/s	
    Time	47	second	(or)
    	1	minutes (or)
    	0	hours	(or)
    	0	days	(or)
    	0	months	(or)
    	0	years
    Chính xác là còn khoảng 47 giây để crack mật khẩu dài 21 kí tự ! ( khoảng 1 ngày cho 28 kí tự )
    Điều cốt lõi ở đây là số tổ hợp “từ” sẽ ít hơn số tổ hợp “ký tự” do không gian tổ hợp bị thu hẹp xuống rất nhiều lần. Với một password 3 từ thì nó cũng không khác mấy khi so với một password 3 ký tự trong trường hợp này

    Vietnamese Password Dictionary (vipasswordict):

    Vấn đề khi thi triển kỹ thuật tấn công Dictionary Attack là ở Việt Nam chưa có một file từ điển nào được tổ hợp cho mục đích trên. Do đó tôi đang start một dự án nho nhỏ về tạo một vài bộ từ điển password dict cho ngôn ngữ Tiếng Việt. Sơ bộ thì sẽ có các bộ password dict:

    - 1556 Từ tiếng Việt đơn ( đã hoàn tất ): bộ từ này là bộ căn bản dùng để tổ hợp các bộ khác, là 1556 từ tiếng Việt không dấu và đơn nhất
    - Tổ hợp 2 từ tiếng Việt ( đã hoàn tất )
    - Tổ hợp 3 từ tiếng Việt ( hoàn tất 45% - tạm dừng ): tôi đang phải cải thiện lại thuật toán tổ hợp vì nó chưa tận dụng được toàn bộ năng lực tính toán tôi có trên một máy tính Core i3
    - Tổ hợp 3 từ tiếng Việt – padding thêm 4 kí tự số ( 0000-9999) ( đang thực hiện): vì theo như tôi thống kê từ khá nhiều DB tôi tiếp cận được ( trong qua trình nghiên cứu, các DB này do các hacker vứt bừa bãi trên các diễn đàn mạng, tôi down về phân tích ). Các password được coi là “mạnh” ở Việt Nam thường có dạng “Xuanthanh2503”
    - Tổ hợp 3 từ tiếng Việt – kí tự đầu viết hoa – padding thêm 4 kí tự số ( 0000-9999) ( chưa thực hiện )

    Hiện tôi đã có tạo một project trên GitHub và sẽ dần dần release từng bộ từ điển tôi tổ hợp xong lên đây

    https://github.com/xnohat/vipasswordict

    xnohat

    (ST)
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  2. Bkis Hunter

    Bkis Hunter Active Member

    Tham gia: 30/12/17, 06:12 PM
    Bài viết: 43
    Đã được thích: 3
    Điểm thành tích:
    8
    Phiền bác nào hướng dẫn cụ thể các bước thực hiện dictionary attack dc ko ạ???
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  3. du0n9

    du0n9 Active Member

    Tham gia: 28/01/18, 12:01 PM
    Bài viết: 25
    Đã được thích: 8
    Điểm thành tích:
    3
    @Bkis Hunter
    Bạn muốn hỏi cách tạo từ điển để sử dụng hay cách thực hiện dictionary attack trong trường hợp cụ thể ?
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  4. Bkis Hunter

    Bkis Hunter Active Member

    Tham gia: 30/12/17, 06:12 PM
    Bài viết: 43
    Đã được thích: 3
    Điểm thành tích:
    8
    Ý em là cách thực hiện dictionary attack trong tình huống cụ thể đó anh( cả cách tạo wordlist nữa ạ)
     
    Chỉnh sửa cuối: 04/02/18, 10:02 AM
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  5. du0n9

    du0n9 Active Member

    Tham gia: 28/01/18, 12:01 PM
    Bài viết: 25
    Đã được thích: 8
    Điểm thành tích:
    3
    @Bkis Hunter
    Mình là newbie nên cũng chỉ có thể chia sẻ:
    - Dò pass wifi bằng Aircrack-ng hoặc Pyrit
    - Dò pass tài khoản web bằng Hydra
    - Tạo wordlist với Crunch
    Thực tế wordist thì đơn giản là file văn bản chứa các mật khẩu mà bạn muốn thử nên bạn có thể tự mình viết một chương trình để tạo ra theo ý muốn.
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    Bkis Hunter and whf like this.