ตัวอย่างเช่นฉันจะตรวจสอบได้อย่างไรว่า YouTube สำหรับ Android ใช้การเข้ารหัส TLS ความปลอดภัยของเลเยอร์การขนส่ง
มีเครื่องมือเครือข่ายที่ฉันสามารถใช้เพื่อตรวจสอบว่ามีการใช้การเข้ารหัสหรือไม่
ตัวอย่างเช่นฉันจะตรวจสอบได้อย่างไรว่า YouTube สำหรับ Android ใช้การเข้ารหัส TLS ความปลอดภัยของเลเยอร์การขนส่ง
มีเครื่องมือเครือข่ายที่ฉันสามารถใช้เพื่อตรวจสอบว่ามีการใช้การเข้ารหัสหรือไม่
คำตอบ:
คุณสามารถทดสอบได้โดยเชื่อมต่อกับเครือข่ายไร้สายที่คุณควบคุมและใช้ดมกลิ่น (wireshark, tcpdump) ทางด้านสายของ AP เพื่อดูแพ็คเก็ตที่ผ่านไป แม้ว่า Android ควรจะชอบระบบไร้สายผ่านเครือข่ายโทรศัพท์ แต่คุณสามารถปิดใช้งานบริการข้อมูลโทรศัพท์หากไม่ได้ทำเช่นนั้น
บอกให้เรารู้ว่าคุณค้นหาอะไร!
ในการทดสอบคุณต้องจับแพ็คเก็ตเครือข่ายจาก wireshark หรือเครื่องมือที่คล้ายกัน สิ่งนี้สามารถเรียกใช้บนโทรศัพท์ของคุณหากคุณรูทโทรศัพท์ของคุณ หรือคุณสามารถใช้คอมพิวเตอร์ที่เชื่อมต่ออินเทอร์เน็ตและตั้งค่าการ์ด wifi / bluetooth ที่ไม่ได้ใช้เป็นฮอตสปอต wifi / bluetooth (เช่นติดตั้ง wifi hotspot เมื่อคอมพิวเตอร์เชื่อมต่อกับอินเทอร์เน็ตโดยตรงผ่านอีเธอร์เน็ตหรือตั้งค่าการเชื่อมต่อบลูทู ธ ที่แบ่งปันอินเทอร์เน็ต ระหว่างโทรศัพท์และแล็ปท็อปของคุณหากแล็ปท็อปของคุณเชื่อมต่ออินเทอร์เน็ตผ่าน wifi) จากนั้นเชื่อมต่อโทรศัพท์ของคุณกับอินเทอร์เน็ตแล็ปท็อปของคุณและเริ่มการจับภาพหน้าจอของคุณ จากนั้นเริ่มแอปพลิเคชันมือถือเฉพาะและใช้งาน พยายามอย่าให้คอมพิวเตอร์หรือโทรศัพท์ของคุณมีกิจกรรมอินเทอร์เน็ตอื่น ๆ มากเกินไปในเวลาที่คุณทำการจับภาพ กรองผ่านแพ็กเก็ตที่เก็บรวบรวมตามที่อยู่ IP (เช่น หากคุณกำลังมองหา youtube ดูที่ IP ที่เกี่ยวข้องกับ youtube) ตรวจสอบว่าทุกสิ่งที่สร้างโดยแอปพลิเคชันนั้นถูกส่งผ่านโดยใช้ TLS (จดบันทึกโปรโตคอล) ดูว่าข้อมูลที่คุณต้องการเก็บเป็นความลับกำลังถูกเข้ารหัสหรือไม่
สำหรับกรณีเฉพาะของแอป youtube บน Android ไม่วิดีโอและคำขอเริ่มต้นเพื่อรับวิดีโอจะถูกส่งผ่าน HTTP ที่ไม่ได้เข้ารหัส (ฉันเพิ่งทดสอบกับ wireshark โดยใช้แอพ youtube บน Nexus 7 ของฉันที่ใช้ Android 4.4.2) มันทำการเชื่อมต่อ HTTPS เริ่มต้นซึ่งฉันเชื่อว่าใช้สำหรับการลงชื่อเข้าใช้บัญชี Google ของคุณ อย่างไรก็ตามเมื่อคุณร้องขอและดูวิดีโอการรับส่งข้อมูลรวมถึงส่วนหัว HTTP ที่ระบุวิดีโอจะถูกส่งผ่าน HTTP ที่ไม่ได้เข้ารหัส ต่อไปนี้เป็นคำขอ HTTP ที่บันทึกไว้เมื่อเริ่มต้นสตรีม TCP ที่สร้างด้วยแอป youtube (อนุญาตให้ฉันแก้ไข ip ของฉันและฟิลด์อื่น ๆ อีกมากมายที่มีข้อมูลปลอมดังนั้นฉันจึงไม่รั่วไหลข้อมูลโดยไม่ตั้งใจเช่นคุกกี้เซสชันของ Google ที่ใช้งานอยู่ ฉันไม่ต้องการส่ง) สังเกต&id=b7935aa6939a4137&
ส่วนที่ไม่เปลี่ยนแปลง
GET /videoplayback?ms=au&clen=22426616&key=yt5&mime=video%2F3gpp&ip=1.2.3.4&mv=m&ipbits=0
&mws=yes&fexp=123456%2C123456%2C123456%2C123456%2C123456%2C123456%2C123456%2C123456
&sparams=clen%2Cdur%2Cgir%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Csource%2Cupn%2Cexpire
&signature=123456789ABCDEF123456789ABCDEFABCDEFABCD.EF1234567890ABC123123123123A1231231234123
&upn=a1B2C3d4E5F&id=b7935aa6939a4137&gir=yes&mt=14001000000&sver=3&expire=1400200000
&dur=791.010&source=youtube&lmt=123456789012345&itag=36&dnc=1&cpn=-ABCDEFGHIJKLMt3 HTTP/1.1
Host: r3---sn-mv-ab4a.googlevideo.com
Connection: keep-alive
User-Agent: com.google.android.youtube/5.6.36(Linux; U; Android 4.4.2; en_US; Nexus 7 Build/KOT49H)
Accept-Encoding: gzip,deflate
นี่คือตอนที่ฉันดูวิดีโอ: https://www.youtube.com/watch?v=t5NappOaQTc
บนแอพมือถือ
หมายเหตุรหัสสองตัวนี้สอดคล้องกัน หนึ่งคือรหัสวิดีโอที่เข้ารหัสใน base64 (แก้ไข) และอีกอันคือรหัสวิดีโอที่เข้ารหัสในเลขฐานสิบหก ไปสู่งูหลามคุณสามารถแสดงให้เห็นว่าพวกมันเหมือนกัน:
>>> import base64
>>> base64.b64decode('t5NappOaQTc=').encode('hex')
'b7935aa6939a4137'
อีกทางหนึ่งเพื่อไปทางอื่น:
>>> base64.b64encode('b7935aa6939a4137'.decode('hex'))
't5NappOaQTc='
ดังนั้นจึงเป็นไปได้ที่เครือข่าย eavesdropper จะทราบว่าคุณกำลังรับชมวิดีโอผ่านแอปพลิเคชันมือถือ youtube ใด