ฉันจะดาวน์โหลดใบรับรองของ AP แบบไร้สายโดยใช้ 802.1X ได้อย่างไร


11

เท่าที่ฉันเข้าใจจุดเชื่อมต่อไร้สายที่ใช้ WPA-Enterprise (เช่น WPA บวก 802.1X) สามารถส่งใบรับรองกุญแจสาธารณะให้กับลูกค้าในระหว่างการตั้งค่าการเชื่อมต่อ ลูกค้าสามารถตรวจสอบใบรับรองนี้เพื่อให้แน่ใจว่าไม่ได้เชื่อมต่อกับ rogue AP (คล้ายกับการตรวจสอบความถูกต้องของใบรับรองใน HTTPS)

คำถาม:

  • ฉันเข้าใจเรื่องนี้ถูกต้องหรือไม่
  • ถ้าใช่มีวิธีดาวน์โหลดใบรับรอง AP หรือไม่? เป็นการดีที่ฉันต้องการโซลูชันที่ทำงานภายใต้ Linux

ฉันต้องการดาวน์โหลดใบรับรองที่ลงนามเองเพื่อใช้ในการตรวจสอบความพยายามในการเชื่อมต่อที่ตามมา สิ่งนี้จะง่ายกว่าการถามตัวดำเนินการของ AP เพื่อหาไฟล์


ฉันไม่รู้จักเครื่องมือสำหรับการดาวน์โหลดและการบันทึกใบรับรองโดยเฉพาะ แต่มันชัดเจนว่าคุณสามารถจับมันด้วย Wireshark หรือ tcpdump ฉันดูเหมือนจะจำการดูข้อมูลใบรับรองในบันทึกข้อบกพร่อง / verbose wpa_supplicant บันทึกดังนั้นคุณอาจดูที่เช่นกัน วิธีการใดวิธีการหนึ่งต่อไปนี้อาจต้องใช้ข้อมูลเล็กน้อยในการรับจาก pcap / log ไปยังไฟล์ X.509 .cer ที่ถูกต้อง
Spiff

คำตอบ:


11

ใช่การกำหนดค่า WPA-Enterprise ที่พบมากที่สุดใช้ PEAP หรือ TTLS ทั้งการใช้ TLS ผ่าน EAP มากกว่า 802.1X

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

น่าเศร้าที่ wpa_supplicant ไม่มีตัวเลือกในการถ่ายโอนใบรับรองแม้ในโหมดแก้ไขข้อบกพร่อง (ฉันจะอัปเดตสิ่งนี้หากฉันพบวิธีที่ดีกว่า) คุณยังสามารถตรวจสอบกระบวนการตรวจสอบสิทธิ์ EAPOL ที่แท้จริงได้ ก่อนอื่นให้ติดตั้ง Wireshark

ในขณะที่ตัดการเชื่อมต่อให้นำอินเทอร์เฟซขึ้นด้วยตนเองและเริ่มการจับภาพ:

$ sudo ip link set wlan0 up
$ wireshark -ki wlan0 &

เริ่ม wpa_supplicant และในไม่ช้าคุณจะเห็นการจับมือ TLS:

เซิร์ฟเวอร์จะส่งใบรับรองทันทีหลังจาก ServerHello เลือกแพ็กเก็ตแรกนั้นจากนั้นขุดเข้าไป:

802.1X
└─Extensible Authentication Protocol
  └─Secure Sockets Layer
    └─Handshake Protocol: Certificatte
      └─Certificates

คลิกขวาที่อินสแตนซ์แรกของ "Certificate ( stuff )" และเลือก "Export bytes packet ที่เลือก" Wireshark จะบันทึกเป็นไฟล์ในรูปแบบไบนารี DER ทำซ้ำสำหรับใบรับรองอื่นทั้งหมด หนึ่งเยี่ยมยอด (RADIUS เซิร์ฟเวอร์) มีข้อมูลที่คุณสามารถกำหนดค่าในaltsubject_match; สุดท้าย (root CA) ca_certควรจะให้เป็น

ตอนนี้คุณมีไม่กี่*.crtหรือ*.derไฟล์ในรูปแบบไบนารี DER แปลงเป็นรูปแบบ PEM "text":

openssl x509 -inform DER < mycert.der > mycert.pem

(หาก wpa_supplicant ของคุณใช้ OpenSSL เป็นตัวจัดการ TLS คุณต้องให้ใบรับรอง "root CA" โดยให้ใบรับรองของเซิร์ฟเวอร์นั้นใช้งานไม่ได้

โปรดทราบว่าอาจเป็นไปได้ว่าใบรับรองล่าสุดที่เห็นใน Wireshark จะไม่เป็นรูท CA แต่จะออกโดยหนึ่งในรูท CA ใน/etc/ssl/certsไดเรกทอรีของคุณ... หากเป็นกรณีนี้ให้ตั้งค่าdomain_suffix_matchด้วย การใช้ CA สาธารณะจะไม่ปลอดภัย (802.1X น่าเสียดายที่ไม่ทราบว่า "ชื่อโฮสต์" เพื่อตรวจสอบว่าเป็นอย่างไรเช่น HTTPS)


ขอบคุณสำหรับการเขียนรายละเอียด มันฟังดูซับซ้อนเล็กน้อย แต่ถ้าเป็นวิธีที่ง่ายที่สุดที่จะทำฉันจะลอง
sleske

ใช่มันใช้งานได้จริงฉันได้ดาวน์โหลด EAP echange ด้วยtpcpdumpแต่ใช้งานได้อย่างมีเสน่ห์ ตลกแล้วสตรีมของฉันมีเซิร์ฟเวอร์สวัสดีรายการใบรับรอง ... หนึ่งรายการ
mTorres

ในตัวอย่างของฉันข้อความ TLS กระจัดกระจายในหลาย ๆ แพ็กเก็ต EAP เนื่องจากมีขนาดใหญ่เกินไป (โดยเฉพาะถ้าส่งใบรับรอง RSA จำนวนมาก) แม้ว่าจะเป็นเซิร์ฟเวอร์ TLS เพียงหนึ่งเดียวโดยรวมก็ตาม
user1686

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