Tôi có thể sử dụng công cụ nào để đánh hơi lưu lượng HTTP / HTTPS?


23

Tôi đang tìm kiếm một công cụ dòng lệnh có thể chặn các yêu cầu HTTP / HTTPS, trích xuất thông tin như: (nội dung, đích, v.v.), thực hiện các nhiệm vụ phân tích khác nhau và cuối cùng xác định xem có nên bỏ yêu cầu đó hay không. Yêu cầu pháp lý hơn phải được chuyển tiếp đến ứng dụng.

Một công cụ có bản chất tương tự tcpdump, Wireshark hoặc Snort , nhưng hoạt động ở cấp HTTP.

Tài liệu tham khảo

Câu trả lời:


20

Hãy thử dùng mitmproxy .

  • mitmproxy là một proxy trung gian có khả năng SSL cho HTTP. Nó cung cấp một giao diện điều khiển cho phép các luồng lưu lượng được kiểm tra và chỉnh sửa nhanh chóng.

  • mitmdump là phiên bản dòng lệnh của mitmproxy, có cùng chức năng nhưng không có giao diện người dùng. Hãy suy nghĩ tcpdump cho HTTP.

Tính năng, đặc điểm

  • Chặn các yêu cầu và phản hồi HTTP và sửa đổi chúng một cách nhanh chóng.
  • Lưu các cuộc hội thoại HTTP hoàn chỉnh để phát lại và phân tích sau này.
  • Phát lại phía máy khách của một cuộc hội thoại HTTP.
  • Phát lại phản hồi HTTP của một máy chủ được ghi lại trước đó.
  • Đảo ngược chế độ proxy để chuyển tiếp lưu lượng đến một máy chủ được chỉ định.
  • Thực hiện các thay đổi theo kịch bản cho lưu lượng HTTP bằng Python.
  • Chứng chỉ SSL để đánh chặn được tạo ra một cách nhanh chóng.

Ảnh chụp màn hình

   mẫu ss

Thí dụ

Tôi thiết lập một ví dụ ứng dụng Jekyll Bootstrap đang nghe trên cổng 4000 trên localhost của tôi. Để chặn lưu lượng, tôi sẽ làm như sau:

% mitmproxy --mode reverse:http://localhost:4000 -p 4001

Sau đó kết nối với mitmproxy của tôi trên cổng 4001 từ trình duyệt web của tôi ( http://localhost:4001), dẫn đến điều này trong mitmproxy:

   ss của mitmproxy w / JB # 1

Sau đó, bạn có thể chọn bất kỳ GETkết quả nào để xem thông tin tiêu đề được liên kết với điều đó GET:

   ss của mitmproxy w / JB # 2

Tài liệu tham khảo


3

Đối với một số tình huống, bạn có thể sử dụng proxy chấp nhận các yêu cầu HTTP đến và thực hiện các yêu cầu HTTPS đi. Ví dụ, tôi muốn nắm bắt lưu lượng giữa gitvà github.com. Tôi đã sử dụng mitmproxy :

mitmproxy -s httpser.py

ở đâu httpser.py:

def request(context, flow):
  flow.request.scheme = 'https'
  flow.request.port = 443

Sau đó tôi chạy gitnhư vậy:

export http_proxy="http://127.0.0.1:8080/"
git clone http://github.com/oxplot/difftr

Bây giờ bằng cách sử dụng wiresharknghe localhost, người ta có thể chụp lưu lượng truy cập đơn giản. Nếu không có proxy, github sẽ chuyển hướng gitsử dụng HTTPS.


2

mitmproxy/mitmdump

Tương đương tcpdumpvới HTTPS là mitmdump. Dưới đây là các bước:

  1. Cài đặt mitmproxygói (macOS brew install mitmproxy:).
  2. Cài đặt chứng chỉ CA mitmproxy bằng các lệnh sau:

    $ mitmdump --mode reverse:http://mitm.it/ -p 8080
    $ wget --content-disposition http://localhost:8080/cert/pem
    $ open mitmproxy-ca-cert.pem
    # Open, install and mark the certificate as trusted.
    

Bây giờ, đây là thử nghiệm đơn giản về cách kiểm tra proxy ngược:

  1. Chạy : mitmdump --mode reverse:https://example.com/ -p 4433.
  2. Trong một shell khác, chạy : curl https://localhost:4433.

    Bây giờ, bạn sẽ thấy nguồn trang và mitmdumplệnh sẽ tạo đầu ra như:

    Proxy server listening at http://*:4433
    [::1]:49446: clientconnect
    [::1]:49446: GET https://example.com/ HTTP/2.0
              << 200  1.24k
    [::1]:49446: clientdisconnect
    

Đối với tất cả lưu lượng, chỉ cần chạy: mitmdumphoặc mitmproxy.

Xem: mitmproxytrang tài liệu để biết thêm chi tiết.


Charles Proxy

Nếu bạn đang sử dụng macOS, cũng có ứng dụng Charles Proxy (GUI) cho phép xem tất cả lưu lượng HTTP và SSL / HTTPS giữa các máy chủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.