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 menjuntai". Rekaman CNAME sangat rentan terhadap ancaman ini. Pengambilalihan subdomain memungkinkan pelaku jahat 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. Anda sekarang memiliki catatan DNS "menjuntai".

    2. Subdomain yang menjuntai, greatapp.contoso.com, sekarang rentan dan dapat diambil alih dengan ditetapkan ke sumber daya langganan Azure lain.

  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 sekarang dirutekan ke sumber daya aktor jahat tempat mereka mengontrol konten.

Pengambilalihan subdomain dari situs web yang dideprovisikan

Risiko pengambilalihan subdomain

Saat catatan DNS menunjuk ke sumber daya yang tidak tersedia, rekaman itu sendiri harus dihapus dari zona DNS Anda. Jika tidak dihapus, ini adalah rekaman "DNS yang menggorung" dan menciptakan kemungkinan untuk pengamanan 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 kontrol atas konten subdomain - Pers negatif tentang ketidakmampuan organisasi Anda untuk mengamankan kontennya, kerusakan merek, dan hilangnya kepercayaan.

  • Panen cookie dari pengunjung yang tidak mencurigakan - Adalah umum bagi aplikasi web untuk mengekspos cookie sesi ke subdomain (*.contoso.com). 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 - Aktor jahat sering mengeksploitasi subdomain yang terlihat autentik dalam kampanye phishing. Risiko meluas ke situs web berbahaya dan catatan MX, yang dapat memungkinkan pelaku ancaman menerima email yang diarahkan ke subdomain yang sah yang terkait dengan merek tepercaya.

  • 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
Azure Container Instance 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, ikuti panduan dalam Meningkatkan akses untuk mengelola semua langganan Azure dan grup manajemen untuk mendapatkan akses ke semua langganan organisasi Anda

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.

Jalankan 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 rekaman CNAME yang menjuntai atau 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 lebih banyak sumber daya dengan FQDN yang ditentukan dalam catatan CNAME subdomain yang menggoreng.

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

  4. Selidiki apakah terjadi penyusupan dan ambil tindakan sesuai prosedur respons insiden organisasi Anda. Tips dan praktik terbaik untuk menyelidiki:

    Jika logika aplikasi Anda menghasilkan rahasia, seperti kredensial OAuth, dikirim ke subdomain yang menggantung atau jika informasi sensitif privasi dikirimkan ke subdomain tersebut, ada kemungkinan data ini 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 dibuat melalui praktik terbaik organisasi Anda atau prosedur operasi standar.

Mengaktifkan Pertahanan Microsoft untuk App Service

Microsoft Defender untuk Cloud platform perlindungan beban kerja cloud terintegrasi (CWPP) menawarkan berbagai rencana untuk melindungi sumber daya dan beban kerja Azure, hibrid, dan multicloud 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. 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 terkait dicadangkan sesuai kebijakan Azure DNS. Selama periode reservasi, penggunaan kembali DNS akan dilarang KECUALI untuk langganan milik penyewa Microsoft Entra dari 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. Rekomendasinya adalah menghapus entri DNS yang tidak diinginkan paling awal. 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

Misalnya, 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 Microsoft Entra 'AB'. Langganan 'A' berisi 'uji' layanan cloud klasik dengan nama DNS 'test.cloudapp.net'. Setelah penghapusan layanan awan, reservasi diambil dengan nama DNS 'test.cloudapp.net'. Selama periode reservasi, 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 periode reservasi, 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.