perintah netcat Netcat adalah salah satu network tool yang powerful dan serbaguna yang tersedia untuk komputer Linux, Mac, dan Windows. Dia mudah digunakan dan penting untuk dipelajari untuk semua orang yang tertarik dengan komunikasi jaringan.
Fungsi utama dari Netcat yaitu memungkinkan dua komputer untuk terhubung dan berbagi sumber daya. Nama Netcat adalah singkatan dari network dan concatenate, yang mana merupakan kata yang unik yang berarti menggabungkan berbagai hal.
Koneksi dapat dilakukan secara langsung antar mesin melalui port TCP atau UDP. Setelah ditetapkan, ada banyak kasus penggunaan potensial. Komunikasi dapat bekerja dua arah sehingga file atau informasi dapat berpindah dari host ke klien atau klien ke host.
Netcat dikenal sebagai “Pisau Swiss Army” dalam IT karena fungsinya yang luas. Dia bisa digunakan untuk mengirim file sederhana, mengobrol, web serving, menjalankan kode dari jarak jauh. Daftarnya luas dan beragam.
Saya akan menyoroti beberapa aplikasi yang lebih umum di seluruh artikel ini.
Netcat juga terkenal bisa digunakan untuk membuat akses “backdoor”.
Contoh perintah Netcat (nc)
Berikut syntax untuk perintah nc:
nc [options] [hostname] [port]
Syntax-nya bisa bervariasi tergantung pada aplikasinya, tetapi untuk sebagian besar penggunaan, perintah yang kamu gunakan akan mengikuti pola dasar ini.
1. Membuat Koneksi TCP dengan perintah netcat
Seperti yang saya sebutkan sebelumnya, fungsi utama netcat adalah menggabungkan dua komputer. Kamu bisa mengatur koneksi menggunakan TCP untuk menghubungkan dua komputer terpisah, kamu juga bisa meniru koneksi itu menggunakan terminal.
Saya akan contohkan untuk membuka koneksi tapi dari komputer yang sama.
pertama coba buka aplikasi terminal lalu jalankan perintah ini
Komputer “Listening” atau server:
nc -l 8080
Perintah ini membuka port 8080 dan memberitahu komputer untuk mulai mendengarkan (listen) pada port ini.
Idealnya kita harus menggunakan komputer lain untuk melakukan percobaan koneksi ke komputer yang membuka portnya, tapi buat contoh saya akan gunakan komputer yang sama tapi dari terminal yang berbeda.
kamu bisa pakai komputer lain lalu buka terminal lain dan jalankan perintah berikut.
Komputer Client:
nc 127.0.0.1 8080
Kalau kamu pakai komputer lain maka kamu boleh ganti 127.0.0.1 dengan IP komputer yang melakukan proses listening.
Setelah menjalankan perintah ini maka netcat akan melakukan koneksi ke komputer yang melakukan listening, ini bisa dilakukan bahkan pada koneksi untuk jarak jauh.
Keren kan? Kamu sudah membuka port TCP dan membuat koneksi yang saling terhubung antara dua komputer.
Pengantar Singkat TCP vs UDP
Kenapa kita menggunakan TCP secara default? TCP adalah teknologi yang lebih tua dari UDP dan mereka beroperasi pada tingkat yang berbeda dari model OSI. Saya akan memberikan gambaran singkat tentang perbedaan antara mereka dan menjelaskan beberapa situasi di mana kamu bisa memilih salah satunya.
TCP memiliki kemampuan koreksi kesalahan yang kuat. Apa artinya? Pada dasarnya, ini berarti bahwa ketika paket data sedang dalam perjalanan dari sistem ke sistem, ada pengujian terus menerus yang dilakukan. Tes ini memastikan bahwa informasi dari Sistem A disalin secara akurat ke Sistem B. Ini adalah versi yang sangat disederhanakan dari apa yang terjadi saat informasi berjalan melintasi jaringan (internet).
Ada banyak protokol yang digunakan dalam komunikasi internet, bukan hanya TCP. UDP memiliki aturan yang berbeda dari TCP. Tidak ada yang selalu “lebih baik” tetapi mereka masing-masing dapat unggul dalam melakukan tugas yang berbeda.
Mengapa kita menggunakan UDP daripada TCP atau sebaliknya? Itu tergantung pada penggunaannya. TCP lebih lambat, tetapi lebih dapat diandalkan untuk mentransfer data secara akurat.
UDP dapat dipilih dalam situasi di mana kecepatan lebih penting daripada keandalan transmisi informasi. Salah satu contohnya adalah streaming data, seperti video. Video dapat ditransfer lebih cepat melalui UDP, dan bahkan jika ada kesalahan dalam transmisi, kemungkinan kecilnya akan mempengaruhi user experience-nya.
2. Membuat koneksi menggunakan UDP dengan perintah nc
Langkah-langkah untuk membuat koneksi UDP hampir identik dengan yang telah kita lakukan di atas. Kamu hanya cukup menambahkan opsi -u
untuk menentukan bahwa jenis protokol yang akan di pakai adalah UDP, bukan TCP.
nc -l -u 999
Sesederhana itu. Itu saja yang perlu kamu lakukan untuk membuka port UDP di port 999.
Kalau kamu bingung dan bertanya-tanya kok bisa ya pakai TCP dan UDP di nomor port yang sama. Tentu saja bisa, karena mereka adalah protokol yang terpisah.
3. Menggunakan perintah nc untuk mentransfer file antar sistem jarak jauh
Ada banyak metode lain untuk mentransfer file dari satu sistem ke sistem lainnya. Kamu juga bisa gunakan perintah netcat untuk tujuan ini.
Untuk contoh ini, saya membuat demo yang menggambarkan transfer file jarak jauh dari mesin Linux saya ke MacBook Pro saya.
Siapkan PC Linux untuk Menerima File
nc -l 9999 > fromMac.file
Komputer ini akan mulai mendengarkan (listen) di port TCP 9999.
Tanda >
memberi tahu komputer bahwa kalau ada data yang masuk maka akan langsung di simpan ke menjadi berkas bernama fromMac.file
.
Siapkan Mac PC untuk Mengirim
Untuk pengirim file gunakan perintah ini
nc 172.20.1.168 9999 < toLinux.file
Sesuaikan IP dengan alamat IP komputer yang sedang listening lalu gunakan, ganti juga toLinux.file dengan nama file yang akan kamu kirim.
Jadi kira-kira begitulah caranya mengirim file dari komputer A ke komputer B menggunakan netcat.
4. Gunakan perintah nc untuk scan port
Mungkin ada opsi yang lebih efisien untuk scan atau pemindaian port, tetapi ini juga bisa dilakukan dengan netcat. Karena netcat terinstal secara default di sebagian besar sistem operasi, baik untuk diketahui cara melakukannya kalau kamu perlu melakukan troubleshooting dengan cepat. Kamu akan menggunakan ‘-n’ dan menampilkan output yang panjang sekali.
nc -v -n 127.0.0.1 1-100
Disini kita mencoba membuat koneksi ke port antara 1-100. Port 80 adalah HTTP, seperti yang saya yakin kamu pasti tahu. Port ini biasanya terbuka pada komputer karena digunakan untuk menghubungkan ke internet.
Ketika saya menggunakan perintah ini, saya sebenarnya mencoba untuk terhubung ke semua port antara 1-100. Itu berhasil terhubung ke port 80, tetapi hasil tampilanya pesan error dari Apache. Akhirnya muncul tampilan dengan beberapa output HTML di terminal karena komputer saya melihatnya sebagai bad page request.
[...]
nc: connect to 127.0.0.1 port 77 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 78 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 79 (tcp) failed: Connection refused
Connection to 127.0.0.1 80 port [tcp/*] succeeded!
HTTP/1.1 400 Bad Request
Date: Fri, 20 Dec 2019 15:08:29 GMT
Server: Apache/2.4.38 (Ubuntu)
Content-Length: 310
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.38 (Ubuntu) Server at pop-os.localdomain Port 80</address>
</body></html>
Mode I/O Zero
Untuk menghindari hal ini, kamu bisa menggunakan opsi -z
, yang merupakan singkatan dari zero input/output. Ini adalah mode pemindaian port bawaan untuk netcat.
Kalau saya menjalankan perintah yang sama tapi kali ini dengan opsi -z akan tetap menghasilkan output yang sama tapi bedanya adalah kalau yang sebelumnya ada error berhenti kalau sekarang dengan opsi -z pesan error tidak akan menghentikan proses tapi akan terus lanjut scan semua port sampai selesai.
5. Ngobrol chatting pakai Netcat
Ini yang paling seru menurut saya sewaktu menggunakan netcat. Jadi sewaktu kamu membuat koneksi TCP seperti contoh diatas sebenarnya kamu bisa ngobrol antar komputer yang terhubung menggunakan netcat.
Kesimpulan
Kamu wajib banget tau fungsi dan kegunaan perintah linux netcat karena punya fitur yang bisa dipakai oleh para hacker hehehe