Cách hack mã 2FA


Ngay từ khi internet xuất hiện, attacker đã bắt đầu khám phá các kỹ thuật để tấn công vào các hệ thống. Tương tự như vậy các chuyên gia bảo mật đã đưa ra các phương pháp để ngăn chặn kẻ tấn công xâm nhập vào hệ thống. Ví du như xác thực 2 yếu tố (Two factor authentication - 2fa) . Xác thực 2 yếu tố là một phương pháp sử dụng một thiết bị cầm tay như là một chứng thực cho các cổng trực tuyến. Trong khi hầu hết các tổ chức xem đó là một phương tiện an toàn để xác thực người dùng của họ vào các cổng của họ, có nhiều phương pháp sử dụng để bỏ qua xác thực 2 yếu tố. Các kỹ thuật để bỏ qua 2fa dựa trên việc lạm dụng thiết kế và triển khai mà thường không được các quản trị viên ứng dụng web xem xét, cung cấp đòn bẩy cho kẻ tấn công để xâm nhập dữ liệu người dùng.


Cách hack mã 2FA

Cơ chế làm việc của xác thực hai yếu tố:

Xác thực hai yếu tố (2FA) thêm lớp bảo mật bổ sung vào tài khoản trực tuyến của bạn bằng cách yêu cầu thêm một mã xác minh sau khi bạn đăng nhập bằng tên tài khoản và mật khẩu của bạn.

Mã xác minh được tạo ra bởi một ứng dụng trên điện thoại thông minh của bạn. Để truy cập tài khoản của bạn, một kẻ tấn công tiềm năng sẽ cần tên toài khoản, mật khẩu, cũng như điện thoại của bạn.Xác thực 2 yếu tố hoạt động trên nguyên tắc "Thứ gì đó mà ai cũng có" để có thể gửi mã đến người dùng thông qua "thứ đó". Trong nhiều trường hợp là điện thoại của bạn. Có hai phương pháp được sử dụng để gửi mã dùng1 lần (mã sẽ chỉ dành cho user đó tại một thời điểm, và sau khi user này dùng mã, mã này sẽ bị hủy bỏ tại thời điểm đó) đến điện thoại của bạn.

A. Sử dụng tin nhắn văn bản

B. Sử dụng phần mềm của bên thứ ba (Tự động, Google Authenticator)

Sử dụng tin nhắn văn bản

Các nhà cung cấp ứng dụng Web bằng cách sử dụng các API SMS công cộng có thể đưa ra thuật toán tạo mã của riêng họ để gửi mã 2Fa qua SMS tới người dùng. Phương pháp này không yêu cầu bất kỳ loại truy cập internet trên điện thoại di động thay vì nó sử dụng GSM để gửi ra mã dùng 1 lần.

Sử dụng phần mềm của bên thứ ba

Một mã dùng1 lần cũng có thể được gửi bằng cách tích hợp cơ chế đăng nhập của ứng dụng web với phần mềm của bên thứ ba như Authy hoặc Google authenticator. Phương pháp này yêu cầu điện thoại truy cập internet, tuy nhiên sử dụng ứng dụng giao tiếp với giao diện đám mây của nó mà giao tiếp với chức năng đăng nhập của ứng dụng web để tạo ra và đồng bộ hóa thời gian với bảng đăng nhập.

Về cơ bản có 4 bước liên quan đến việc làm việc của 2fa

1. Xác thực ứng dụng
2. Đăng nhập Tiêu chuẩn
3. Tạo OTP
4. Giao OTP

Các Loại Tokens Xác thực:

Hiện tại, có ba loại OATH OTP khác nhau được sử dụng rộng rãi nhất: event-based tokens (mã dựa trên sự kiện), time-based tokens (dựa trên các dấu hiệu thời gian), and challenge-based tokens (các mã thông báo dựa trên sự thách thức).

Token dựa trên sự kiện (HOTP): Một hệ thống OTP tạo các thẻ dựa trên sự kiện theo yêu cầu bằng cách sử dụng một giá trị khóa tĩnh ngẫu nhiên (HMAC, H trong HOTP) và một giá trị động, chẳng hạn như một bộ đếm (IETF, 2005). Mã thông báo dựa trên sự kiện thường có giá trị trong một khoảng thời gian thay đổi, nhưng có thể có giá trị trong một khoảng thời gian không giới hạn.

Token dựa trên thời gian (Time-Based Token - TOTP): Hệ thống OTP tự động tạo ra các token dựa trên thời gian dựa trên giá trị khóa tĩnh ngẫu nhiên và giá trị thời gian động (như thời gian hiện tại). Mã thông báo dựa trên thời gian chỉ hợp lệ trong một khoảng thời gian nhất định, chẳng hạn như 30 hoặc 60 giây (IETF, TOTP: Thuật toán mật khẩu một lần dựa trên thời gian, 2011). TOTP là tập hợp con của HOTP.

Hệ thống OTP dựa trên thách thức (OCRA): Một hệ thống OTP tạo ra các thẻ dựa trên sự thách thức theo yêu cầu (IETF, OCRA: OATH Challenge-Response Algorithm, 2011), sử dụng một chìa khóa thử thách ngẫu nhiên được cung cấp bởi máy chủ xác thực tại mỗi log- trong. Tín hiệu dựa trên thách thức có giá trị trong một khoảng thời gian nhất định như vài phút.

Khoảng trống trong cơ chế xác thực hai yếu tố hiện tại :

Cơ chế xác thực hai yếu tố hiện tại là thiếu sót từ khía cạnh thiết kế của nó tới cách thực hiện. Hệ thống xác thực hai yếu tố được thiết kế ban đầu nhằm tăng cường tính bảo mật của khách hàng và người sử dụng các nền tảng trực tuyến. Nó không bao giờ được tính đến như là một hệ thống như vậy cũng cần có sự an toàn riêng của nó, do thực tế này có một số cách giải quyết được thảo luận thêm trong bài báo có thể được sử dụng để bỏ qua 2fa trong những hoàn cảnh khác nhau (Etay, 2014). Tuy nhiên, trọng tâm chính ở đây là xác định các sai sót trong việc thực hiện và thiết kế 2Fa.

Bypass xác thực 2 yếu tố :

Trong bài báo này, có bốn phương pháp bỏ qua hai cơ chế xác thực yếu tố trong các hệ thống dựa trên web.

Bỏ qua 2fa bằng cách sử dụng quản lý phiên truyền thống

Phương pháp này là bỏ qua cơ chế xác thực hai yếu tố sử dụng chức năng đặt lại mật khẩu. Trong hầu hết các ứng dụng web, chức năng đặt lại mật khẩu sẽ tự động ghi lại người dùng vào ứng dụng sau khi hoàn tất thủ tục thiết lập lại (Securityweek, 2016). Hầu hết thời gian, hệ thống 2fa không được thực hiện trên chức năng đăng nhập sau khi đặt lại mật khẩu. Dòng quá trình hoạt động theo cách sau

Quên Mật khẩu> Yêu cầu mã đặt lại mật khẩu > Sử dụng mã để đặt lại mật khẩu > Đăng nhập vào ứng dụng web

Bằng cách sử dụng kỹ thuật này kẻ tấn công có thể bỏ qua việc xác thực hai yếu tố trong các nền tảng trực tuyến. Về cơ bản, mã thông báo đặt lại mật khẩu sẽ được gửi ngay đến email ( ví dụ như facebook hiện tại ) vì thế mà nếu có email của bạn thì attacker sẽ bypass được bảo mật 2 lớp.


Nếu khi quên mật khẩu cũng yêu cầu xác thực qua điện thoại thì sẽ bảo mật hơn.

Bypass 2FA qua cơ chế Oauth

Tích hợp Oauth là một cơ chế đăng nhập của bên thứ ba cho phép người dùng đăng nhập bằng tài khoản bên thứ ba. Đây là điều phổ biến của ứng dụng web nổi tiếng như facebook hoặc google. Một yêu cầu Oauth điển hình hoạt động theo cách sau đây :

Site.com yêu cầu facebook một mã token > facebook xác nhận tài khoản người dùng > Facebook gửi mã lại trang > Site.com cho phép đăng nhập.

Vì khi đăng nhập theo cơ chế này không có sự can thiệp của 2FA. Kẻ tấn công có thể sử dụng cơ chế này và sử dụng tích hợp Oauth để đăng nhập vào ứng dụng web thay vì sử dụng tên người dùng và mật khẩu để làm như vậy (Shah, 2014). Để bỏ qua việc làm việc này, kẻ tấn công phải có quyền truy cập vào tài khoản tích hợp Oauth để đăng nhập thay mặt cho người dùng.

Điển hình cho việc này là các trang web hack like hiện tại.

Bypass 2fa thông qua brute force

Các nhà phát triển web đã để lại một lỗ hổng rất lớn khi bỏ qua giới hạn tốc độ cho các trường đầu vào, trường hợp của 2fa nếu trường không bị giới hạn thì có khả năng các cuộc tấn công bằng vũ lực sử dụng mà kẻ tấn công có thể buộc mã lực 2fa gửi đến Thiết bị (Bullock, 2016). Thường thì độ dài của mã 2fa là từ 4 đến 6 ký tự thường là con số, và làm cho một khả năng 151.800 mà trong kịch bản thực tế là dễ dàng brute forceable bằng cách sử dụng một máy tính bình thường.

Điều này cũng đã xảy ra với cơ chế quên mật khẩu qua số điện thoại facebook. Một mã 2FA của facebook có 6 kí tự nên sẽ có 999.999 mã có thể tạo ra. Nên nếu attacker chọn ra 1.000.000 người dùng có 2FA và request mã lần lượt từ người thứ 1 tới thứ 1.000.000 thì người thứ 1.000.000 sẽ có cùng mã với người đầu. Tuy nhiên khi một nhà bảo mật báo cáo lỗi này với facebook thì họ cho rằng chúng không quá nguy vì quy mô thực hiện khá lớn.

Bypass 2fa sử dụng điều kiện chủng tộc

Một điều kiện chủng tộc được gọi là sử dụng một giá trị đã biết trước đó hồi phục. Đây là một cuộc tấn công tận dụng lợi thế của ứng dụng để sử dụng thẻ sử dụng trước đây hoặc chưa sử dụng ở một thời điểm sau đó. Xem xét từ phác đồ 2fa (Hoffmen, 2015), Người tấn công có thể sử dụng các giá trị của thẻ đã sử dụng trước đây hoặc chưa sử dụng để xác minh thiết bị. Tuy nhiên, kỹ thuật này đòi hỏi kẻ tấn công truy cập vào các giá trị được tạo ra trước đó, có thể thực hiện bằng cách đảo ngược thuật toán của ứng dụng tạo mã hoặc đánh chặn mã đã biết trước đó.
Đề xuất trong tương lai về bảo mật 2fa

Bản thân 2fa phải có hướng dẫn và cuộc nói chuyện bằng cách sử dụng việc thực hiện nó một cách an toàn, hầu hết các tổ chức thực hiện việc triển khai mặc định 2fa vì những lỗ hổng đó vẫn tiếp tục phát sinh và do đó sự an toàn của người dùng của họ có nguy cơ. 2fa đang phát triển thành MFA (Xác thực nhiều yếu tố) theo kiến ​​trúc tương tự như 2fa, có nghĩa là các lỗ hổng cũng tương tự.

Đề xuất trong tương lai về bảo mật 2fa

Bản thân 2fa phải có hướng dẫn và cuộc nói chuyện bằng cách sử dụng việc thực hiện nó một cách an toàn, hầu hết các tổ chức thực hiện việc triển khai mặc định 2fa vì những lỗ hổng đó vẫn tiếp tục phát sinh và do đó sự an toàn của người dùng của họ có nguy cơ. 2fa đang phát triển thành MFA (Xác thực nhiều yếu tố) theo kiến ​​trúc tương tự như 2fa, có nghĩa là các lỗ hổng cũng tương tự.

Tuy nhiên, MFA không chỉ sử dụng thiết bị cầm tay như là điểm xác thực mà còn có nhiều thiết bị liên quan đến Internet, MFA cũng có cùng nguyên tắc làm việc như được mô tả trước đây, nhưng thay vì chỉ một điểm xác thực, nó sử dụng mọi thiết bị trong internet Của mạng lưới những thứ. Nó tạo mã dựa trên thiết bị đó. MFA cũng sẽ phải tuân theo các quy tắc thông thường như là 2fa vì vậy yêu cầu rằng kiến ​​trúc của nó phải được thao tác để làm cho nó an toàn hơn

Phần kết luận

Xác thực 2 yếu tố thực mặc dù tất cả các lỗ hổng của nó vẫn là cách tiếp cận tốt nhất để bảo vệ tài khoản người dùng trong các ứng dụng web thông thường. Tuy nhiên điều đó không có nghĩa là các vòng bỏ qua đã thảo luận không nên được tính đến. Các nhà phát triển web nên xem xét cẩn thận hai cơ chế xác thực yếu tố trong trang web của họ để đảm bảo rằng các kỹ thuật bỏ qua thông thường không hoạt động. Tuy nhiên, hai lần bỏ qua xác thực nhân tố có thể xuất hiện theo thời gian và các kỹ thuật khác nhau có thể tham gia vào các cuộc tấn công như vậy, cách duy nhất là giữ iterating cách tiếp cận của một người để kiểm tra xác thực 2 yếu tố, theo cách đó rất dễ dự đoán phương pháp của kẻ tấn công.


Bài viết được dịch lại và chỉnh sửa cho phù hợp với tiếng việt từ Shahmeeramir.com : 4 Methods to Bypass two factor Authentication