ฉันสามารถใช้เครื่องมือใดในการดมปริมาณข้อมูล HTTP / HTTPS


23

ฉันกำลังมองหาเครื่องมือบรรทัดคำสั่งที่สามารถสกัดกั้นคำขอ HTTP / HTTPS แยกข้อมูลเช่น: (เนื้อหาปลายทาง ฯลฯ ) ดำเนินการวิเคราะห์ต่าง ๆ และสุดท้ายกำหนดว่าคำขอควรจะลดลงหรือไม่ คำขอทางกฎหมายจะต้องถูกส่งต่อไปยังแอปพลิเคชัน

เครื่องมือที่มีลักษณะคล้ายกันtcpdump, WiresharkหรือSnortแต่ดำเนินการในระดับของ HTTP

อ้างอิง

คำตอบ:


20

ลองmitmproxy

  • mitmproxy เป็นพร็อกซี man-in-the-middle ที่รองรับ SSL สำหรับ HTTP มันมีส่วนต่อประสานคอนโซลที่อนุญาตให้มีการตรวจสอบและแก้ไขการรับส่งข้อมูล

  • mitmdump เป็นเวอร์ชันบรรทัดคำสั่งของ mitmproxy ที่มีฟังก์ชั่นเดียวกัน แต่ไม่มีส่วนต่อประสานผู้ใช้ คิดว่า tcpdump สำหรับ HTTP

คุณสมบัติ

  • สกัดกั้นคำขอ HTTP และการตอบกลับและแก้ไขได้ทันที
  • บันทึกการสนทนา HTTP ที่สมบูรณ์เพื่อเล่นซ้ำและวิเคราะห์ในภายหลัง
  • เล่นซ้ำฝั่งไคลเอนต์ของการสนทนา HTTP
  • เล่นซ้ำการตอบสนอง HTTP ของเซิร์ฟเวอร์ที่บันทึกไว้ก่อนหน้านี้
  • ย้อนกลับโหมดพร็อกซีเพื่อส่งต่อการรับส่งข้อมูลไปยังเซิร์ฟเวอร์ที่ระบุ
  • ทำการเปลี่ยนแปลงสคริปต์กับทราฟฟิก HTTP โดยใช้ Python
  • ใบรับรอง SSL สำหรับการสกัดกั้นถูกสร้างขึ้นทันที

ภาพหน้าจอ

   ตัวอย่างเอสเอส

ตัวอย่าง

ฉันตั้งค่าตัวอย่างแอพJekyll Bootstrapซึ่งกำลังฟังบนพอร์ต 4000 บนโฮสต์ของฉัน เพื่อสกัดกั้นการรับส่งข้อมูลของฉันจะทำต่อไปนี้:

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

จากนั้นเชื่อมต่อกับ mitmproxy ของฉันบนพอร์ต 4001 จากเว็บเบราว์เซอร์ของฉัน ( http://localhost:4001), ส่งผลให้สิ่งนี้ใน mitmproxy:

   ss ของ mitmproxy w / JB # 1

จากนั้นคุณสามารถเลือกGETผลลัพธ์ใด ๆเพื่อดูข้อมูลส่วนหัวที่เกี่ยวข้องกับสิ่งนั้นGET:

   ss ของ mitmproxy w / JB # 2

อ้างอิง


3

สำหรับบางสถานการณ์คุณสามารถใช้พร็อกซีที่รับคำขอ HTTP ขาเข้าและส่งคำขอ HTTPS ขาออก ตัวอย่างเช่นฉันต้องการจับภาพการจราจรระหว่างgitและ github.com ฉันใช้mitmproxy :

mitmproxy -s httpser.py

อยู่ที่ไหนhttpser.py:

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

จากนั้นฉันก็วิ่งไปตามgitนั้น

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

ตอนนี้ใช้wiresharkฟังlocalhostใครสามารถจับภาพการจราจร หากไม่มีพร็อกซี Github จะเปลี่ยนเส้นทางgitเพื่อใช้ HTTPS


2

mitmproxy/mitmdump

Equalivant ไปtcpdumpสำหรับ HTTPS mitmdumpคือ นี่คือขั้นตอน:

  1. ติดตั้งmitmproxyแพคเกจ (MacOS: brew install mitmproxy)
  2. ติดตั้งใบรับรอง mitmproxy CAโดยคำสั่งต่อไปนี้:

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

ตอนนี้นี่คือการทดสอบอย่างง่าย ๆ เกี่ยวกับวิธีทดสอบ reverse proxy:

  1. mitmdump --mode reverse:https://example.com/ -p 4433เรียกใช้:
  2. ในเชลล์อื่นให้รัน: curl https://localhost:4433.

    ตอนนี้คุณจะเห็นแหล่งที่มาของหน้าและmitmdumpคำสั่งควรสร้างผลลัพธ์เช่น

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

สำหรับการจราจรทั้งหมดทำงานเพียง: หรือmitmdumpmitmproxy

ดู: mitmproxyหน้าเอกสารสำหรับรายละเอียดเพิ่มเติม


พร็อกซี่ชาร์ลส์

หากคุณอยู่บน macOS ยังมีแอปCharles Proxy (GUI) ซึ่งอนุญาตให้ดูทราฟฟิก HTTP และ SSL / HTTPS ทั้งหมดระหว่างโฮสต์ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.