- Dump memori kernel menangkap keadaan sistem dalam kegagalan kritikal dan penting untuk penyahpepijatan dan pengauditan keselamatan.
- Dalam Windows, ia dianalisis dengan WinDbg atau KD, menggunakan simbol dan arahan seperti !analyze -vy .bugcheck untuk mencari pemacu dan punca ralat.
- Dalam Linux, alat seperti crash, LiME dan gcore membolehkan anda mengekstrak dan mengkaji kernel dan memproses dumps, dengan perhatian khusus untuk melindungi data sensitif.
- FreeBSD dan sistem Unix lain memerlukan kernel yang dikompilasi dengan simbol dan penggunaan kgdb, sentiasa bergantung pada dokumentasi dan kod sumber untuk mentafsir keputusan.

Apabila sistem pengendalian panik atau ranap dengan hebat, satu-satunya cara untuk memahami apa yang berlaku adalah dengan... dump memori kernel dan analisis seterusnyaDump ini merekodkan keadaan dalaman sistem pada saat kegagalan dan merupakan bahan mentah untuk penyahpepijatan ralat kompleks, menyiasat insiden keselamatan atau menjalankan pemeriksaan forensik.
Walaupun ia mungkin kedengaran sangat "rendah", menganalisis lambakan memori tidak eksklusif untuk pembangun kernel. Pentadbir sistem, jurutera sokongan dan juga juruaudit keselamatan boleh mendapat manfaat daripadanya jika mereka mengetahui asas-asasnya. alatan yang sesuai, jenis-jenis pembuangan sampah, dan teknik tafsiran asasKami akan merangkumi keseluruhan laluan ini dalam Windows, Unix/Linux dan BSD, menggunakan alat seperti WinDbg, crash, kgdb dan LiME.
Apakah dump memori kernel dan mengapa ia perlu dianalisis?
Lambakan memori kernel (sering dipanggil Kernel Crash Dump atau sekadar crash dump) ialah fail yang mengandungi salinan, keseluruhan atau sebahagian, memori pada masa sistem mengalami kegagalan kritikal, seperti panik kernel dalam Unix/Linux atau skrin biru kematian (BSOD) dalam Windows.
Dalam praktiknya, pembuangan sampah jenis ini menjimatkan struktur kernel dalaman, susunan panggilan, konteks proses dan pemacu yang dimuatkanHasil daripada ini, selepas bencana, analisis "bedah siasat" boleh dilakukan, hampir sama dengan penyahpepijatan sistem langsung, tetapi tanpa tekanan untuk menyentuh mesin pengeluaran semasa ia rosak.
Sebab-sebab untuk mengkaji secara mendalam tentang dump kernel adalah pelbagai: daripada nyahpepijat pepijat yang nampaknya rawak dan ranap sekejap-sekejap...malah menyiasat sama ada sistem telah dimanipulasi secara berniat jahat atau sama ada ranap mungkin meninggalkan kesan maklumat sensitif pada cakera.
Selain lambakan kernel penuh, terdapat kemungkinan untuk mengekstrak lambakan proses individu (klasik tempat pembuangan teras), yang sangat berguna apabila apa yang kita mahukan adalah untuk mengehadkan masalah kepada aplikasi tertentu atau untuk menyemak kesan ke atas kerahsiaan perkhidmatan seperti klien e-mel atau pesanan.

Jenis-jenis dump memori dalam Windows dan kegunaannya
Pada sistem Windows, sistem pengendalian itu sendiri boleh menjana pelbagai jenis dump apabila ralat STOP berlaku. Setiap jenis merangkumi tahap perincian yang berbeza, jadi penting untuk mengetahui yang mana satu hendak digunakan. Apakah jenis dump yang kita perlukan berdasarkan masalah dan batasan ruang cakera?.
Salah satu format yang paling biasa dalam persekitaran pengguna dan banyak pelayan ialah lambakan memori kecil (minidump)Ia adalah yang menggunakan ruang paling sedikit dan biasanya terletak di %SystemRoot%\Minidump, dengan fail gaya MiniMMDDYY-01.dmp.
Tempat pembuangan sampah mini ini mengandungi maklumat yang sangat spesifik tetapi penting: Kod ralat STOP dan parameternya, senarai pemacu yang dimuatkan pada masa kegagalan, konteks pemproses yang berhenti (PRCB), konteks proses dan thread yang terlibat (struktur EPROCESS dan ETHREAD) dan tindanan panggilan mod kernel thread tersebut.
Hasil daripada struktur asas ini, walaupun dengan minidump, selalunya pemacu atau modul mana yang menyebabkan ranap sistem masih boleh dikenal pasti, walaupun keseluruhan masalah tidak selalu dapat dikesan jika ia berasal jauh dari thread yang sedang berjalan pada masa ranap sistem. Maklumat kontekstual yang tersedia adalah terhad.
Windows juga boleh menjana lambakan memori kernel dan lambakan penuh yang jauh lebih besar yang mengandungi sebahagian atau semua memori fizikal. Ini amat berguna dalam analisis peringkat rendah, siasatan forensik dan penyahpepijatan lanjutan pemacu atau sistem itu sendiri.
Konfigurasikan dan buka dump memori dalam Windows dengan WinDbg dan KD
Untuk memanfaatkan dumps dalam Windows, perkara pertama ialah mengkonfigurasi pilihan dengan betul. permulaan dan pemulihanDaripada Panel Kawalan, dalam sifat sistem lanjutan, anda boleh memilih jenis dump yang anda ingin jana sekiranya berlaku kegagalan: contohnya, "Small memory dump (256 KB)" dan laluan tempat ia akan disimpan.
Sistem ini juga memerlukan fail paging pada kelantangan but sekurang-kurangnya beberapa megabait untuk menulis dump. Dalam versi Windows moden, setiap ranap mencipta fail baharu dan sejarah dikekalkan dalam folder yang dikonfigurasikan, membolehkan semakan insiden lalu dengan mudah.
Setelah dijana, terdapat beberapa cara untuk mengesahkan bahawa lambakan adalah betul. Satu alat klasik ialah Dumpchk.exeyang membolehkan anda menyemak integriti asas fail dan mencetak maklumat ringkasan. Untuk analisis yang lebih lanjut, perkara berikut digunakan: Alat Penyahpepijatan untuk Windowsyang merangkumi WinDbg (antara muka grafik) dan KD (versi baris arahan).
Selepas memasang pakej penyahpepijatan daripada laman web Microsoft, alat-alat tersebut biasanya terletak dalam folder seperti C:\Fail Program\Alat Penyahpepijatan untuk WindowsDari situ kita boleh membuka command prompt dan memuatkan dump dengan WinDbg atau KD menggunakan parameter -z untuk menentukan fail:
windbg -y <RutaSimbolos> -i <RutaBinarios> -z <RutaDump>
Laluan simbol boleh menunjukkan kepada pelayan simbol dengan cache setempat, sebagai contoh:
srv*C:\Symbols*https://msdl.microsoft.com/download/symbols
Walaupun laluan binari biasanya seperti C:\Windows\I386 atau folder tempat kita telah menyalin fail boleh laku sistem yang sepadan dengan versi yang menghasilkan dump. Ini penting kerana Minidumps tidak merangkumi semua binari, hanya rujukan kepada mereka, jadi penyahpepijat perlu dapat mencarinya.
Analisis asas dump ranap kernel dalam Windows
Sebaik sahaja dump dimuatkan dengan WinDbg atau KD, menganalisis dump ranap kernel agak serupa dengan sesi penyahpepijatan selepas kematian. Perintah pertama yang hampir semua orang jalankan ialah !analisa, yang melancarkan analisis automatik dan menjana laporan awal.
Perintah itu !analyze -show menunjukkan kod semakan pepijat dan parameternyaWalaupun !analyze -v Ia menghasilkan output yang lebih terperinci: modul suspek, tindanan panggilan, maklumat kontekstual dan, dalam banyak kes, cadangan tentang kemungkinan punca atau langkah diagnostik.
Untuk melengkapi analisis tersebut, arahan .pemeriksaan pepijat Ia mencetak semula kod ralat dan parameter yang berkaitan, yang kemudiannya boleh dibandingkan dengan rujukan kod semakan pepijat daripada Microsoft untuk mempelajari maksud sebenar setiap nilai dan punca biasa.
Perintah itu lm N T (modul senarai) membolehkan anda melihat Senarai modul yang dimuatkan dengan laluan, alamat dan statusnyaIni membantu mengesahkan sama ada pemacu yang dikenal pasti melalui analisis automatik sebenarnya berada dalam memori dan versinya. Senarai ini amat berguna apabila kita mengesyaki pemacu pihak ketiga atau komponen keselamatan yang berinteraksi dengan kernel.
Jika dikehendaki, kita boleh memudahkan proses pemuatan dump dengan mewujudkan fail kelompok Ia menerima laluan ke dump dan melancarkan KD atau WinDbg dengan parameter yang sesuai. Dengan cara ini, anda hanya perlu menulis arahan pendek yang merangkumi lokasi fail, dan skrip akan menguruskan semua yang lain.
Menggunakan WinDbg untuk dump kernel yang dalam
Untuk lambakan memori mod kernel, WinDbg juga menawarkan keupayaan untuk berfungsi dengan berbilang fail dan sesi. Lambakan boleh dibuka dari baris arahan dengan -zatau daripada antara muka grafik, menggunakan menu Fail > Buka Dump Memori atau pintasan papan kekunci Ctrl + D.
Jika WinDbg sudah dibuka dalam mod pasif, pilih sahaja fail dalam kotak dialog "Buka dump ranap", nyatakan laluan atau semak imbas cakera. Setelah dimuatkan, kita boleh memulakan sesi dengan arahan g (Pergi) dalam senario tertentu, atau lancarkan arahan analisis pertama secara langsung.
Sebagai tambahan kepada klasik !analyzeAdalah dinasihatkan untuk membiasakan diri dengan bahagian rujukan arahan penyahpepijatIni menerangkan semua arahan yang tersedia untuk membaca struktur dalaman, memeriksa memori, mentafsir tindanan dan banyak lagi. Kebanyakan teknik ini boleh digunakan untuk sesi langsung dan lambakan luar talian.
WinDbg juga membolehkan anda bekerja dengan berbilang lambakan selariKita boleh menambah berbilang parameter -z pada baris arahan, setiap satu diikuti dengan nama fail yang berbeza, atau menambah sasaran baharu menggunakan arahan .opendumpMenyahpepijat berbilang destinasi berguna untuk membandingkan kegagalan berulang atau insiden berantai.
Dalam sesetengah persekitaran, lambakan memori dibungkus ke dalam fail CAB untuk menjimatkan ruang atau memudahkan penghantaran. WinDbg boleh membuka secara langsung .cab dengan dump di dalam, kedua-duanya menggunakan -z dan dengan .opendumpwalaupun dia akan membaca Ia hanya akan mengekstrak salah satu fail yang dibuang dan tidak akan mengekstrak fail lain. yang boleh masuk dalam pakej yang sama.
Dump ranap dalam Unix dan Linux: utiliti, alatan dan keperluan
Dalam sistem Unix dan GNU/Linux, falsafahnya adalah serupa, tetapi ekosistem alatannya jauh berbeza. Kebanyakan kernel seperti Unix menawarkan kemungkinan menyimpan salinan memori apabila berlaku peristiwa bencana, apa yang kita kenali sebagai lambakan teras atau Dump Kerosakan Kernel.
Walaupun kegunaan utamanya kekal sebagai pembangunan kernel dan pemacu, dump ini mempunyai aspek keselamatan yang jelas. Kemalangan boleh disebabkan oleh ralat pengaturcaraan, tetapi juga tindakan berniat jahat percubaan yang gagal untuk memanipulasi komponen sistem atau mengeksploitasi keadaan perlumbaan dengan kekok.
Dalam sistem Unix yang dikonfigurasikan dengan baik, ranap sistem harian bukanlah perkara biasa, tetapi apabila ia berlaku, adalah bijak untuk mempunyai pelan sandaran. infrastruktur lambakan seperti Kdump, LKCD atau penyelesaian lain yang membolehkan penangkapan memori sistem. Walau bagaimanapun, adalah perlu untuk mempertimbangkan kedua-dua nilai diagnostik dump dan risiko ia mengandungi data yang sangat sensitif.
Salah satu alat yang paling lengkap dan meluas untuk analisis jenis ini dalam Linux ialah crashPada mulanya dibangunkan oleh Red Hat, utiliti ini telah menjadi standard de facto untuk memeriksa dump kernel dan menganalisis sistem yang sedang berjalan.
Kemalangan boleh berfungsi terhadap memori langsung sistem melalui /dev/mem atau, dalam Red Hat dan taburan derivatif, menggunakan peranti khusus /dev/crashWalaupun begitu, adalah amalan biasa untuk memasukkan fail dump ke dalam alat tersebut yang dihasilkan oleh mekanisme seperti Kdump, makedumpfile, Dump Cakera atau tempat pembuangan sampah khusus seni bina seperti s390/s390x atau xendump dalam persekitaran maya.
Peranan kemalangan dan kepentingan vmlinux dalam Linux
Utiliti ranap telah dicipta, sebahagiannya, untuk mengatasi batasan penggunaan gdb terus pada /proc/kcoreAntara lain, akses kepada imej pseudo memori itu mungkin dihadkan, dan, sebagai tambahan, pilihan kompilasi kernel tertentu menyukarkan untuk mentafsir struktur dalaman dengan betul jika kita hanya mempunyai binari boleh laku termampat.
Agar kemalangan berfungsi dengan betul, dua elemen utama diperlukan: a fail vmlinux yang dikompilasi dengan simbol penyahpepijatan (biasanya dengan bendera seperti -g) dan dump kernel itu sendiri. Gabungan ini membolehkan alat ini memetakan alamat memori kepada fungsi, struktur dan baris kod.
Adalah penting untuk membezakan antara vmlinux dan vmlinuzPada kebanyakan sistem, hanya vmlinux yang kelihatan, iaitu versi kernel yang dimampatkan dan boleh di-boot. Kerosakan memerlukan vmlinux yang dinyahmampatkan secara simbolik; tanpanya, apabila cuba memuatkan dump atau /dev/mem Kami akan menghadapi ralat jenis ini tidak dapat menemui kernel yang dibut — sila masukkan argumen senarai nama.
Walaupun vmlinuz boleh dinyahmampatkan secara manual, prosesnya tidak selalunya mudah dan, dalam praktiknya, ia biasanya lebih mudah. Kompil semula kernel untuk mendapatkan kedua-dua vmlinux dan vmlinuz secara selari. Dalam persekitaran pentadbiran yang serius, adalah amalan yang baik untuk mengekalkan vmlinux yang sepadan dengan setiap versi kernel yang digunakan tepat untuk kes ini.
Sebaik sahaja keperluan dipenuhi, ranap dump agak mudah: anda menentukan fail vmlinux dan dump yang sesuai, dan alat tersebut akan membuka sesi interaktif yang boleh anda gunakan merentasi struktur kernel, menyenaraikan proses, melihat tindanan panggilan dan mengekstrak maklumat forensikMereka yang ingin mendalami lebih lanjut boleh merujuk dokumentasi khusus, seperti kertas putih kemalangan teknikal yang terkenal.
Had pendekatan /dev/mem dan first dalam Linux
Sebelum menggunakan alat tertentu, ramai pentadbir secara sejarahnya cuba mendapatkan dump memori. membaca terus dari peranti /dev/memPendekatan ini nampak mudah: gunakan alat seperti memdump (yang membuang peranti itu ke STDOUT) atau tarik dari dd if=/dev/mem of=volcado.mem.
Walau bagaimanapun, kernel moden menawarkan pilihan kompilasi seperti CONFIG_STRICT_DEVMEMyang mengehadkan akses daripada ruang pengguna kepada /dev/memHasil tipikalnya ialah bacaan dipotong selepas blok kecil (contohnya, 1 MB) atau, dalam kes terburuk, pepijat dalam interaksi itu boleh berakhir dengan panik kernel serta-merta dan mesin dihidupkan semula.
Perlindungan ini sangat masuk akal dari sudut keselamatan, tetapi ia memaksa kita untuk mencari Cara lain untuk mendapatkan dump yang boleh dipercayai dan lengkap tanpa bergantung sepenuhnya pada peranti generik yang tidak lagi dapat diakses seperti sebelumnya.
Oleh itu, trend semasa adalah bergantung pada modul tertentu atau infrastruktur dump ranap bersepadu, dan bukannya hanya cuba "mengikis memori" dengan alat ruang pengguna yang tidak direka bentuk untuk wujud bersama dengan dasar perlindungan kernel moden.
Forensik LiME: Pengekstrakan Memori dalam Linux dan Android
Satu alternatif yang sangat berkesan dalam dunia forensik ialah LiME (Pengekstrak Memori Linux)LiME ialah modul kernel yang direka khusus untuk menangkap memori meruap secara terkawal dan tanpa sekatan yang mempengaruhi /dev/mem. LiME berjalan dalam ruang kernel, jadi ia boleh mengakses RAM dengan lebih langsung.
LiME diedarkan bersama kod sumbernya dan dikompilasi terhadap pengepala kernel yang sedang digunakanProses penyusunan menghasilkan modul .ko khusus untuk versi kernel yang akan dimuatkan. Setelah dikompilasi, kita boleh mengesahkannya dengan alat seperti file untuk memastikan modul ELF yang sepadan dengan seni bina kami telah dijana dengan betul.
Untuk menggunakan LiME, muatkan modul dengan insmod dari root dan berikan pilihan yang sesuai, contohnya dengan menyatakan a destinasi pembuangan rangkaian menggunakan TCP dan format mentah:
insmod lime-3.x.y.ko "path=tcp:4444 format=raw"
Secara selari, pada mesin yang akan menerima dump, kita mendengar pada port yang dikonfigurasikan menggunakan alat seperti ncmengalihkan output ke fail:
nc <IP_origen> 4444 > volcado.mem
Selepas beberapa minit, bergantung pada jumlah RAM dan prestasi rangkaian, kita akan mempunyai fail yang saiznya sepadan dengan memori fizikal sistem sumber. Ini adalah dump RAM lengkap yang boleh kita analisis dengan alat forensik atau dengan rentetan atau utiliti lain sebagai langkah pertama untuk mencari rangkaian yang menarik.
Lambakan proses dan risiko pendedahan data
Dump kernel penuh sangat bermaklumat, tetapi ia juga boleh menjadi berlebihan apabila kita hanya berminat dengan proses tertentu. Dalam kes itu, adalah sangat masuk akal untuk menggunakan... pembuangan proses individu menggunakan alatan seperti gcore dalam Unix/Linux.
Lambakan setiap proses ini jauh lebih kecil dan lebih mudah diurus, serta membolehkan anda memfokuskan analisis pada aplikasi tertentu seperti klien pesanan (contohnya, Skype) atau klien e-mel (seperti Thunderbird), di mana ia agak mudah dicari. kata laluan dalam teks biasa, token sesi atau data hubungan jika rentetan ingatan diterokai.
Dari perspektif pembangunan, lambakan teras ini membantu mencari ralat pengaturcaraan, kebocoran memori atau keadaan yang tidak konsisten dalam perkhidmatan. Tetapi dari perspektif keselamatan, masalah timbul apabila Lambakan dijana secara rutin dan disimpan di lokasi yang boleh diakses oleh pengguna lain.sama ada pada sistem itu sendiri atau pada sumber rangkaian yang dikongsi.
Jika pengguna menjadualkan, sebagai contoh, tugasan cron Dengan menangkap lambakan proses sensitif secara berkala dan meninggalkannya dalam direktori yang boleh dibaca secara global, penyerang membuka pintu besar kepada pendedahan maklumat kritikal. Dalam banyak senario audit, menganalisis fail ini membolehkan penyerang memulihkan kelayakan, senarai kenalan, sejarah komunikasi dan data peribadi yang lain dengan usaha yang agak rendah.
Oleh itu, dalam sebarang audit serius sistem Unix, adalah dinasihatkan untuk meluangkan beberapa minit untuk memeriksa sama ada lambakan (penuh atau sebahagian) sedang dijana, di mana ia disimpan, kebenaran apa yang dimilikinya, dan jika terdapat sebarang proses automatik yang membolehkan salinan memori diakses oleh pengguna yang tidak dibenarkan.
Analisis post-mortem lambakan dalam FreeBSD dengan kgdb
Dalam dunia BSD, dan khususnya dalam FreeBSD, pendekatan analisis post-mortem melibatkan Dayakan lambakan ranap sistem dan sediakan kernel yang dikompilasi dengan simbol penyahpepijatanIni dikawal dari direktori konfigurasi kernel, biasanya dalam /usr/src/sys/<arq>/conf.
Dalam fail konfigurasi yang sepadan, penjanaan simbol boleh diaktifkan dengan baris seperti ini:
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
Selepas mengubah suai konfigurasi, kernel mesti dikompilasi semula. Sesetengah objek akan dijana semula (seperti trap.o) disebabkan oleh perubahan dalam fail binaan. Matlamatnya adalah untuk mendapatkan kernel dengan kod yang sama seperti yang mempunyai masalah, tetapi menambah maklumat penyahpepijatan yang diperlukanAdalah dinasihatkan untuk membandingkan saiz lama dan baharu menggunakan arahan size untuk memastikan tiada perubahan yang tidak dijangka dalam binari.
Sebaik sahaja kernel dipasang menggunakan simbol, kita kini boleh memeriksa dump dengan kgdb seperti yang diterangkan dalam dokumentasi rasmi. Tidak semua simbol mungkin lengkap, dan beberapa fungsi mungkin muncul tanpa nombor baris atau maklumat argumen, tetapi dalam kebanyakan kes, tahap perincian sudah mencukupi untuk mengesan masalah.
Tiada jaminan mutlak bahawa analisis itu akan menyelesaikan semua insiden, tetapi, dalam praktiknya, Strategi ini berfungsi dengan baik dalam peratusan senario yang tinggiterutamanya apabila lambakan ranap sistem digabungkan dengan semakan yang baik tentang perubahan sistem terkini.
Amalan terbaik untuk menganalisis dan mendokumentasikan ralat kernel
Terlepas dari sistem pengendalian, analisis dump kernel biasanya berakhir dengan dokumentasi teknikal, pangkalan pengetahuan, forum khusus atau kod sumber kernel itu sendiri untuk mentafsir mesej, kod ralat dan simbol yang tidak dikenali.
Dalam Linux, sangat membantu untuk bergantung pada pokok kod sumber rasmi, dokumentasi terbina dalam dan sumber komuniti. Banyak mesej ralat kernel boleh dikesan kembali ke fail asalnya, yang membantu dalam memahami isu tersebut. konteks di mana BUG() atau WARN() dicetuskan bertekad.
Dalam Windows, dokumentasi Microsoft, pangkalan pengetahuannya (KB) dan forum teknikal memberikan penjelasan terperinci tentang kod semakan pepijat, cadangan penyelesaian dan corak ralat yang diketahuiDengan menggabungkan maklumat tersebut dengan laporan !analyze -v, adalah mungkin untuk merangka pelan mitigasi yang munasabah.
Nilai sebenar dump ranap muncul apabila semua maklumat itu dirujuk silang dengan pengetahuan yang kukuh tentang sistem pengendalian dan persekitaran khusus di mana kegagalan berlakuHanya dengan cara ini penyelesaian yang berkekalan dapat dicadangkan dan, yang paling penting, mencegah masalah yang sama daripada berulang pada masa hadapan dengan akibat yang lebih serius.
Analisis lambakan memori kernel, pada akhirnya, merupakan gabungan sains dan kemahiran: ia memerlukan alatan yang sesuai, konfigurasi terdahulu (simbol, pilihan lambakan, storan selamat) dan banyak pengalaman membaca tindanan, struktur dan kod ralat. Menguasai teknik ini bukan sahaja membolehkan anda menyahpepijat insiden yang kompleks, tetapi juga untuk meningkatkan tahap keselamatan dan daya tahan sistem yang kami uruskan secara drastik.
Isi kandungan
- Apakah dump memori kernel dan mengapa ia perlu dianalisis?
- Jenis-jenis dump memori dalam Windows dan kegunaannya
- Konfigurasikan dan buka dump memori dalam Windows dengan WinDbg dan KD
- Analisis asas dump ranap kernel dalam Windows
- Menggunakan WinDbg untuk dump kernel yang dalam
- Dump ranap dalam Unix dan Linux: utiliti, alatan dan keperluan
- Peranan kemalangan dan kepentingan vmlinux dalam Linux
- Had pendekatan /dev/mem dan first dalam Linux
- Forensik LiME: Pengekstrakan Memori dalam Linux dan Android
- Lambakan proses dan risiko pendedahan data
- Analisis post-mortem lambakan dalam FreeBSD dengan kgdb
- Amalan terbaik untuk menganalisis dan mendokumentasikan ralat kernel