RegEx

RegEx

Ada virus Windoze yang menginjeksi berkas-berkas HTML dengan VBScript dan binari berbahaya. Sepertinya target operasi mereka adalah pengembang Web yang menggunakan Windoze. Nantinya, HTML tersebut akan dipublikasikan di sebuah peladen dan diakses oleh banyak orang.

Kebetulan, dari hasil inspeksi bersih-bersih, kami menemukan adanya berkas-berkas HTML yang terinfeksi virus demikian. Kalau hanya satu atau dua, mungkin cukup dihapus. Tapi, kali ini harus memanggil Kapten Regex!

IFS=$(echo -en "\n\b") ; for a in `grep -rlH 'DropFileName = "svchost.exe"' .` ; do sed -i '/<SCRIPT Language=VBScript.*/,+14d' $a; done

Penjelasan:

  • IFS=$(echo -en "\n\b") ;
    Ini memberitahukan kepada BASH bahwa penanda akhir baris adalah Line Break (“\n” atau “\b”). Ini untuk mengatasi nama berkas dengan spasi.
  • grep -rlH 'DropFileName = "svchost.exe"' .
    Mencari berkas-berkas yang berisi ‘DropFileName = “svchost”‘ pada direktori ini “.” dan anak-anaknya.
  • sed -i '/<SCRIPT Language=VBScript.*/,+14d' $a
    Mencari pola “<SCRIPT Language=VBScript” dan menghapus pola tersebut dan 14 baris setelahnya.

Kebetulan saya membaca dulu berkas yang terinfeksi. Ia menginfeksi di akhir baris tapi bukan di baris baru. Wah, ini tantangan dalam menemukan pola yang benar. Apalagi memang beberapa HTML yang mendukung Windoze juga menggunakan VBScript.

Kebetulan saya bukan guru sed.  Saya tidak tahu bagaimana melanjutkan menghapus sampai akhir baris. Saya terpaksa menghitung ada berapa baris. Jumlah baris infeksi ada 14 baris.

Mungkin rekan-rekan ada peningkatan yang lebih bagus?