Arief Yudhawarman

Masih belajar buat blog

Conficker dan bagaimana mengenalinya

with 9 comments

Sebenarnya sudah cukup banyak tulisan yang dibuat mengenai conficker:

  1. Apa itu conficker
  2. Blocking virus conficker
  3. Download domain conficker
  4. Memblok akses untuk download content conficker

Tulisan yang akan disajikan di bawah ini pendekatannya hampir sama dengan cara 2 dan 3 cuma scriptingnya tidak dilakukan di mikrotik melainkan di laptop ubuntu penulis. Data domain conficker diambil dari http://www.epicwinrar.com/conficker/domains.txt. Langkah-langkahnya sebagai berikut:

  1. Download data domain conficker.
  2. Buat script untuk query setiap domain conficker.
  3. Extract alamat ip domain conficker yang exist (resolvable).
  4. Sortir ip conficker yangg diperoleh dari domain yang exist dan cari ip conficker yang kemunculannya paling banyak  (modulus).
  5. Berdasarkan ip conficker yang diperoleh dari no 4 di atas, cari kemunculannya di ip dns cache mikrotik.
  6. Jika ada datanya, masukkan ip tersebut ke ip firewall address-list untuk diproses lebih lanjut.

Sebenarnya langkah ini bisa lebih singkat yakni sampai nomor 3 saja, langkah selanjutnya adalah masukan domain conficker yang exist tersebut seperti yang dijelaskan di http://wiki.mikrotik.com/wiki/Conficker-Virus-Blocking. Domain conficker yang exist ada sekitar 30 ribu lebih. Apa puluhan ribu data ini mau dimasukkan semuanya ke ip firewall address-list ? Karena belum tentu domain conficker ini meski ada (exist), juga aktif sebagai inang conficker. Beberapa domain conficker sudah diambil alih dan dihandle oleh badan yang namanya Conficker Holding Account. Cek siapa yang memiliki domain conficker qvqgzdwrnnr.info. Disitu jelas tertulis data lengkap pemegang domain. Apakah ini benar alamat yang si pembuat virus conficker? Tidak mungkin kan ? Padahal Microsoft menjanjikan uang $250,000 bagi siapa yang bisa membekuk si biang kerok ini.
Domain ini kalau kita buka di browser dan pakai opendns, aksesnya diblok seperti ditunjukkan pada gambar di bawah:
akses ke qvqgzdwrnnr.info diblok oleh opendnsSebenarnya yang penting di sini adalah bukanlah mencari dan memilah ini domain conficker exist (dan aktif) atau bukan melainkan mencari client-client mana yang terkena virus conficker dan aktif melakukan request ke domain-domain conficker meski domain yang dituju sudah tidak exist atau dormant sehingga bisa diambil tindakan:

  1. Memberitahu client bahwa jaringan atau pcnya terkena virus conficker.
  2. Jika ada client yang mengeluh koneksi internet lambat, itu karena dampak virus conficker🙂.

Tambahan lagi apakah mikrotik tidak terkena dampak dari sebaran virus conficker ini? Dns cache mikrotik di sini sudah 2x pada hari yang sama mengalami cache size dns terpakai semua (baca cache used > cache size), sebagai akibatnya request dns dari client lambat atau gagal! Untuk itu langkah pencegahan di sisi mikrotik:

  1. Besarkan dns cache.
    /ip dns set cache-size=10240
  2. Buat schedule untuk meng-flush dns cache apabila pemakaiannya melebihi nilai tertentu. Script di bawah akan flush dns cache bila ukurannya lebih dari 5120KiB.
    :local a [ /ip dns get cache-used ];
    :if ($a>=5120) do { /ip dns cache flush };
    

Langkah pertama, download domain conficker:

$ wget -O domains_conficker.txt \
http://www.epicwinrar.com/conficker/domains.txt


Langkah kedua, buat script untuk query setiap domain conficker yang diperoleh dari cari di atas:

#!/bin/bash
#
# File: cek_domains_conficker.sh
#
CONFICKER="domains_conficker.txt"
DNSISP="1.2.3.4"
cat $FILE | while read domain
do
  ip=`dig @$DNSISP +time=1 +short $CONFICKER`
  echo "$CONFICKER:$ip" >> ip_domain_conficker.txt
done

Jalankan dengan perintah bash cek_domains_conficker.sh
Ekseskusi ini akan memakan waktu lama karena ada 113501 domain conficker sejak tulisan ini dibuat yang perlu dicek exist tidaknya. Sebelum menginjak langkah ketiga, coba kita lihat sebagian data ip_domain_conficker.txt yang diperoleh dari langkah no 2:

qegiche.ws:64.70.19.33
ovdbkbanqw.com:
lxmpzyiq.com:
gkrobqo.com:
hunqbpya.net:
lmhfcocgiz.org:
epzyytco.ws:64.70.19.33
ampavhunh.com:
pzzyxnzhuv.com:
frdyiaosiir.ws:64.70.19.33
kvfvpszaxv.biz:
gopfgie.net:
ibrdykqf.ws:149.20.56.32
199.2.137.252
205.188.161.4
74.208.64.145
83.68.16.6
97.74.200.45
143.215.143.11
xwfxr.ws:205.188.161.4
74.208.64.145
83.68.16.6
97.74.200.45
143.215.143.11
149.20.56.32
199.2.137.252

Terlihat bahwa ada beberapa domain conficker yang tidak exist ditunjukkan dengan warna abu-abu. Beberapa domain memiliki multi ip address.

Langkah ketiga di bawah untuk mengekstrak ip domain conficker yang exist dan menyimpan hasilnya ke file ip_domain_conficker_exist:

$ grep -oe "[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*" \
ip_domain_conficker | sort > ip_domain_conficker_exist


Langkah keempat buat script untuk menghitung jumlah ip yang sama berdasarkan data ip_domain_conficker:

#!/bin/bash
# File: hitung_modulus_ip_conficker.sh
file=ip_domain_conficker_exist
i=0
iplama='Inisialisasi'
while read ipbaru
do
  if [ $ipbaru == $iplama ]
  then
    i=$((i+1))
  else
    i=$((i+1))
    echo "$iplama: $i"
    i=0
    iplama=$ipbaru
  fi
  done <$file
  echo "$iplama: $((i+1))"
done

Jalankan scriptnya bash hitung_modulus_ip_conficker.sh.
Beberapa baris hasil perintah di atas ditunjukkan pada tampilan di bawah:

Inisialisasi: 1
110.75.195.7: 2
113.11.195.12: 1
114.167.126.140: 1
116.254.252.21: 1
117.74.76.174: 1
119.42.231.250: 6
121.101.213.189: 1
12.180.115.1: 1
122.249.22.110: 1
123.100.2.87: 1
124.217.198.74: 1
124.248.32.60: 1
124.42.122.43: 1
124.42.8.188: 1
124.47.0.2: 1
125.72.127.36: 1
127.0.0.1: 2
143.215.143.11: 30508
149.20.56.32: 30574
161.58.230.16: 1


Daftar ip conficker yang mempunyai frekuensi kemunculan terbanyak (tidak diurut berdasarkan ranking):

64.70.19.33
66.90.81.140
72.167.51.186
74.208.46.216
74.208.64.145
83.68.16.6
97.74.200.45
143.215.143.11
149.20.56.32
199.2.137.252
205.188.161.4
221.7.91.31

Langkah kelima, ambil salah satu ip yang kemunculannya terbanyak, 221.7.91.31, cek apakah datanya ada di ip dns cache mikrotik (penulis gunakan mikrotik versi 3.30, versi sebelumnya kemungkinan tidak mempunyai filtering untuk menampilkan kolom data):
ip conficker di dns cache mikrotik

Langkah keenam, buat rule di ip firewall address-list:

/ip firewall address
add address=64.70.19.33 list=conficker
add address=66.90.81.140 list=conficker
add address=72.167.51.186 list=conficker
add address=74.208.46.216 list=conficker
add address=74.208.64.145 list=conficker
add address=83.68.16.6 list=conficker
add address=97.74.200.45 list=conficker
add address=143.215.143.11 list=conficker
add address=149.20.56.32 list=conficker
add address=199.2.137.252 list=conficker
add address=205.188.161.4 list=conficker
add address=221.7.91.31 list=conficker

Kemudian buat rule di ip firewall filter untuk “menangkap akses” dari client ke ip-ip conficker berdasarkan address-list di atas:

/ip firewall filter
add chain=forward action=add-src-to-address-list dst-address-list=conficker address-list=src-conficker \
address-list-timeout=3d comment="ADD to address-list src-conficker"

Penulis buat timeout untuk 3 hari. Taruh filter ini di baris sebelum baris forward atau jump forward:

/ip firewall filter print
...
54 ;;; ADD src-add to conficker
   chain=forward action=add-src-to-address-list dst-address-list=conficker \
   address-list=src-conficker  address-list-timeout=3d
55 chain=forward action=jump jump-target=tcp protocol=tcp
56 chain=forward action=jump jump-target=udp protocol=udp
57 chain=forward action=jump jump-target=icmp protocol=icmp

Setelah beberapa jam. berikut tampilan ip firewall address-list:
list ip client yang akses ke ip conficker

Mengenali akses ke ip conficker di router linux
Untuk mengenali akses ke ip-ip conficker di linux, kita buat langkah-langkah sebagai berikut:

  1. Buat list ip coficker yang telah diperoleh dari cara di atas di /etc/conficker/ip.conficker.
    $ cat /etc/conficker/ip.conficker
    64.70.19.33
    66.90.81.140
    72.167.51.186
    74.208.46.216
    74.208.64.145
    83.68.16.6
    97.74.200.45
    143.215.143.11
    149.20.56.32
    199.2.137.252
    205.188.161.4
    221.7.91.31
    
  2. Buat script iptables.conficker.sh untuk menandai akses ke ip conficker.
    #!/bin/sh
    LAN_IFACE="eth0"
    IPTABLES="/usr/sbin/iptables"
    FIPCONFICKER="/etc/conficker/ip.conficker"
    while read IPCONFICKER
    do
      # uncomment 2 baris di bawah untuk blok akses ke ip conficker untuk kernel 2.6
      #$IPTABLES -t nat -I PREROUTING -i $LAN_IFACE -d $IPCONFICKER -j DROP \
      #   -m comment --comment "IP Conficker"
      # uncomment 1 baris di bawah untuk blok akses ke ip conficker untuk kernel 2.4
      #$IPTABLES -t nat -I PREROUTING -i $LAN_IFACE -d $IPCONFICKER -j DROP
      # log akses ke ip conficker dan simpan ke /var/log/syslog
      $IPTABLES -t nat -I PREROUTING -i $LAN_IFACE -d $IPCONFICKER -m limit \
          --limit 1/hour --limit-burst 1 -j LOG --log-prefix "CONFICKER " --log-ip-options
    done <$FIPCONFICKER
    
  3. Jalankan scriptnya sh iptables.conficker.sh
  4. Untuk melihat client yang akses ke ip conficker.
    $ sudo grep 'CONFICKER ' /var/log/syslog|cut -f1,2,3,10,11 -d' '
    Dec 21 16:21:23 SRC=192.168.0.252 DST=221.7.91.31
    

Terakhir, beritahu client agar cek PC windows apakah benar-benar terkena virus conficker dengan mengunjungi alamat http://www.confickerworkinggroup.org/infection_test/cfeyechart.html

Hasil tangkapan log dari salah satu warnet A:

Dec 22 14:40:34 SRC=192.168.0.19 DST=143.215.143.11
Dec 22 14:40:34 SRC=192.168.0.19 DST=205.188.161.4
Dec 22 14:40:34 SRC=192.168.0.19 DST=97.74.200.45
Dec 22 14:40:34 SRC=192.168.0.19 DST=83.68.16.6
Dec 22 14:40:35 SRC=192.168.0.19 DST=199.2.137.252
Dec 22 14:40:42 SRC=192.168.0.19 DST=221.7.91.31
Dec 22 14:40:49 SRC=192.168.0.19 DST=149.20.56.32
Dec 22 14:40:50 SRC=192.168.0.19 DST=74.208.64.145
Dec 22 22:08:58 SRC=192.168.0.19 DST=74.208.64.145
Dec 22 22:08:58 SRC=192.168.0.19 DST=199.2.137.252
Dec 22 22:08:58 SRC=192.168.0.19 DST=221.7.91.31
Dec 22 22:09:06 SRC=192.168.0.19 DST=205.188.161.4
Dec 22 22:09:06 SRC=192.168.0.19 DST=143.215.143.11
Dec 22 22:09:13 SRC=192.168.0.19 DST=83.68.16.6
Dec 22 22:09:13 SRC=192.168.0.19 DST=97.74.200.45
Dec 22 22:09:21 SRC=192.168.0.19 DST=149.20.56.32


Apa kesimpulan anda ?

Last update: 2009-12-22 22:20 +07:00

Written by awarmanf

December 19, 2009 at 3:32 pm

Posted in Linux, Mikrotik, Scripting

9 Responses

Subscribe to comments with RSS.

  1. wah..lengkap penjelasannya… nice info… kalau di blog saya cuma informasi, ini tutorialnya…

    thepenks

    December 21, 2009 at 3:19 am

  2. 🙂

    kirain ruter nya pake linux, eh ternyata mikrotik…

    bayu

    December 21, 2009 at 3:19 am

    • Saya mau buat yg versi linux cuma belum nemu caranya buat src-address-list dan dst-address-list🙂. Terus terang sejak kenal mikrotik 1th terakhir ini saya jadi tergila2 oleh mikrotik😀.

      Arief Yudhawarman

      December 21, 2009 at 3:21 am

  3. Mas Arief,

    Cuman sharing saja. Saya menggunakan router ubuntu. Nah ternyata modem vsat saya selalu berstatus degrade, harusnya OK (http://dediiskandar.info/?p=18). Setelah ngutok – ngatik – ngutak akhirnya saya tau itu konficker yang nyarang port tcp 137-138 dan udp 139 dan 445. Akhirnya juga saya tahu bahwa hal itu karena saya menjalankan file server samba untuk sharing file bagi client yang menggunakan os windows.

    Setelah saya tutup port tsb, masalahnya selesai.

    Dedi Iskandar

    February 17, 2010 at 2:21 am

  4. Salam,

    Skalian numpang tanya,😀

    Saya jalankan htb-gen untuk bw shaping tapi spertinya ga mempan dengan download accelerator. Tetapi ketika saya pasang squid delay pools, jauh lebih mantap.

    Mudah – mudah saya bisa diberi pencerahan, trims

    Dedi Iskandar

    February 17, 2010 at 2:28 am

    • Awal sekali belajar htb saya pakai htb-gen, setelah mengetahui polanya saya lebih suka membuat sendiri dengan script pakai tc. Di sini juga ada artikel mengenai traffic control dengan script, semoga bisa membantu masalah anda.

      Arief Yudhawarman

      February 17, 2010 at 2:32 am

  5. wahh ajib nih…lengkap abis mohon ijin untuk explorer tutornya……

    zvtral

    April 28, 2010 at 4:21 pm

  6. nice info mas…., izin copas ya…

    penyet

    November 25, 2010 at 12:16 pm

  7. script cek_domains_conficker.sh di saya koq ga mau jalan yak.
    dites file domains_conficker.txt cuman dikasih 2 baris domain juga ga mengeluarkan input apa-apa

    Si Lucu

    November 28, 2010 at 8:31 am


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: