• Tidak ada hasil yang ditemukan

Komunikasi Jaringan di Python

Dalam dokumen Dr. Joseph Teguh Santoso, S.Kom, M.Kom (Halaman 179-182)

BAB 17 DASAR-DASAR SCRIPT PYTHON UNTUK HACKERS

17.6 Komunikasi Jaringan di Python

Sebelum kita beralih ke konsep Python lainnya, mari kita gunakan apa yang telah Anda pelajari sejauh ini untuk menulis beberapa skrip peretasan yang harus dilakukan dengan koneksi jaringan.

Membangun Klien TCP Kami akan membuat koneksi jaringan di Python menggunakan modul soket. Saya telah menyebutkan bahwa Python dilengkapi dengan perpustakaan modul untuk banyak tugas. Dalam hal ini, kita memerlukan modul soket untuk membuat koneksi TCP. Mari kita melihatnya dalam tindakan.

Lihat skrip di Daftar 17.3 bernama HackersBangkitSSHBannerGrab.py (Saya tahu, ini namanya panjang, tetapi bersabarlah dengan saya di sini). Spanduk adalah apa yang ditampilkan aplikasi saat seseorang atau sesuatu terhubung ke sana. Ini semacam seperti aplikasi yang mengirimkan sapaan mengumumkan apa itu. Hacker menggunakan teknik yang dikenal sebagai spanduk meraih untuk mengetahui informasi penting tentang aplikasi atau layanan apa yang berjalan di port.

#! /usr/bin/python3

import socket

s = socket.socket()

s.connect(("192.168.1.101", 22))

answer = s.recv(1024)

print (answer)

s.close

Daftar 17.3 Skrip Python bannergrabbing

Pertama, kita impor modul socket ➊ agar dapat menggunakan fungsi dan alatnya. Di sini, kita akan menggunakan alat jaringan dari modul socket untuk menjaga antarmuka koneksi melalui jaringan untuk kita. Soket menyediakan cara bagi dua node komputer untuk berkomunikasi satu sama lain. Biasanya, satu adalah server dan satu adalah klien.

Kemudian, kita membuat variabel baru, s dan mengaitkannya dengan kelas soket dari modul soket ➋. Dengan cara ini, kita tidak perlu merujuk sintaks lengkap socket.socket() kapan pun kita ingin menggunakan kelas socket—kita cukup menggunakan nama variabel s.

Kami kemudian menggunakan metode connect() dari modul soket ➌ untuk membuat koneksi jaringan ke IP dan port tertentu. Ingatlah bahwa metode adalah fungsi yang tersedia untuk objek tertentu. Sintaksnya adalah object.method (misalnya, socket.connect ). Dalam hal ini, saya menghubungkan ke alamat IP 192.168.1.101, yang merupakan alamat IP mesin di jaringan saya, dan port 22, yang merupakan port SSH default. Anda dapat mengujinya di instance lain dari Linux atau Kali. Sebagian besar memiliki port 22 terbuka secara default.

Setelah Anda membuat sambungan, ada beberapa hal yang dapat Anda lakukan. Di sini, kami menggunakan metode recv untuk membaca 1024 byte data dari soket ➍ dan menyimpannya dalam jawaban bernama answer; 1024 byte ini akan berisi informasi spanduk. Kemudian kami mencetak konten variabel tersebut ke layar dengan print() fungsi

➎ untuk melihat data apa yang telah dilewatkan melalui soket tersebut, memungkinkan kami untuk memata-matainya! Di baris akhir, kami menutup koneksi.

Simpan skrip ini sebagai HackersBangkitSSHBannerGrab.py, lalu ubah izinnya menggunakan perintah chmod sehingga Anda dapat menjalankannya. Mari kita jalankan skrip ini untuk terhubung ke sistem Linux lain (Anda mungkin menggunakan sistem Ubuntu atau bahkan sistem Kali lain) di port 22. Jika SSH berjalan di port itu, kita harus dapat membaca dan mencetaknya ke variabel kita ke layar, seperti yang ditunjukkan di sini:

kali >./HackersBangkitSSHBannerGrab.py SSH-2.0-OpenSSH_7.3p1 Debian-1

Kami baru saja membuat skrip Python bannergrabbing sederhana! Kita dapat menggunakan skrip ini untuk mengetahui aplikasi, versi, dan sistem operasi apa yang berjalan di alamat IP dan port tersebut. Ini memberi kami informasi penting yang dibutuhkan Hacker sebelum menyerang sistem. Inilah yang pada dasarnya dilakukan oleh situs web Shodan.io untuk hampir setiap alamat IP di planet ini, dan situs ini mengkatalog dan mengindeks informasi ini untuk kami telusuri.

Membuat Pendengar TCP

Kami baru saja membuat klien TCP yang dapat membuat koneksi ke alamat dan port TCP/IP lain, lalu memata-matai informasi yang sedang dikirim. Soket tersebut juga dapat digunakan untuk membuat pendengar TCP, untuk mendengarkan koneksi dari pihak luar ke server Anda. Mari coba lakukan itu selanjutnya.

Dalam skrip Python yang ditampilkan di Daftar 17.4, Anda akan membuat socket di port di sistem Anda yang, saat seseorang terhubung ke socket tersebut, mengumpulkan informasi kunci tentang sistem konektor. Masukkan skrip dan simpan sebagai tcp_server.py.

Pastikan untuk memberi diri Anda izin eksekusi dengan chmod

#! /usr/bin/python3 import socket

TCP_IP = "192.168.181.190"

TCP_PORT = 6996 BUFFER_SIZE = 100

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.bind((TCP_IP, TCP_PORT))

s.listen (1)

conn, addr = s.accept() print ('Connection address: ', addr ) while 1:

data=conn.recv(BUFFER_SIZE) if not data:break

print ("Received data: ", data) conn.send(data) #echo

conn.close

Daftar 17.4 Skrip Python Pendengar TCP

Kami menyatakan bahwa kami ingin skrip dijalankan dengan interpreter Python dan kemudian mengimpor modul soket seperti sebelumnya, sehingga kami dapat menggunakan kemampuannya. Kami kemudian menentukan variabel untuk menyimpan informasi untuk alamat TCP/IP, port untuk mendengarkan, dan ukuran buffer data yang ingin kami tangkap dari sistem penghubung➊.

Kami mendefinisikan socket ➋ dan mengikat socket ke alamat IP dan port ➌ menggunakan variabel yang baru saja kami buat. Kami menyatakan soket untuk mendengarkan menggunakan metode listen() dari pustaka soket ➍.

Kami kemudian mengambil alamat IP dan port dari sistem penghubung menggunakan metode penerimaan library accept, dan kami mencetak informasi tersebut ke layar sehingga pengguna dapat melihatnya. Perhatikan sintaks while 1: di sini; kita akan membahas ini lebih lanjut di bab ini, tetapi untuk saat ini ketahuilah bahwa ini digunakan untuk menjalankan kode indentasi yang muncul setelahnya tanpa batas, artinya Python terus memeriksa data .

Terakhir, kami menempatkan informasi dari sistem penghubung ke dalam buffer, mencetaknya, lalu menutup koneksi. Sekarang, buka komputer lain di jaringan Anda dan gunakan browser untuk menyambung ke port 6996 yang ditentukan dalam skrip kami.

Jalankan skrip tcp_server.py, dan Anda akan dapat menghubungkan dan mengumpulkan informasi penting tentang sistem tersebut, termasuk alamat IP dan port sistem penghubung, seperti yang ditunjukkan di sini:

kali >./tcp_server.py

Connection Address: ('192.168.181.190', 45368) Received data: Get /HTTP/1.1

Host:192.168.181.190:6996

User -Agent:Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gec --snip--

Ini adalah informasi penting yang harus dikumpulkan oleh seorang Hacker sebelum memutuskan untuk mengeksploitasi. Eksploitasi (atau peretasan) sangat spesifik untuk sistem operasi, aplikasi, dan bahkan bahasa yang digunakan, sehingga Hacker perlu mengetahui sebanyak mungkin informasi tentang target sebelum melanjutkan. Tindakan mengumpulkan informasi sebelum peretasan ini sering disebut sebagai pengintaian. Anda baru saja mengembangkan alat yang akan mengumpulkan informasi pengintaian utama tentang target potensial, sangat mirip dengan alat Hacker populer p0F!

Dalam dokumen Dr. Joseph Teguh Santoso, S.Kom, M.Kom (Halaman 179-182)