Dalam rangkaian moden, menjamin penghantaran data adalah yang terpenting, dan Lapisan Soket Selamat (SSL) dan Keselamatan Lapisan Pengangkutan (TLS) adalah protokol yang digunakan secara meluas untuk memastikan privasi dan keselamatan data. Walau bagaimanapun, terdapat keadaan di mana anda mungkin perlu menganalisis trafik yang disulitkan untuk penyelesaian masalah, analisis forensik atau pemantauan rangkaian. Artikel teknikal ini akan membimbing anda melalui menyahsulit trafik SSL/TLS menggunakan Wireshark dan tcpdump, dua alat analisis rangkaian yang berkuasa. Kami akan membincangkan perkara Wireshark dan tcpdump, menerangkan penyulitan SSL dan TLS, dan menunjukkan cara untuk menyahsulit trafik SSL menggunakan kunci rahsia pra-induk atau kunci peribadi RSA.
Apakah Wireshark dan tcpdump? #
Wireshark #
Wireshark ialah penganalisis protokol rangkaian sumber terbuka yang membolehkan pengguna menangkap dan menyemak imbas secara interaktif trafik yang berjalan pada rangkaian komputer. Ia membolehkan anda memeriksa data pada tahap butiran, memberikan keterlihatan ke dalam protokol dan paket data yang dihantar. Wireshark digunakan secara meluas untuk penyelesaian masalah rangkaian, pembangunan protokol, dan analisis keselamatan.
tcpdump #
tcpdump ialah alat penganalisis paket baris arahan yang menangkap trafik rangkaian dan memaparkannya dalam masa nyata. Ia sangat cekap untuk menangkap data daripada rangkaian langsung, membolehkan anda menyimpan paket ke fail (dikenali sebagai fail tangkapan) untuk analisis kemudian. Walaupun tcpdump tidak mempunyai antara muka grafik Wireshark, ia berkuasa untuk analisis pantas, menapis paket dan mengumpul data pada sistem jauh.
Apakah Penyulitan SSL? #
SSL (Secure Sockets Layer) ialah protokol yang dibangunkan oleh Netscape untuk menghantar dokumen peribadi melalui Internet. SSL menggunakan algoritma penyulitan untuk memastikan data yang dihantar antara klien (cth, pelayar web) dan pelayan tidak boleh dibaca oleh sesiapa sahaja yang memintas penghantaran.
TLS (Transport Layer Security) ialah pengganti SSL dan lebih selamat. Walaupun TLS secara teknikal berbeza daripada SSL, istilah SSL sering digunakan untuk merujuk kepada kedua-dua protokol.
SSL/TLS beroperasi dengan mewujudkan saluran komunikasi selamat antara dua sistem. Konsep utama dalam penyulitan SSL/TLS termasuk:
- Penyulitan Symmetric: Satu kunci digunakan untuk menyulitkan dan menyahsulit data.
- Penyulitan Asimetri: Dua kekunci (awam dan peribadi) digunakan; data yang disulitkan dengan kunci awam hanya boleh dinyahsulit dengan kunci peribadi yang sepadan.
- Sijil: SSL/TLS menggunakan sijil untuk mengesahkan identiti pelayan dan kadangkala pelanggan.
- Jabat Tangan: Proses di mana pelanggan dan pelayan mewujudkan sambungan selamat, bertukar kunci dan bersetuju dengan kaedah penyulitan.
Menyahsulit SSL dengan Kunci Rahsia Pra-Master #
Kunci rahsia pra-induk ialah komponen penting dalam proses jabat tangan SSL/TLS. Kunci ini digunakan untuk menjana kunci sesi, yang kemudiannya digunakan untuk menyulitkan data sebenar yang dipindahkan melalui rangkaian. Dengan mendapatkan kunci rahsia pra-induk, anda boleh menyahsulit data sesi.
Langkah Asas untuk Menyahsulit SSL dengan Kunci Rahsia Pra-Induk #
Untuk menyahsulit trafik SSL menggunakan kunci rahsia pra-induk, ikut langkah berikut:
1. Tetapkan Pembolehubah Persekitaran Fail Log
2. Tangkap dengan tcpdump dan Sahkan Fail Log
3. Konfigurasikan Wireshark untuk Penyahsulitan SSL
Tetapkan Pembolehubah Persekitaran Fail Log #
Menetapkan SSLKEYLOGFILE pada Windows #
Pada sistem Windows, anda perlu menetapkan pembolehubah persekitaran untuk menyimpan kunci rahsia pra-induk dalam fail log. Pembolehubah ini, dinamakan SSLKEYLOGFILE, mentakrifkan laluan di mana kunci ini disimpan.
1. Mulakan dengan mengklik kanan pada Komputer Saya dan memilih Hartanah daripada menu untuk membuka menu Sistem.
2. Klik pada Tetapan sistem maju dalam senarai sebelah kiri untuk membuka tetingkap System Properties.
3. Dalam Maju tab, klik butang "Pembolehubah Persekitaran".
4. Di bawah Pembolehubah pengguna, Klik Baru… butang. Anda juga boleh membuat pembolehubah ini di bawah Pemboleh ubah sistem jika anda ingin log kunci SSL untuk semua pengguna pada sistem. Walau bagaimanapun, selalunya lebih baik untuk memastikannya terhad kepada profil anda.
5. Dalam Nama berubah bidang, masukkan SSLKEYLOGFILE.
Dalam Nilai boleh ubah medan, masukkan laluan di mana anda ingin menyimpan fail log. Sebagai alternatif, anda boleh klik Semak imbas fail… untuk memilih laluan menggunakan pemilih fail.
Jika anda menetapkan ini sebagai pembolehubah seluruh sistem, pastikan fail itu boleh diakses oleh semua pengguna atau gunakan kad bebas. Sebagai contoh, anda boleh menggunakan %USERPROFILE%\AppData\ssl-keys.log or C:\ssl-keys.log .
6. Sebaik sahaja anda selesai, klik OK untuk menggunakan perubahan dan meneruskan langkah seterusnya.
Menetapkan SSLKEYLOGFILE pada Linux atau Mac #
Pada Linux dan Mac, anda perlu menetapkan SSLKEYLOGFILE pembolehubah persekitaran menggunakan mengeksport. Dalam terminal yang sama, anda boleh melaksanakan tcpdump dan ia akan menjana fail log kunci yang ditunjukkan apabila sambungan SSL dikesan.
root@noid-01:~# eksport SSLKEYLOGFILE=~/.ssl-key.log root@noid-01:~# tcpdump ...
Untuk mengekalkan konfigurasi pembolehubah persekitaran kekal, edit profil pengguna dengan editor teks seperti nano. Untuk Linux, pembolehubah ini disimpan dalam ~ / .bashrc, dan pada Mac, ia dicipta dalam ~ / .bash_profile. Kemudian, tambahkan mengeksport perintah untuk SSLKEYLOGFILE pembolehubah pada akhir fail dan simpan perubahan.
Tangkap dengan tcpdump dan Sahkan Fail Log #
Untuk menguji penjanaan fail log, cuba buka pelayar, tcpdump atau lancarkan arahan curl ke pelayan HTTPS untuk mengesahkan bahawa fail dijana dengan betul.
Sebagai contoh, dalam terminal yang sama di mana pembolehubah persekitaran dicipta, the tcpdump untuk menangkap trafik dan curl ke perkhidmatan HTTPS akan dilancarkan untuk dinyahsulit:
root@noid-01:~# eksport SSLKEYLOGFILE=~/.ssl-key.log root@noid-01:~# tcpdump -i mana-mana port 443 -w ~/capture.pcap & root@noid-01:~# curl https://(kemudian, tutup arahan tcpdump)
Sahkan bahawa fail log ~/.ssl-key.log dan tangkapan lalu lintas di ~/capture.pcap dijana. Akhir sekali, lihat langkah terakhir untuk melihat trafik yang disulitkan dengan wireshark.
Jika anda membuka ssl-key.log fail anda akan melihat sesuatu seperti berikut:
root@noid-01:~# cat ~/.ssl-key.log CLIENT_HANDSHAKE_TRAFFIC_SECRET 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a db6f3d27b40b7c8e10ed415281b39e45ca6ef2b59468f943dbe6e81e1f82e0f0 SERVER_HANDSHAKE_TRAFFIC_SECRET 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a d819660e194d9439e7152ceac2a439b41584afbeb5d719663cecb3c63b5c2eb1 CLIENT_TRAFFIC_SECRET_0 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a 71d4806141cb1b247c1d1f3f7747a804fcc5e06c4192d8f53fc763a27b92316c SERVER_TRAFFIC_SECRET_0 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a 2ca17b0f7ff708fb3001be17a1c85163219221a4595462415e9e9e6653daf1fa EXPORTER_SECRET 83ac6b24496f208daee39dfdfcbd36b7c428245af5e3775e42099dbd48741d4a 3f74b0cbe802d3e3dd3b5f6dee4114f928ec936a0cd388643d146cfb606f62a4
Konfigurasikan Wireshark untuk Penyahsulitan SSL #
Setelah sistem tangkapan mengelog kunci pra-induk, anda boleh menggunakan fail log kunci bersama-sama dengan paket yang ditangkap untuk menyahsulit trafik SSL dalam Wireshark.
1. Muat naik log kunci dan tangkap fail ke dalam sistem tempat Wireshark dipasang.
2. Buka fail tangkapan trafik dengan Wireshark.
3. Konfigurasikan Protokol SSL. Klik pada Edit, Kemudian pilih keutamaan. Dialog Keutamaan akan dibuka, menunjukkan senarai item di sebelah kiri. Kembangkan Protokol bahagian, tatal ke bawah, dan klik pada SSL. Di dalam SSL pilihan protokol, cari medan berlabel (Pra)-Nama fail log Master-Rahsia. Semak imbas ke fail log yang anda sediakan sebelum ini, atau tampal laluan terus ke medan ini.
4. Gunakan Konfigurasi. Selepas menetapkan (Pra)-Nama fail log Master-Rahsia, Klik OK untuk menyimpan perubahan anda dan kembali ke Wireshark. Anda kini bersedia untuk menyahsulit trafik yang ditangkap. Apabila anda memilih bingkai data yang disulitkan, semak paparan Packet byte. Di bawah paparan, anda sepatutnya melihat tab untuk Data SSL yang dinyahsulit dalam kalangan yang lain.
Jika data sesi masih kelihatan tidak boleh dibaca dan anda tidak dapat melihat sebarang HTML, ia mungkin disebabkan oleh pemampatan GZIP, yang biasa digunakan oleh pelayan web seperti Apache. Dalam kes ini, klik pada Badan entiti tidak termampat tab, yang hanya tersedia apabila penyahsulitan SSL didayakan. Di sini, anda boleh melihat kod sumber tapak yang tidak dimampatkan, seperti elemen tajuk halaman Apache lalai dalam teks biasa.
Menggunakan kunci RSA untuk menyahsulit SSL #
Wireshark menawarkan ciri yang membolehkan anda memuat naik kunci RSA anda untuk menyahsulit trafik SSL, tetapi dalam amalan, penyahsulitan kunci RSA telah menjadi lapuk.
Penurunan dalam penggunaan ini disebabkan oleh penggunaan Perfect Forward Secrecy (PFS), yang telah menyebabkan penyahsulitan kunci RSA tradisional menjadi usang. Dengan PFS, sesi yang dirundingkan menggunakan Diffie-Hellman tidak bergantung pada kunci RSA secara langsung. Sebaliknya, mereka menjana kunci sekali sahaja yang disimpan hanya dalam RAM dan disulitkan menggunakan kunci pada cakera.
Jika anda sebelum ini menggunakan kunci RSA untuk menyahsulit trafik dan mendapati ia tidak lagi berfungsi, mesin sasaran berkemungkinan menggunakan pertukaran kunci Diffie-Hellman. Anda boleh mengesahkan ini dengan mendayakan pengelogan SSL dalam Wireshark.
Untuk mendayakan pengelogan:
1. Klik pada Edit dalam menu bar alat dan pilih keutamaan.
2. Mengembangkan Protokol bahagian di sebelah kiri, tatal ke bawah, dan klik pada SSL.
3. Tetapkan lokasi untuk fail log SSL anda dengan mengklik butang Kategori .
Setelah pengelogan didayakan, tangkap sesi dengan hos yang didayakan SSL anda dan semak log. Cari bingkai rundingan jabat tangan TLS; anda mungkin akan melihat entri DHE (atau ECDHE, untuk kunci lengkung eliptik) dalam rentetan sifir, yang menunjukkan bahawa pertukaran kunci Diffie-Hellman sedang digunakan.
Jika anda melihat mesej yang menunjukkan bahawa rahsia induk tidak ditemui dan penyahsulitan kunci RSA gagal, anda perlu bertukar kepada kaedah rahsia pra-induk untuk penyahsulitan.
Memandangkan PFS semakin meluas, terutamanya dengan kemunculan TLS 1.3, penyahsulitan kunci RSA tradisional ditamatkan dan tidak perlu lagi dipercayai.
Ketahui lebih lanjut #
Format SSLKEYLOGFILE untuk TLS #
. SSLKEYLOGFILE format ialah fail teks yang digunakan untuk menyimpan kunci rahsia pra-kuasa untuk menyahsulit sambungan TLS. Fail dikodkan dalam UTF-8, dengan setiap baris mengandungi rahsia yang dikenal pasti oleh label, nilai rawak pelanggan dan rahsia itu sendiri, semuanya dipisahkan oleh ruang. Format ini menerima pelbagai pengakhiran baris (CRLF, CR, LF) dan baris bermula dengan # dianggap sebagai komen.
Untuk TLS 1.3, beberapa label sepadan dengan peringkat berlainan jadual utama, seperti CLIENT_HANDSHAKE_TRAFFIC_SECRET dan SERVER_TRAFFIC_SECRET_0. Untuk TLS 1.2 dan lebih awal, CLIENT_RANDOM label mengenal pasti master rahsia.
Pertimbangan Keselamatan:
Akses kepada SSLKEYLOGFILE membenarkan penyahsulitan trafik TLS, menimbulkan risiko keselamatan yang ketara. Kawalan akses yang betul adalah penting untuk mengelakkan akses tanpa kebenaran atau peningkatan keistimewaan. Pengelogan hanya boleh didayakan oleh pengguna yang dibenarkan, dan kebenaran fail yang ketat harus digunakan. Rahsia yang dilog bukan sahaja membenarkan penyahsulitan tetapi juga boleh membolehkan penyerang mengubah suai atau menyuntik data ke dalam sambungan aktif, dan dalam beberapa kes, menyamar sebagai titik akhir atau memalsukan mesej.
Bagaimanakah Jabat Tangan SSL Dua Hala Berfungsi? #
Jabat tangan SSL dua hala mengesahkan kedua-dua pelayan dan pelanggan. Begini bagaimana proses itu berlaku:
1. Pelanggan Hello: Pelanggan memulakan jabat tangan dengan menghantar mesej "Helo Pelanggan" kepada pelayan. Mesej ini termasuk suite sifir yang disokong pelanggan dan keserasian versi TLS.
2. Pelayan Hello: Pelayan membalas dengan mesej “Helo Pelayan”, yang mengandungi sijil awam pelayan dan permintaan untuk sijil pelanggan.
3. Pengesahan Sijil Pelanggan: Pelanggan mengesahkan sijil pelayan. Jika ia sah, pelanggan menghantar sijilnya sendiri kembali ke pelayan.
4. Pengesahan Sijil Pelayan: Pelayan menyemak sijil pelanggan. Jika sijil pelanggan adalah sah, penubuhan sesi diteruskan, membolehkan komunikasi selamat antara kedua-dua pihak.
Adakah Mungkin untuk Menyahsulit Trafik SSL/TLS yang Dihidu Secara Pasif? #
Ya, adalah mungkin untuk menyahsulit trafik SSL/TLS yang dihidu secara pasif, tetapi anda memerlukan kunci RSA untuk berbuat demikian. Kunci ini boleh diperolehi melalui cara yang sah dengan kebenaran yang betul atau, kurang dari segi etika, dengan memintasnya menggunakan serangan "man-in-the-middle".