การซ่อนรหัสผ่านใน wpa_supplicant.conf ด้วย WPA-EAP และ MSCHAP-v2


23

wpa_supplicant.confหน้าตาของฉันเป็นแบบนี้:

network={
  ssid="Some name"
  scan_ssid=1
  key_mgmt=WPA-EAP
  eap=PEAP
  identity="my-user-id"
  password="(clear text password here)"
  ca_cert="/usr/share/ca-certificates/mozilla/GeoTrust_Global_CA.crt"
  phase2="auth=MSCHAPV2"
}

ด้วยการรวมกันเฉพาะของ WPA-EAP และ MSCHAP-v2 มีวิธีใดที่จะไม่รวมรหัสผ่านของฉันไว้ในไฟล์การกำหนดค่านี้?

ChangeLog ดูเหมือนจะอ้างว่าเป็นไปได้ (ตั้งแต่ปี 2005!):

* added support for storing EAP user password as NtPasswordHash instead
  of plaintext password when using MSCHAP or MSCHAPv2 for
  authentication (hash:<16-octet hex value>); added nt_password_hash
  tool for hashing password to generate NtPasswordHash

หมายเหตุบางส่วน:

  • การใช้รหัสผ่านที่แตกต่างไม่ใช่ตัวเลือกเนื่องจากฉันไม่สามารถควบคุมเครือข่ายนี้ (นี่คือเครือข่ายขององค์กรและใช้ชื่อผู้ใช้ / รหัสผ่านเดียวในการเข้าถึงบริการทั้งหมดรวมถึงการเชื่อมต่อกับ Wifi)

  • คำเกี่ยวกับรายการที่ซ้ำกัน:

    • 40: use-wpa-supplicant-without-plain-รหัสผ่านเป็นเรื่องเกี่ยวกับคีย์ที่แชร์ล่วงหน้า
    • 74500: wpa-supplicant-store-password-as-hash-wpa-eap-with-phase2-auth-papใช้ PAP เป็นการพิสูจน์ตัวตนระยะที่ 2 (ไม่ใช่ MSCHAP-v2)
    • 85757: store-password-as-hash-in-wpa-supplicant-confคล้ายกันมากกับคำถามนี้ แต่ถูกปิด (ไม่ถูกต้อง) เหมือนเป็นสำเนาของ74500 ; น่าเสียดายที่คำตอบที่ให้กับสำเนาที่อ้างว่ามีเฉพาะกับ PAP และไม่ได้ใช้กับกรณี MSCHAP-v2 85757มีคำตอบที่อ้างว่าเป็นไปไม่ได้โดยไม่คำนึงถึงโปรโตคอล แต่การให้เหตุผลนั้นไม่ถูกต้อง1

1 ผู้ที่อ้างว่าใช้รหัสผ่านที่ถูกแฮชหมายความว่าการแฮชกลายเป็นรหัสผ่าน นี่คือความจริงในทางเทคนิค แต่อย่างน้อยกัญชาเป็นWiFi เท่านั้นรหัสผ่านซึ่งเป็นความคืบหน้าสำคัญกว่าการรั่วไหลของรหัสผ่านที่ใช้ร่วมกันอนุญาตให้เข้าถึงหลายบริการ

คำตอบ:


20

คุณสามารถสร้างNtPasswordHash(หรือที่รู้จักกันว่าการแฮชรหัสผ่าน NTLM) ด้วยตัวคุณเองดังนี้:

echo -n plaintext_password_here | iconv -t utf16le | openssl md4

นำหน้าด้วย "hash:" ในไฟล์ wpa_supplicant.conf เช่น

password=hash:6602f435f01b9173889a8d3b9bdcfd0b

ใน macOS รหัส iconv คือ UTF-16LE

echo -n plaintext_password_here | iconv -t UTF-16LE | openssl md4

โปรดทราบว่าคุณไม่ได้รับความปลอดภัยมากนัก หากผู้โจมตีพบไฟล์ที่มีแฮชพวกเขาสามารถเข้าร่วมเครือข่ายได้เล็กน้อย (เช่นเดียวกับที่คอมพิวเตอร์ของคุณทำ) ดังนั้นการแฮชรหัสผ่านจึงไม่ช่วยอะไรเลย หากรหัสผ่านถูกใช้ที่อื่นผู้โจมตีจะต้องใช้กำลังดุร้ายเพื่อค้นหารหัสผ่านเดิม (เช่นลองรหัสผ่านที่เป็นไปได้มากที่สุดและคำนวณแฮชของพวกเขาจนกว่าพวกเขาจะพบการแข่งขัน) เนื่องจากคุณสามารถคำนวณแฮชได้ประมาณ 1 พันล้านครั้งต่อวินาทีบนพีซีธรรมดานั่นไม่ใช่อุปสรรคใหญ่และผู้โจมตีสามารถใช้ตารางที่คำนวณล่วงหน้าได้ง่ายเนื่องจากแฮชไม่ได้ทำการคำนวณ NT เป็นสิ่งที่น่ากลัวอย่างยิ่งเนื่องจากอัลกอริทึมการแฮชรหัสผ่าน


ขอบคุณ! สิ่งนี้ดูมีแนวโน้ม แต่มันไม่ได้ผลสำหรับฉัน กำลังมองหาที่-dร่องรอยของ wpa_supplicant ฉันได้รับที่แตกต่างกันEAP-PEAP: Derived Session-Id, EAP-PEAP: Decrypted Phase 2 EAP, MSCHAPV2: auth_challenge - hexdump(len=16):และMSCHAPV2: password hash - hexdump(len=...)เอาท์พุทและในที่สุดสองข้อความพูดEAP-TLV: TLV Result - FailureและEAPOL authentication completed - result=FAILURE
Clément

เพียงเพื่อชี้แจง: ฉันจะได้รับMSCHAPV2: password hash - hexdumpบรรทัดในการติดตามการดีบักที่ล้มเหลวซึ่งเป็นกำลังใจ (อันที่ไม่ได้เข้ารหัสมีMSCHAPV2: password - hexdump_asciiบรรทัดแทน) แต่การเชื่อมต่อล้มเหลว
Clément

1
@ Clémentเพียงเพื่อให้แน่ใจว่ามีการสร้างแฮชที่ถูกต้อง: คำสั่งด้านบนที่ดำเนินการในระบบของคุณจะคำนวณแฮชเดียวกันกับเครื่องคิดเลขออนไลน์ใช่ไหม?
กุยโด้

1
วิธีนี้ใช้ไม่ได้หากรหัสผ่านยาวเกิน 14 ตัวอักษร
tjohnson

1
@Alden ราคาถูกมาก ไม่มีทางที่จะย้อนกลับจากแฮชไปยังอินพุตได้โดยตรง แต่คุณสามารถลองใช้รหัสผ่านที่เป็นไปได้จำนวนมากและคำนวณแฮชของพวกเขาจนกว่าคุณจะพบรหัสที่ตรงกัน MD4 มีความรวดเร็ว, 1 พันล้านใน 2 วินาทีกับ GPU
Gilles 'หยุดความชั่วร้าย'

16

เปิด terminal และประเภท:

wpa_passphrase YOUR_SSID YOUR_PASSWORD

ตัวอย่างผลลัพธ์:

network={
    ssid="YOUR_SSID"
    #psk="YOUR_PASSWORD"
    psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702
}

เปิดwpa_supplicant.confไฟล์และเพิ่มบรรทัดต่อไปนี้:

psk=6a24edf1592aec4465271b7dcd204601b6e78df3186ce1a62a31f40ae9630702

2
WPA PSK (ซึ่งเป็นการผสมระหว่าง SSID และรหัสผ่าน) ไม่เหมือนกับแฮช NTLM / NtPasswordHash (ซึ่งเป็นแฮช MD4 16 บิตของรหัสผ่านเท่านั้น)
กุยโด้

5
OP ถามเกี่ยวกับ WPA-EAP ไม่ใช่ WPA-PSK
กุยโด้

2
ขออภัยถ้าโพสต์ไม่ได้ทำให้ชัดเจน: นี่เป็นวิธีการแก้ปัญหาในการไม่ซ้ำกันครั้งแรกที่ฉันระบุไว้ ไม่มีคีย์ที่แบ่งปันล่วงหน้าในการกำหนดค่าที่ฉันถาม
Clément

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