Sebelum memilih topik diploma, saya perhatikan bahwa situasi meluas ketika, selama serangan komputer, seseorang dianggap hanya dari satu sisi - orang yang diserang sebagai kerentanan.
Selama serangan, semua orang hanya tertarik pada alat dan tindakan para pelanggar, dan hanya setelah semuanya terjadi - siapa yang berada di belakang serangan dan tujuan apa yang ingin mereka capai.
Tahun-tahun berlalu (sudah hampir enam tahun), tetapi topik ini masih tidak meninggalkan saya sendirian.
Saat menulis ijazah, menjadi jelas bahwa saya sangat melebih-lebihkan kekuatan saya dan tidak dapat membuat proyek skala ini untuk satu orang dalam enam bulan. Setidaknya saya tidak berhasil.
Kurangnya pengalaman pada sistem nyata juga berdampak, dan beberapa keputusan desain dipikirkan kembali ketika menulis diploma, tetapi saya sampai pada beberapa poin hanya setelah bertahun-tahun.
Artikel ini adalah tentang rancangan desain dan kekurangan serta pertanyaan yang muncul selama proses desain.
Saya akan senang jika seseorang tertarik pada sisi serangan komputer ini dan dia bisa menggunakan pencapaian saya yang sederhana.
Dan ya, "peretas" dalam judul artikel hanya digunakan dalam satu makna yang didefinisikan secara ketat - pelanggar keamanan informasi.
Tema diploma: merancang sistem untuk secara dinamis menentukan target potensial pelanggar keamanan jaringan komputer.
Ide umum: ketika kita entah bagaimana memperbaiki serangan (misalnya, menggunakan
SIEM ), kemudian berdasarkan data ini kita mengasumsikan apa yang ingin dilakukan penyusup pada akhirnya.
Ketika saya menulis diploma, menjadi jelas bahwa beberapa poin dalam diploma dapat dan harus ditingkatkan.
Saya sudah berbicara tentang bagian dari diploma saya, atau lebih tepatnya tentang salah satu masalah yang saya temui dalam proses penulisan, di
sini . Artikel saya bukan yang terbaik, tetapi saya belajar sesuatu yang berguna untuk diri saya sendiri di komentar, terima kasih kepada semua komentator.
Tentang tata letak
Hal pertama yang ingin saya perhatikan, pertama-tama, lulusan adalah tata letak.
Segalanya dan terus-menerus. Ini akan menjadi jelas di mana dan apa yang salah. Dan jika itu tidak jelas, maka tingkatkan keterampilan Anda. Sayangnya, saya bukan seorang programmer atau pengembang, dan dengan administrasi saya tidak begitu. Saya sangat suka menciptakan sesuatu yang baru atau mencari kemacetan dalam ide. Oleh karena itu, membuat prototipe dan melakukan percobaan hampir seluruhnya jatuh pada supervisor lulusan saya, yang karenanya banyak terima kasih padanya.
Saya tidak memiliki infrastruktur sendiri.
Anda dapat bersatu dengan seseorang dan chip dalam besi. Ambil, misalnya, beberapa laptop, router dan sistem ini dalam bentuk miniatur.
Anda juga dapat membeli di situs-situs iklan baris gratis lama, tidak terlalu segar, tetapi langsung mengandung besi. Kadang-kadang mereka menjual "1.000 rubel, tetapi pikap."
Langsung ke intinya
Di mana harus mulai memprediksi?
Untuk memahami apa yang terjadi di masa sekarang.
SIEM OSSIM bertanggung jawab untuk ini. Pada saat yang sama, pengembang menyatakan bahwa ia dapat menentukan serangan dan membuat rantai serangan CVE. Untuk ini saya ketagihan - Saya tidak perlu menentukan serangan sendiri dan saya bisa berkonsentrasi langsung pada menentukan target potensial. Bagaimana SIEM OSSIM mendefinisikan serangan dan menugaskan CVE tidak terlalu menarik bagi saya, jujur saja. Belum lama ini, saya mencoba mencari tahu, tetapi tidak dapat menemukan spesifiknya.
Selain itu,
CAPEC dapat digunakan untuk
prediksi . Namun, saya jauh lebih tertarik menggunakan CVE / CVSS dan CAPEC saya tidak membayar jumlah perhatian yang layak.
Tapi sebelum itu, kami akan mengurus semua yang kami sukai - klasifikasi pelanggar.
Klasifikasi pelanggar
Saya sudah mengangkat topik ini, tetapi mari kita lanjutkan lagi, hanya dengan cepat.
SIEM mengumpulkan serangan dalam rantai CVE. Dari CVE / CVSS kami mengambil vektor AccessComplexity. Versi kedua CVSS digunakan, jadi ada tiga gradasi, dan bukan dua, seperti sekarang.
Entah bagaimana tidak mengesankan, bukan? Akan lebih menarik lebih lanjut. Selain itu, ini tidak terjadi di artikel terakhir.
Keamanan informasi adalah proses memastikan ketersediaan, integritas, dan kerahasiaan informasi.
Ini adalah salah satu definisi yang diterima secara umum.
Tetapi bagaimana jika kita mengklasifikasikan pelanggar dengan melanggar properti informasi ini?
Jadi klasifikasi berikut telah berubah:
"Scout" - tujuan utamanya adalah untuk mengungkapkan informasi tentang sistem, atau untuk memperoleh informasi (data, file, dll.) Darinya.
"Destroyer" (Destroyer) - tujuan utamanya adalah untuk mengganggu sistem atau komponennya, hingga kegagalan.
"Invader" - tujuan utamanya adalah untuk mendapatkan kendali atas sistem atau komponennya.
Pembagian "peran" seperti itu bagi saya tampaknya lima tahun lalu sebagai ide yang bagus. Namun, bagi saya itu ide yang bagus.
Untuk mengklasifikasikan pelanggar berdasarkan kelas-kelas ini, kami mengambil dari CVE / CVSS ConfImpact ("Dampak pada Kerahasiaan"), IntegImpact ("Dampak pada Aksesibilitas"), AvailImpact ("Dampak pada Integritas").
Dalam vektor, pengaruh dapat mengambil nilai-nilai berikut: tidak ada pengaruh pada sumber daya (
N ), pengaruh parsial pada sumber daya (
P ), kontrol penuh atas sumber daya (
C ).
Sebagai kesimpulan, kami menunjukkan bahwa kelas memiliki efek yang berbeda pada sistem: yang paling penting, "Scout" dan yang paling utama "Invader".
Dengan demikian, setelah mendapatkan rantai serangan dari SIEM, kita dapat mengklasifikasikan pengganggu. Dan sudah tentang ini kita dapat menarik beberapa kesimpulan tentang tujuan pelanggar.
Melewati serangkaian serangan, penyusup hanya bisa meningkatkan keterampilan dan kelasnya, tetapi tidak mengurangi mereka. Rendah → Sedang → Tinggi dan Scout → Destroyer → Invader.
Klasifikasi digunakan dalam memprediksi maksud penyusup secara tidak langsung.
Tetapi mengklasifikasikan pelanggar seseorang dapat mengasumsikan apa yang mereka perjuangkan.
Mungkin kita dapat mengatakan bahwa klasifikasi adalah tempat yang paling berfungsi dengan baik dalam diploma.
Semua nuansa yang membingungkan saya pada umumnya dijelaskan dalam artikel sebelumnya.
Arsitektur
Pertama mari kita lihat arsitektur solusinya.
Komponen utama dari subsistem sistem untuk secara dinamis menentukan target potensial penyusup keamanan adalah tiga modul yang dinamai sesuai dengan tiga penyihir Skandinavia Skandinavia yang menentukan nasib seseorang - Urd, Verdandi dan Skuld.
Berbicara tentang "penyihir Skandinavia" dalam membela diploma, saya yakin bahwa ini adalah ide yang bagus dan entah bagaimana akan membantu "meredakan situasi." Tidak. Tampaknya efeknya sebaliknya. Tapi aku merasakannya setelah semua bersuara. Mungkin pendekatan ini cocok jika Anda seorang pembicara di suatu tempat pada hari-hari tertentu, tetapi tidak sebelum komisi negara.
Namun demikian, untuk memberikan nama-nama seperti itu kepada subsistem membantu saya memahami bagaimana sistem seharusnya bekerja.
Sistem ini secara fungsional dibagi menjadi tiga subsistem utama:
- Basis Pengetahuan (Urd - Past);
- Sistem Pengumpulan Informasi (Verdandi - Sekarang);
- Sistem peramalan target (Skuld - Future).
Tempat pusat diberikan kepada DBMS - database server yang termasuk dalam basis pengetahuan.
Diasumsikan bahwa akan ada semacam basis data global di mana pengguna akan merekam dan menerima grafik serangan. Mereka seharusnya terlihat seperti ini.
Jadi bagaimana cara menyimpan grafik dalam database dan bekerja dengannya sebagai grafik? Sederhana - ada
basis data grafik .
Tetapi pada saat itulah saya menyadari bahwa saya tidak dapat melakukannya sendiri dan diploma telah bergerak secara khusus ke arah konsep, daripada sistem yang benar-benar dikembangkan dan bekerja.
Saya perlu menemukan di database SIEM di mana serangan disimpan, dan kemudian menulis parser yang akan mentransfer informasi ini ke basis data grafik.
Bagaimana basis diisi: SIEM mendeteksi serangan, memberi saya CVE, saya menambahkan simpul baru ke basis atau, jika sudah ada simpul semacam itu, saya meningkatkan jumlah transisi antara simpul dengan satu unit. Jika serangan berlanjut, saya menambahkan simpul / transisi.
Pendekatan ini memiliki kelebihan, seperti:
- mengisi sendiri, mis. tidak diperlukan langkah-langkah tambahan untuk membuat grafik serangan baru, karena penyerang sendiri yang melakukannya;
- redundansi rendah, mis. hanya grafik serangan yang benar-benar digunakan penyerang yang ada dalam grafik.
Kelemahan utama dari pendekatan ini adalah bahwa jika seorang penyerang menggunakan serangan yang sebelumnya tidak digunakan, maka tidak mungkin untuk memprediksi tindakannya.
Metode ini dapat ditingkatkan dengan menambahkan grafik serangan yang dimodelkan dengan cara lain ke database, mengatur transisi ke "0".
Juga, metode ini menggunakan basis data grafik memiliki dua kesulitan murni praktis:
- Menulis ke basis data.
- Baca dari database.
Masalah dengan rekaman adalah deteksi serangan. Pada titik apa Anda perlu menulis serangan ke markas?
Kapan serangan selesai? Serangannya bisa panjang. Pada titik apa Anda menyadari bahwa itu lengkap? Tiba-tiba, si penyusup tidak memiliki keterampilan yang diperlukan dan berhenti mengembangkan serangan? Dan jika serangan selesai, maka infrastruktur untuk mengirim data tentang serangan itu mungkin tidak lagi.
Dalam proses? Tulis setiap transisi di CVE? Yah, bukan pilihan yang buruk, tetapi bagi saya sepertinya akan ada jebakan di sini juga.
Masalah dengan membaca adalah volume pohon yang diperkirakan perlu diambil dari server. Dalam hal sumber daya dan lead time, operasi ini tampaknya menjadi bencana.
Anda dapat mencoba untuk tidak membuat pilihan untuk setiap deteksi transisi oleh grafik serangan (lebih lanjut tentang itu nanti), tetapi untuk menyinkronkan seluruh database. Tapi saya bahkan tidak bisa membayangkan berapa banyak basis akan menempati pada saat itu ketika mulai diketik dengan data nyata.
Selain database server, saya menggunakan yang lokal, yang akan mengumpulkan statistik serangan pada sistem tertentu.
Anda juga dapat mengatakan bahwa serangan offline tidak dapat ditambahkan ke database. Phishing, dan memang semua rekayasa sosial, akan melewati kita. Kita hanya akan dapat menentukan seberapa jauh si pembunuh telah bergerak di sepanjang rantai pembunuhan ketika dia sudah mencoba membunuh kita.
Ajaib
Sekarang tinggal beralih ke yang paling penting dan menarik. Untuk peramalan.
Algoritma Peramalan Historis
Sekarang bagi saya sepertinya "algoritma statistik" akan menjadi nama yang lebih memadai. Tetapi kemudian saya menganggap bahwa lebih baik tidak menggunakan kata "statistik" dalam ijazah.
Algoritma yang ditemukan mungkin adalah yang paling berharga dalam diploma saya (sekali lagi, terima kasih telah menulis kode pseudo, terima kasih kepada supervisor diploma saya).
1. Dapatkan CVE_ID, HOST_ID dari acara keamanan
2. Dgraph = DirectedGraph (CVE_ID)
jika DirectedGraph == 0 kembali
3. Set_Edges: = DirectedGraph.getOutEdges (CVE_ID, HOST_ID, DirectedGraph.getRoot ())
4. Set_Edges: = MAX_EXPLOIT_FREQUENCY (SET_EDGES)
If (SET_EDGES) == null kembali
if (SET_EDGES.SIZE ()> 1)
SET_EDGES: = MIN_ACCESS.COMPLEXITY (SET_EDGES)
if (SET_EDGES.SIZE ()> 1)
SET_EDGES: = MIN_IMPACT_GOAL (SET_EDGES)
untuk setiap EDGES ∈ SET_EDGES
edge.Exploit_Probability == ((edge.AttackFrequency) / (1 + ¬edge.AttackFrequency))
5. Lanjutkan ke langkah 3.
Selama bertahun-tahun, tidak mudah bagi saya untuk membaca sendiri algoritma ini, jadi mari kita sedikit lebih sederhana.
Kami mendapatkan nama host, CVE-id dari acara keamanan yang SIEM berikan kepada kami, dan dari database kami memilih subtree yang dimulai dengan kerentanan yang CVE-id kami terima.
Di antara kerentanan terdekat, kami memilih satu dengan frekuensi penggunaan tertinggi.
Jika ada beberapa kerentanan dengan frekuensi yang sama, maka kami mengambil satu yang memiliki kompleksitas akses lebih sedikit.
Jika ada beberapa kerentanan dengan kompleksitas akses yang sama, maka kerentanan diambil dengan dampak yang lebih kecil ImpactGoal (dari klasifikasi).
Jika dalam hal ini ada beberapa kerentanan, maka kerentanan ini dianggap sama kemungkinannya dan beberapa cara digunakan dalam menentukan target potensial.
Untuk setiap kerentanan, probabilitas mengeksploitasi kerentanan dihitung: frekuensi menggunakan jalur ke kerentanan yang kami anggap kemungkinan dibagi dengan jumlah frekuensi menggunakan semua wajah keluar dari node ini.
Setelah menyelesaikan langkah-langkah ini, kami kembali melihat kerentanan di sekitar kami, yaitu kita berkeliling pohon sampai akhir.
Visualisasi algoritma peramalan historis
Kami memiliki basis serangan tertentu yang sudah terbentuk.
Kami mendapatkan serangan dan CVE pertama dari SIEM.
Merah menunjukkan kerentanan yang diperoleh dari SIEM. Kerentanan abu - abu dibuang selama algoritme, karena tidak ada lagi jalan bagi mereka. Hitam - kerentanan dan frekuensi penggunaan jalur, yang masih dianggap sebagai jalur yang mungkin dalam pohon serangan. Oranye - kerentanan dan frekuensi penggunaan jalur, diidentifikasi oleh algoritma sebagai yang paling memungkinkan.
Dalam hal ini, kami mendapatkan CVE potensial berikut dengan jumlah transisi.
Dapatkan CVE berikutnya dari SIEM.
Jangan menebak. Ya, dan pada tahap berikutnya hanya ada dua jalur dan mereka memiliki jumlah transisi yang sama. Kami melihat kompleksitas operasi.
Sekali lagi tidak menebak. Transisinya sama lagi. Ya, dan kompleksitas operasi bertepatan. Kami melihat vektor pengaruh.
Masalah algoritma peramalan historis
Ini adalah pendekatan dahi. Tidak terlalu elegan. Tetapi tanpa pengalaman nyata menyelidiki serangan komputer, ini adalah maksimum yang bisa saya peras.
Juga harus disebutkan bahwa dalam kenyataannya, hanya kondisi pada jumlah transisi yang paling mungkin akan digunakan, karena probabilitas bahwa jumlah transisi akan bertepatan kemungkinan besar sangat kecil.
Dan juga kesulitan dimulai dengan fakta bahwa, misalnya, ada serangan Destroyer dan serangan Invader. Mereka berpotongan dalam satu CVE. Jika lebih sering mereka mengikuti jalur Destroyer, maka serangan Invader setelah beralih ke CVE ini tidak akan diprediksi dengan benar.
Ada satu lagi nuansa yang dalam uraian algoritma dikatakan bahwa probabilitas untuk tujuan akhir dihitung. Tetapi formula yang saya usulkan sangat buruk di persimpangan seperti itu. Perhitungan probabilitas tetap, tetapi telah menjadi lebih mudah, tetapi tidak mungkin berfungsi dengan benar.
Dan yang paling penting, itu ... Saya, tentu saja, bukan spesialis dalam penyelidikan serangan komputer (seperti yang telah saya katakan lebih dari sekali), tetapi sesuatu memberitahu saya bahwa dalam kenyataannya database saya akan terlihat seperti ini.
Yaitu sedikit kekacauan. Dan ini adalah pilihan yang lebih atau kurang baik, seperti yang menurut saya.
Database seperti itu akan lebih atau kurang berfungsi dengan baik di dalam host yang sama (dan bahkan CVE dalam perangkat lunak aplikasi mungkin tidak dihitung dengan benar). Tapi bagaimana cara memprediksi pergerakan penyusup di antara stasiun? Kita perlu memfilter CVE dari basis data berdasarkan audit keamanan.
Algoritma analitik
Intinya adalah untuk membangun basis data serangan CVE menggunakan CAPEC / CWE. Hanya pada transisi tidak akan ada informasi.
Kami mendapatkan CVE dari SIEM, menggunakannya untuk mengklasifikasikan pengganggu, dan kemudian memilih dalam basis data CVE yang paling sesuai dengan kelas dan keterampilan pengganggu.
Sayangnya, ini adalah salah satu bagian yang paling tidak berkembang dalam diploma saya.
Desain Abstrak
Sulit menilai sumber daya apa yang dibutuhkan untuk memelihara database. Setidaknya itu sulit bagiku.
Ada kesulitan tertentu baik dengan menulis data baru ke database, dan dengan mengunduh data dari itu.
Sistem tidak diterapkan dengan cara apa pun, kecuali di atas kertas, tetapi percobaan harus dilakukan "dengan tangan". Saya bahkan tidak bisa membayangkan berapa lama waktu yang saya butuhkan untuk mengimplementasikan semacam demo. Mungkin, jika saya memulai implementasi saat menulis ijazah, maka saya akan menyelesaikannya.
Klasifikasi pelanggar berfungsi sebagai alat tambahan dalam menentukan tujuan.
Sistem itu sendiri dapat bertindak sebagai sumber data untuk beberapa
DSS . Misalnya, jika ada upaya untuk menyerang dari Invader, dan kemudian tiba-tiba berhenti, maka DSS dapat merekomendasikan audit karena Invader dapat mencapai tujuannya.
Juga, jika Anda belajar menentukan siapa yang melakukan serangan, Anda dapat mencoba menentukan tujuan dari pelaku tertentu. Anda juga dapat mencoba melakukan yang sebaliknya - katakan siapa yang melakukan serangan terhadap serangan itu.
Sistem perlu diintegrasikan tidak hanya dengan SIEM, tetapi juga dengan sistem analisis keamanan.
"Algoritma historis" adalah alat yang dapat digunakan untuk menentukan tujuan, tetapi ada banyak peringatan. Ini bukan solusi yang paling elegan, tetapi sejauh ini. Kita harus terus berpikir, memperbaiki. Atau menolak dan mengambil algoritma yang sama sekali berbeda.
Menggunakan CAPEC memiliki kelebihan dan kekurangan, tetapi membutuhkan kerja tambahan.
Mungkin yang paling ofensif untuk sistem ini dari sudut pandang konseptual bisa jika pengganggu ... tidak memiliki tujuan. Dia mendapatkan akses ke sistem karena dia bisa melakukannya. Mungkin dia tidak merencanakan peretasan ini. Dan kemudian dia tidak tahu apa yang harus dilakukan selanjutnya. Atau mulai berperilaku seperti rubah di kandang ayam.
Sistem ini sangat terkait dengan kemampuan SIEM untuk mendeteksi serangan, serta menentukan serangan CVE mana yang sedang digunakan. Menghadapi sistem 0 hari memudar dalam ketiga metode perkiraan. Dan Anda harus hidup dengannya, tetapi jangan pernah lupa.
Sistem ini memungkinkan Anda untuk menerima informasi tambahan tentang penyusup, karena sebagian besar sistem hanya memberikan informasi teknis tentang serangan itu, sementara informasi tentang motivator, tujuan, dan tingkat keterampilan penyusup juga penting dan sistem mereka yang saya coba dapatkan.
Terima kasih atas perhatian anda