Apa aspek unik dari Siklus Hidup perangkat lunak dari serangan / alat pada kerentanan perangkat lunak?


10

Di universitas lokal saya, ada klub komputasi mahasiswa kecil sekitar 20 siswa. Klub ini memiliki beberapa tim kecil dengan area fokus tertentu, seperti pengembangan ponsel, robot, pengembangan game, dan peretasan / keamanan.

Saya memperkenalkan beberapa konsep pengembangan tangkas dasar untuk beberapa tim, seperti cerita pengguna, memperkirakan kompleksitas tugas, dan integrasi berkelanjutan untuk kontrol versi dan pembuatan / pengujian otomatis.

Saya akrab dengan beberapa siklus hidup pengembangan dasar, seperti air terjun, spiral, RUP, lincah, dll. Tapi saya bertanya-tanya apakah ada siklus hidup pengembangan perangkat lunak untuk peretasan / pelanggaran keamanan. Tentunya, peretas sedang menulis kode komputer, tetapi apa siklus hidup dari kode itu? Saya tidak berpikir bahwa mereka akan terlalu peduli dengan pemeliharaan, karena begitu pelanggaran telah ditemukan dan ditambal, kode yang mengeksploitasi pelanggaran itu tidak berguna.

Saya membayangkan siklus hidup akan seperti:

  1. Temukan celah keamanan
  2. Mengeksploitasi celah keamanan
  3. Muatkan muatan
  4. Manfaatkan payload

Apa perbedaan (jika ada) yang ada untuk pengembangan siklus hidup perangkat lunak ketika tujuan produk adalah untuk melanggar keamanan?


4
yang mengatakan ada formalitas dalam meretas apa pun
ratchet freak

1
Sial, sudah empat jawaban bagus. Akan sulit untuk memilih satu saja.
David Kaczynski

@ Davidvidkaczynski Anda juga dapat mempertimbangkan menanyakan hal ini pada Keamanan Informasi , untuk mendapatkan sudut pandang mereka yang benar-benar merancang berbagai jenis perangkat lunak. Dan ada perbedaan besar, tergantung pada persyaratan keamanan ...
AviD

@AviD terima kasih, saya pikir saya mendapat beberapa balasan yang sangat baik di sini sehubungan dengan fakta bahwa siklus hidup pengembangan untuk perangkat lunak invasif tidak berbeda secara inheren. Saya ingin mempelajari lebih lanjut tentang tujuan atau opsi perangkat lunak invasif begitu keamanan dilanggar, seperti menginfeksi komputer dengan virus, membuat pintu belakang, atau meniru pengguna untuk mendapatkan data.
David Kaczynski

1
@DavidKaczynski tapi poin saya adalah bahwa itu adalah inheren berbeda - atau lebih tepatnya, mengembangkan satu jenis berbeda dari jenis lain. Lihat misalnya jawaban Terry sebagai contoh, dan bandingkan yang lebih jauh dengan virus, dan lagi dengan nol-hari, dan lagi dengan Stuxnet, dan ... Beberapa akan direkayasa dengan baik, beberapa dibuang semalam, tergantung pada konteks dan persyaratan yang berbeda .
AviD

Jawaban:


7

Apa jenis kode yang Anda bicarakan?

Ada banyak alat keamanan yang digunakan dalam proses peretasan, termasuk pemindai seperti nmap , sqlmap , Nessus dan banyak lainnya. Saya akan membayangkan mereka memiliki jenis siklus hidup perangkat lunak yang sama seperti aplikasi lainnya.

Di sisi lain, ada kode exploit. Kode ditulis untuk mengambil keuntungan dari eksploitasi & situasi yang sangat spesifik. Saya sangat meragukan mereka membutuhkan siklus hidup sama sekali. Namun, banyak kode eksploitasi juga terintegrasi dengan kerangka kerja eksploitasi yang lebih besar seperti Metasploit .


Setelah berdiskusi dengan @AviD, saya ingin menambahkan beberapa poin.

Ini akan sangat berbeda untuk situasi tertentu.

Beberapa kode eksploit mungkin dilarikan keluar untuk memperhitungkan jendela sebelum hari nol ditambal. Kode mungkin dikeluarkan karena alasan lain juga. Lihat: CRIME - Bagaimana cara mengalahkan penerus BEAST? untuk contoh yang bagus tentang ini. Seseorang menulis sepotong kode PoC untuk dengan cepat membuktikan maksudnya. Tidak ada metodologi siklus hidup perangkat lunak yang diperhitungkan untuk kode-kode seperti ini.

Malware yang menggunakan persenjataan seperti stuxnet atau FLAME mungkin berhasil. Perangkat lunak terpaket seperti yang dilakukan Metasploit.

Jadi jawaban yang tepat adalah ... itu tergantung.


Kami belum memiliki pertemuan formal untuk membahas tujuan atau kemungkinan cara melanggar keamanan, jadi saya tidak bisa mengatakan jenis kode apa yang akan kami kembangkan (atau jika kami akan menggunakan perangkat lunak / teknologi yang ada untuk memenuhi tujuan kami). Saya masih tertarik untuk mempelajari jenis teknik formal apa yang ada untuk mengambil keuntungan dari sistem yang dikompromikan, seperti membuat backdoors, meniru pengguna, menginfeksi komputer dengan virus, dll. Saya kira jenis pertanyaan itu mungkin lebih cocok untuk Keamanan TI.
David Kaczynski

3

Saya tidak melihat mengapa harus ada siklus hidup pengembangan yang berbeda secara spesifik tergantung pada tujuan produk.

Perangkat lunak yang dikembangkan untuk menembus keamanan dapat memiliki masa pakai seumur hidup seperti jenis perangkat lunak lain dan akan membutuhkan jumlah pemeliharaan dan pekerjaan yang sama.

Pencipta perangkat lunak yang berbeda akan mengadopsi siklus hidup yang berbeda tergantung pada kebutuhan mereka.


3

Model pengembangan yang Anda tentukan hanya itu - model pengembangan. Mereka sangat berguna ketika Anda melakukan pengembangan teknik - ketika Anda memiliki persyaratan, ketika Anda harus membuat atau memodifikasi arsitektur sistem atau desain komponen, ketika Anda perlu membangun atau memodifikasi produk dan tes terkait, dan ketika Anda merilis ke pelanggan.

Saya tidak yakin bahwa model ini dapat langsung diterapkan ke proyek yang lebih berorientasi penelitian, di mana Anda mencoba menjawab pertanyaan atau mempelajari lebih lanjut tentang suatu sistem (atau kelemahan keamanan sistem, dalam kasus khusus Anda).

Saya menduga bahwa model iteratif / tambahan, seperti metode agile dan model Spiral akan menjadi yang paling berguna untuk membentuk basis. Dalam setiap iterasi, Anda dapat berupaya menjawab pertanyaan atau menentukan lebih banyak parameter untuk dikerjakan, yang mungkin termasuk atau tidak mungkin menulis kode apa pun. Mungkin berbagai metode penelitian ilmiah mungkin juga memberikan fondasi yang menarik.


1

Peretasan baru-baru ini melihat profesionalisasi yang kuat, jauh dari peretas tunggal yang melakukannya "untuk lulz" atau untuk mendapatkan ketenaran, menuju kolaborasi antara spesialis dengan tujuan menghasilkan uang. Hasilnya adalah "kit peretasan" komersial yang sepenuhnya lengkap seperti kit eksploitasi Blackhole di mana kelemahan perangkat lunak tertentu dapat dengan mudah diintegrasikan seperti plugin. Saya berasumsi bahwa produk semacam itu dikembangkan persis seperti produk perangkat lunak lain.

Tampaknya juga ada pasar yang berkembang untuk eksploitasi nol hari .


1

Life-Cyle tidak pernah bergantung pada kode. Ini agak tergantung pada faktor-faktor lain seperti:

  1. Waktu
  2. Anggaran
  3. Sifat Pelanggan
  4. Sifat Produk

Dalam skenario Anda, metodologi Agile Life Cyle akan sangat berguna. Alasannya adalah Anda harus melibatkan pelanggan selama pengembangan dan harus memverifikasi parameter kualitas yang dapat diterima dari produk Anda. Metodologi Agile akan sangat membantu Anda untuk meningkatkan Perangkat Lunak Peretasan Anda melalui mengumpulkan umpan balik pelanggan Anda dan kemudian secara bertahap bekerja secara bertahap .


Ini sepertinya sedikit subjektif. Apakah Anda menyarankan agar metode Siklus Hidup lainnya TIDAK melibatkan pelanggan selama pengembangan atau memverifikasi parameter kualitas yang dapat diterima? Tentu saja itu tidak unik untuk Agile.
Jay Stevens
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.