Kerangka Materi
Hari 1
Keamanan IT dan Pemrograman Aman
- Sifat keamanan
- Istilah-istilah terkait keamanan IT
- Definisi risiko
- Aspek-aspek keamanan IT yang berbeda
- Persyaratan dari area aplikasi yang berbeda
- Keamanan IT vs. pemrograman aman
-
Dari kerentanan ke botnet dan cybercrime
- Sifat dari kerentanan keamanan
- Alasan kesulitan
- Dari komputer yang terinfeksi hingga serangan berbasis target
-
Klasifikasi kerentanan keamanan
- Taksonomi Landwehr
- Tujuh Kerajaan Berbahaya
- OWASP Top Ten 2013
- Perbandingan OWASP Top Ten 2003 – 2013
Pengenalan ke Microsoft® Security Development Lifecycle (SDL)
- Agenda
-
Aplikasi yang sedang diserang...
- Evolusi Cybercrime
- Serangan fokus pada aplikasi
- Sebagian besar kerentanan berada di aplikasi ISV kecil
-
Asal-usul Microsoft SDL...
- Timeline Keamanan di Microsoft...
- Aplikasi mana yang harus mengikuti SDL?
-
Microsoft Security Development Lifecycle (SDL)
- Microsoft Security Development Lifecycle (SDL)
- Persyaratan Pra-SDL: Pelatihan Keamanan
- Tahap Satu: Persyaratan
- Tahap Dua: Desain
- Tahap Tiga: Implementasi
- Tahap Empat: Verifikasi
- Tahap Lima: Rilis – Rencana Respon
- Tahap Lima: Rilis – Ulasan Keamanan Akhir
- Tahap Lima: Rilis – Arsip
- Persyaratan Pasca-SDL: Respon
- Pedoman SDL untuk Aplikasi LOB
- Pedoman SDL untuk Metodologi Agile
- Pengembangan Perangkat Lunak yang Aman Memerlukan Peningkatan Proses
Prinsip-prinsip Desain Aman
-
Permukaan serangan
- Pengurangan permukaan serangan
- Permukaan serangan – contoh
- Analisis permukaan serangan
- Pengurangan permukaan serangan – contoh
-
Privasi
- Privasi
- Memahami Perilaku dan Kekhawatiran Aplikasi
-
Pertahanan Bertingkat
- Prinsip Inti SDL: Pertahanan Bertingkat
- Pertahanan bertingkat – contoh
-
Prinsip Hak Akses Minimum
- Hak akses minimum – contoh
-
Pengaturan Aman Default
- Pengaturan aman default – contoh
Prinsip-prinsip Implementasi Aman
- Agenda
- Microsoft Security Development Lifecycle (SDL)
-
Dasar-dasar Buffer Overflow
- Prosesor Intel 80x86 – register utama
- Tatanan alamat memori
- Mekanisme pemanggilan fungsi dalam C/C++ pada x86
- Variabel lokal dan frame tumpukan
-
Stack overflow
- Buffer overflow di stack
- Latihan – pengenalan
- Latihan BOFIntro
- Latihan BOFIntro – menentukan tatanan stack
- Latihan BOFIntro – eksploitasi sederhana
-
Validasi Input
- Konsep validasi input
-
Masalah bilangan bulat
- Representasi bilangan bulat negatif
- Integer overflow
- Arithmetic overflow – tebak outputnya!
- Latihan IntOverflow
- Apa nilai Math.Abs(int.MinValue)?
-
Mitigasi masalah bilangan bulat
- Mitigasi masalah bilangan bulat
- Menghindari overflow aritmatika – penjumlahan
- Menghindari overflow aritmatika – perkalian
- Mendeteksi overflow dengan kata kunci checked di C#
- Latihan – Menggunakan kata kunci checked di C#
- Pengecualian yang dipicu oleh overflow di C#
-
Studi Kasus – Integer Overflow di .NET
- Kerentanan integer overflow dunia nyata
- Eksploitasi kerentanan integer overflow
-
Kerentanan Path Traversal
- Mitigasi path traversal
Hari 2
Prinsip-prinsip Implementasi Aman
-
Injection
- Metode serangan SQL Injection khas
- Blind dan time-based SQL injection
- Metode perlindungan SQL Injection
- Command injection
-
Autentikasi Rusak - Manajemen Kata Sandi
- Latihan – Kelemahan kata sandi yang dihash
- Manajemen dan penyimpanan kata sandi
- Algoritma hash khusus untuk penyimpanan kata sandi
-
Cross-Site Scripting (XSS)
- Cross-Site Scripting (XSS)
- CSS injection
- Eksploitasi: injeksi melalui tag HTML lainnya
- Pencegahan XSS
-
Kontrol Akses Fungsi Level yang Hilang
- Penyaringan unggah file
-
Kriptografi Praktis
- Menyediakan kerahasiaan dengan kriptografi simetris
- Algoritma enkripsi simetris
- Cipher blok – mode operasi
- Hash atau message digest
- Algoritma hash
- Message Authentication Code (MAC)
- Menyediakan integritas dan autentikasi dengan kunci simetris
- Menyediakan kerahasiaan dengan enkripsi publik-kunci
- Aturan praktis – kepemilikan kunci pribadi
- Kesalahan umum dalam manajemen kata sandi
- Latihan – Kata sandi yang dicantumkan secara hard-coded
- Kesimpulan
Prinsip-prinsip Verifikasi Aman
- Pengujian fungsional vs. pengujian keamanan
- Kerentanan keamanan
- Prioritasi
- Pengujian keamanan dalam SDLC
- Langkah-langkah perencanaan tes (analisis risiko)
-
Penentuan cakupan dan pengumpulan informasi
- Pemangku kepentingan
- Aset
- Permukaan serangan
- Tujuan keamanan untuk pengujian
-
Pemodelan Ancaman
- Pemodelan ancaman
- Profil penyerang
- Pemodelan ancaman berdasarkan pohon serangan
- Pemodelan ancaman berdasarkan kasus penyimpangan/penyalahgunaan
- Kasus penyimpangan/penyalahgunaan – contoh toko web sederhana
- Pendekatan STRIDE per elemen untuk pemodelan ancaman – MS SDL
- Mengidentifikasi tujuan keamanan
- Diagram – contoh elemen DFD
- Diagram aliran data – contoh
- Enumerasi ancaman – STRIDE dan elemen DFD MS SDL
- Analisis risiko – klasifikasi ancaman
- Model peringkat ancaman/risiko DREAD
-
Teknik dan alat pengujian keamanan
- Pendekatan pengujian umum
- Teknik untuk berbagai tahap SDLC
-
Ulasan kode
- Ulasan kode untuk keamanan perangkat lunak
- Analisis pencemaran (taint analysis)
- Heuristik
-
Analisis kode statis
- Analisis kode statis
- Latihan – Menggunakan alat analisis kode statis
-
Pengujian implementasi
- Verifikasi waktu-nyata manual
- Pengujian keamanan manual vs. otomatis
- Pengujian penetrasi (penetration testing)
- Tes stres
-
Penyemutan (Fuzzing)
- Pengujian keamanan otomatis - penyemutan
- Tantangan penyemutan
-
Scanner kerentanan web
- Latihan – Menggunakan scanner kerentanan
-
Pemeriksaan dan pengamanan lingkungan
- Sistem Penilaian Kerentanan Umum – CVSS
- Scanner kerentanan
- Database publik
-
Studi Kasus – Bypass Autentikasi Form
- Kerentanan terminasi byte NULL
- Kerentanan bypass autentikasi form dalam kode
- Eksploitasi bypass autentikasi form
Sumber Pengetahuan
- Sumber pemrograman aman – paket awal
- Database kerentanan
- Pedoman pemrograman aman .NET di MSDN
- Lembar cheat pemrograman aman .NET
- Buku rekomendasi – .NET dan ASP.NET
Testimoni (5)
Banyak contoh untuk setiap modul dan pengetahuan yang luar biasa dari instruktur.
Sebastian - BRD
Kursus - Secure Developer Java (Inc OWASP)
Diterjemahkan Mesin
Modul3 Aplikasi Serangan dan Eksploitasi, XSS, Injeksi SQL Modul4 Serangan dan Eksploitasi Server, DOS, BOF
Tshifhiwa - Vodacom
Kursus - How to Write Secure Code
Diterjemahkan Mesin
Informasi kursus umum
Paulo Gouveia - EID
Kursus - C/C++ Secure Coding
Diterjemahkan Mesin
Pengetahuan instruktur tentang materi sangat baik, dan cara sesi disusun sehingga peserta dapat mengikuti demonstrasi benar-benar membantu meneguhkan pengetahuan tersebut, dibandingkan hanya duduk dan mendengarkan.
Jack Allan - RSM UK Management Ltd.
Kursus - Secure Developer .NET (Inc OWASP)
Diterjemahkan Mesin
Semuanya sempurna.
Zola Madolo - Vodacom
Kursus - Android Security
Diterjemahkan Mesin