Hướng dẫn giải mã SSL: Cách giải mã SSL bằng Wireshark

Giải mã SSL bằng Wireshark

Nếu bạn đã từng thử sử dụng Wireshark để theo dõi lưu lượng truy cập web, thì có lẽ bạn đã gặp sự cố – rất nhiều vấn đề được mã hóa. Trên thực tế, hầu hết các trang web đang sử dụng mã hóa SSL hoặc TLS để giữ an toàn cho người dùng của họ. Mã hóa phổ biến là một điều tốt nếu bạn mua sắm trên Amazon, nhưng nó lại là một nỗi đau thực sự khi bạn đang cố gắng quản trị một mạng. Đây là cách tôi giải mã SSL với Wireshark.

Wireshark và SSL là gì?

Wireshark là một phân tích lưu lượng mạng; Nó là một tiện ích cốt lõi mà nhiều quản trị viên sử dụng để khắc phục sự cố trên mạng của họ. Cụ thể, nó chụp các khung – các khối xây dựng của gói – và cho phép bạn sắp xếp và phân tích chúng. Sử dụng Wireshark, bạn có thể nhìn vào lưu lượng truy cập trên mạng của mình và phân tích nó, xem qua các khung hình ở dữ liệu thô.

SSL là một giao thức mã hóa hoạt động trên tầng Giao vận của mô hình OSI. Nó sử dụng các phương thức mã hóa khác nhau để bảo mật dữ liệu khi nó di chuyển trên các mạng. Lưu ý: Trong hướng dẫn này, I hèll chủ yếu đề cập đến SSL như một thuật ngữ dễ hiểu cho SSL và TLS, người kế nhiệm của nó.

Mã hóa SSL làm cho việc sử dụng Wireshark trở nên khó khăn hơn vì nó ngăn quản trị viên xem dữ liệu mà mỗi gói mang theo. Khi Wireshark được thiết lập đúng cách, nó có thể giải mã SSL và khôi phục khả năng xem dữ liệu thô của bạn.

Sử dụng khóa bí mật tiền chính để giải mã SSL và TLS

Sử dụng khóa bí mật tiền chính để giải mã SSL trong Wireshark là phương pháp được đề xuất. Một khóa bí mật trước chủ được tạo bởi máy khách và được máy chủ sử dụng để lấy khóa chính mã hóa lưu lượng phiên. Nó cải tiến tiêu chuẩn hiện tại về mật mã và thường được thực hiện thông qua Diffie-Hellman.

Trình duyệt của bạn có thể được tạo để ghi nhật ký khóa bí mật chính, mà Wireshark sử dụng để giải mã các phiên SSL và TLS.

Dưới đây là các bước để giải mã SSL và TLS bằng khóa bí mật tiền chính:

  • Đặt biến môi trường
  • Khởi chạy trình duyệt của bạn
  • Cấu hình Wireshark
  • Nắm bắt và giải mã phiên

Khi bạn kết thúc, bạn sẽ có thể giải mã các phiên SSL và TLS trong Wireshark mà không cần truy cập vào máy chủ mục tiêu.

Đặt biến môi trường Windows

Trong các cửa sổ, bạn cần phải thiết lập một biến môi trường bằng cách sử dụng Thiết lập hệ thống nâng cao tiện ích. Biến này, được đặt tên SSLKEYLOGFILE, chứa một đường dẫn lưu trữ các khóa bí mật của chủ.

Bắt đầu bằng cách nhấp chuột phải vào Máy tính của tôi, và chọn Tính chất từ thực đơn. Các Hệ thống menu sẽ mở.

Tiếp theo, nhấp Thiết lập hệ thống nâng cao trên danh sách bên trái. Các Thuộc tính hệ thống cửa sổ sẽ mở.

Trên Nâng cao bấm vào tab Biến môi trường cái nút.

Nhấn vào Mới… nút bên dưới Biến người dùng. Bạn cũng có thể tạo biến dưới Biến hệ thống nếu bạn thích đăng nhập các khóa SSL cho mọi người dùng trên hệ thống, nhưng tôi thích giữ nó trong hồ sơ của mình.

Dưới Tên biến, gõ như sau:

SSLKEYLOGFILE

bên trong Giá trị biến trường, nhập một đường dẫn đến tệp nhật ký. Bạn cũng có thể nhấp vào Chọn thư mục… nút và chỉ định đường dẫn bằng cách sử dụng trình chọn tệp.

Lưu ý, nếu bạn trong khi tạo một biến môi trường trên toàn hệ thống, bạn sẽ cần sử dụng các ký tự đại diện phù hợp hoặc lưu trữ tệp ở một nơi mà tất cả người dùng có thể truy cập. Chẳng hạn, bạn có thể chọn % USERPROFILE% \ Dữ liệu ứng dụng \ ssl-Keys.log hoặc là C: \ ssl-Keys.log.

Khi bạn đã hoàn tất, nhấp vào đồng ý và chuyển sang các bước tiếp theo.

Đặt biến môi trường Linux hoặc Mac

Trong Linux Mac, bạn cần phải thiết lập SSLKEYLOGFILE biến môi trường bằng cách sử dụng nano. Trong Linux, biến được lưu trữ trong ~ / .bashrc. Trên Mac, bạn sẽ tạo biến trong tập tin  ~ / .MacOSX / môi trường.

Mở một thiết bị đầu cuối và sử dụng lệnh này trong Linux:

nano ~ / .bashrc

Mở Bệ phóng, nhấp chuột Khác, và khởi động một thiết bị đầu cuối để chạy lệnh này trong Mac OSX:

nano ~ / .bash_profile

Các bước sau đây giống nhau cho cả hai hệ điều hành.

Ở cuối tập tin, thêm dòng này:

xuất SSLKEYLOGFILE = ~ / .ssl-key.log

nhấn Ctrl + X, Y để lưu các thay đổi của bạn.

Đóng cửa sổ terminal và mở một cái khác để đặt biến, sau đó gõ như sau để xác nhận nó đã được đặt thành công:

tiếng vang $ SSLKEYLOGFILE

Sau khi bạn thực hiện lệnh, bạn sẽ thấy đầu ra tương tự như hình trên. /Users/comparitech/.ssl-key.log là đường dẫn đầy đủ đến nhật ký khóa tiền chính SSL của tôi. Lưu ý: Bạn sẽ muốn ghi chú của bạn, sẽ khác, để nhập vào Wireshark.

Bây giờ biến đã được đặt, bạn có thể chuyển sang nhóm bước tiếp theo.

Khởi chạy trình duyệt của bạn và kiểm tra tệp nhật ký

Trước khi bạn khởi chạy Wireshark và định cấu hình nó để giải mã SSL bằng khóa chính, bạn nên khởi động trình duyệt của mình và xác nhận rằng tệp nhật ký đang được sử dụng.

Để điền nhật ký, điều quan trọng là bạn truy cập một trang web có bật SSL. Tôi đã sử dụng máy chủ Apache của riêng mình để thử nghiệm, nhưng bất kỳ trang web nào cũng sẽ hoạt động. Một trong những lợi ích lớn nhất của việc sử dụng khóa chia sẻ trước chủ là bạn không cần truy cập vào máy chủ để giải mã SSL.

Sau khi bạn đã truy cập một trang web hỗ trợ SSL, hãy kiểm tra tệp để biết dữ liệu. Trong các cửa sổ, bạn có thể dùng Sổ tay. Trong Linux hoặc là Mac, sử dụng lệnh sau:

mèo ~ / .ssl-log.key

Trên bất kỳ hệ điều hành nào, tệp của bạn sẽ trông giống như của tôi ở trên. Sau khi bạn xác nhận rằng trình duyệt của bạn đang ghi nhật ký khóa chính ở vị trí bạn đã chọn, bạn có thể định cấu hình Wireshark để sử dụng các khóa đó để giải mã SSL.

Cấu hình Wireshark để giải mã SSL

Khi trình duyệt của bạn đang ghi nhật ký khóa chính, sẽ đến lúc cấu hình Wireshark để sử dụng các nhật ký đó để giải mã SSL.

Mở Wireshark và nhấp Biên tập, sau đó Sở thích. Các Sở thích Hộp thoại sẽ mở và ở bên trái, bạn sẽ thấy một danh sách các mục. Mở rộng Giao thức, cuộn xuống, sau đó nhấp SSL.

Trong danh sách các tùy chọn cho giao thức SSL, bạn sẽ thấy một mục nhập cho (Pre) Tên tệp nhật ký -Master-Secret. Duyệt đến tệp nhật ký bạn thiết lập ở bước trước hoặc chỉ cần dán đường dẫn.

Khi bạn cài đặt xong (Pre) Tên tệp nhật ký -Master-Secret, nhấp chuột đồng ý và trở về Wireshark. Bạn đã sẵn sàng để tiếp tục.

Nắm bắt phiên và giải mã SSL

Bước cuối cùng là nắm bắt một phiên kiểm tra và đảm bảo rằng Wireshark giải mã SSL thành công.

  • Bắt đầu một phiên chụp chưa được lọc, thu nhỏ nó và mở trình duyệt của bạn.
  • Truy cập một trang web an toàn để tạo dữ liệu và tùy ý thiết lập bộ lọc hiển thị của ssl, để giảm thiểu tiếng ồn phiên.
  • Nhấp vào bất kỳ khung chứa dữ liệu được mã hóa.

Trong trường hợp của tôi, tôi sẽ chọn một trong đó có lưu lượng HTTP với mã hóa văn bản / HTML, vì tôi đã muốn xem mã nguồn mà máy chủ web đang gửi tới trình duyệt của tôi. Nhưng bất kỳ lưu lượng được mã hóa nào sử dụng khóa bí mật trước chủ sẽ hoạt động với phương thức này. Điều đó bao gồm tất cả dữ liệu sử dụng Mã hóa chuyển tiếp hoàn hảo (PFE) thông qua Diffie-Hellman hoặc trao đổi khóa tương đương.

Khi bạn đã chọn một khung được mã hóa, hãy nhìn vào Chế độ xem gói byte, và cụ thể là các tab bên dưới khung nhìn. Bạn sẽ thấy một mục cho SSL được giải mã dữ liệu, trong số những người khác.

Bạn có thể nhận thấy rằng phiên của tôi vẫn giống như phiên bản đầy rác và không có HTML nào hiển thị. Điều đó vì máy chủ web của tôi (và hầu hết các máy chủ Apache) sử dụng nén GZIP theo mặc định.

Khi bạn nhấp vào Cơ thể thực thể không nén tab, chỉ hiển thị trong trường hợp này khi bật giải mã SSL, bạn có thể xem mã nguồn của trang web. Chẳng hạn, ở đây, phần tử tiêu đề của trang Apache mặc định trong bản rõ.

Sử dụng khóa RSA để giải mã SSL

Bạn có thể đã nhận thấy trước đó rằng Wireshark có một trường cho phép bạn tải lên các khóa RSA của mình và sử dụng chúng để giải mã SSL. Trong thực tế, Giải mã khóa RSA không được chấp nhận.

Lý do giải mã SSL bằng khóa RSA không được sử dụng nữa là Mã hóa chuyển tiếp hoàn hảo (PFE) đã khiến nó trở nên lỗi thời. Các phiên đàm phán với Diffie-Hellman don lồng sử dụng khóa RSA trực tiếp; thay vào đó, họ tạo khóa một lần, chỉ được lưu trữ trong RAM, được mã hóa bằng khóa trên đĩa.

Nếu trước đây bạn đã sử dụng khóa RSA để giải mã lưu lượng và nó đã ngừng hoạt động, bạn có thể xác nhận rằng máy mục tiêu đang sử dụng trao đổi Diffie-Hellman bằng cách bật ghi nhật ký SSL.

Để bật đăng nhập, nhấp Biên tập từ menu thanh công cụ và chọn Sở thích. Mở rộng Giao thức mục menu bên trái và cuộn xuống SSL. Từ đây, bạn có thể nhấp vào Duyệt nút và đặt vị trí của nhật ký SSL của bạn.

Khi vị trí được đặt, tất cả các tương tác SSL sẽ được ghi vào tệp được chỉ định.

Ghi lại một phiên với máy chủ hỗ trợ SSL của bạn, sau đó kiểm tra nhật ký. Cụ thể, bạn nên cuộn cho đến khi bạn tìm thấy khung mà bắt tay TLS đã được thương lượng. Nó có khả năng là bạn sẽ thấy một mục DHE rõ ràng trong chuỗi mật mã.

Điều đó có nghĩa là trao đổi khóa Diffie-Hellman được kích hoạt. Trong trường hợp của tôi, Apache đặc biệt sử dụng Diffie-Hellman với các phím cong hình elip, được biểu thị bằng chuỗi ECDhe.

Di chuyển xa hơn một chút và bạn có thể thấy rằng bí mật chính không thể tìm thấy.

Nếu nhật ký của bạn trông như thế và bạn có thể giải mã lưu lượng bằng cách sử dụng khóa RSA, bạn không có lựa chọn nào khác ngoài việc chuyển sang phương pháp bí mật tiền chế ở trên.

Vì PFE đang trở thành thông lệ tiêu chuẩn, với TLSv1.3 có khả năng buộc vấn đề, giải mã khóa RSA đơn giản không được chấp nhận và không nên được sử dụng.

Wireshark giúp giải mã lưu lượng SSL dễ dàng

Tôi thực sự thích cách Wireshark xử lý giải mã SSL. Mật mã học rất phức tạp và các tiêu chuẩn liên tục thay đổi để an toàn hơn. Nhưng một khi Wireshark và môi trường của bạn được thiết lập đúng cách, tất cả những gì bạn phải làm là thay đổi các tab để xem dữ liệu được giải mã. Nó không nhận được bất kỳ dễ dàng hơn thế.