การส่ง SIP User Password ขณะรีจิสเตอร์จาก Client ไป Server
เริ่มต้นจะรีจิสเตอร์แบบไม่ส่ง Authentication ไปด้วย
- โค้ด: เลือกทั้งหมด
REGISTER sip:192.168.105.251 SIP/2.0..Via: SIP/2.0/UDP 125.26.202.14:5060;branch=z9hG4bK17123222492404930964..From: 5719<sip:5719@192.168.105.251>;tag=819422361..To: 5719 <sip:5719@192.168.105.251>..Call-ID: 30957706228737-276461722811405@192.168.0.211..CSeq: 1 REGISTER..Contact: <sip:5719@125.26.202.14:5060>..Max-Forwards: 70..Expires: 3600..Supported: path..User-Agent: metavoice MV100/MV100P 2.3.233.129..Allow: INVITE, ACK, OPTIONS, BYE, CANCEL, REFER, NOTIFY, INFO, PRACK, UPDATE, MESSAGE..Content-Length: 0....
เซอร์เวอร์ตอบกลับไปว่า 401 Unauthorized บอกว่าให้ส่ง Authentication มาด้วย พาสเวอร์ดให้เข้ารหัสแบบ MD5 นะ (Digest algorithm=MD5)
- โค้ด: เลือกทั้งหมด
SIP/2.0 401 Unauthorized..Via: SIP/2.0/UDP 125.26.202.14:5060;branch=z9hG4bK17123222492404930964;received=125.26.202.14;rport=5060..From: 5719 <sip:5719@192.168.105.251>;tag=819422361..To: 5719 <sip:5719@192.168.105.251>;tag=as08ac2ba6..Call-ID: 30957706228737-276 461722811405@192.168.0.211..CSeq: 1 REGISTER..Server: Highways_SIP..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE..Supported: replaces, timer..WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="080929d6"..Content-Length: 0....
Client ส่งไปใหม่ เข้ารหัสพาสเวอร์ดแบบ MD5 แล้ว มี Username (Digest username) = 5719 มี Password (response) =ที่เข้ารหัสแบบ MD5
- โค้ด: เลือกทั้งหมด
REGISTER sip:192.168.105.251 SIP/2.0..Via: SIP/2.0/UDP 125.26.202.14:5060;branch=z9hG4bK1685495792970925475..From: 5719<sip:5719@192.168.105.251>;tag=819422361.. To: 5719 <sip:5719@192.168.105.251>..Call-ID: 30957706228737-276461722811405@192.168.0.211..CSeq: 2 REGISTER..Contact: <sip:5719@125.26.202.14:5060>..Authorization: Digest username="5719", realm="asterisk", nonce="080929d6", uri="sip:192.168.105.251", response="5664afd34a7d00bd8810630967192b69", algorithm=MD5..Max-Forwards: 70..Expires: 3600..Supported: path..User-Agent: metavoice MV100/MV100P 2.3.233.129..Allow: INVITE, ACK, OPTIONS, BYE, CANCEL, REFER, NOTIFY, INFO, PRACK, UPDATE, MESSAG..Content-Length: 0....
ซึ่ง Asterisk จะนำ Text Password ที่เราตั้งค่าไว้ในเบอร์ Extension (บรรทัด secret) เข้ารหัสด้วยอัลกอริทึม MD5 แล้วเอามาเปรียบเทียบกับค่านี้
กรณีพาสเวอร์ดผิด เซอร์เวอร์จะตอบด้วย 403 Forbidden แต่ถ้าถูกต้องจะตอบ 200 OK กลับไป
- โค้ด: เลือกทั้งหมด
SIP/2.0 403 Forbidden..Via: SIP/2.0/UDP 125.26.202.14:5060;branch=z9hG4bK1685495792970925475;received=125.26.202.14;rport=5060..From: 5719 <sip:5719@192.168.105.251>;tag=819422361..To: 5719 <sip:5719@192.168.105.251>;tag=as08ac2ba6..Call-ID: 30957706228737-276461722811405@192.168.0.211..CSeq: 2 REGISTER..Server: Highways_SIP..Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE..Supported: replaces, timer..Content-Length: 0....
เพิ่มเติม...
เราสามารถแปลง MD5 hash เช่น 5664afd34a7d00bd8810630967192b69 เป็น Text ได้ แต่ใช้เวลานานมากกกกกกกก ซึ่งนี่ก็พอจะสบายใจได้แล้วนะครับว่า ถ้าเผื่อมีใครมาดักจับ SIP messages กลางทาง (Man-In-the-Middle Attack) เขาจะเห็นแต่ User แต่ไม่รู้ Password ครับ
เว็บแปลง Text เป็น MD5 hash (แปลงได้ในเสี้ยววินาที)
http://www.md5online.org/md5-encrypt.html
เว็บแปลง MD5 hash เป็น Text (ถ้ามี MD5 hash นี้อยู่ในฐานข้อมูลแล้วจะแจ้งออกมาเลย ถ้าไม่มีก็จะแจ้งว่าไม่พบในฐานข้อมูล นั่นเป็นเพราะว่ามันใช้เวลานานมาก สิบปีจะได้หรือเปล่าก็ไม่รู้)
http://www.md5online.org/md5-decrypt.html