Score:0

การตั้งค่าเลเยอร์ 2 MitM

ธง th

การตั้งค่าเลเยอร์ 2 MitM:

                ++++
                | โฮสต์ |
++--------|------| ++--------+
| ลูกค้า | <--> | MITM | <--> | เซิร์ฟเวอร์ |
+++++ +++++ ++--------

TLDR:

Rasperry Pi's eth0 เชื่อมต่อกับอินเทอร์เน็ตและ wlan0 ทำหน้าที่เป็นจุดเชื่อมต่อโดยใช้ hostapd การเชื่อมอินเทอร์เฟซทั้งสองทำงานได้ดี การเปลี่ยนทิศทางทราฟฟิก HTTP(S) บนบริดจ์ไปยัง Python mitmproxy ไม่ทำงาน คำสั่งต่อไปนี้ให้ไคลเอนต์เชื่อมต่อกับอินเทอร์เน็ตจุดเข้าใช้งาน แต่ไม่มีการรับส่งข้อมูลผ่าน Python mitmproxy ที่ฟังอยู่ 8080:

brctl บวกbr br0
brctl บวก br0 eth0
ลิงค์ ip ตั้งค่า dev br0 ขึ้น

echo "ปฏิเสธอินเทอร์เฟซ wlan0 eth0" >> /etc/dhcpcd.conf
echo "อินเทอร์เฟซ br0" >> /etc/dhcpcd.conf
echo "bridge=br0" >> /etc/hostapd/hostapd.conf

iptables -A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -A โพสต์ -o eth0 -j MASQUERADE

สิ่งที่ฉันได้ลองไปแล้ว:

  1. ถอยหลังไปสองก้าวและตั้งค่าเลเยอร์ 3 NAT MitM
  2. ก้าวไปข้างหน้าหนึ่งก้าวและตั้งค่าบริดจ์เครือข่ายอย่างง่าย
  3. พยายามตั้งค่า Layer 3 MitM อีกครั้งและค้นหาปัญหา

การตั้งค่าเลเยอร์ 3 MitM:

+++++ +++++ ++--------
| ลูกค้า | <--> | MITM | <--> | เซิร์ฟเวอร์ |
+++++ +++++ ++--------

การตั้งค่าเลเยอร์ 3 ใช้ไม่ได้กับกฎ iptable ต่อไปนี้:

iptables -t nat -A โพสต์ -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080

[อ้างอิง]

[อ้างอิง]

หลังจากเพิ่มกฎเพิ่มเติมต่อไปนี้แล้ว ก็ใช้งานได้ดี และทราฟฟิก HTTP(S) ทั้งหมดของไคลเอ็นต์ที่เชื่อมต่อกับจุดเข้าใช้งานของ Pi ส่งผ่าน Python mitmproxy:

iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ยอมรับ
iptables -A FORWARD -i wlan0 -o eth0 -j ยอมรับ

มีคนอธิบายเรื่องนี้ไหม? ฉันไม่เข้าใจว่าทำไม เพราะสำหรับการกำหนดเส้นทาง NAT การมีกฎข้อเดียวก็เพียงพอแล้ว:

iptables -t nat -A โพสต์ -o eth0 -j MASQUERADE

การตั้งค่าบริดจ์เลเยอร์ 2

ต่อไป ฉันได้ตั้งค่าบริดจ์อย่างง่ายโดยไม่ตั้งใจที่จะสกัดกั้นทราฟฟิก HTTP(S):

brctl บวกbr br0
brctl บวก br0 eth0
ลิงค์ ip ตั้งค่า dev br0 ขึ้น

echo "ปฏิเสธอินเทอร์เฟซ wlan0 eth0" >> /etc/dhcpcd.conf
echo "อินเทอร์เฟซ br0" >> /etc/dhcpcd.conf
echo "bridge=br0" >> /etc/hostapd/hostapd.conf

systemctl daemon-โหลดซ้ำ

การตั้งค่านี้ทำงานได้ดี

การตั้งค่าเลเยอร์ 2 MitM:

brctl บวกbr br0
brctl บวก br0 eth0
ลิงค์ ip ตั้งค่า dev br0 ขึ้น

echo "ปฏิเสธอินเทอร์เฟซ wlan0 eth0" >> /etc/dhcpcd.conf
echo "อินเทอร์เฟซ br0" >> /etc/dhcpcd.conf
echo "bridge=br0" >> /etc/hostapd/hostapd.conf

iptables -A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -A โพสต์ -o eth0 -j MASQUERADE

[อ้างอิง]

ไคลเอนต์ของจุดเชื่อมต่อของ Pi มีการเข้าถึงอินเทอร์เน็ต แต่ทราฟฟิกไม่ผ่าน Python mitmproxy

ด้วยความช่วยเหลือของ Google ฉันพบว่า iptables ตามค่าเริ่มต้นใช้ไม่ได้กับบริดจ์เลเยอร์ 2 และฉันต้องเปิดใช้งาน:

modprobe br_netfilter
เสียงสะท้อน 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

[อ้างอิง]

การปรับแต่งเพิ่มเติมบางอย่างไม่สามารถแก้ปัญหาได้:

เสียงสะท้อน 0 > /proc/sys/net/ipv4/conf/default/rp_filter
เสียงสะท้อน 0 > /proc/sys/net/ipv4/conf/all/rp_filter

[อ้างอิง]

สิ่งต่าง ๆ เลวร้ายลงเนื่องจากไม่มีไคลเอนต์ที่เชื่อมต่อกับจุดเชื่อมต่อของ Pi ที่มีการเข้าถึงอินเทอร์เน็ต ฉันไม่เห็นว่ามีปัญหาอะไร ความคิดใด ๆ ?

อาจช่วยได้:

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (บัสเตอร์)"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา