Alat apa yang dapat saya gunakan untuk mengendus lalu lintas HTTP / HTTPS?

23

Saya mencari alat baris perintah yang dapat mencegat permintaan HTTP / HTTPS, mengekstrak informasi seperti: (konten, tujuan, dll.), Melakukan berbagai tugas analisis, dan akhirnya menentukan apakah permintaan tersebut harus dibatalkan atau tidak. Permintaan hukum harus diteruskan ke aplikasi.

Sebuah alat yang mirip di alam untuk tcpdump, Wireshark , atau Snort , tetapi beroperasi pada tingkat HTTP.

Referensi

slm
sumber

Jawaban:

20

Coba mitmproxy .

  • mitmproxy adalah proksi man-in-the-middle SSL yang mampu untuk HTTP. Ini menyediakan antarmuka konsol yang memungkinkan arus lalu lintas untuk diperiksa dan diedit dengan cepat.

  • mitmdump adalah versi perintah-baris dari mitmproxy, dengan fungsi yang sama tetapi tanpa antarmuka pengguna. Pikirkan tcpdump untuk HTTP.

fitur

  • Mencegah permintaan dan tanggapan HTTP dan memodifikasinya dengan cepat.
  • Simpan percakapan HTTP lengkap untuk replay dan analisis nanti.
  • Putar ulang sisi klien dari percakapan HTTP.
  • Putar ulang respons HTTP dari server yang sebelumnya direkam.
  • Membalikkan mode proxy untuk meneruskan lalu lintas ke server yang ditentukan.
  • Buat perubahan skrip pada lalu lintas HTTP menggunakan Python.
  • Sertifikat SSL untuk intersepsi dihasilkan dengan cepat.

Tangkapan layar

   sampel ss

Contoh

Saya menyiapkan contoh aplikasi Jekyll Bootstrap yang mendengarkan pada port 4000 di localhost saya. Untuk mencegat traffic, saya akan melakukan yang berikut:

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

Kemudian sambungkan ke mitmproxy saya pada port 4001 dari browser web saya ( http://localhost:4001), yang menghasilkan ini dalam mitmproxy:

   ss dari mitmproxy dengan JB # 1

Anda kemudian dapat memilih salah satu GEThasil untuk melihat info tajuk yang terkait dengan itu GET:

   ss dari mitmproxy dengan JB # 2

Referensi

slm
sumber
3

Untuk beberapa situasi, Anda dapat menggunakan proxy yang menerima permintaan HTTP masuk dan membuat permintaan HTTPS keluar. Sebagai contoh, saya ingin menangkap lalu lintas antara gitdan github.com. Saya menggunakan mitmproxy :

mitmproxy -s httpser.py

dimana httpser.pyadalah:

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

Saya kemudian berlari gitseperti itu:

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

Sekarang menggunakan wiresharkmendengarkan localhost, seseorang dapat menangkap lalu lintas biasa. Tanpa proxy, github akan mengarahkan ulang gituntuk menggunakan HTTPS.

Mansour
sumber
2

mitmproxy/mitmdump

Setara dengan tcpdumpuntuk HTTPS adalah mitmdump. Berikut langkah-langkahnya:

  1. Instal mitmproxypaket (macOS:) brew install mitmproxy.
  2. Instal sertifikat CA mitmproxy dengan perintah berikut:

    $ 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.
    

Sekarang, ini adalah tes sederhana tentang cara menguji proxy terbalik:

  1. Jalankan: mitmdump --mode reverse:https://example.com/ -p 4433.
  2. Dalam shell lain, jalankan: curl https://localhost:4433.

    Sekarang, Anda akan melihat sumber halaman dan mitmdumpperintah harus menghasilkan output seperti:

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

Untuk semua lalu lintas, jalankan saja: mitmdumpatau mitmproxy.

Lihat: mitmproxyhalaman dokumen untuk detail lebih lanjut.


Charles Proxy

Jika Anda menggunakan MacOS, ada juga aplikasi Charles Proxy (GUI) yang memungkinkan untuk melihat semua lalu lintas HTTP dan SSL / HTTPS antara host.

kenorb
sumber