Perkenalan

Perkenalan

Bagi sebagian besar dari kita enkripsi WEP telah menjadi lelucon. WPA dengan cepat berjalan dengan cara yang sama berkat banyak alat seperti Aircrack-Ng. Selain itu, jaringan kabel juga tidak asing dengan tamu yang tidak diinginkan. Siapa pun yang serius tentang keamanan harus memiliki sistem deteksi intrusi yang baik di kotak alat mereka.

Sudah ada beberapa ID yang sangat bagus (sistem deteksi intrusi) yang tersedia. Mengapa ada orang yang ingin menemukan kembali roda dalam bash??? Ada beberapa alasan untuk ini. Jelas skrip bash bisa sangat ringan. Terutama dibandingkan dengan beberapa program GUI yang ada di luar sana. Sementara program seperti Etherape menghisap kami dengan warna -warna cantik, mereka membutuhkan pemantauan terus -menerus untuk mengetahui kapan jaringan telah berubah. Jika Anda seperti kebanyakan dari kami, Anda hanya menggunakan komputer untuk dua hal, bekerja dan bermain. Dengan menggunakan System Bell untuk mengingatkan klien baru secara online, Anda dapat membiarkan skrip ini berjalan dan tidak harus memiliki jam tangan yang konstan. Jika Anda memutuskan ingin memeriksa apa yang dilakukan klien yang mencurigakan lebih dekat, Anda selalu dapat membuka Etherape, Wireshark, atau alat pilihan Anda. Tetapi sampai Anda memiliki masalah, Anda dapat bermain atau mengerjakan hal -hal lain.

Bonus lain untuk program ini adalah bahwa ia hanya akan menampilkan alamat IP di jaringan yang terhubung ke komputer Anda. Jika Anda menjadi hosting server yang sibuk atau mungkin mengunduh distro Linux terbaru melalui klien torrent, IDS mungkin dibanjiri dengan koneksi. Mencari klien jahat baru bisa seperti mencari jarum di tumpukan jerami. Sementara skrip ini mungkin tampak sederhana dibandingkan dengan ID lain, kesederhanaan juga dapat memiliki fasilitasnya.

Apa yang Anda Butuhkan

NMAP diperlukan agar skrip ini berfungsi. Kami tidak akan melakukan pemindaian pelabuhan apa pun. Namun, untuk membuat skrip ini dengan cepat, kami membutuhkan sesuatu yang lebih baik daripada ping biasa. Parameter NMAP -SSP hanya akan menggunakan pemindaian ping untuk memeriksa apakah klien naik. Ada beberapa variasi dalam bagaimana NMAP menghasilkan informasi antar versi. Sejauh ini skrip ini hanya diuji menggunakan NMAP 5.00 (Debian Squeeze) dan 5.21 (Debian Sid). Anda mungkin beruntung dengan distro dan versi NMAP lainnya. Namun, dengan semua kemungkinan saya hanya bisa mendukung pasangan saat ini.

Anda juga harus memastikan bahwa Anda menggunakan Bash Version 4.0 atau lebih. Anda harus menemukan ini di distro apa pun yang stabil atau lebih baru. Tetapi versi bash apa pun di bawah ini yang tidak akan mendukung array yang digunakan dalam skrip ini. Akses root juga diperlukan atau perintah ARP tidak akan ditemukan untuk memblokir klien mana pun.

CATATAN: Script ini tidak berfungsi dengan baik dengan antarmuka jaringan virtual seperti VMware, VirtualBox dan ETC.

Mengeksekusi skrip

Untuk menjalankan skrip ini cukup jalankan:

# chmod +x leecher.SH; ./leecher.SH

Saat ini tidak ada parameter untuk ditetapkan.

Bagaimana skrip ini bekerja

Lewati semua fungsi awal untuk saat ini sehingga kita dapat melihat aliran naskah yang sebenarnya. Hal pertama yang kami lakukan adalah memeriksa apakah pengguna adalah root dan NMAP diinstal pada sistem saat ini. Jika bukan skrip akan menjelaskan bahwa privledges root diperlukan atau bahwa NMAP adalah ketergantungan di sini dan keluar. Jika persyaratan ini dipenuhi skrip akan dilewati dengan salam kepada pengguna dan menjelaskan beberapa fitur. Saya menggunakan setter untuk mematikan kursor. Itu pasti estetika-sore.

Saya mengatur control-c trap untuk membuat skrip berhenti. Meskipun Anda mungkin berpikir 'tunggu, kontrol-c biasanya menghentikan program baris perintah!'Meskipun ini biasanya benar, saya menemukan loop selamanya yang kita gunakan nanti untuk menyebabkan masalah menghentikan skrip dengan control-c. Dengan menggunakan perangkap dengan Sigint, kami dapat membuat pekerjaan ini. Kami menetapkan beberapa variabel dalam pernyataan IF berikut untuk memeriksa versi NMAP yang didukung mana yang kami gunakan di sini. Ini penting karena output sangat berbeda antara versi ini. Hal pertama yang kami lakukan di sini adalah membuat lingkaran yang pertama -tama akan mendapatkan versi NMAP yang kami gunakan di sini. Ini penting karena output sangat berbeda antara versi ini. Hal berikutnya yang kami lakukan di sini adalah membuat lingkaran yang pertama -tama akan mendapatkan alamat IP dari semua antarmuka kami yang saat ini online. Kami juga menggunakan AWK di sini untuk memfilter 127.0.0.1 Karena tidak perlu memindai alamat loopback. Plus kami menggunakan AWK untuk memotong oktet akhir dalam alamat IP ini. Misalnya, jika antarmuka eth0 memiliki IP 192.168.1.12 kita tidak membutuhkan akhir 12. Pemindaian normal subnet seperti ini adalah “nmap -sp 192.168.1.0/24 ”jadi untuk saat ini loop ini akan menghapus salah satu IP pada antarmuka aktif apa pun dan meneruskannya pada waktu ke nmap sampai kita selesai. Di dalam loop kami menerima nilai untuk ip antarmuka dan menambahkan ".0/24 ”untuk memindai seluruh jaringan dalam kisaran itu.(Atau 0-255) Kami akan melewati variabel yang benar untuk versi NMAP jadi AWK tahu di mana mendapatkan IP dikembalikan dari setiap pemindaian. Semua nilai yang dikembalikan dari setiap pemindaian akan dicolokkan ke dalam array. Setelah pemindaian pertama dari semua jaringan antarmuka Anda, kami hanya akan menggunakan loop lain untuk menampilkan hasil awal kepada pengguna.

Saya harus menunjukkan di sini apa yang dikatakan pesan baru kepada pengguna. Jika Anda ingin mendengar lonceng sistem itu harus diaktifkan di pengaturan desktop Anda. Lokasi ini akan bervariasi tergantung dari versi KDE, Gnome, Xface, atau desktop apa pun yang Anda gunakan. Namun, Anda mungkin berpikir bahwa hanya karena Anda telah mendengar bel sebelum itu diaktifkan. Saya perhatikan OS saya memiliki lonceng yang mirip untuk memberi tahu saya bahwa baterai laptop saya akan mati. Silakan periksa cara mengaktifkan bel sistem di distro Anda jika Anda mengalami masalah.

Berikutnya adalah loop selamanya untuk menjaga pemindaian dan pemantauan konstan skrip ini. Jika Anda baru mengenal Bash, atau Loop selamanya, ini mungkin membuat Anda mempertanyakan mengapa kami menggunakan sesuatu yang merupakan loop yang tak terbatas. Banyak dari Anda tidak diragukan lagi telah diperingatkan tentang bahaya loop tak terbatas dan bagaimana mereka bisa menabrak mesin. Seperti yang mungkin Anda perhatikan, kami menggunakan pernyataan tidur setelah pemindaian pertama. Kami akan menggunakan ini lagi di dalam loop selamanya kami dan beberapa fungsi yang disertakan. Tidur akan memungkinkan eksekusi untuk berhenti dan untuk sementara memberikan sumber daya ke komputer. Saya telah menguji skrip ini pada prosesor yang cukup sederhana dan tidak mengalami masalah sama sekali. Tetapi jika Anda berada di mesin yang sangat tua, atau satu yang sudah disadap untuk sumber daya, Anda dapat mengubah jumlah detik bahwa tidur sedang digunakan di sini.

Hal pertama yang akan dilakukan oleh loop selamanya adalah melompat ke fungsi bernama engine (). Apa yang kami lakukan di sini persis sama dengan pemindaian pertama kami kecuali kami memasukkannya ke dalam array yang berbeda. Setelah fungsi itu dijalankan, kita sekarang kembali ke loop selamanya di mana pernyataan IF akan membandingkan jika kedua array ini sama. Jika mereka sama, array dari pemindaian kedua akan dikosongkan untuk mencegah nilai duplikat pada iterasi berikutnya dari loop. Namun, jika nilainya adalah perbedaan dalam dua array ini, kita akan melompat ke klausa yang lain yang mengarahkan kita ke fungsi interupsi kita.

Fungsi interupsi akan berhenti dan mengumumkan kepada pengguna bahwa daftar klien telah berubah. Dari sini kami akan memanggil fungsi bernama "dua kali" di mana kami menampilkan kepada pengguna konten alamat IP di array kedua. Kami sekarang akan bertanya kepada pengguna apakah mereka ingin memblokir alamat IP. Itu bisa berupa IP apa pun, bukan hanya yang ditampilkan. Jika pengguna menjawab "y" untuk ya mereka akan diminta untuk memasukkan alamat IP. Jika IP yang dimasukkan bukan NULL, kami akan melakukan ping IP ini untuk menambahkan alamat Mac ke cache ARP kami. Untuk alasan apa pun saat nmap ping jaringan itu tidak melakukan ini. Kemudian kami menggunakan ARP untuk memberi kami alamat MAC dari klien. Karena IP dapat dipindahkan dengan router yang tidak ingin kami blokir berdasarkan alamat IP. Setelah ini selesai, kami menggunakan pernyataan bersarang untuk memeriksa apakah alamat MAC sekarang kami simpan di $ mac is nol. Ini bagus untuk memeriksa kesalahan jika pengguna memasukkan serangkaian sampah. Jika alamat MAC tidak ada, kami memberi tahu pengguna bahwa klien ada atau telah meninggalkan jaringan dan melanjutkan pemantauan kami di loop selamanya. Jika alamat MAC memang ada, kami menambahkannya ke aturan iptables yang akan memblokir pengguna itu dari koneksi apa pun ke komputer kami. Saya harus mencatat di sini bahwa ini tidak memblokir Anda dari mengirim paket ke mesin itu, hanya lalu lintas yang masuk. Namun, ini tidak melindungi seluruh jaringan Anda. Hanya mesin yang Anda gunakan sampai aturan iptables Anda memerah. Jika Anda secara tidak sengaja memblokir klien yang menemukan Anda perlu terhubung ke Anda dapat melepaskan aturan ini dengan beberapa perintah iptables sederhana. Pernyataan IF berlanjut dengan memberi tahu pengguna bahwa alamat MAC dari IP yang dimasukkan sekarang diblokir dan menunjukkan klien secara online saat ini. Klien yang diblokir masih akan muncul di daftar ini karena kami hanya memblokirnya dari kami, bukan jaringan. Jika pengguna memilih untuk tidak memblokir klien, kami hanya akan menampilkan perubahan dalam jaringan dan kembali ke loop selamanya.

Terlepas dari apa yang dilakukan pengguna dalam fungsi interupsi, kami sekarang perlu memperbarui nilai array kami. Karena array kedua saat ini memegang nilai -nilai baru dari jaringan kami, kami perlu memberi makan itu ke array lain sebelum fungsi mesin mengisinya lagi. Pertama -tama kami menghapus array itu untuk mencegah nilai duplikat dan kemudian menyalin konten array kedua ke array pertama. Sekarang gunakan kosong array kedua dan kami siap untuk memulai loop dengan fungsi mesin.

Tentu saja ada satu fungsi yang saya lewatkan sampai sekarang. Anda mungkin telah memperhatikan bahwa pesan pertama kami kepada pengguna yang dikatakan menekan Control-C kapan saja untuk memblokir klien tambahan atau keluar. Perangkap kami memanggil fungsi pertama bernama control_c (). Yang saya lakukan di sini adalah bertanya kepada pengguna dalam pernyataan jika mereka ingin memblokir pengguna dengan cara yang hampir sama seperti sebelumnya. Anda akan melihat jika pengguna menjawab ya untuk pernyataan if ada baris baru di sini. “Bash Leecher.sh ”digunakan untuk memulai ulang skrip ini. Jika Anda telah menamai skrip ini sesuatu yang berbeda, Anda harus menyediakannya di sini. Kami mengeksekusi ulang skrip kami karena jebakan ingin tetap mengirim sigint dan membunuh naskahnya. Membuat contoh baru mencegah skrip dari sekarat yang tidak diinginkan. Namun, membuat instance baru tidak membiarkan Sigint selesai.

Anda mungkin juga memperhatikan bahwa kami menggunakan tidur sedikit lebih lama juga. Ini hanya untuk memberi pengguna waktu untuk membaca apa yang terjadi sebelum beralih ke instance baru kami dari skrip yang akan mengambil alih terminal ini. Jika pengguna telah memilih "tidak" daripada "ya", klausa yang lain hanya akan membiarkan skrip keluar. Kami juga pasti akan menggunakan Setterm untuk mengembalikan kursor kami atau kami tidak akan memilikinya di terminal ini meskipun skrip telah keluar.

Tujuan dari pemblokiran saat terbang itu mudah. Anda mungkin memiliki lebih dari satu klien untuk diblokir jika ada beberapa klien yang agresif. Anda mungkin memutuskan nanti setelah melewatkan kesempatan memblokir klien dalam fungsi interupsi yang Anda butuhkan. Atau mungkin Anda tahu ada sesuatu yang salah segera setelah Anda memulai skrip. Jika tidak ada klien baru yang datang atau ditinggalkan di jaringan yang dimaksud, kami tidak akan memiliki kesempatan untuk memblokir apa pun sampai mereka melakukannya.

Bagaimana skrip ini dapat ditingkatkan

Jelas mendengar bel sistem terus -menerus meledak karena positif palsu bisa menjengkelkan. Membuat skrip ini dapat membuat daftar putih klien yang Anda percaya mungkin akan mengurangi ini. Sistem lonceng pasti bisa mengganggu jika satu orang mengalami kesulitan tetap terhubung untuk jangka waktu yang lama.
Kadang -kadang Anda mungkin melihat beberapa klien beralih dari IP ke nama host. Banyak program, seperti Etherape, melakukan hal yang sama. Jika router Anda bertindak karena DNS Anda mungkin akan menunjukkan nama host terus menerus. Saya tidak berpikir ada di antara Anda yang ingin memblokir koneksi dengan router Anda. Namun, menawarkan parameter untuk beralih ke IP saja mungkin bagus untuk beberapa dari Anda.
Ada juga masalah kecil dengan forking skrip saat pengguna memblokir klien dengan control-c. Ini tidak memberikan bahaya kecuali pengguna memutuskan untuk memblokir ribuan klien dengan Control-C. Namun semua contoh naskah terbunuh saat keluar. Tapi karena kita akan pergi untuk dasar di sini, ini seharusnya baik -baik saja.

Sistem deteksi intrusi dengan bash

#!/bin/bash # interupsi dan keluar fungsi control_c () clear echo -e "Apakah Anda ingin memblokir koneksi dengan klien?\ n "echo -e" masukkan y atau n: "baca yn if [" $ yn "==" y "]; lalu echo -e" \ nenter alamat ip untuk memblokir: \ n "Baca IP jika [-n $ ip]; lalu echo -e "\ nnow mengambil alamat MAC untuk memblokir ... \ n" ping -c 1 $ ip> /dev /null mac = "ARP $ ip | grep eter | awk "cetak $ 3" if [-z $ mac]; Kemudian hapus echo -e "\ n *** klien tidak ada atau tidak lagi \ di jaringan ini ***" echo -e "\ nskipping action dan melanjutkan pemantauan.\ n \ n "tidur 2 leecher bash.SH EXIT 0 ELSE IPLABLES -A INPUT -M MAC --MAC -SUMBER $ MAC -J Drop CLEAR ECHO -E "\ nClient With Mac Address $ Mac sekarang \ diblokir.\ n "echo -e" Kami akan terus memantau perubahan \ di klien \ n \ n "sleep 2 bash leecher.sh keluar 0 fi fi lain jelas echo -e "\ n \ nleecher telah keluar \ n \ n" setterm -cursor pada rm -f $ pid Exit 0 fi # cetak pemindaian dari mesin () dua kali () g = 0 len = $ #kedua [@] untuk ((g = 0; g /dev /null mac = "arp $ ip | grep eter | awk" cetak $ 3 "if [-z $ mac]; lalu hapus echo -e "\ n *** Klien tidak ada atau tidak lagi pada \ jaringan ini ***" echo -e "\ nskipping action dan melanjutkan pemantauan.\ n \ n "else ptables -a input -m mac ---Mac -source $ mac -j drop clear echo -e" \ nclient dengan alamat mac $ mac sekarang diblokir.\ n "echo -e" Kami akan terus memantau perubahan \ di klien \ n \ n "echo -e" klien saat ini adalah: \ n "dua kali echo -e" \ nresuming Monitoring ... "fi fi lain yang jelas echo -e" Klien saat ini adalah: \ n "dua kali echo -e" melanjutkan pemantauan ... "FI # Fungsi untuk terus memantau engine perubahan ()  # scan Networks lagi untuk perbandingan perubahan. untuk subnet di $ (/sbin/ifconfig | awk '/inet addr/& & !/127.0.0.1/ && !A [$ 2] ++ \ print substr ($ 2,6) ') do kedua+= ("$ (nmap -sp $ subnet%.*.0/24 | AWK 'INDEX ($ 0, T) \ print $ i' t = "$ t" i = "$ i") ") Sleep 1 Done # Pastikan pengguna masuk sebagai root jika [[$ euid -Ne 0]]; lalu echo "skrip ini harus dijalankan sebagai root" 1> & 2 keluar 1 fi # periksa apakah nmap diinstal ifnmap = "type -p nmap" if [-z $ ifnmap]; lalu echo -e "\ n \ nnmap harus diinstal agar program ini berfungsi \ n "echo -e" hanya nmap 5.00 dan 5.21 didukung saat ini \ n "echo -e" Harap instal dan coba lagi "Keluar 0 fi jelas echo -e" \ now Finding Client di jaringan lokal Anda "Echo -e" Tekan Control -C kapan saja Untuk memblokir klien tambahan atau keluar \ n " # hapus file temp saat keluar dan biarkan kontrol-c keluar. TRAP CONTROL_C SIGINT # matikan Kursor Setterm -Cursor off # Buat beberapa array dan variabel menyatakan -sebuah deklarasi pertama -se kedua sid = 5.21 # Periksa versi NMAP jika [5.21 = $ (nmap --version | awk '/ nmap/ print $ 3')]; Kemudian i = 5 t = Laporkan lain i = 2 t = host fi # Dapatkan IP dari antarmuka dan jalankan pemindaian pertama untuk subnet di $ (/sbin/ifconfig | awk '/inet addr/&& !/127.0.0.1/ && !A [$ 2] ++ print \ substr ($ 2,6) ') Do First+= ("$ (nmap -sp $ subnet%.*.0/24 | AWK 'INDEX ($ 0, T) print $ i' \ t = "$ t" i = "$ i") ") Sleep 1 selesai echo -e" klien saat ini adalah: \ n "#display elemen array dan tambahkan Baris baru e = 0 len = $ #pertama [@] untuk ((e = 0; e < $len; e++ )); do echo -e "$first[$e]\n" done echo -e "Leecher is now monitoring for new clients." echo -e "\nAny changes with clients will be reported by the system bell." echo -e "If bell is not enabled details will log to this console." # Forever loop to keep monitoring constant for (( ; ; )) do engine if [[ $first[@] == $second[@] ]]; then second=( ) else interupt sleep 1 first=( ) first=("$second[@]") second=( ) fi done

Output sampel

Sekarang menemukan klien di jaringan Local (S) Press Control-C kapan saja untuk memblokir klien tambahan atau keluar dari klien saat ini adalah: 192.168.12.1 192.168.12.9 192.168.12.43 Mephistolist 10.0.0.121 10.0.0.137 10.0.0.140 Leecher sekarang memantau klien baru. Perubahan apa pun dengan klien akan dilaporkan oleh System Bell. Jika Bell tidak diaktifkan detail akan masuk ke konsol ini. ==================================================== ============ Daftar klien telah berubah! 192.168.12.9 192.168.12.43 Mephistolist 10.0.0.140 Apakah Anda ingin memblokir koneksi dengan klien? Masukkan y atau n: y masukkan alamat IP untuk memblokir: 192.168.12.9 =================================================== =========== Klien dengan alamat MAC 7c: ed: 8d: 9c: 93: 8e sekarang diblokir. Kami akan terus memantau perubahan pada klien ============================================ ===================

Tutorial Linux Terkait:

  • Cara memperluas manajer file thunar dengan tindakan khusus
  • Manajer Jaringan Linux GUI
  • Daftar Alat Linux Kali Terbaik untuk Pengujian Penetrasi dan ..
  • Cara meningkatkan dan men -debug skrip shell Anda dengan kerang
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Enkripsi disk penuh dengan Veracrypt di Ubuntu Linux
  • Cara mengelola koneksi nirkabel menggunakan IWD di Linux
  • Ubuntu 20.04 Pemantauan Sistem dengan Widget Conky
  • Ubuntu 22.04 Pemantauan Sistem dengan Widget Conky