1. Trang chủ
  2. » Giáo Dục - Đào Tạo

AN TOÀN MẠNG Bài báo cáo: SSLsplit

28 18 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 1,67 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Điều này được thực hiện bằng cách phá vỡ kênh gốc, sau đó chặn các tin nhắn từ một bên và chuyển tiếp chúng đôi khi có thay đổi cho bên kia Hình 1.1 : Mô hình tấn công Man-in-the-Middle

Trang 1

SSL

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN I

-🙞🙜🕮🙞🙜 -

Học phần : AN TOÀN MẠNG

Bài báo cáo: SSLsplit Giảng viên : Đặng Minh Tuấn Sinh viên : Nguyễn Thu Trang-B18DCAT246

Hà Nội, tháng 11/2021

Trang 2

Em xin gửi lời cảm ơn sâu sắc tới thầy đã tạo điều kiện cho em được tiếp xúc thực tế với môn học và cung cấp tài liệu để em hoàn thành bản báo cáo này Trong quá trình báo cáo, có đôi lúc em còn mắc những sai lầm thiếu sót trong hoàn thiện bài báo cáo, nhưng cũng từ sai lầm đó mà em rút ra được nhiều bài học kinh nghiệm quý báu cho bản thân em Em tin những điều mình học hỏi được hôm nay sẽ là hành trang theo em suốt những chặng đường còn lại Cuối cùng, em xin gửi đến thầy lời cảm ơn đã giúp

đỡ em trong quá trình làm báo cáo Em xin chân thành cảm ơn!

Trang 3

Mục Lục

LỜI MỞ ĐẦU 1

Chương 1: Giới thiệu, lịch sử hình thành 4

1.1 Khái niệm về tấn công Man in the Middle 4

1.2 Khái niêm về SSLsplit 5

Chương 2: Hướng dẫn cài đặt 7

2.1 Hướng dẫn cài đặt Kali Linux 7

2.2 Hướng dẫn cài đạt SSLsplit 10

Chương 3: Kịch bản demo 19

Chương 4: So sánh với MITMproxy 27

Trang 4

Chương 1 : Giới thiệu, lịch sử hình thành

1.1 Khái niệm về tấn công Man in the Middle

- Tấn công Man in the Middle (MITM) là kiểu tấn công trong đó kẻ tấn công đặt mình ở giữa đường truyền thông tin giữa hai bên, thường là máy khách và máy chủ Điều này được thực hiện bằng cách phá vỡ kênh gốc, sau đó chặn các tin nhắn từ một bên và

chuyển tiếp chúng (đôi khi có thay đổi) cho bên kia

Hình 1.1 : Mô hình tấn công Man-in-the-Middle

Alice được kết nối với một máy chủ web và Bob muốn biết Alice đang gửi thông tin gì nên Bob đã thiết lập một cuộc tấn công MITM bằng cách nói với máy chủ rằng anh ta là Alice và nói với Alice anh ta là máy chủ Bây giờ, tất cả các yêu cầu của Alice sẽ được chuyển đến Bob và Bob sẽ gửi lại chúng (được thay đổi hoặc không) đến máy chủ web, thực hiện tương tự với phản hồi của máy chủ Bằng cách này, Bob sẽ có thể chặn, đọc và sửa đổi tất cả lưu lượng giữa Alice và máy chủ

Mặc dù các cuộc tấn công MITM không phải là các cuộc tấn công web cụ thể, nhưng điều quan trọng đối với bất kỳ người kiểm tra thâm nhập nào cũng phải biết về chúng, cách thực hiện chúng và cách ngăn chặn chúng vì chúng có thể được sử dụng để đánh cắp mật khẩu, chiếm quyền điều khiển phiên hoặc thực hiện các hoạt động trái phép trong các ứng dụng web

1.2 Giới thiệu về SSLsplit

Trang 5

- SSLsplit là một công cụ dành cho các cuộc tấn công trung gian chống lại các kết nối mạng được mã hóa SSL/TLS Nó được thiết kế để hữu ích cho việc chuẩn đoán mạng, phân tích bảo mật ứng dụng và thử nghiệm thâm nhập

SSLsplit được thiết kế để chấm dứt một cách minh bạch các kết nối được chuyển hướng đến nó bằng cách sử dụng công cụ dịch địa chỉ mạng Sau đó SSLsplit chấm dứt

SSL/TLS và bắt đầu kết nối SSL/TLS mới đến địa chỉ đích ban đầu, đồng thời ghi nhật

ký tất cả dữ liệu được truyền Bên cạnh hoạt động dựa trên NAT, SSLsplit cũng hỗ trợ các đích tĩnh và sử dụng tên máy chủ được chỉ ra bởi SNI làm đích ngược dòng SSLsplit hoàn toàn là một proxy minh bạch và không thể hoạt động như một proxy HTTP hoặc SOCKS được định cấu hình trong trình duyệt

SSLsplit hỗ trợ kết nối TCP, SSL thuần, HTTP và HTTPS qua cả IPv4 và IPv6 Nó cũng

có khả năng nâng cấp động TCP đơn giản lên SSL để hỗ trợ chung SMTP STARTTLS và các cơ chế nâng cấp tương tự SSLsplit hỗ trợ đầy đủ Server Name Indication (SNI) và có thể hoạt động với các khóa RSA, DSA và ECDSA cũng như bộ mật mã DHE và ECDHE Tùy thuộc vào phiên bản OpenSSL được xây dựng dựa trên, SSLsplit hỗ trợ SSL 3.0, TLS 1.0, TLS 1.1 và TLS 1.2 và cả SSL 2.0

Đối với kết nối SSL và HTTPS, SSLsplit tạo và ký nhanh các chứng chỉ X509v3 giả mạo, bắt chước chủ đề DN, phần mở rộng subjectAltName của máy chủ gốc và các đặc điểm khác SSLsplit có khả năng sử dụng các chứng chỉ hiện có chứa khóa cá nhân, thay

vì tạo các chứng chỉ giả mạo SSLsplit hỗ trợ chứng chỉ NULL-prefix CN nhưng mặt khác không triển khai khai thác các lỗ hổng xác minh chứng chỉ cụ thể trong ngăn xếp SSL/TLS

SSLsplit thực hiện một số biện pháp bảo vệ chống lại các cơ chế thường ngăn chặn các cuộc tấn công MITM hoặc làm cho chúng khó khăn hơn SSLsplit có thể từ chối các yêu cầu OCSP theo cách chung chung Đối với các kết nối HTTP và HTTPS, SSLsplit xử lý các tiêu đề để ngăn server-instructed public key pinning (HPKP), tránh các hạn chế bảo mật truyền tải nghiêm ngặt (HSTS), tránh Certificate Transparency enforcement (Expect-CT) và ngăn chuyển sang QUIC/SPDY, HTTP/2 hoặc WebSockets (Nâng cấp, Giao thức Thay thế) Tính năng nén, mã hóa và lưu giữ HTTP bị vô hiệu hóa để làm cho các log dễ đọc hơn

Các tùy chọn ghi nhật ký bao gồm kết nối SSLsplit truyền thống và các tệp nhật ký nội dung cũng như các tệp PCAP và phản chiếu lưu lượng đã được giải mã vào giao diện mạng Ngoài ra, các chứng chỉ và thông tin tiến trình cục bộ có thể được ghi lại

Để tối đa hóa cơ hội kết nối thành công tách, SSLsplit không xác minh chứng chỉ máy chủ ngược dòng bằng vỡ nợ Thay vào đó, tất cả các chứng chỉ bao gồm cả tự ký đều

Trang 6

được chấp nhận và nếu tên máy chủ dự kiến được báo hiệu trong SNI bị thiếu trong chứng chỉ máy chủ, nó sẽ được thêm vào chứng chỉ giả mạo động- cates

SSLsplit không tự động chuyển hướng bất kỳ lưu lượng mạng nào Để hành động- đồng minh thực hiện một cuộc tấn công, bạn cũng cần phải chuyển hướng lưu lượng truy cập đến hệ thống chạy sslsplit Các tùy chọn của bạn bao gồm chạy sslsplit trên bộ định tuyến hợp pháp, giả mạo ARP, giả mạo ND, DNS, triển khai một điểm truy cập giả mạo (ví dụ:

sử dụng chế độ bản đồ máy chủ), khôi phục vật lý, cấu hình lại VLAN độc hại hoặc chèn đường dẫn, sửa đổi /etc/hosts

SSLsplit hoạt động khá giống với các công cụ proxy SSL minh bạch khác: Nó hoạt động như một người trung gian giữa máy khách và máy chủ thực tế Với điều kiện lưu lượng truy cập đang được chuyển hướng đến máy chủ mà SSLsplit đang chạy (bằng cách thay đổi cổng mặc định, giả mạo ARP hoặc các phương tiện khác ), SSLsplit chọn các kết nối SSL và giả vờ là máy chủ mà máy khách đang kết nối Để làm như vậy, nó sẽ tự động tạo một chứng chỉ và ký nó bằng khóa riêng của chứng chỉ CA mà máy khách phải tin cậy Một số cách khác nhau để thực hiện chuyển hướng lưu lượng truy cập:

 Sử dụng giả mạo ARP để chuyển hướng lưu lượng truy cập của nạn nhân bằng cách xuất bản ánh xạ sai từ địa chỉ MAC cổng chuẩn đến địa chỉ IP của kẻ tấn công Bạn không cần truy cập vật lý vào thiết bị của nạn nhân để làm điều

đó Kiểm tra công cụ arpspoof

 Thay đổi địa chỉ cổng mặc định trong cài đặt mạng của nạn nhân Đây là phương pháp dễ dàng nhất nếu bạn có quyền truy cập vào thiết bị của nạn nhân

 Giả mạo các mục nhập DNS với máy chủ DNS trả về địa chỉ IP của kẻ tấn công cho một số miền (hoặc tất cả) Xem hướng dẫn của tôi về giả mạo DNS với

Dnsmasq để tìm hiểu cách thực hiện điều đó

 Chuyển hướng lưu lượng truy cập cho các miền riêng lẻ bằng cách sửa đổi các mục nhập trong temp/etc/host của máy nạn nhân

Ví dụ: nếu khách hàng muốn gửi e-mail bằng máy chủ SMTP Gmail bảo mật

(smtp.gmail.com trên cổng 465), SSLsplit sẽ tạo chứng chỉ cho “smtp.gmail.com” và

do đó giả mạo là Gmail máy chủ thư về phía máy khách Theo hướng ngược dòng (hướng tới máy chủ thư Gmail thực tế), SSLsplit kết nối với máy chủ giống như một ứng dụng khách bình thường - chuyển tiếp tất cả lưu lượng mà ứng dụng khách thực

sự ghi trên SSL socket

Trang 7

Chương 2 : Hướng dẫn cài đặt và sử dụng

2.1 Setting up Kali Linux

Trang 8

4 Sau khi cập nhật xong, hãy chạy lệnh sau để cập nhật các gói không thuộc hệ thống lên phiên bản ổn định cuối cùng của chúng: apt-get upgrade:

Trang 9

5 Khi được yêu cầu tiếp tục, hãy nhấn Y rồi nhấn Enter

6 Tiếp theo, hãy nâng cấp hệ thống của chúng tôi Nhập lệnh sau và nhấn Enter: get dist-upgrade

apt-2.2 Cài đặt SSLsplit

Để xem các câu lệnh của SSlsplit, ta sử dụng câu lệnh: sslsplit –h:

Trang 11

-c pemfile : sử dụng chứng chỉ CA từ pemfile để ký các chứng chỉ được giải mạo khi

-D : chạy ở chế độ gỡ lỗi, ghi nhiều thông tin gỡ lỗi và lỗi chuẩn

-e engine : sử dụng engine như là công cụ NAT mặc định cho proxypecs không có công

cụ NAT rõ ràng, địa chỉ đích tĩnh hoặc chế độ SNI

-E : Liệt kê tất cả các công cụ NAT được hỗ trợ có sẵn trên hệ thống và thoát

-F logspec : Ghi nhật ký nội dung kết nối để tách các tệp nhật ký với đặc điểm kỹ thuật

đường dẫn nhất định

-g pemfile : Sử dụng các tham số nhóm Diffie-Hellman từ pemfile cho bộ mật mã

Ephemereal Diffie-Hellman (EDH / DHE)

-G curve : Sử dụng đường cong được đặt tên cho bộ mật mã Ephemereal Elliptic Curve

Diffie-Hellman (ECDHE) Nếu -G không được cung cấp, một đường cong mặc định (prime256v1) được sử dụng tự động Tùy chọn -G chỉ khả dụng nếu SSLsplit được xây dựng dựa trên phiên bản OpenSSL hỗ trợ bộ mật mã Elliptic Curve Diffie-Hellman -h : Hiển thị trợ giúp về cách sử dụng và thoát

Trang 12

-i : Đối với mỗi kết nối, hãy tìm tiến trình cục bộ sở hữu kết nối Điều này làm cho thông tin quy trình như pid, chủ sở hữu: nhóm và đường dẫn thực thi cho các kết nối có nguồn gốc trên cùng một hệ thống như SSLsplit có sẵn cho nhật ký kết nối và bật các chỉ thị đặc

tả đường dẫn -F tương ứng

-j jaildir : Thay đổi thư mục gốc thành jaildir bằng chroot (2) sau khi mở tệp

-k pemfile : Sử dụng khóa cá nhân CA từ pemfile để ký các chứng chỉ được giả mạo khi

đang di chuyển

-K pemfile : Sử dụng khóa riêng tư từ pemfile cho các chứng chỉ lá được giả mạo khi

đang di chuyển Nếu -K không được cung cấp, SSLsplit sẽ tạo một khóa RSA 1024 bit ngẫu nhiên

-l logfile : Ghi nhật ký các kết nối vào tệp nhật ký ở một dòng duy nhất cho mỗi định

dạng kết nối, bao gồm địa chỉ và cổng và một số thông tin HTTP và SSL

-L logfile: Ghi nội dung kết nối vào logfile Nhật ký nội dung sẽ chứa định dạng nhật ký

có thể phân tích cú pháp với dữ liệu đã truyền, có thêm tiêu đề xác định kết nối và độ dài

dữ liệu của mỗi phân đoạn đã ghi

- m group : Khi bỏ đặc quyền bằng -u, hãy ghi đè nhóm chính mục tiêu được đặt thành group

-O : Từ chối tất cả các yêu cầu Giao thức Trạng thái Chứng chỉ Trực tuyến (OCSP) trên tất cả proxyspec và đối với tất cả các máy chủ OCSP có phản hồi OCSP của tryLater, khiến các ứng dụng khách OCSP tạm thời chấp nhận các chứng chỉ đã bị thu hồi

-p pidfile: Ghi ID quy trình vào pidfile và từ chối chạy nếu pidfile đã được một quy trình

khác sử dụng

-P: Các kết nối SSL / TLS chuyển qua không thể tách rời thay vì loại bỏ chúng

-S logdir : Ghi nhật ký nội dung kết nối để tách các tệp nhật ký theo logdir Đối với mỗi

kết nối, một tệp nhật ký sẽ được ghi, tệp này sẽ chứa cả hai hướng dữ liệu khi được truyền Thông tin về kết nối sẽ chỉ có trong tên tệp

-t certdir: Sử dụng khóa cá nhân, chứng chỉ và chuỗi chứng chỉ từ các tệp PEM trong

certdir cho các kết nối với tên máy chủ phù hợp với các chứng chỉ tương ứng, thay vì sử dụng các chứng chỉ được giả mạo khi đang di chuyển

-V : hiển thị thông tin phiên bản và tính năng đã hoàn thành

Các bước để cài đặt SSLsplit:

Trang 13

Để tải xuống và biên dịch SSLsplit, ta chạy các lệnh:

Trang 14

- Lệnh wget: để tải xuống, bunzip, tar : lệnh giải nén mã nguồn

- Apt-get : cài đạt các thư viện cần thiết

Trang 15

- Thư mục tạm thời được tạo tại /tmp/sslsplit sau đó được sử dụng để kết xuất tệp nhật ký kết nối và dữ liệu thô của các ổ cắm SSL đến và đi: mkdir /tmp/sslsplit

2.3 Tạo và cài đặt chứng chỉ CA gốc:

Để SSLsplit hoạt động như một ngườu trung gian cho các kết nối SSl,nó cần có khả năng tạo và ký các chứng chỉ mà nạn nhân tin tưởng Để làm như vậy, nạn nhân cần phải có chứng chỉ CA gốc của kẻ tấn công trong kho tin cây của nó

Cách tạo một cứng chỉ và khóa cá nhân CA tự ký, bạn có thể tạo một chứng chỉ và khóa riêng bằng cách sử dụng các lệnh sau:

openssl genrsa -out ca.key 4096

openssl req -new -x509 -days 1826 -key ca.key -out ca.crt

Lệnh đầu tiên tạo khóa riêng RSA 4096 bit ở định dạng PEM ( ca.key ) và lệnh thứ hai sử dụng khóa riêng này để tạo chứng chỉ CA gốc tự ký ( ca.crt ) Cả hai đều được SSLsplit cần thiết sau này, nhưng chỉ tệp chứng chỉ cần được cài đặt trong trình duyệt hoặc hệ điều hành của nạn nhân

Trang 16

2.4 Bật chuyển tiếp IP và công cụ NAT(iptables)

Bây giờ chúng ta sẽ định cấu hình một số quy tắc để ngăn chuyển tiếp mọi thứ Đầu tiên, hãy kiểm tra xem chúng ta có bất kỳ thứ gì trong bảng nat của iptables hay không:

Trang 17

Trong ví dụ này, SSLsplit sẽ chạy trên hai cổng: 8080 cho các kết nối TCP không SSL như HTTP, SMTP hoặc FTP và 8443 cho các kết nối SSL như SMTP qua SSL, HTTPS, v.v Để chuyển tiếp các gói đến máy của kẻ tấn công vào các cổng nội bộ này, công cụ NAT trong iptables có thể được sử dụng

- Khởi chạy SSLsplit :

Khi chuyển tiếp IP đang hoạt động và các gói đang được chuyển tiếp đến các cổng liên quan, bạn có thể khởi động SSLsplit Điều đó nghe có vẻ dễ dàng hơn thực tế, bởi vì SSLsplit là một công cụ rất mạnh và do đó rất linh hoạt

Ta có cấu hình tham số để Lệnh này khởi động SSLsplit trong chế độ gỡ lỗi ( -D , chạy

ở chế độ nền trước, không có daemon, đầu ra dài dòng) và xuất ra các lần thử kết nối trong tệp nhật ký “links.log” ( -l ) Nội dung thực tế của các kết nối được ghi vào “/ tmp / sslsplit / logdir - mỗi luồng TCP đến / đi của mỗi kết nối trong một tệp riêng biệt

sslsplit -D -l connections.log -j /tmp/sslsplit -S /tmp/sslsplit/lodir -k ca.key –c ca.crt ssl 0.0.0.0 8443 tcp 0.0.0.0 8080

Trang 18

Chương 3: Kịch bản tấn công

3.1 Kết hợp với arpoofing để lấy mật khẩu của nạn nhân trong cùng một mạng LAN

- Lắng nghe giao tiếp giữa máy Victim ( Windown 7 ) với máy chủ

arpspoof –i eth0 –t 192.168.1.1 192.168.1.2

arpspoof –i eth0 –t 192.168.1.2 192.168.1.1

Trang 19

-Kiểm tra trên máy Victim bằng câu lệnh : arp –a

Trang 20

-Trên máy Vicim :

Trang 21

-Qua /tmp/sslsplit/logdir để xem các file nôi dung được ghi vào logdir

Trang 23

Trong hình trên, cửa sổ bảng điều khiển phía trên hiển thị đầu ra của SSLsplit Nó hiển thị Chứng chỉ máy chủ giả mạo( forged server certificate) và chứng chỉ (Fingerprint) bởi một tổ chức phát hành chứng chỉ khác

Trang 24

Hình tiếp theo hiển thị nội dung của giao tiếp giữa trình duyệt và máy chủ ptit.edu.vn Ảnh chụp hiển thị Cookie, tài khoản và mật khẩu của người dùng

Trang 25

3.2 Sniffing IMAP over SSL (imap.gmail.com):

Trong ví dụ thứ hai, sử dụng Thunderbird để kết nối với tài khoản Gmail của

mình Không giống như ứng dụng thư khách dựa trên web

Thunderbird kết nối với máy chủ Google / Gmail qua IMAP trên cổng 143 hoặc qua IMAP qua SSL trên cổng 993 Trong khi giao tiếp trên cổng 143 không được mã hóa và

có thể được đọc bằng các công cụ khác (Wireshark, tcpdump, v.v .), IMAP qua SSL yêu cầu proxy man-in-the-middle để phân chia giao tiếp SSL

Trang 27

Chương 4: So sánh SSLsplit với MITMproxy

SSLsplit: là công cụ dùng để chặn kết nối TLS bằng cách sử dụng một cuộc tấn công trung gian SSLsplit hỗ trợ TCP, TLS và HTTP Các kết nối bị chặn có thể được đổ vào logfiles SSLsplit được viết bằng C do đó nó khá hiệu quả

MITMproxy là một công cụ có nhiều tính năng hơn và do đó phức tạp hơn nhiều Trái ngược với SSLsplit, MITM có giao diện người dùng tương tác và cho phép bạn tạm dừng, kiểm tra, chỉnh sửa, phát lại hoặc thả các luồng Mặc dù nó có thể được dsuwr dụng như một proxy nhưng MITMproxy cũng có thể chạy như một HTTP, SOCKS, proxy ngược hoặc ngược dòng Ngoài ra, có một giao diện kịch bản đơn giản Python Tóm lại:

-Cả MITMproxy và SSLsplit đều thực hiện cùng một kiểu tấn công trung gian vào TLS

- MITMproxy mạnh hơn và có nhiều tính năng hơn

-SSLsplit có mục đích chuyên dụng hơn, đơn giản hơn và nhanh hơn

- Cả hai đều là (IMHO) công cụ tuyệt vời

Ngày đăng: 09/02/2022, 16:36

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w