Oct 2, 2024
sysbraykr.com news - Dalam pengujian penetrasi atau administrasi jaringan, salah satu langkah yang penting adalah melakukan pemindaian port. Pemindaian ini membantu mengidentifikasi layanan atau daemon yang berjalan di sebuah sistem dan dapat menjadi titik masuk bagi penyerang. Umumnya, alat seperti Nmap digunakan untuk tujuan ini. Namun, ada situasi di mana Nmap mungkin tidak bisa digunakan, misalnya ketika ada pembatasan alat di jaringan atau target yang dikompromikan. Dalam kondisi seperti ini, alat-alat bawaan sistem operasi Linux, seperti Netcat, Telnet, Perl, dan raw sockets, dapat digunakan sebagai alternatif.
Artikel ini akan membahas skrip Bash sederhana yang memungkinkan pengguna untuk melakukan pemindaian port menggunakan berbagai metode seperti Netcat, Telnet, Hping3, Perl, dan raw sockets. Skrip ini berguna dalam situasi di mana Nmap atau alat pemindaian khusus lainnya tidak tersedia.
1. Struktur dan Fungsionalitas Skrip Bash
Skrip ini dibuat untuk menawarkan fleksibilitas dalam memilih alat pemindaian yang berbeda, tergantung pada kebutuhan dan ketersediaan alat di sistem. Setiap alat memiliki karakteristiknya masing-masing, mulai dari Netcat yang serbaguna hingga raw sockets yang lebih kompleks. Berikut adalah rincian metode yang digunakan dalam skrip:
Netcat
Netcat (nc) adalah alat yang sering disebut sebagai “pisau Swiss” untuk administrasi jaringan. Netcat dapat digunakan untuk berbagai tugas seperti pemindaian port, transfer file, dan bahkan sebagai alat komunikasi antar komputer.
Contoh perintah untuk pemindaian port dengan Netcat:nc -vz <target_ip> <port>
-v
: Menampilkan output yang lebih verbose.-z
: Mode scan tanpa mengirim data; hanya untuk melihat apakah port terbuka.
Pada skrip, pemindaian dengan Netcat dilakukan dengan fungsi berikutscan_with_netcat() {
local target_ip=$1
local port=$2
nc -vz "$target_ip" "$port"
}
Pengguna hanya perlu memasukkan IP target dan port yang ingin dipindai.
Telnet
Telnet adalah alat komunikasi jaringan berbasis teks yang sudah cukup lama, tetapi masih berguna untuk memeriksa apakah port tertentu terbuka dan menerima koneksi. Alat ini berguna saat Nmap tidak tersedia, tetapi perlu diingat bahwa Telnet tidak mengenkripsi komunikasi, jadi lebih baik digunakan hanya untuk tes lokal atau jaringan yang dipercaya.
Contoh perintah Telnet:telnet <target_ip> <port>
Pada skrip, pemindaian dengan Telnet dilakukan dengan fungsi berikut:scan_with_telnet() {
local target_ip=$1
local port=$2
telnet "$target_ip" "$port"
}
Hping3
Hping3 adalah alat jaringan yang memungkinkan pengguna untuk mengirim paket kustom menggunakan TCP, UDP, ICMP, atau protokol raw IP. Ini sering digunakan untuk pemindaian port karena dapat meniru berbagai jenis paket, termasuk SYN scan seperti yang dilakukan oleh Nmap.
Contoh perintah Hping3 untuk pemindaian port:hping3 -c 1 -S -p <port> <target_ip>
-c 1
: Mengirim satu paket.-S
: Mengirim SYN packet.-p
: Menentukan port yang akan dipindai.
Pada skrip, Hping3 digunakan dalam fungsi:scan_with_hping3() {
local target_ip=$1
local port=$2
hping3 -c 1 -S -p "$port" "$target_ip"
}
Catatan: Hping3 mungkin perlu diinstal terlebih dahulu dengan menjalankan:sudo apt install hping3
Perl (Socket Programming)
Perl adalah bahasa pemrograman yang fleksibel dan kuat, dan dapat digunakan untuk membuat pemindaian port sederhana dengan modul IO::Socket::INET. Pemindaian port dengan Perl dapat lebih disesuaikan, dan sangat berguna jika alat lain seperti Nmap tidak tersedia.
Skrip menggunakan Perl untuk memeriksa port terbuka di rentang port yang ditentukan oleh pengguna:scan_with_perl() {
local target_ip=$1
local start_port=$2
local end_port=$3
for port in $(seq "$start_port" "$end_port"); do
perl -MIO::Socket::INET -e '
$target_ip = $ARGV[0];
$port = $ARGV[1];
$socket = IO::Socket::INET->new(
PeerAddr => $target_ip,
PeerPort => $port,
Proto => "tcp",
Timeout => 1
);
if ($socket) {
print "Port $port is open\n";
close($socket);
}
' "$target_ip" "$port"
done
}
Pengguna perlu menginstal modul IO::Socket::INET terlebih dahulu menggunakan CPAN:cpan install IO::Socket::INET
Raw Sockets (Bash /dev/tcp)
Linux memungkinkan penggunaan raw sockets melalui direktori /dev/tcp
. Ini adalah metode yang sangat dasar tetapi efektif untuk melakukan pemindaian port langsung dari terminal bash tanpa memerlukan alat tambahan.
Contoh penggunaan raw sockets di Bash:(echo >/dev/tcp/<target_ip>/<port>) >/dev/null 2>&1 && echo "Port <port> is open"
Skrip menggunakan raw sockets untuk melakukan pemindaian dalam rentang port yang ditentukan:scan_with_bash_raw_socket() {
local target_ip=$1
local start_port=$2
local end_port=$3
for ((port = start_port; port <= end_port; port++)); do
(echo >/dev/tcp/"$target_ip"/"$port") >/dev/null 2>&1 && echo "Port $port is open"
done
}
2. Cara Menggunakan Skrip
Untuk menggunakan skrip ini, ikuti langkah-langkah berikut:
Buat file skrip:touch scan_os.sh
Salin skrip ke dalam file: Setelah skrip disalin, pastikan file tersebut dapat dieksekusi dengan memberi izin eksekusi:touch scan_os.sh
Jalankan skrip: Jalankan skrip menggunakan perintah berikut:./scan_os.sh
Setelah dijalankan, Anda akan diminta untuk memilih metode pemindaian dan memasukkan alamat IP target serta rentang port yang akan dipindai.
Pemindaian port adalah salah satu langkah dasar dalam pengujian penetrasi dan administrasi jaringan. Skrip ini memungkinkan pengguna untuk menggunakan berbagai metode pemindaian tanpa bergantung pada alat khusus seperti Nmap. Ini sangat berguna dalam situasi berikut:
Ketika Nmap tidak tersedia: Mungkin ada batasan pada alat yang dapat digunakan dalam lingkungan jaringan tertentu. Skrip ini menawarkan berbagai alternatif yang tetap dapat digunakan untuk mencapai tujuan yang sama.
Fleksibilitas: Pengguna dapat memilih metode pemindaian yang sesuai dengan situasi dan konfigurasi jaringan target.
Pendidikan dan Pemahaman: Skrip ini juga memberikan wawasan bagi mereka yang ingin mempelajari berbagai alat dan teknik pemindaian port, dan bagaimana setiap alat bekerja secara teknis.