Python dan Perl

Senin lalu melanjutkan memberikan training soal Data Science dengan menggunakan Python. Salah satu tugas yang harus kami lakukan adalah membersihkan data yang diperoleh dari proses dump aplikasi links ke akun twitter. (links -dump http://twitter.com/rahard)

Awalnya saya memulai koding dengan menggunakan bahasa Python, tapi di tengah jalan macet karena saya lupa cara-cara melakukan regular expression (regex) di Python. Misalnya lompati (skip) baris yang memiliki pola penulisan “* sesuatu”. Atau melompati baris yang hanya berisi spasi saja. Sebetulnya saya bisa sih, tetapi harus baca dokumentasinya dulu. Padahal ini lagi live coding. ha ha ha. Harus cepat. Akhirnya yang saya lakukan adalah saya koding awal dengan menggunakan bahasa Perl. ha ha ha.

Di kepala saya memang logika pemrograman diimplementasikan dengan menggunakan bahasa Perl. Jadi kalau mau mengerjakan sebuah kodingan, yang terpikir adalah kodenya dalam bahasa Perl.

Kembali ke kasus tadi. Dalam waktu singkat, kodingan Perl sudah menunjukkan apa yang saya mau (meskipun masih harus dilanjutkan lagi karena ada banyak exception yang harus dilakukan). Poin yang ingin saya sampaikan di kelas ada bahwa untuk melakukan pembersihan terhadap data dapat dilakukan dengan menggunakan skrip. Cara ini efektif meskipun caranya adalah quick and dirty. Namanya juga hacking. Itulah sebabnya dalam deskripsi tentang data science (yang diusulkan oleh Drew Conway), salah satu komponennya adalah “hacking skills“.

Kembali ke kasus (lagi), saya punya pekerjaan rumah untuk membuat versi Python dari kode Perl saya. Hadoh.

 

Iklan

Sampah Email

Memiliki server email sendiri itu banyak masalah. Salah satunya adalah banyaknya spam. Ini contoh tampilan mailbox saya. Lihat. Ada lebih dari 20 ribu email! Kebanyakan email tersebut adalah spam. Nyebelin.

BR-mailbox-edit

Kalau pasang filter spam di server sendiri bebannya berat sekali. Ini masih harus diukur lagi. Dahulu CPU bisa terpakai banyak untuk ini sehingga email sampai menjadi tertunda. Belum lagi nanti harus memperbaharui (update) filter spam tersebut. Tambah kerjaan saja.

Kalau menggunakan server orang lain, seperti Gmail, enaknya spam sudah difilter. Kita tinggal mendapati email yang sudah “bersih”, meskipun kadang-kadang ada email yang nyasar ke folder spam. Setidaknya waktu kita tidak habis untuk mengurusi spam. Lebih produktif. Sementara ini saya masih menimbang-nimbang apakah memasang kembali filter spam di server mail kami.

Mengajar(i) Data Science

Kemarin (Senin) adalah sesi kedua dari acara “Data Science with Python”, yang kami adakan di Bandung Digital Valey (BDV). Pada acara ini kami mengajari penggunaan Python untuk Data Science.

Apa itu Data Science? Masih belum ada jawaban yang dianggap sebagai definisi formal dari “data science”. Definisi yang paling “dekat” dan yang paling banyak digunakan adalah penjelasan dari Drew Conway. Pada intinya Data Science adalah gabungan dari kemampuan komputasi (hacking skill), matematika (statistik), dan pemahaman atas masalah yang akan diteliti (domain problem).

Pada pertemuan pertama, Senin sebelumnya, kami melakukan persiapan-persiapan dahulu yaitu memasang Python beserta modul-modul (library) terkait. Ternyata ini tidak mudah karena ada banyak versi dan konfigurasi. Python sendiri ada versi 2 dan 3. Kali ini kami fokus ke versi 3 (meskipun saya pribadi masih banyak mengunakan versi 2). Sistem operasi yang digunakan peserta juga bervariasi; Mac OS X, Linux, dan Windows. Masing-masing juga konfigurasinya beda-beda. Jadi intinya adalah … pusing.

Selain tools, kami mulai menggunakan tools tersebut untuk melakukan sedikit operasi statistik, yaitu linear regression. Ini kemudian menjadi pekerjaan rumah karena waktunya yang tidak cukup.

Nah, kemarin topik ini dilanjutkan. Setelah membahas PR tentang linear regression, kami kemudian maju lagi ke topik baru. Kali ini yang kami lakukan adalah memproses data log dari web server dan mengambil data yang ada dalam request kepada web server tersebut. Data ini harus diproses (parsing) dan kemudian akhirnya dimasukkan ke Pandas, sebuah kumpulan tools Python untuk pemrosesan data.

Cerita teknisnya menyusul ya.

Tentang Pemblokiran Telegram

Beberapa hari yang lalu dunia siber Indonesia dihebohkan oleh keputusan pemerintah Indonesia (dalam hal ini Kominfo) yang memblokir layanan telegram. (Yang diblokir adalah layanan via web dulu, kemudian akan diblokir yang aplikasi mobile-nya.) Pengelola telegram dianggap tidak kooperatif dalam memblokir layanan telegram untuk group-group yang terkait dengan terorisme.

Saya termasuk yang tidak setuju dengan keputusan pemerintah ini. Menurut saya cara ini tidak efektif. Ada beberapa hal yang perlu diperhatikan.

Pertama, telegram bukan satu-satunya media komunikasi yang digunakan oleh teroris. WhatsApp dan aplikasi lain juga digunakan. Mengapa hanya telegram yang diblokir? Fitur yang ada di WA pun sama dengan yang ada di telegram. (Dahulu memang WA tidak memiliki fitur enkripsi sehingga mudah disadap, sekarang dia memiliki fitur itu.)

Kedua, keputusan pemerintah ini malah menunjukkan bahwa pemerintah tidak mampu melakukan (counter-)intelligence terhadap pengguna telegram. Ini makin menunjukkan bahwa telegram merupakan platform yang bagus untuk digunakan karena tidak bisa diatasi oleh pemerintah Indonesia. Wah.

Ketiga, banyak orang (perusahaan, organisasi, individu) yang mengembangkan aplikasi di atas telegram ini. Aplikasi tersebut berbentuk “bot” (robot, chat-bot) yang dapat diprogram sesuai dengan perintah (teks) yang diberikan oleh pengguna. (Machine learning / artificial intelligence) Contohnya antara lain, early warning system, help desk, payment chatbot, dan seterusnya. Inovasi-inovasi ini terbunuh begitu saja. Telegram sekarang dapat dianggap sebagai “infrastruktur” seperti halnya YouTube.

my students_0001
sebagian dari topik penelitian mahasiswa saya. yang paling bawah tentang enkripsi yang digunakan oleh berbagai aplikasi chat

Terakhir, kalau sedikit-sedikit blokir – trigger friendly – maka ada kekhawatiran akan apa saja yang akan dilakukan di kemudian hari. Ketidak pastian. Ini buruk bagi bisnis (dan penelitian).

Penanganan Ransomware WannaCry

Pertama, tidak usah panik. Ini bukan ransomware yang pertama (dan bukan yang terakhir pula).

Beberapa hari yang lalu muncul Ransomware WannaCry (dan variasinya) yang mengancam banyak komputer di dunia. Dikarenakan banyaknya komputer yang terancan, maka tulisan ini dibuat. Urutan penulisan tidak lazim. Biasanya di awal ada pengantar dahulu dan kemudian baru pembahasan. Namun karena yang diutamakan aalah penanganannya, maka bagian tersebut ditampilkan di awal.

Sistem Yang Terkena

Sistem yang terkena oleh Ransomsware WannaCry ini adalah sistem operasi Microsoft Windows (semua). Desktop ataupun notebook, selama menggunakan sistem operasi tersebut, termasuk yang rentan. Lengkapnya dapat dilihat pada bagian “Bahan Bacaan”.

Penanganan

Instruksi singkat untuk menangani ransomware WannaCry adalah sebagai berikut:

  1. melakukan backup;
  2. memperbaiki sistem operasi (OS) Microsoft dengan memasang patch MS17–010;
  3. menonaktifkan SMB (yang biasa digunakan untuk file sharing) jika memungkinkan;
  4. blok port TCP: 139/445 & 3389 dan UDP: 137 & 138, yang digunakan untuk melakukan penyerangan (jika memungkinkan).

Jika komputer sudah terkena maka dapat dilakuan proses pemasangan ulang (reinstall) sistem operasi Windows.

[Update] Ada kelemahan dari versi yang ada, sehingga memungkinkan dibuatkan Decryption Tool. Informasi mengenai decryption tool dapat diperoleh dari link berikut ini.

Ada informasi yang mengatakan bahwa password yang digunakan untuk mengenkripsi adalah “WNcry@2ol7” (tanpa tanda kutip), tetapi hal ini belum dapat kami konfirmasi.

Instruksi (keterangan) yang lebih panjang adalah sebagai berikut.

Ada beberapa hal yang kadang menyulitkan penanganan di atas atau perlu mendapatkan perhatian. Misalnya ada beberapa sistem dan aplikasi yang membutuhkan fitur file sharing atau menggunakan port 139/445. Jika fitur itu dimatikan (disable, block) maka aplikasi atau layanan tersebut dapat tidak berfungsi. Untuk itu pastikan dahulu bahwa penonaktifan dan pemblokiran ini tidak menghambat aplikasi Anda. Hal ini biasanya relevan terhadap server. Untuk komputer / notebook pengguna biasa, biasanya hal ini tidak terlalu masalah.

Ketika melakukan proses backup, sebaiknya komputer tidak terhubung ke internet atau jaringan komputer. Dikhawatirkan ketika backup sedang berlangsung, komputer terinfeksi ransomware tersebut.Yang menyulitkan adalah jika proses backup dilakukan melalui jaringan (misal backup secara online di Dropbox, Google Drive, dan sejenisnya), maka komputer Anda ya harus terhubung dengan jaringan.

Jika tidak ada data yang penting pada komputer tersebut, proses backup dapat diabaikan. (Meski hal ini tidak disarankan.)

Mematikan fitur SMB bergantung kepada versi dari Windows yang digunakan. Link dari Microsoft ini dapat membantu. Singkatnya adalah dengan tidak mencentang pilihan SMB 1.0/CIFS File Sharing Support sebagaimana ditampilkan pada gambar berikut.

smb-share

Penjelasan Yang Lebih Mendalam

Ransomware adalah software yang termasuk kepada kategori malware, malicious software (software yang memiliki itikad jahat). Ransomware biasanya mengubah sistem sehingga pengguna tidak dapat mengakses sistem atau berkas dengan berbagai cara. Salah satu caranya adalah melakukan proses enkripsi dengan kunci tertentu. Berkas aslinya dihapus. Untuk mengembalikan berkas yang sudah terenkripsi tersebut, pengguna harus mendapatkan kunci dari penyerang. Biasanya penyerang meminta bayaran. Itulah sebabnya dia disebut ransomware. Untuk kasus WannaCry ini, permintaan bayarannya bervariasi dari US$300-US$600.

Ada banyak ransomware dan tidak dibahas pada tulisan ini karena akan menjadi sangat panjang.

WannaCry (atau WannaCrypt) menggunakan kerentanan (vulnerability) sistem operasi Windows yang diduga kemudian dieksploitasi oleh NSA (dikenal dengan nama EternalBlue). Tools tersebut ternyata bocor ke publik dan kemudian dikembangkan menjadi basis dari WannaCry ransomware ini.

Penyebaran. Ada dua cara penyebaran; pada tahap awal dan pada tahap setelah ada ransomware yang terpasang.

Umumnya malware (termasuk ransomware ini) pada awalnya menyebar melalui social engineering (tipu-tipu). Ada varian dari ransomware yang menempel pada attachment PDF atau berkas lain yang dikirimkan via email. Penerima diminta untuk mengklik attachment itu. (Itulah sebabnya jangan sembarangan mengklik.) Jika diklik, maka ransomware tersebut akan memasang dirinya di sistem.

Setelah berhasil menginfeksi sistem, maka untuk versi 1, malware ini akan memastikan kill switch tidak aktif. (Akan dibahas selanjutnya.) Jika kill switch ini ada maka malware akan berhenti. Jika kill switch ini tidak ada, maka malware akan melakukan scanning ke jaringan mencari komputer-komputer lain di jaringan yang memiliki kerentanan SMB ini. Setelah itu dia akan melakukan penyerakan dengan membuat paket khusus yang diarahkan ke port-port yang digunakan oleh SMB (139, 445, 3389). Inilah cara penyebarannya melalui jaringan. Penyebaran yang ini seperti worm.

(Itulah sebabnya sebaiknya port-port tersebut diblokir jika tidak dibutuhkan. Jika Anda memiliki perangkat network monitoring, perhatikan apakah ada peningkatan traffic pada port-port tersebut. Jika ada, perhatikan sumber / source IP dari paket-paket tersebut. Boleh jadi komputer tersebut sudah terkena ransomware.)

Kill switch. Ternyata ransomware versi awal ini memiliki fitur kill switch, yaitu sebuah mekanisme untuk menghentikan dirinya sendiri. Jika domain http://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com tersedia dan berjalan, maka ransomware ini akan menghentikan dirinya. (Hal ini ditemukan secara tidak sengaja oleh seorang peneliti malware. Dia kemudian mendaftarkan domain tersebut sehingga penyebaran versi awal dari WannaCry ini terhenti secara tidak sengaja. Ceritanya ada di sini.) Namun saat ini sudah ada WannaCry versi 2.0 yang tidak memiliki kill switch ini.

Penutupan Port. Port 139/445 pada sistem Windows digunakan untuk berbagai layanan, salah satunya adalah untuk file sharing / printer sharing. Port ini sudah sering digunakan sebagai bagian dari penyerangan (malware, cracking). Sebaiknya port-port ini ditutup. (Cara penutupannya akan dibahas terpisah. Biasanya terkait dengan layanan file sharing seperti di bahas pada bagian atas.)

Namun jika port ini ditutup, maka ada kemungkinan beberapa layanan yang biasa Anda lakukan (sharing) tidak berfungsi. Jika demikian (port tersebut harus aktif) maka gunakan alternatif perlindungan lain (misal dengan menggunakan firewall) untuk memastikan bahwa port tersebut hanya dapat diakses secara terbatas (oleh komputer yang Anda kenali).

Biasanya kami memang menyarankan untuk memblokir port ini. Sebaiknya port-port ini juga difilter di router jika tidak ada layanan sharing yang menyeberang lintas segmen jaringan. (Umumnya memang konfigurasi standar yang aman seperti ini. Jika tidak, nampaknya Anda harus membenahi keamanan jaringan Anda.)

Lain-lain

Tulisan ini akan diperbaiki secara berkala mengingat perkembangan (perubahan) status dari ransomware ini yang cepat berubah. Silahkan kunjungi untuk mendapatkan perubahan tersebut.

Bahan Bacaan

  1. Microsoft Security Bulletin MS17-010 – Critical: informasi mengenai sistem operasi apa saja yang terkena (hampir semua OS Windows yang masih digunakan saat ini), ketersediaan patch, dan rincian lain untuk memperbaiki.
  2. Untuk sistem yang sudah kadaluwarsa (Windows XP, Vista, Windows 8, Server 2003 dan 2008 Editions), Microsoft mengeluarkan emergency patch yang dapat diambil di sini.
  3. Cara untuk enable/disable SMB: agak sedikit teknis dan rinci.
  4. Decryption Tool: untuk membuka yang sudah terkena
  5. WannaCry|WannaDecrypt0r NSA-Cyberweapon-Powered Ransomware Worm: di github berisi banyak link terkait dengan WannaCry tersebut; terutama informasi teknis singkatnya.

Banjir Informasi

Membaca bagian awal dari buku Madilog-nya Tan Malaka, saya merasakan kegalauan Tan Malaka akan kesulitan mendapatkan sumber bacaan (buku). Saya juga sempat mengalami masa kesulitan mendapatkan sumber referensi ketika menempuh pasca sarjana saya. Untuk mendapatkan sebuah referensi, saya harus melakukan interlibrary loan, yaitu meminjam ke perpustakaan tempat lain. Dibutuhkan waktu berhari-hari (dan bahkan minggu) untuk referensi sampai di tempat saya. Itu di Kanada, sebuah negara yang sudah maju. Tidak terbayang oleh saya jika saya berada di tempat yang sistem perpustakaannya belum sebaik itu.

Ya itu jaman sebelum ada internet. Ketika akses kepada (sumber) informasi masih sangat terbatas. (Sebetulnya jaman itu sudah ada internet, tetapi akses kepada internet masih dibatasi untuk perguruan tinggi dan lembaga penelitian. Juga, kecepatan akses internet masih sangat terbatas. Masih teringat saya harus mengakses jaringan kampus dengan menggunakan layar teks saja melalui modem 1200 bps.)

Internet (dan teknologi terkait) mendobrak akses kepada informasi. Sekarang – setidaknya di kota-kota besar di Indonesia – akses kepada informasi tidak ada batasnya. Seperti halnya aliran air dari sebuah sungai yang tadinya mampet, sekarang menjadi lancar.

Sayangnya air yang tadinya jernih sekarang berubah menjadi keruh. Terlalu banyak sampah. Ditambah lagi, air yang tadinya mengalir dengan baik sekarang menjadi banjir badang. Tanggul-tanggul bobol. Sekarang kita kebanjiran informasi.

Ketika banjir – dimana-mana ada banyak air – kita kesulitan mendapatkan air yang jernih untuk minum. Kondisi saat ini sama. Terlalu banyak informasi abal-abal, sehingga untuk mendapatkan informasi yang jernih tidak mudah. Dibutuhkan keahlian dan teknologi untuk menyaring informasi yang keruh menjadi informasi yang dapat kita teguk.

Sementara itu, kita jangan ikut serta memperkeruh “air informasi” ini dengan melemparkan “sampah informasi” yang tidak penting. Tahan diri untuk membuang “sampah informasi”. Maukah kita melakukannya?

Resensi: Spammer

Tidak banyak novel atau cerita di Indonesia yang bersifat agak teknis. Kebanyakan ceritanya adalah keseharian dan umum-umum saja. Maka adanya sebuah cerita yang teknis – seperti spammer (orang yang melakukan spamming) – sangat menarik bagi saya. Apa lagi latar belakang saya memang urusan komputer.

Saya menerima buku ini, sebuah novel thriller karangan Ronny Mailindra dengan judul “Spammer”. Begitu terima, tidak langsung saya baca karena kesibukan saya. Begitu ada waktu senggang, saya cicil bacanya.

p_20161209_132557-spammer-0001

Novel ini bercerita tentang seorang spammer (yang kerjanya mengirim spamming untuk mendapatkan keuntungan dari orang-orang yang kena spam) yang kena batunya. Tanpa sengaja, berkas yang dia curi dari sebuah komputer tenyata sebuah barang bukti kejahatan. Penjahatnya menyewa hacker untuk memastikan berkas tersebut musnah. Maka terjadilan perang antar kedua orang ahli komputer itu.

Awalnya ceritanya agak lambat (untuk selera saya). Kemudian mulai menjadi cepat dan seru sehingga saya harus menyelesaikannya dengan cepat. (Saya baca dalam dua hari. Bahkan ada yang sampai lewat tengah malam.)

Seringkali dalam film atau novel yang bercerita tentang teknis komputer (IT) ada hal-hal yang tidak akurat. Misal, nomor IP yang digunakan adalah 333.123.123.123. Padahal angka yang digunakan tidak boleh lebih dari 255 (karena 8-bit). Atau perintah-perintah yang diketik di layar salah atau tidak benar. Hal-hal seperti itu sering mengesalkan karena kita jadi tahu bahwa film/novel itu ngasal. Nah, buku ini tidak begitu. Sang pengarang memang punya latar belakang IT sehingga hal-hal yang teknis cukup akurat.

Nilai saya adalah 4,5 dalam skala 5. (Atau kalau dibuat skala 10 adalah 9. hi hi hi.) Recommended bagi orang teknis.