Mitigation Strategy #34 : Gateway blacklisting

Managing Sinkhole DNS Domain and Hosts File using Windows Server DNS

 

Ardy Pratama/23213056

Harry Chandra/23213066

1. Pendahuluan

Ketika kita ingin membuka suatu situs internet, misalnya google.com, DNS server akan mengubah alamat yang kita masukkan menjadi ip address, lalu menggunakan ip tersebut untuk mengakses situs web yang dituju. Tapi dalam perkembangannya, banyak ancaman berupa malware, spyware, phising, scams, pornography, bandwidth wasting video, dan masih banyak lagi gangguan yang dapat menyerang computer kita. Beberapa website secara otomatis akan membuat computer kita mendownload “material” ketika kita membuka website tersebut. Hal ini tentu sangat mengganggu, apalagi jika website tersebut berupa pop up yang muncul ketika kita hendak mendownload file dari situs web hosting. Oleh karena itu, kita akan mencoba menggunakan Windows Power Shell untuk membuat sinkhole guna mengatasi masalah tersebut. Apa itu sinkhole? Sinkhole merupakan DNS server yang memberikan kode ip address yang salah terhadap beberapa situs, sehingga meskipun pop up website terbuka, kita tidak akan pernah masuk ke web tersebut karena ip website tersebut sudah “dibuat menjadi salah” oleh sinkhole DNS server.

Sebuah DNS Sinkhole bekerja dengan melakukan spoofing DNS server terhadap domain-domain berbahaya yang mengandung malware. Admin mengkonfigurasi DNS yang dikirimkan ke internet untuk mengembalikan alamat IP yang salah sehingga domain bermalware menjadi tidak bisa diakses. JIka klien mengirimkan request alamat domain bermalware, sinkhole akan memberikan alamat yang tidak bisa dibuka atau alamat lain (selain alamat asli domain bermalware tersebut). Dengan demikian, klien tidak akan bisa melakukan koneksi ke target host dan terlindung dari malware. Ketika domain baru ditambahkan ke list domain bermalware, domain tersebut akan diawasi langsung oleh sinkhole administrator. User tidak akan lagi bisa mengakses domain tersebut. Untuk notifikasi realtime, digunakan IDS seignature yang akan memberikan peringatan ketika seorang klien melakukan koneksi ke host IP yang terdapat pada DNS sinkhole.

Dalam arsitektur jaringan, biasanya digunakan split DNS, dimana internal DNS server mengirimkan alamat request ke eksternal DNS server. Eksternal DNS server biasanya terdapat di area DMZ firewall. Di eksternal server inilah kita akan menggunakan sinkhole untuk memainkan Fully Qualified Domain Names (FQDN) sehingga memberikan ip address yang salah terhadap situs-situs yang ingin kita block. Misalnya, kita membuat list website-website yang ingin diblok lalu mengeset semua website yang tersebut ke ip 0.0.0.0, karena ip ini tidak ada maka web tersebut tidak akan pernah terbuka di browser computer.

Kita bisa mendapatkan list domain name FQDN dari website-website yang mengandung malware/potensi ancaman lainnya di web berikut:

DNS Sinkhole juga dapat digunakan untuk memblok situs-situs yang tidak diinginkan, seperti situs pornografi, sehingga anak-anak di bawah umur tidak dapat mengakses situs tersebut. Selain itu, akhir-akhir ini, serangan botnet semakin merajalela. Dapat dilihat pada grafik di bawah ini, jumlah serangan botnet terus meningkat dari tahun ke tahun.

1

2. DNS Sinkhole Overview

2.1   Key Feature

Sistem yang digunakan cukup simple sehingga dapat secara efektif mendeteksi dan memblok malicious traffic pada internet. Sinkhole harus dapat memitigasi berbagai macam ancaman yang menggunakan DNS resolution. Menggunakan DNS zone fies, administrator dapat dengan mudah menambahkan host dan domain untuk diblok. DNS Sinkhole yang akan dibahas pada bagian tiga menyediakan fitur deteksi dan blocking domain yang berbahya. Sistem yang digunakan cukup sederhana dan mudah untuk digunakan. Modul tambahan dapat ditambahkan ketika instalasi sinkhole untuk menyediakan notifikasi real time pada sinkhole event dan juga log traffic pada sinkhole. Fitur ini akan membuat sinkhole menjadi elemen kunci dalam proses monitoring suatu perusahaan.

2.2   Tipe Sinkhole

Sinkhole merupakan sistem jaringan yang hampir mirip dengan honeypot. Beberapa ISP telah menggunakan sinkhole untuk melindung pelanggan mereka ketika melakukan browsing. Sinkhole untuk single platform dapat dibuat menggunakan host file sederhana. Teknik ini telah ada sejak beberapa tahun yang lalu. Namun, sinkhole jenis ini hanya cocok digunakan untuk jumlah host yang sedikit. Intrusion Prevention System (IPSs) menyediakan beberapa kendali terhadap paket DNS, misalnya seperti DNS time to live (TTL). TTL efektif ketika digunakan untuk mengatur fast-flux DNS system, namun tidak berfungsi dengan baik untuk normal DNS. Jenis lainnya adalah dengan menggunakan darknet. Darknet adalah IP space teralokasi, dimana tidak ada service atau aktivitas server di dalamnya. Darknet dapa digunakan untuk mengumpulkan data pada network traffic yang janggal. Kejanggalan ini biasanya disebabkan oleh mass scanner, malware yang sedang mencari korban, atau salah konfigurasi host.

2.3   Keuntungan Sinkhole

Terdapat banyak keuntungan ketika menggunakan internal DNS sinkhole. Keuntungan tersebut antara lain: sinkhole tidak mahal, scalable, efektif, dan mudah untuk dirawat. Perawatan yang bersifat kontinyu diperlukan untuk menjaga sinkhole tetap up to date dengan domain-domain malware yang baru.

2.4   Batasan Sinkhole

Internal DNS Sinkhole memiliki beberapa batasan yang harus diketahui oleh system administrator. Batasan utama yang ada adalah sesungguhnya DNS Sinkhole tidak dapat mendeteksi malware, memblok instalasi malware, atau memusnahkan malware. DNS sinkhole hanya mendeteksi indicator dari malware. Indikator tersebut yang kemudian di follow up oleh security analis untuk menentukan langkah selanjutnya. DNS sinkhole log digunakan sebagai indikasi telah terjadi infeksi malware.

3.Arsitektur DNS Sinkhole

3.1   Normal DNS Flow

Berikut ilustrasi arsitektur dari normal DNS flow (tanpa menggunakan sinkhole):

2

 

Arsitetur jenis ini sangat rentan terhadap serangan botnet, DDoS attack, keylogger, spam, identity theft, traffic sniffer, email storms, dan berbagai serangan lainnya.

3.2   DNS Sinkhole Flow-Basic

Basic DNS Sinkhole terdiri dari komponen-komponen berikut ini:

  1. Commodity Server
  2. OS Linux dengan bind
  3. Daftar host dan domain yang mengandung malicious malware
  4. Custom configuration dan updated script

Berikut ilustrasi dari DNS flow yang terjadi ketika seorang attacker menyerang klien untuk berusaha membuat kontak dengan botnet:

3

DNS sinkhole akan mengintersep DNS request dan memberikan response ip address sesuai dengan configurasi admin sinkhole. Ketika suatu malware berusaha menginfeksi klien dengan membuatnya melakukan koneksi ke 1010101.org (malicious domain yang sudah ada dalam list dns sinkhole), request yang dikirimkan ke sinkhole akan mendapatkan respon ke ip 127.0.0.1 sehingga klien akan melakukan koneksi ke dirinya sendiri, bukan ke ip malware tersebut. Dengan demikian, klien terlindung dari domain-domain yang mengandung malware.

3.3   DNS Sinkhole Flow-Advanced

Suatu advanced DNS Sinkhole memiliki komponen dari basic sinkhole, ditambah elemen-elemen berikut ini:

  1. Socat service emulating one atau listening service yang digunakan untuk network forensic analysis.
  2. Snort IDS dengan customized sinkhole sigbature untuk real time alert.
  3. Script untuk scheduled reporting

Figure di bawah ini memberikan ilustrasi tentang DNS flow chart yang terjadi ketika seorang attacker berusaha membuat klien melakukan koneksi ke botnet.

4

Empat langkah awal sama dengan basic sinkhole, kecuali bahwa sinkhole menyediakan valid internal address (buika 127.0.0.1) sebagai respon terhadap bot controller. Valid internal address kemudia diredirect ke administrator controller IP address (step 5). Karena outbond command dan control traffic adalah web based, listening service dikonfigurasi dalam HTTP ports. Port HTTP yang biasanya dimonitor adalah port 80, 8000, dan 8080. Namun, admin juga harus mengawasi port 443 dan 8443 dengan menkonfigurasi SSL certificate. Tiap sinkhole grup sebaiknya dikonfigurasi dengan IP address yang berbeda, dengan demikian admin dapat mengirimkan traffic dengan jenis yang berbeda ke IP masing-masing sehingga analisis dan reporting menjadi lebih cepat.

3.4 Scalability and Performance

BIND DNS adalah system dengan skala besar dimana sinkhole dapat digunakan dalam organisasi dengan puluhan ribu pengguna. Sepasang DNS sinkhole yang akan dibahas pada bagian selanjutnya telah digunakan dalam organisasi dengan lebih dari 15.000 pengguna selama setahun tanpa terjadi down atau masalah performa. Sebuah DNS Bind server dengan RAM 1 GB dapat bekerja dengan baik mengelola 20000 domain.

4 Use Case

Ketika klien diredirect ke sinkhole, hal ini disebabkan oleh satu atau dua alasan: yang pertama klien telah terinfeksi sehingga mencoba melakukan kontak ke bot controller atay yang kedua, klien tidak sengaja teredirect lewat link suatu website. Berikut dua macam kasus penggunaan sinkhole, drive by downloads dan command-and-control channels.

4.1   Blocking Drive By Downloads

Tipe redirect yang satu ini sering terjadi ketika seorang klien mengakses suatu website yang telah disisipi malicious hidden link yang memaksa klien mendownload dan mengeksekusi suatu code tanpa sepengetahuan dirinya.

Sinkhole Socat packet log di bawah ini menunjukkan seorang klien berusaha mendownload malicious javascript code, js.php. Malicious download tersebut pun diblokir dan tidak ada koneksi yang tersambung ke zettapetta.com

5

4.2   Blcoking Command and Control Channels

Contoh di bawah ini menunjukkan seorang klien yang secara langsung berusaha mengakses C&C bot controller yang terdapat di hjwbxhqr.com. Karena domain hjwbxhqr.com terdapat di sinkhole list, klien menjadi tidak dapat mengakses bot controller.

6

 

5 Deploying and Maintaining DNS Sinkhole

5.1   Sonfigure BIND

Tujuan utama melakuakn konfigurasi bind adalah untuk melakukan automatisasi proses download dan parsing domain list ke sinkhole. Untuk melakukan automatisasi, kita gunakan suatu shell script untuk mendownload informasi dari list, mengumpulkan, lalu menjadikannya sebuah list dalam bind server.

5.1.1          Bind Zone File SOA Configuration for a single host

Misalnya, www.sans.org adalah domain dengan malware dan memiliki ip address 66.35.45.201. Sinkhole akan memberikan ip yang salah pada klien, dalam kasus ini 192.168.25.5 sehingga klien tidak akan bisa mengakses website bermalware.

7

5.1.2          BIND Zone File ZOA Configuration Multiple Domains (Wildcard)

Metode kedua adalah dengan menambahkan record yang ada menggunakan wildcard *. Jadi bila domain sans.org dimasukkan, sub domain yang ada seperti isc.sans.org dan testing.sans.org otomatis akan juga masuk.

8

5.1.3          Master Zone Configuration

Di bawah ini merupakan contoh bagaimana menambahkan single domain our.sink.com ke suatu sinkhole. Single site sinkhole filenya bernama site_specific_sinkhole.conf dan berisi informasi target domain.

9

Contoh lainnya saat menambahkan domain sans.org ke sinkhole, dengan menambahkan wildcard *.sans.org, semua child domain yang berakhiran .sans.org akan dimasukkan ke sinkhole. Wildcard sinkhole filenya disebut entire_domain_sinkhole.conf.

10

Kita lakukan tes dan memberikan output sebagai berikut:

11

5.2   Download dan Sinkronisasi Lists

Nama domain yang disimpan harus diperiksa untuk memastikan bahwa mereka tidak mengandung extranet. Untuk itu, The Time To Live (TTL) perlu digunakan agar domain yang salah masuk dapat segera dihapus.

5.3   Configuring Custom Lists

Salah satu fitur kunci dari internal DNS sinkhole adalah kemampuan untuk membuat custom list. Setiap kali klien mengakses domain berbahaya, sinkhole dapat secara langsung memasukkannya ke custom list sehingga klien lain dapat dicegah memasuki domain tersebut. Contohnya dapat kita lihat di bawah ini:

12

13

 5.4   Configuring Socat

Ada bermacam-macam cara untuk mengcapture sinkhole traffic, namun fleksibilitas dan tingkat kerumitan menjadi syarat utama. Socat dapat digunakan untuk mendengarkan beberapa port seperti TCP 80, 7070, 8000, 8080 dalam sebuah single IP address. Jika dikombinasikan dengan sniffer/custom IDS signature, sinkhole dapat menyediakan data real time, domain apa yang sedang berkomunikasi dengan klien.

14

 5.5   Configuring IDS

Snort signature berikut akan memberikan alert pada sinkhole traffic dan mengcapture domain yang melakukan komunikasi dengan klien:

15

Snort signature yang dikombinasikan dengan Socat listener akan memberikan alert setiap kali klien diredirect ke sinkhole based pada IP 192.168.25.5. Signature tersebut juga termasuk kombinasi TCP flag untuk mengcapture GET atau POST.

 5.6   Configure Reporting

Shell Script dengan httpry dapat digunakan untuk menggenerate report harian semua paket yang dicapture menggunakan Socat atau web listener yang lain. Report tersebut menunjukkan jumlah koneksi ke domain di sinkhole untuk setiap URL. Berikut contoh daily DNS Sinkhole Report:

16

6. Simulasi Membuat DNS Sinkhole menggunakan Windows Power Shell

Berikut tools dan requirements yang diperlukan untuk membuat DNS Sinkhole:

  • Power Shell versi 2.0 atau versi di atasnya
  • Windows Server 2003 atau versi di atasnya
  • Windows Management Instrumentation (WMI) enable
  • Memiliki hak lokal admin pada DNS server

Selanjutnya, kita akan mencoba membuat sinkhole sebagai berikut:

  1. Kita download source code dari http://www.sans.org/windows-security/downloads/

2. Selanjutnya kita harus mengatur permission pada power shell sebagai berikut:

17

Atur permission pada process, CurrentUser, dan LocalMachine menjadi RemoteSigned

3. Setelah itu, kita enable koneksi pada laptop lewat WMI (Windows Management Instrumentation seperti berikut ini:

18

4. Lalu kita akan melakukan sinkhole terhadap suatu website, misalnya kita ingin memblok www.sans.org, maka pada power shell kita ketikkan

./Sinkhole-DNS.ps1 -Domain “www.sans.org”

Maka www.sans.org akan dialihkan ke alamat ip 0.0.0.0

5. Untuk melakukan sinkhole terhadap semua domain yang tersimpan dalam file .txt, kita gunakan perintah

Sinkhole-DNS.ps1 -InputFile file.txt -IncludeWildCard -RemoveLeadingWWW

6. Untuk melakukan sinkhole terhadap semua domain yang tersimpa dalam file.txt dalam sebuah remote DNS server “server7.sans.org”, kita gunakan command:

Sinkhole-DNS.ps1 -InputFile file.txt -DnsServerName “server7.sans.org” -Credential “server7&#92administrator”

Hasilnya dapat dilihat berikut ini:

19

Terlihat bahwa semua domain pada file txt telah diimport ke remote DNS server.

7. Untuk menghapus semua domain yang sudah disinkhole, gunakan perintah:

Sinkhole-DNS.ps1 –DeleteSinkHoleDomains

Selain membuat sinkhole pada DNS server, kita juga bisa melakukan pengeblockan server melalui hosts file. Host file digunakan sebagai alternative karena memiliki beberapa kelebihan jika dibandingkan dengan melakukan pengeblockan menggunakan DNS server. Kelebihan tersebut antara lain:

1)      Jika laptop dibawa ke tempat lain dan konek ke server DNS lain, website akan tetap diblok karena host file yang digunakan tidak berubah.

2)      Tidak memerlukan hak akses root ke server untuk memodifiaksi hosts file

3)      Untuk memodifikasi hosts file, user harus login sebagai administrator pc mereka, sehingga lebih terlindung dari virus

Selain kelebihan tersebut, juga terdapat beberapa kekurangan dari penggunaan host file. Kekurangan tersebut antara lain:

  1. Semakin besar ukuran host file, performance pc akan semakin menurun
  2. Jika diserang oleh virus yang dapat mengakses pc kita sebagai admin, host file dapat dimodifikasi oleh virus tersebut.
  3. Mengatur host file pada ribuan computer akan jauh lebih susah daripada mengatur sinkhole pada sebuah DNS server
  4. Tidak seperti DNS record yang bersifat time expire, entry host file yang salah tidak akan dihapus hingga dilakukan modifikasi oleh user.

Software requirement yang diperlukan antara lain:

  1. Powershell 2.0 atau versi di atasnya
  2. Memiliki hak akses administrator untuk memodifikasi host file

Langkah-langkah:

  1. Download source code dari http://www.sans.org/windows-security/downloads/
  2. Atur permission pada power shell, set process, CurrentUser, dan LocalMachine menjadi RemoteSigned
  3. Untuk memasukkan domain www.MalwareDomainList.com ke hostfile dan menjadikan ipnya menjadi 0.0.0.0, gunakan command berikut:
./ Update-HostsFile.ps1

20

Terlihat bahwa domain telah berhasil dimasukkan ke hostfile.

4. Untuk melakukan blackhole ke semua domain yang terdapat pada sebuah file txt dan mengubah ipnya menjadi 10.1.1.1, digunakan command berikut:

Update-HostsFile.ps1 -FilePathOrURL “c:&#92folder&#92file.txt &#92&#92server&#92share&#92remotefile.txt http://www.malwaredomainlist.com/hostslist/hosts.txt” -BlackHoleIP “10.1.1.1”

21

Terlihat bahwa semua domain pada file txt telah didownload ke hostfile.

5. Untuk menambahkan www pada list domain yang hanya mencamtukan nama web lalu mengimportnya ke hostfile, gunakan command:

Update-HostsFile.ps1 -AddDuplicateWWW

22

6. Untuk menghapus hostfile dan mengembalikannya ke localhost standart entries, gunakan command:

Update-HostsFile.ps1 -ResetToDefaultHostsFile

 7. Kesimpulan

  1. Untuk memblock situs web yang mengandung virus/malware, dapat digunakan metode sinkhole pada DNS server dan sinkhole pada hostfile
  2. Metode sinkhole pada hostfile lebih cocok digunakan pada personal computer, sedangkan metode sinkhole pada DNS server dimanfaatkan untuk computer dengan jumlah yang banyak.