Mengamankan identitas Microsoft 365 dan Azure: teknik serangan modern terhadap Entra ID mulai dari AiTM phishing yang melewati MFA lama, consent phishing, hingga token theft, lalu pertahannya dengan conditional access, MFA phishing-resistant, PIM, dan identity protection berbasis risiko

Setelah di episode 18 kita melihat attack path dan red team cloud, sekarang kita fokus ke target favorit penyerang enterprise: identitas Microsoft. Entra ID (dulu Azure AD) adalah kunci kerajaan di banyak organisasi — satu akun global admin membuka Azure, Microsoft 365, Teams, email, dan sering kali federasi ke cloud lain.
Mengapa episode ini penting? Karena mayoritas breach enterprise modern dimulai dari identitas, bukan malware: phishing AiTM yang mencuri sesi pasca-MFA, consent phishing yang menyerahkan akses aplikasi pihak ketiga, atau token yang dicuri dari browser. Kabar baiknya: Entra menyediakan senjata pertahanan kelas enterprise bawaan — conditional access, PIM, identity protection — yang sayangnya sering tidak aktif.
Empat pola serangan yang wajib kalian kenali:
Teknik ini menjelaskan kenapa "kita sudah pakai MFA" bukan lagi jawaban. Rantainya:
MFA OTP/push tradisional gagal karena verifikasinya tetap berhasil dilakukan oleh korban. Pertahanannya bukan lebih banyak MFA — melainkan MFA phishing-resistant (FIDO2/passkey) yang mengikat verifikasi ke domain asli, plus token binding.
Penyerang membuat aplikasi OAuth palsu ("PDF Reader Pro") dan mengelabui user meng-klik "Accept" untuk izin seperti Mail.Read atau Files.ReadWrite.All. Tidak ada credential yang dicuri — user sendiri memberi izin. Audit aplikasi enterprise dan blokir consent ke app tak terverifikasi adalah pertahanannya.
Token akses/refresh dicuri dari device terkompromi (infostealer), lalu diputar ulang dari lokasi lain. Deteksinya lewat sinyal perilaku: lokasi baru + device tidak terdaftar + pola jam aneh. Pertahanan: conditional access berisiko + continuous access evaluation yang merevoke token saat kondisi berubah.
Coba satu password lemah terhadap ribuan akun (kebalikan brute-force satu akun). Terbang di bawah threshold lockout. Deteksi: volume kegagalan lintas-akun dari IP/ASN tunggal — identity protection punya deteksi bawaannya.
Conditional Access (CA) adalah mesin keputusan: Users + Apps + Conditions → Grant/Session controls. Baseline organisasi yang sehat:
| # | Kebijakan | Aturan |
|---|---|---|
| 1 | Admin wajib MFA kuat | Role sensitif → require FIDO2/passkey |
| 2 | Semua user MFA | Login semua app → require authentication strength |
| 3 | Blokir legacy auth | Protokol POP/IMAP/SMTP basic auth = block |
| 4 | Risiko tinggi diblokir | Sign-in risk high → block; user risk high → require password change + MFA |
| 5 | Device compliance | Akses data sensitif → require compliant/hybrid joined device |
Contoh implementasi kebijakan nomor 3 via Graph API (bisa diaudit sebagai kode):
az rest --method GET \
--url "https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies" \
--query "value[].{name:displayName,state,state2:state,grant:grantControls.builtInControls}"Aturan legacy auth bisa juga ditegakkan cepat lewat CA klasik "block legacy authentication". Kenapa penting? Karena IMAP/SMTP basic auth tidak mendukung MFA sama sekali — pintu samping permanen.
Important
Selalu sediakan dua akun break-glass yang dikecualikan dari SEMUA CA policy, dipantau alert real-time, dan kredensialnya disimpan offline. Tanpa itu, satu outage IdP atau CA policy salah bisa mengunci seluruh admin keluar dari tenant.
Permanent admin adalah utang risiko. Privileged Identity Management (PIM) mengubah model: role di-eligible, aktif sementara dengan justifikasi, kadang butuh approval:
# eligible user minta aktivasi (dengan alasan + tiket)
az rest --method POST \
--url "https://graph.microsoft.com/v1.0/roleManagement/directory/roleEligibilityScheduleRequests" \
--body '{"action":"adminAssign","justification":"IR-2026-0816 maintenance","roleDefinitionId":"62e90394-...","principalId":"<user-id>","directoryScopeId":"/","scheduleInfo":{"startDateTime":"2026-08-16T02:00:00Z","expiration":{"type":"afterDuration","duration":"PT8H"}}}'Efek strukturalnya besar: jumlah standing admin turun ke nol, setiap eskalasi punya jejak justifikasi + approval, dan window eksposur 24/7 menyusut jadi 8 jam berdasar permintaan. Pola ini adalah padatan Entra dari break-glass role AWS di episode 9.
Identity Protection menghitung dua skor risiko: sign-in risk (per-login: IP anonim, atypical travel) dan user risk (per-akun: kredensial bocor di dark web, aktivitas anomali). Nilai praktisnya ada saat dipakai sebagai input CA:
Plus kemampuan yang jarang dimanfaatkan: confirm compromised/safe pada deteksi — feedback ini melatih sistem dan menjadi audit trail investigasi kalian.
Get-MgServicePrincipal).Item terakhir layak digarisbawahi: service principal dengan permission berlebih adalah IAM role liar versi Microsoft — auditnya sama pentingnya dengan audit IAM AWS di episode 3.
Inti yang harus dibawa pulang:
Di episode 20 selanjutnya kita bicara dunia regulasi: regulatory cloud — GDPR, HIPAA, data residency, dan cara merancang workload regulated tanpa mengorbankan kecepatan engineering. Sampai jumpa!