Mencegah entri DNS yang menggantung dan menghindari pengambilalihan subdomain

Artikel ini menjelaskan ancaman keamanan umum dari pengambilalihan subdomain dan langkah-langkah yang dapat Anda ambil untuk menguranginya.

Apa itu pengambilalihan subdomain?

Pengambilalihan subdomain adalah ancaman umum dengan tingkat keparahan tinggi bagi organisasi yang secara teratur membuat dan menghapus banyak sumber daya. Pengambilalihan subdomain dapat terjadi saat Anda memiliki rekaman DNS menunjuk ke sumber daya Azure yang diprovisikan. Rekaman DNS semacam itu juga dikenal sebagai entri "DNS yang menggantung". Data CNAME sangat rentan terhadap ancaman ini. Pengambilalihan subdomain memungkinkan orang jahat untuk mengalihkan lalu lintas yang ditujukan untuk domain organisasi ke situs yang melakukan aktivitas berbahaya.

Skenario umum untuk pengambilalihan subdomain:

  1. PEMBUATAN:

    1. Anda memprovisikan sumber daya Azure dengan nama domain yang sepenuhnya memenuhi syarat (FQDN) app-contogreat-dev-001.azurewebsites.net.

    2. Anda menetapkan data CNAME di zona DNS Anda dengan subdomain greatapp.contoso.com yang merutekan lalu lintas ke sumber daya Azure Anda.

  2. DEPROVISI:

    1. Sumber daya Azure dideprovisi atau dihapus setelah tidak lagi diperlukan.

      Pada titik ini, data CNAME greatapp.contoso.comharus dihapus dari zona DNS Anda. Jika data CNAME tidak dihapus, catatan tersebut diiklankan sebagai domain aktif tetapi tidak merutekan lalu lintas ke sumber daya Azure aktif. Ini adalah definisi dari rekaman DNS yang "menggantung".

    2. Subdomain yang menggantung, greatapp.contoso.com, kini rentan dan dapat diambil alih dengan ditugaskan ke sumber daya langganan Azure lainnya.

  3. PENGAMBILALIHAN:

    1. Menggunakan metode dan alat yang umum tersedia, seseorang yang berbahaya menemukan subdomain yang menggantung.

    2. Orang yang berbahaya menyediakan sumber daya Azure dengan FQDN yang sama dari sumber daya yang sebelumnya Anda kontrol. Pada contoh ini, app-contogreat-dev-001.azurewebsites.net.

    3. Lalu lintas yang dikirim ke subdomain greatapp.contoso.com kini dialihkan ke sumber daya orang jahat, tempat mereka mengontrol konten.

Subdomain takeover from a deprovisioned website

Risiko pengambilalihan subdomain

Saat rekaman DNS menunjuk ke sumber daya yang tidak tersedia, catatan itu sendiri seharusnya dihapus dari zona DNS Anda. Jika belum dihapus, ini adalah rekaman "DNS yang menggantung" dan membuat kemungkinan untuk pengambilalihan subdomain.

Entri DNS yang menggantung memungkinkan orang jahat mengendalikan nama DNS terkait untuk menghosting situs web atau layanan berbahaya. Halaman dan layanan berbahaya pada subdomain organisasi dapat mengakibatkan:

  • Hilangnya kendali atas konten subdomain - Siaran negatif tentang ketidakmampuan organisasi Anda mengamankan kontennya serta kerusakan nama merek dan hilangnya kepercayaan.

  • Pengumpulan cookie dari pengunjung yang tidak curiga - Umum bagi aplikasi web untuk mengekspos cookie sesi ke subdomain (*.contoso.com), akibatnya subdomain apa pun dapat mengaksesnya. Orang jahat dapat menggunakan pengambilalihan subdomain untuk membangun halaman yang terlihat otentik, mengelabui pengguna yang tidak curiga untuk mengunjunginya, dan mengumpulkan cookie mereka (bahkan cookie yang aman). Kesalahpahaman umum adalah bahwa menggunakan sertifikat SSL melindungi situs dan cookie pengguna Anda dari pengambilalihan. Namun, orang jahat dapat menggunakan subdomain yang dibajak untuk mengajukan dan menerima sertifikat SSL yang valid. Sertifikat SSL yang valid memberi mereka akses ke cookie yang aman dan dapat lebih meningkatkan legitimasi yang dirasakan dari situs berbahaya.

  • Kampanye phishing - Subdomain yang terlihat otentik mungkin digunakan dalam kampanye phishing. Ini berlaku untuk situs berbahaya dan rekaman MX yang akan memungkinkan orang jahat menerima email yang ditujukan ke subdomain yang sah dari merek yang dikenal aman.

  • Risiko lebih lanjut - Situs berbahaya mungkin digunakan untuk melakukan serangan klasik tingkat lanjut lainnya seperti XSS, CSRF, bypass CORS, dan banyak lagi.

Identifikasi entri DNS yang menggantung

Untuk mengidentifikasi entri DNS dalam organisasi Anda yang mungkin menggantung, gunakan alat PowerShell Microsoft yang dihosting GitHub "Get-DanglingDnsRecords".

Alat ini membantu pelanggan Azure mencantumkan semua domain dengan CNAME yang terkait dengan sumber daya Azure yang sudah ada dan dibuat pada langganan atau penyewa mereka.

Jika CNAME Anda berada di layanan DNS lain dan mengarah ke sumber daya Azure, berikan CNAME dalam file input ke alat tersebut.

Alat ini mendukung sumber daya Azure yang tercantum dalam tabel berikut. Alat ini mengekstrak (atau mengambil sebagai input) semua CNAME penyewa.

Layanan Jenis FQDNproperty Contoh
Azure Front Door microsoft.network/frontdoors properties.cName abc.azurefd.net
Azure Blob Storage microsoft.storage/storageaccounts properties.primaryEndpoints.blob abc. blob.core.windows.net
Azure CDN microsoft.cdn/profiles/endpoints properties.hostName abc.azureedge.net
Alamat IP publik microsoft.network/publicipaddresses properties.dnsSettings.fqdn abc.EastUs.cloudapp.azure.com
Azure Traffic Manager microsoft.network/trafficmanagerprofiles properties.dnsConfig.fqdn abc.trafficmanager.net
Instans Kontainer Azure microsoft.containerinstance/containergroups properties.ipAddress.fqdn abc.EastUs.azurecontainer.io
Azure API Management microsoft.apimanagement/service properties.hostnameConfigurations.hostName abc.azure-api.net
Azure App Service microsoft.web/sites properties.defaultHostName abc.azurewebsites.net
Azure App Service - Slot microsoft.web/sites/slots properties.defaultHostName abc-def.azurewebsites.net

Prasyarat

Jalankan kueri sebagai pengguna yang memiliki:

  • setidaknya akses tingkat pembaca ke langganan Azure
  • akses baca ke grafik sumber daya Azure

Jika Anda adalah administrator global penyewa organisasi Anda, tingkatkan akun Anda agar memiliki akses ke semua langganan organisasi menggunakan panduan di Meningkatkan akses untuk mengelola semua langganan dan grup manajemen Azure.

Tip

Azure Resource Graph memiliki pembatasan dan batasan halaman yang harus Anda pertimbangkan jika Anda memiliki lingkungan Azure yang besar.

Pelajari selengkapnya tentang bekerja dengan himpunan data sumber daya Azure yang besar.

Alat ini menggunakan batch berlangganan untuk menghindari keterbatasan ini.

Menjalankan skrip

Pelajari selengkapnya tentang skrip PowerShell, Get-DanglingDnsRecords.ps1, dan unduh dari GitHub: https://aka.ms/Get-DanglingDnsRecords.

Memulihkan entri DNS yang menggantung

Tinjau zona DNS Anda dan identifikasi data CNAME yang menggantung atau telah diambil alih. Jika subdomain ditemukan menggantung atau telah diambil alih, hapus subdomain yang rentan dan mitigasi risiko dengan langkah-langkah berikut:

  1. Dari zona DNS Anda, hapus semua data CNAME yang menunjuk ke FQDN sumber daya tidak lagi disediakan.

  2. Untuk memungkinkan lalu lintas dirutekan ke sumber daya dalam kontrol Anda, provisikan sumber daya tambahan dengan FQDN yang ditentukan dalam data CNAME subdomain yang menggantung.

  3. Tinjau kode aplikasi Anda untuk referensi ke subdomain tertentu dan perbarui referensi subdomain yang salah atau kedaluwarsa.

  4. Selidiki jika ada kompromi yang terjadi dan ambil tindakan sesuai prosedur respons insiden organisasi Anda. Tips dan praktik terbaik untuk menyelidiki masalah dapat ditemukan di bawah ini.

    Jika logika aplikasi Anda sedemikian rupa sehingga rahasia seperti kredensial OAuth dikirim ke subdomain yang menggantung atau informasi sensitif privasi dikirim ke subdomain yang menggantung, data tersebut mungkin telah diekspos ke pihak ketiga.

  5. Pahami mengapa data CNAME tidak dihapus dari zona DNS Anda saat sumber daya dideprovisikan dan ambil langkah-langkah untuk memastikan bahwa rekaman DNS diperbarui dengan tepat saat sumber daya Azure dideprovisikan di masa mendatang.

Mencegah entri DNS yang menggantung

Memastikan bahwa organisasi Anda telah menerapkan proses untuk mencegah entri DNS yang menggantung dan pengambilalihan subdomain yang dihasilkan adalah bagian penting dari program keamanan Anda.

Beberapa layanan Azure menawarkan fitur untuk membantu menciptakan langkah-langkah pencegahan dan dijelaskan secara rinci di bawah ini. Metode lain untuk mencegah masalah ini harus ditetapkan melalui praktik terbaik organisasi Anda atau prosedur operasi standar.

Mengaktifkan Pertahanan Microsoft untuk App Service

Platform perlindungan beban kerja cloud terpadu (CWPP) Pertahanan Microsoft untuk Cloud, Pertahanan Microsoft untuk Cloud menawarkan berbagai rencana untuk melindungi sumber daya dan beban kerja Azure, hibrida, dan multi-cloud Anda.

Paket Microsoft Pertahanan untuk App Service mencakup deteksi DNS yang menggantung. Dengan paket ini diaktifkan, Anda akan mendapatkan pemberitahuan keamanan jika Anda menonaktifkan situs web App Service tetapi tidak menghapus domain kustomnya dari pendaftar DNS Anda.

Perlindungan DNS Pertahanan Microsoft untuk Cloud yang menggantung tersedia baik jika domain Anda dikelola dengan Azure DNS atau pendaftar domain eksternal dan berlaku untuk App Service di Windows dan Linux.

Pelajari ini selengkapnya dan berbagai keuntungan lainnya dari paket Microsoft Defender dalam Pengantar Pertahanan Microsoft untuk App Service.

Menggunakan rekaman alias Azure DNS

Rekaman alias Azure DNS dapat mencegah referensi yang menggantung dengan memasangkan siklus hidup rekaman DNS dengan sumber daya Azure. Misalnya, pertimbangkan rekaman DNS yang memenuhi syarat sebagai rekaman alias untuk mengarahkan ke alamat IP publik atau profil Traffic Manager. Jika Anda menghapus sumber daya yang mendasarinya, rekaman alias DNS menjadi kumpulan catatan kosong. Kumpulan ini tidak lagi mereferensikan sumber daya yang dihapus. Penting untuk dicatat bahwa ada batasan untuk hal yang dapat Anda lindungi dengan rekaman alias. Saat ini, daftar dibatasi untuk:

  • Azure Front Door
  • Profil Traffic Manager
  • Titik akhir Azure Content Delivery Network (CDN)
  • IP Publik

Meskipun saat ini penawaran layanan masih terbatas, sebaiknya gunakan rekaman alias untuk melindungi dari pengambilalihan subdomain jika memungkinkan.

Pelajari selengkapnya tentang kapabilitas rekaman alias Azure DNS.

Menggunakan verifikasi domain kustom Azure App Service

Saat membuat entri DNS untuk Azure App Service, buat rekaman TXT asuid.{subdomain} dengan ID Verifikasi Domain. Saat rekaman TXT seperti ini tersedia, ambil alih rekaman. Hal ini berarti tidak ada Langganan Azure yang dapat memvalidasi Domain Kustom.

Rekaman ini tidak mencegah seseorang membuat Azure App Service dengan nama yang sama dan ada di entri CNAME. Tanpa kemampuan untuk membuktikan kepemilikan nama domain, orang jahat tidak dapat menerima lalu lintas atau mengontrol konten.

Pelajari selengkapnya tentang cara memetakan nama DNS kustom yang sudah ada ke Azure App Service.

Membangun dan mengotomatiskan proses untuk memitigasi ancaman

Seringkali, pengembang dan tim operasi memiliki kebebasan untuk menjalankan proses pembersihan guna menghindari ancaman DNS yang menggantung. Praktik di bawah ini akan membantu memastikan organisasi Anda menghindari kerugian akibat ancaman ini.

  • Buat prosedur untuk pencegahan:

    • Beri pelatihan pada pengembang aplikasi untuk mengalihkan alamat setiap kali mereka menghapus sumber daya.

    • Letakkan "Hapus entri DNS" pada daftar pemeriksaan yang diperlukan saat menonaktifkan layanan.

    • Letakkan kunci penghapusan pada sumber daya apa pun yang memiliki entri DNS kustom. Kunci penghapusan berfungsi sebagai indikator bahwa pemetaan harus dihapus sebelum sumber daya dideprovisikan. Langkah-langkah seperti ini hanya dapat berfungsi saat dikombinasikan dengan program pendidikan internal.

  • Buat prosedur untuk penemuan:

    • Tinjau rekaman DNS Anda secara teratur untuk memastikan bahwa semua subdomain dipetakan ke sumber daya Azure yang:

      • Ada - Kueri zona DNS untuk sumber daya yang menunjuk ke subdomain Azure seperti *.azurewebsites.net atau *.cloudapp.azure.com (lihat daftar Referensi domain Azure).
      • Milik Anda - Konfirmasikan bahwa Anda memiliki semua sumber daya yang ditargetkan oleh subdomain DNS Anda.
    • Pertahankan katalog layanan titik akhir Azure Anda yang sepenuhnya memenuhi syarat (FQDN) dan pemilik aplikasi. Untuk menyusun katalog layanan Anda, jalankan skrip kueri Azure Resource Graph berikut ini. Skrip ini memproyeksikan informasi titik akhir FQDN dari sumber daya yang Anda miliki aksesnya dan menghasilkan dalam file CSV. Jika Anda memiliki akses ke semua langganan penyewa, skrip mempertimbangkan semua langganan tersebut seperti yang diperlihatkan dalam sampel skrip berikut. Untuk membatasi hasil ke satu set langganan tertentu, edit skrip seperti yang ditampilkan.

  • Membuat prosedur untuk remediasi:

    • Saat entri DNS yang menggantung ditemukan, tim Anda perlu menyelidiki apakah telah terjadi gangguan.
    • Selidiki mengapa alamat tidak dibuka kembali saat sumber daya dinonaktifkan.
    • Hapus rekaman DNS jika tidak lagi digunakan atau arahkan ke sumber daya Azure (FQDN) yang benar, yang dimiliki oleh organisasi Anda.

Membersihkan pointer DNS atau Mengklaim Ulang DNS

Setelah penghapusan sumber daya layanan cloud klasik, DNS yang sesuai dicadangkan selama 7 hari. Selama periode reservasi, penggunaan kembali DNS akan dilarang KECUALI untuk langganan milik penyewa AAD langganan yang awalnya memiliki DNS. Setelah reservasi berakhir, DNS gratis untuk diklaim oleh langganan apa pun. Dengan mengambil reservasi DNS, pelanggan diberikan waktu untuk 1) membersihkan asosiasi / pointer untuk DNS tersebut atau 2) mengklaim kembali DNS di Azure. Nama DNS yang dicadangkan dapat diturunkan dengan menambahkan nama layanan cloud ke zona DNS untuk cloud tersebut.

Publik - cloudapp.net Mooncake - chinacloudapp.cn Fairfax - usgovcloudapp.net BlackForest - azurecloudapp.de

yaitu layanan yang dihosting di Publik bernama “test” akan memiliki DNS “test.cloudapp.net”

Contoh: Langganan 'A' dan langganan 'B' adalah satu-satunya langganan milik penyewa AAD 'AB'. Langganan 'A' berisi 'test' layanan cloud klasik dengan nama DNS 'test.cloudapp.net'. Setelah penghapusan layanan cloud, reservasi diambil dengan nama DNS 'test.cloudapp.net'. Selama periode reservasi 7 hari, hanya langganan 'A' atau langganan 'B' yang dapat mengklaim nama DNS 'test.cloudapp.net' dengan membuat layanan cloud klasik bernama 'test'. Tidak ada langganan lain yang diizinkan untuk mengklaimnya. Setelah 7 hari habis, langganan apa pun di Azure sekarang dapat mengklaim 'test.cloudapp.net'.

Langkah berikutnya

Guna mempelajari selengkapnya tentang layanan terkait dan fitur Azure yang dapat Anda gunakan untuk melindungi dari pengambilalihan subdomain, lihat halaman berikut.