Sebelum saya memulai tutorial ini, saya ingin mengingatkan bahwa tutorial hacking yang saya bawakan adalah bukan tutorial penggunaan script atau software untuk melakukan hacking. Hampir semua orang yang mengerti teknologi informasi pasti dapat menggunakan tools/software/script untuk hacking, yang biasanya saya kategorikan sebagai novice hacker. Novice hacker adalah hacker pemula yang baru dapat menggunakan software yang sudah ada untuk meretas.  Tutorial yang saya ajarkan adalah bagaimana membuat script kode untuk melakukan hacking dengan script Anda sendiri, jadi tutorial ini mengajak Anda untuk tidak menjadi novice hacker lagi, akan tetapi menjadi profesional hacker, atau yang saya sebut dengan Hacker Guru.  Dan tutorial ini membutuhkan ilmu programming dasar agar dapat membangun script ini dan mengerti dari bagian-bagian kode yang harus dibuat.

Tutorial ini dibagi dalam 5 part. Part 1 adalah pengenalan dasar dari FTP banner grabbing khusus untuk port 21. Part 2 kita akan mulai menggunakan fungsi dan fitur programming python. Pada part 3 kita akan membuat kode python agar bisa mencari banner port yang lain. Part 4 kita akan membuat kode python yang dapat membaca parameter dari command prompt atau terminal berupa path file vulnerabilities dan range ip yang di cari.

Seperti yang saya sebutkan pada judul di atas. Episode 1 tutorial hardcore hacking kali ini membahas grabbing banner port with python. Sebelum kita masuk ke dalam topiknya, saya menganjurkan bagi Anda yang belum mempunyai dasar python programming, untuk mempelajari tutorial python programming dari tutorialpoints.com dan cara download python di python.org. Versi python yang saya pakai adalah 2.7, jadi Anda mendownload python versi 2.7, bukan 3.4.

Dalam ilmu jaringan komputer, port atau network port adalah piranti lunak atau proses yang spesifik yang melayani komunikasi endpoint  pada TCP atau UDP. Jadi network port ini digunakan oleh software untuk berkomunikasi data. Seperti port yang umum digunakan adalah FTP (File Transfer Protocol) menggunakan port 21, atau untuk aplikasi email berjalan di atas port 21 pada Simple Mail Transfer Protocol (SMTP).   Nomor port yang cukup dikenal sebagai port yang umum berada pada range angka 0-1023.

Banner grabbing adalah teknik enumerasi yang digunakan untuk mendapatkan informasi mengenai sistem yang berjalan di atas jaringan komputer dan service yang berjalan pada port yang terbuka. Teknik banner grabbing biasanya digunakan oleh administrator untuk menginventaris sistem dan service yang berjalan pada sebuah jaringan komputer. Teknik ini yang digunakan oleh hacker untuk menemukan informasi network host, port dan versi software atau service yang berjalan pada sebuah network atau server. Dengan informasi ini, hacker dapat mencari data kelemahan sistem dari port yang terbuka. Sebagai contoh, kita mendapatkan informasi bahwa ip address: 10.21.63.194  memiliki port 21 yang terbuka, dan setelah proses teknik grabbing, ternyata port 21 memiliki informasi banner adalah “Com 3CDaemon FTP Server Version 2.0”, maka hacker akan mencari cara menembus kelemahan sistem tersebut di Google: “Com 3CDaemon FTP Server Version 2.0 vulnerability”. Pada tutorial ini tidak membahas teknik bagaimana menindaklanjuti kelemahan dari informasi banner.

Teknik banner grabbing port menggunakan teknik socket programming, dimana script ini  akan melakukan koneksi port ke ip yang dituju untuk pengambilan informasi banner.  Socket programming pada python membutuhkan module Socket, maka pada script ini akan meng-import module socket:

import socket

Seperti pada saat kita melakukan perintah ping untuk melakukan pengiriman paket data, ada batas timeout atau berapa kali percobaan untuk melakukan koneksi, kita set sebanyak 2  kali:

socket.setdefaulttimeout(2)

Selanjutnya kita akan melakukan koneksi ip 10.21.63.22 yang dituju dengan port 21 (FTP) dengan menggunakan fungsi connect():

s = socket.socket()

s.connect((“10.21.63.22”,21))

Setelah berhasil melakukan koneksi kita akan mencoba mendapatkan (grabbing) banner informasi dari port dengan menggunakan fungsi recv().  Fungsi ini menerima parameter jumlah char atau karakter yang akan diambil dari informasi banner port.  Informasi banner pada port terdapat 1024 karakter pertama. Oleh karena itu bentuk scriptnya adalah sebagai berikut:

banner = s.recv(1024)

Setelah mendapatkan banner dari port, maka kita akan menginspeksi isi banner tersebut dengan filter logika sebagai berikut:

if (“FreeFloat Ftp Server (Version 1.00)” in banner):

            print “[+] FreeFloat FTP Server is vulnerable.”

elif (“3Com 3CDaemon FTP Server Version 2.0” in banner):

            print “[+] 3CDaemon FTP Server is vulnerable.”

elif (“Ability Server 2.34” in banner):

            print “[+] Ability FTP Server is vulnerable.”

elif (“Sami FTP Server 2.0.2” in banner):

            print “[+] Sami FTP Server is vulnerable.”

else:

            print “[-] FTP Server is not vulnerable.”

Jika isi banner ada pada salah satu ada pada pilihan di atas maka port di atas digunakan oleh piranti lunak FTP yang memiliki  kelemahan yang dapat dieksploitasi dikarenakan FTP secara umum digunakan pada Web Server untuk mengirimkan file dan paling mudah untuk di eksploitasi.

Tutorial ini juga sudah di post di blog Pak Aditya Kurniawan.