การส่ง SIP User Password ขณะรีจิสเตอร์จาก Client ไป Server
โพสต์แล้ว: 21 เม.ย. 2016 14:56
นานมากแล้วที่ผมไม่มีบทความในหัวข้อ Asterisk นี้เลย วันนี้เลยจัดซะหน่อย พอดีได้ความรู้มาใหม่เรื่องหนึ่งครับ ตามบทความนี้เลยครับ
การส่ง SIP User Password ขณะรีจิสเตอร์จาก Client ไป Server
เริ่มต้นจะรีจิสเตอร์แบบไม่ส่ง Authentication ไปด้วย
เซอร์เวอร์ตอบกลับไปว่า 401 Unauthorized บอกว่าให้ส่ง Authentication มาด้วย พาสเวอร์ดให้เข้ารหัสแบบ MD5 นะ (Digest algorithm=MD5)
Client ส่งไปใหม่ เข้ารหัสพาสเวอร์ดแบบ MD5 แล้ว มี Username (Digest username) = 5719 มี Password (response) =ที่เข้ารหัสแบบ MD5
ซึ่ง Asterisk จะนำ Text Password ที่เราตั้งค่าไว้ในเบอร์ Extension (บรรทัด secret) เข้ารหัสด้วยอัลกอริทึม MD5 แล้วเอามาเปรียบเทียบกับค่านี้
กรณีพาสเวอร์ดผิด เซอร์เวอร์จะตอบด้วย 403 Forbidden แต่ถ้าถูกต้องจะตอบ 200 OK กลับไป
เพิ่มเติม...
เราสามารถแปลง 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
การส่ง 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