Archive for the ‘Hacking’ category

Tutorial Hardcore Hacking – Season 1 Episode 1: Banner Grabbing Port with Python Part 1 of 5

April 21st, 2015

Disclaimer: Do at your own risk! Pastikan Anda melakukannya pada target komputer / server milik sendiri (virtual atau hardware). Penetration Testing tanpa seizin target melanggar hukum!

 

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.

Berikut kode python full scriptnya:

import socket
socket.setdefaulttimeout(2)
s = socket.socket()
s.connect(("10.21.63.22",21))
banner = s.recv(1024)

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."

Part 2 berikutnya kita akan banyak memakai fitur programming python untuk meningkatkan kode di atas. Happy Learning! =)

About Author: Aditya Kurniawan, S.Kom., MMSI