[Góc chia sẻ] Một vài phương thức tấn công cơ bản và cơ chế bắt tay 4 bước hoạt động

20/05/2020
9
7 bài viết
[Góc chia sẻ] Một vài phương thức tấn công cơ bản và cơ chế bắt tay 4 bước hoạt động
Hiện nay có rất nhiều tool để các bạn có thể dùng vào mục đích thực hiện các cuộc tấn công mạng. Với những tool ấy các bạn có thể làm đựợc rất nhiều việc thú vị, nhưng có thật là bạn đang thật sự hiểu về những gì mình đang làm ? Vì thế hôm nay mình tạo bài viết này để chia sẻ những hiểu biết của mình về cách thức một số phương thức tấn công mạng cơ bản hoạt động cho những ai có hứng thú về vấn đề này và mình cũng sẵn sàng thảo luận về các vấn đề liên quan.

(*)Lưu ý: những kiến thức dưới đây chỉ mang tính tham khảo, có thể có chỗ sai. Nhưng mà bài viết này mang tính chia sẻ và thảo luận nên mình hi vọng các bạn có thể bình luận ở duới phần comment.



I. ARP spoofing
Định nghĩa: ARP spoofing is a type of attack in which a malicious actor sends falsified ARP (Address Resolution Protocol) messages over a local area network. This results in the linking of an attacker’s MAC address with the IP address of a legitimate computer or server on the network. Once the attacker’s MAC address is connected to an authentic IP address, the attacker will begin receiving any data that is intended for that IP address. ARP spoofing can enable malicious parties to intercept, modify or even stop data in-transit. ARP spoofing attacks can only occur on local area networks that utilize the Address Resolution Protocol.

Nôm na là trong một mạng để gửi gói tin giữ các thiết bị thì thiết bị gửi sẽ cần 2 giá trị để xác định thiết bị đích là MAC(địa chỉ của phần cứng là giá trị cố định) và IP.Mà vì mỗi khi kết nối tới một mạng, một thiết bị sẽ được cấp cho một địa chỉ IP ngẫu nhiên và địa chỉ này sẽ thay đổi sau một thời gian nào đó vì thế để biết đựợc IP nào đi vs MAC nào thì máy gửi sẽ gửi các gói tin ARP hỏi địa chỉ MAC của địa chỉ IP máy đích và khi máy đích nhận được gói ARP đó thì sẽ gửi lại một gói ARP trả lời gồm đỉa chỉ MAC của mình trong đó. Và từ đó ta có thể hình dung ra cách thức tấn công là tin tặc sẽ liên tiếp gửi các gói ARP trả lời cho máy gửi vs thông điệp rằng địa chỉ IP bạn cần tìm có địa chỉ MAC là xxxxxxx (với xxxxxxx đáng lẽ ra là địa chỉ MAC của máy đích nhưng tin tặc thay nó bằng địa chỉ MAC của máy mình), từ đó mỗi khi máy gửi hỏi địa chỉ MAC của máy đích sẽ nhận được lại là địa chỉ MAC của máy tin tặc và như thế các gói tin đáng ra được gửi đến máy đích thì giờ sẽ được gửi qua máy tin tặc. Ngoài ra để tránh bị nghi ngờ tin tặc cũng sẽ làm thế với máy đích để trở thành điểm vận chuyển gói tin trung gian giữ máy gửi và máy đích nhằm đánh cắp thông tin.

-hình ảnh các gói tin ARP được gửi đi trong mạng.

anh3.jpg


-hình ảnh các gói ARP được tin tặc gửi.

anh2.jpg


như trên địa chỉ MAC của IP 192.168.1.1 đã bị tin tặc làm giả.

-Từ ví dụ trên có lẽ các bạn đã hiểu phần nào được cách thức hoạt động của ARP spoffing, bây giờ chúng ta đến vs phần code.

Đầu tiên để viết code các bạn cần phải hiểu về socket, cấu trúc ethernet, arp (phần này các bạn có thể tìm kiếm thêm thông tin trên mạng).

đây là code đầy đủ (khá đơn giản phải không :) )
Screenshot from 2020-05-22 13-22-29.png



II 4-way handshake.
Định nghĩa: The 4-way handshake is the process of exchanging 4 messages between an access point (authenticator) and the client device (supplicant) to generate some encryption keys which can be used to encrypt actual data sent over Wireless medium.

ở đây chúng ta đang nói vể tuỳ chọn bảo mật WPA2/PSK(AES) thường được sử dụng trong các hộ gia đình.

Đầu tiên chúng ta sẽ nói về những loại khóa sẽ được dùng:
-MSK (Master Session Key): key đầu tiên được tạo từ 802.1X / EAP hoặc xuất phát từ xác thực PSK
-PMK (Pairwise Master Key): dùng để tạo PTK, được tạo ra bằng cách:
Screenshot from 2020-05-22 13-47-26.png

-GMK (Group Master Key): dùng để tạo GTK.
-GTK (Group Temporal Key): dùng để mã hoá tất cả các broadcast và multicast traffic giữa AP và nhiều client.khoá sẽ được AP gửi cho client ở bước 3.
-PTK (Pairwise Transit Key) dùng để mã hoá các unicast traffic giữa client và AP gồm các thành phần:
+KCK(Key Confirmation Key) 128 bit đầu tiên: dùng để tính MIC trong quá trình bắt tay.
+KEK (Key Encryption Key) 128 bit tiếp theo: dùng để mã hoá giữ liêu trong quá trình bắt tay.
+TK(Temporal Key) 128 bit tiếp theo: dùng để mã hoá MSDU hoặc 802.11 data giữ AP và client.
+Temporal MIC-1 64 bit tiếp theo.
+Temporal MIC-2 64 bit tiếp theo.
PTK được tính theo công thức:
Screenshot from 2020-05-22 14-00-50.png





-Quy trình thực hiện.
4-WAY-handshake.png


-Để có thể lấy được toàn bộ quá trình bắt tay này của một máy bạn có thễ xác thực lại mật khẩu wifi, trong trường hợp bạn muốn lấy của máy khác có thể dùng aireplay hoặc có thể chạy code sau:

Screenshot from 2020-05-22 14-25-12.png


sau đó dùng wireshark hoặc lập trình chương trình để bắt gói tin.Các gói tin trong quá trình sẽ là các gói tin 'key' trong hình sau:
pl.jpg



*Giờ chúng ta sẽ tiến hành phân tích các bước:
Bước 1:
Screenshot from 2020-05-22 14-41-45.jpg

từ bước 1 ta có thể suy ra thuật toán để mã hoá traffic là AES, HMAC SHA1 dùng để tính toán MIC, và Anonce = WPA Key Nonce.

Bước 2:
iok.jpg


-Giờ chúng t đã có thể biết Snonce = WPA Key Nonce
Và từ 2 bước này chúng ta đã có thể làm một vài điều như:
-Nếu đã biết mật khẩu wifi, chúng t có thể tạo key và đọc trộm gói tin của máy khác mà ko cần dùng ARP spoofing.
-Nếu chưa biết chúng ta có thể tấn công brute force để tìm mật khẩu.

+để thực hiện brute force, đầu tiên chúng ta dùng list mật khẩu tạo pmk và từ đó tạo ra ptk theo công thức ở trên. Sau đó chúng ta sẽ tính MIC theo công thức:
mic = hmac.new(ptk[0:16],data,hashlib.sha1)
với data là toàn bộ phần 802.1x Authentication của bước 2 (nhớ đổi toàn bộ phần WPA Key Mic sang 00).
Sau đó chúng ta sẽ so sánh phần MIC vừa được tạo ra vs phần WPA Key Mic ở bước 2, nếu đúng thì đó là mật khẩu chính xác.

+Để giải mã gói tin, ví dụ chúng ta sẽ giải mã gói tin sau:

Screenshot from 2020-05-22 15-10-18.jpg


-phần chúng ta cần giải mã là phần Data[:-11] vì 3 byte cuối là FCS và 8 byte tiếp nó là phần MIC cho gói tin.
-gói tin này được mã hoá bằng AES-CCMP (thấy phần CCMP parameters).
-Đầu tiên chúng ta sẽ tạo pmk và ptk theo công thức ở trên. sau đó từ ptk chúng ta sẽ lấy key cho aes: key = ptk[32:48].
-sau đó chúng ta sẽ tạo nonce theo công thức: nonce = bytes(A + SenderMAC + B), với A = Qos Control (= 00 trong ví dụ trên) B = CCMP ext (= 000000000002 trong ví dụ trên) => nonce = bytes("00xxxxxxxxxxxx000000000002").
-Từ key và nonce trên chúng ta đã có thể giải mã gói tin.
cipher = AES.new(key, AES.MODE_CCM, nonce, mac_len=8)
text = cipher.decrypt(data)

bước 3 và bước 4 mình ko đề cập trong bài viết này.






-Vậy là xong, mình vừa chia sẻ vs các bạn một số kiến thức cơ bản mình biết được hi vọng sẽ giúp ích ít nhiều cho các bạn vừa mới bắt đầu học hoặc chưa biết.
 
Chia sẻ rất thú vị, cảm ơn bác nhé.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
  • Thích
Reactions: đi code dạo
Comment
Bác chủ thớt cho e hỏi thêm 1 tí ak, với cơ chế bảo mật của https thì cách nào còn ap dụng dx ko
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
Comment
Bác chủ thớt cho e hỏi thêm 1 tí ak, với cơ chế bảo mật của https thì cách nào còn ap dụng dx ko
-hiện nay thì bản thông dụng của tls dùng cho giao thức https là tls v1.3 và tls v1.2, để crack cái này thì mình cũng biết một vài cách nhưng khá khó khăn. đầu tiên là bản tls v1.3 nhanh hơn bản 1.2 và bảo mật hơn nên mình ko đụng tới, còn với v1.2 thì còn tùy thuộc vào cipher suite option: thường thường thì browser sẽ dùng ECDHE để trao đổi khóa và cái này thì khá là chuối bởi vì yêu cầu random priviate key từ cả client và server nên cho dù bạn có biết được server key thì cũng ko làm gì được.Ngoài ra nó còn hỗ trợ RSA, đối vs cái này nếu bạn bằng cách nào đó mà lấy được server key hoặc có thể tác động được đến quá trình sinh khóa của client browser là xong (nói đơn giản thế thôi chứ làm cái này cũng khó lắm :)).Nếu bạn muốn ép browser dùng RSA thì bạn có thể xóa sạch phần những cipher suite dùng ECHD khả thi của browser đó (tra mạng nha bạn).
-Ngoài ra bạn còn có thể ép client browser sử dụng các phương thức bảo mật https đời cũ như tls v1.0 bằng cách thay đổi phần setting của browser ví dụ với microsoft edge thì bạn vào internet option -> advance -> bỏ click tls 1.3,1.2,1.1 và chỉ chọn 1.0 hoặc ssl3.0.
đây là một số cách tấn công có thể dùng: https://www.acunetix.com/blog/articles/tls-vulnerabilities-attacks-final-part/.
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
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
  • Thích
Reactions: whf
Comment
Bên trên