AnDang's Blog

MAN IN THE MIDDLE ATTACK

1. Giao thức ARP

Đây là một giao thức mạng dùng để tìm ra địa chỉ MAC của một thiết bị từ một IP nguồn. VD: Thiết bị sẽ gửi 1 ARP request chưa IP của thiết bị nhận. Tất cả các mạng trong local network sẽ nhận đc gói tin nhưng chỉ có thiết bị khớp với IP trong gói ARP mới có thể phản hồi lại thông tin với thông điệp chứa địa chỉ MAC của nó.

2. ARP Spoofing

ARP SPOOFING DIAGRAM

ARP Spoofing cho phép chuyển hướng các packet cho nên thay vì các packet được gửi thẳng đến máy victim (như sơ đồ), nó sẽ đi qua máy tính của hacker. Như vậy các request cũng như respond sẽ đều phải đi qua máy tính của hacker → Cho phép hacker đọc, chỉnh sửa cũng như chặn các gói tin này.

3. ARPSPOOF Tool

Máy thực hiện tấn công: Kali linux 2022 Máy mục tiêu: Windows 10 Để hiển thị bảng dữ liệu arp, chúng ta sử dụng lệnh: arp -a

arp-a command

Sử dụng arpspoof: arpspoof -i [name_interface] -t [IP_victim] [IP_gateway]: Gửi request đến máy nạn nhân nói rằng mình là router

arpspoof -i [name_interface] -t [IP_victim] [IP_gateway] Gửi request đến router nói rằng mình là máy victim

Thực hiện chạy đồng thời

Kết quả bảng arp máy windows 10

Vì kali linux không phải router nên khi có request nó sẽ không cho những request này qua và chặn chúng lại( tính năng của kali). Vì vậy để những request này đến router chúng ta phải mở cổng chuyển tiếp giống như 1 bộ định tuyến

ip-forwarder

ARP Spoofing using Bettercap

Đây là một framework để tấn công mạng Nó có thể được dùng cho:

Thực hành Khởi động bettercap: bettercap -iface [name_interface_network]

Khởi động bettercap

Có thể dùng lệnh help để xem tất cả những command có thể dùng với bettercap

Bettercap có những modules chúng ta có thể dùng, ở chế độ mặc định thì có module events.stream đang được chạy ngầm để handle tất cả các events

4-ành

Ở đây chúng ta sẽ sử dụng modules net.probe. Module này được sử dụng để gửi các gói UDP để tìm ra các thiết bị mạng trong local network

Start net.probe: net.probe on

4-anh 4

Có thể thấy ip 192.168.245.133 là ip của máy windows 10 mà chúng ta đã sử dụng ở phần trên.

Khi start net.probe, net.recon sẽ tự động start. Net.probe gửi request đến tất các các ip trong mạng và khi có respond, net.recon sẽ phát hiện respond bằng cách theo dõi arp cache và sau đó thêm những IP này vào 1 danh sách để ta có thể nhắm vào tấn công.

Thực hiện lệnh: net.show để xem tất cả các thiết bị được kết nối

4-anh 4

Tiếp theo, chúng ta cần trở thành Man in the middle, ở đây sẽ sử dụng module arp.spoof

Trước khi start arp.spoof, chúng ta cần thiết lập lại một số thành phần trong module arp.spoof

Thứ nhất, set arp.spoof.fullduplex true, hiểu đơn giản là sẽ spoof cả router và máy victim như chúng ta đã thực hiện ở phần trên với arp spoofing tool. Ở mặc định thì biến này sẽ được gán là false và nó sẽ chỉ spoof target machine

Thứ hai, set arp.spoof.targets [IP_victim_machine]

Cuối cùng, start arp.spoof

4-anh5

Sau khi hoàn thành, kiểm tra lại máy windows 10 sẽ được kết quả:

4-anh6

Có thể thấy địa chỉ MAC của router sẽ giống với địa chỉ MAC của IP: 192.168.245.132 (là địa chỉ của máy kali).

5. Sniff data

Trong bettercap, sử dụng module net.sniff

Khởi động net.sniff: net.sniff on

Truy cập web browser trong windows 10. Ở đây chúng ta sẽ truy cập vào một trang web (http://testphp.vulnweb.com/)

5

Có thể thấy ở đây máy nạn nhân đã truy cập đến trang web test.vulweb.com

Tiếp theo hãy thử bắt username và password mà nạn nhân đăng nhập vào trang web trên

5-2

Kết quả là ta đã bắt được username và password.

6. Create custom spoofing script

Có thể sử dụng caplet để làm các bước ở phần 4 và 5 một cách tự động

Caplet là một tệp văn bản bao gồm các câu lệnh mà bạn sử dụng để tấn công man in the middle attack

Thực hiện: Tạo một file văn bản và viết ra những câu lệnh sẽ sử dụng

6-1

Tiếp theo, khởi động bettercap với caplet đã tạo: bettercap -iface [network_interface] -caplet [file_path_caplet]

6-2

7. Bypass HTTPS

Khi sử dụng giao thức HTTP, dữ liệu được truyền đi dưới dạng plain text do đó chúng ta có thể đọc và chỉnh sửa

HTTPS đã khắc phục được điều này và hiện nay đa số các website đều sử dụng HTTPS. Về cơ bản cách HTTPS hoạt động là thêm 1 lớp layer sau HTTP và lớp bổ sung này sẽ mã hóa các văn bản thuần túy → Do đó chúng ta sẽ không thể đọc được dữ liệu

HTTPS dựa vào TLS hoặc SSL để mã hóa dữ liệu. Cách dễ dàng nhất để bypass là downgrade HTTPS thành HTTP. Nếu người dùng truy cập đến một trang web HTTPS thì chúng ta sẽ cung cấp cho người dùng một phiên bản HTTP thay vì HTTPS. Để làm được điều đó thì chúng ta sẽ sử dụng tool có tên là SSL Strip. Tuy nhiên cách sử dụng của SSL Strip sẽ được đề cập đến trong các bài viết sau, ở bài viết này chúng ta sẽ sử dụng những caplet có sẵn của bettercap để downgrade https to http.

Đầu tiên, chũng ta sẽ phải sửa đổi một vài câu lệnh đã viết trong caplet đã tạo ở phần 6

Trước khi khởi động net.sniff, hãy set giá trị cho thông số net.sniff.localtrue. Option này sẽ nói với bettercap rằng sẽ sniff tất cả data kể cả local data. Khi chúng ta sử dụng caplet của bettercap để downgrade https, bettercap sẽ nghĩ rằng những dữ liệu bắt được là được gửi từ chĩnh máy chúng ta và sẽ không hiển thị trên màn hình.

7-1

Sử dụng lệnh caplets.show để hiển thị list caplet mà máy có. Caplet mà chúng ta sẽ sử dụng là hstshijack/hstshijack. Các bạn cũng có thể download caplet này trên mạng hoặc download tại đường link: (https://drive.google.com/file/d/19NsOnD4Obuezr0nKWbBxtngoqM_OwWKU/view?usp=share_link)

Ở máy tính nạn nhân, truy cập vào 1 trang web https VD: linkedin.com

7-1

Có thể thấy website hiển thị not secure là đã thành công downgrade. Sau đó thử đăng nhập với username và mật khẩu bất kỳ trong linkedin

7-3

Và cuối cùng chúng ta đã ấy được mật khẩu và password

8. Bypass HSTS

Một số trang web như facebook, twitter sử dụng HSTS là những trang web only-load HTTPS

Solution: Thay thế link của những trang web HSTS thành những website có đường link gần giống. VD: facebook.com → facebook.corn

Chúng ta vẫn sẽ sử dụng caplet “hstshijack” như phần 7

Đầu tiên, truy cập vào file config của caplet “hstshijack” theo đường dẫn /root/usr/local/share/bettercap/caplets/hstshijack và chỉnh sửa giống như hình dưới đây

8-1

Ở đây targets sẽ là những trang web mục tiêu mà chúng ta muốn thay thế. Phần replacements sẽ là tên miền các trang web mà chúng ta sẽ thay thế vào targets. Các options obfuscate và encode để là false bởi vì một số trình duyệt như firefox sẽ chặn mã bị xáo trộn hoặc mã hóa. Tại phần payloads bạn có thể đưa vào một số javascript code để inject. Cuối cùng ở phần dns.spoof.domains cũng tương tự như phần replacements

Bắt đầu tấn công, chúng ta sẽ khởi động bettercap và sử dụng caplet “hstshijack” như đã làm ở trên

Ở máy windows 10, chúng ta sẽ không thể vào fb một cách thông thường mà phải thông qua một số search engine như google.ie

8-2

Chúng ta sẽ thấy hiện not secure và khi người dùng search facebook vào ô tìm kiếm trên google.ie thì đoạn script mà chúng ta chèn vào trong caplet hstshijack sẽ chạy ngầm và tự động thay thế tất cả các link facebook.com được tìm kiếm thành link replacements là facebook.corn

8-3

Và khi nhấn vào link tìm kiếm chúng ta sẽ được kết quả

8-4

Làm theo hướng dẫn như phần 7 chúng ta có thể lấy được username và password của facebook.

So sánh bypass HSTS firefox và chrome

8-5

9. DNS Spoofing

Như chúng ta đã biết, DNS có nhiệm vụ convert domain name ví dụ như google.com thành IP hosing.

Khi tấn công man in the middle, request sẽ không được gửi thẳng đến DNS server mà sẽ thông qua chúng ta vì vậy chúng ta có thể respond bất kỳ IP nào mà chúng ta muốn. Chúng ta có thể điều hướng đến một trang web giả mạo…

Ở phần này, chúng ta sẽ điều hướng user đến trang web của chúng ta (apache2 server có sẵn trên kali)

Khởi động bettercap như bình thường với caplet chúng ta đã tạo ở những phần trước. Chúng ta sẽ dùng module dns.spoof. Set dns.spoof.address: [IP_kali] Set dns.spoof.all true → Respond đối với tất cả các DNS Request Set dns.spoof.domains [domain_name]

Ví dụ ở đây chúng ta sẽ set domains là linkedin.com

Cuối cùng khởi dộng dns.spoof: dns.spoof on

9-1

Có thể thấy khi chúng ta truy cập đến tên miền linkedin.com thì sẽ tự động chuyển hướng đến apache2 server.

10. Injecting javascript code

Về phần này, hiểu đơn giản là chúng ta sẽ chèn một đoạn code bất kỳ mà chúng ta muốn và trình duyệt sẽ thực thi đoạn mã đó

Ở đây chúng ta sẽ thực hiện một đoạn javascript đơn giản có chức năng hiển thị thông báo

101

Chúng ta vẫn sẽ tiếp tục sử dụng caplet hstshijack. Truy cập vào đường dẫn /root/usr/local/share/bettercap/caplets/hstshijack để hiển thị file config. Thêm domains name và đường dẫn của file javascript vào phần set hstshijack.

102

Như ở đây, mình để * tượng trưng cho tất cả các trang web và đường dẫn file là /root/alert.js

Tiếp theo, khởi động bettercap và sử dụng caplet hstshijack như các phần trên

Ở máy windows 10 khi truy cập vào các website https sẽ hiển thị thông báo

Chú ý: Các website HSTS sẽ không hiệu quả bởi vì chúng only-loaded https nên chúng ta sẽ không thể inject code

103