Pengenalan

Pengenalan

Bagi kebanyakan kita penyulitan WEP telah menjadi jenaka. WPA dengan cepat pergi dengan cara yang sama terima kasih kepada banyak alat seperti aircrack-ng. Di samping itu, rangkaian berwayar bukanlah orang asing kepada tetamu yang tidak diingini. Sesiapa yang serius mengenai keselamatan harus mempunyai sistem pengesanan pencerobohan yang baik di kotak alat mereka.

Sudah ada beberapa IDS (sistem pengesanan pencerobohan) yang sangat baik. Mengapa ada yang mahu mencipta semula roda di Bash??? Terdapat beberapa sebab untuk ini. Jelas skrip bash boleh menjadi sangat ringan. Terutamanya berbanding dengan beberapa program GUI yang ada di luar sana. Walaupun program seperti Etherape menghisap kami dengan warna yang cantik, mereka memerlukan pemantauan yang berterusan untuk mengetahui apabila rangkaian telah berubah. Sekiranya anda seperti kebanyakan kita, anda hanya menggunakan komputer untuk dua perkara, bekerja dan bermain. Dengan menggunakan loceng sistem untuk memberi amaran kepada pelanggan baru dalam talian, anda boleh meninggalkan skrip ini berjalan dan tidak perlu mempunyai jam tangan yang berterusan. Sekiranya anda membuat keputusan, anda ingin memeriksa apa yang dilakukan oleh pelanggan yang mencurigakan dengan lebih teliti, anda sentiasa boleh membuka Etherape, Wireshark, atau alat pilihan anda. Tetapi sehingga anda menghadapi masalah, anda boleh bermain atau mengusahakan perkara lain.

Bonus lain untuk program ini ialah ia hanya akan menunjukkan alamat IP di rangkaian yang disambungkan ke komputer anda. Sekiranya anda menganjurkan pelayan yang sibuk atau mungkin memuat turun distro Linux terkini walaupun pelanggan torrent, ID boleh dibanjiri dengan sambungan. Mencari pelanggan jahat baru boleh seperti mencari jarum dalam timbunan jerami. Walaupun skrip ini mungkin kelihatan mudah berbanding dengan ID lain, kesederhanaan juga boleh mempunyai faedahnya.

Apa yang anda perlukan

NMAP diperlukan untuk skrip ini berfungsi. Kami tidak akan melakukan pengimbasan pelabuhan. Walau bagaimanapun, untuk menjadikan skrip ini pantas, kami memerlukan sesuatu yang lebih baik daripada ping biasa. Parameter NMAP's -SP hanya akan menggunakan imbasan ping untuk memeriksa sama ada pelanggan naik. Terdapat beberapa variasi bagaimana nmap mengeluarkan maklumat antara versi. Setakat ini skrip ini hanya diuji menggunakan NMAP 5.00 (Debian memerah) dan 5.21 (Debian Sid). Anda mungkin mempunyai nasib dengan distro lain dan versi nmap. Walau bagaimanapun, dengan semua kemungkinan saya hanya dapat menyokong pasangan pada masa ini.

Anda juga perlu memastikan anda menggunakan versi Bash 4.0 atau ke atas. Anda harus mencari ini di mana -mana distro yang stabil atau lebih baru. Tetapi sebarang versi bash di bawah yang tidak akan menyokong susunan yang digunakan dalam skrip ini. Akses root juga diperlukan atau arahan ARP tidak akan dapat menyekat mana -mana pelanggan.

CATATAN: Skrip ini tidak berfungsi dengan baik dengan antara muka rangkaian maya seperti VMware, Virtualbox dan sebagainya.

Melaksanakan skrip

Untuk menjalankan skrip ini hanya berjalan:

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

Pada masa ini tidak ada parameter untuk ditetapkan.

Bagaimana skrip ini berfungsi

Langkau melepasi semua fungsi permulaan buat masa ini supaya kita dapat melihat aliran sebenar skrip. Perkara pertama yang kami lakukan ialah memeriksa bahawa pengguna adalah root dan nmap dipasang pada sistem semasa. Sekiranya bukan skrip akan menjelaskan bahawa istimewa akar diperlukan atau nmap itu adalah kebergantungan di sini dan keluar. Sekiranya keperluan ini dipenuhi, skrip akan melangkau dengan ucapan kepada pengguna dan menerangkan beberapa ciri. Saya menggunakan setterm untuk mematikan kursor. Itu pasti mata estetika.

Saya menetapkan perangkap control-c untuk membuat skrip berhenti. Walaupun anda mungkin berfikir 'tunggu, kawalan-c biasanya menghentikan program baris arahan!'Walaupun ini biasanya benar, saya dapati gelung selamanya yang kami gunakan kemudian untuk menyebabkan masalah menghentikan skrip dengan Control-C. Dengan menggunakan perangkap dengan Sigint, kami dapat membuat kerja ini. Kami menetapkan beberapa pemboleh ubah dalam berikut jika pernyataan untuk memeriksa versi NMAP yang disokong yang kami gunakan di sini. Ini penting kerana output sama sekali berbeza antara versi ini. Perkara pertama yang kami lakukan di sini adalah untuk membuat gelung yang pertama akan mendapat versi nmap yang kami gunakan di sini. Ini penting kerana output sama sekali berbeza antara versi ini. Perkara seterusnya yang kami lakukan di sini adalah untuk membuat gelung yang pertama akan mendapat alamat IP semua antara muka kami yang sedang dalam talian. Kami juga menggunakan Awk di sini untuk menapis 127.0.0.1 kerana tidak perlu mengimbas alamat gelung balik. Plus kami menggunakan AWK untuk memotong oktet akhir di alamat IP ini. Contohnya, jika antara muka ETH0 mempunyai IP 192.168.1.12 Kami tidak memerlukan 12 akhir. Imbasan normal subnet seperti ini akan menjadi "nmap -sp 192.168.1.0/24 "Jadi buat masa ini gelung ini akan melepaskan mana -mana IP di mana -mana antara muka aktif dan menyampaikannya pada satu masa untuk nmap sehingga kami selesai. Di dalam gelung kami menerima nilai untuk IP antara muka dan tambah ".0/24 "untuk mengimbas seluruh rangkaian dalam julat tersebut.(Atau 0-255) Kami akan lulus pembolehubah yang betul untuk versi nmap jadi awk tahu di mana untuk mendapatkan IP dikembalikan dari setiap imbasan. Semua nilai yang dikembalikan dari setiap imbasan akan dipasang ke dalam pelbagai. Selepas imbasan pertama semua rangkaian antara muka anda, kami hanya akan menggunakan gelung lain untuk memaparkan hasil awal kepada pengguna.

Saya harus menunjukkan di sini apa mesej berikut yang baru kepada pengguna. Sekiranya anda ingin mendengar loceng sistem, ia mesti didayakan dalam tetapan desktop anda. Lokasi ini akan berbeza -beza bergantung kepada versi KDE, GNOME, Xface, atau apa sahaja desktop yang anda gunakan. Walau bagaimanapun, anda mungkin berfikir bahawa hanya kerana anda telah mendengar loceng sebelum ia diaktifkan. Saya perhatikan OS saya mempunyai loceng yang sama untuk memberitahu saya bateri komputer riba saya akan mati. Sila periksa cara membolehkan loceng sistem di distro anda jika anda mengalami masalah.

Seterusnya adalah gelung selamanya untuk mengekalkan pengimbasan dan pemantauan skrip ini tetap. Sekiranya anda baru untuk bash, atau selamanya gelung, ini mungkin akan mempersoalkan mengapa kami akan menggunakan sesuatu yang merupakan gelung yang tidak terhingga. Ramai di antara anda tidak ragu -ragu telah diberi amaran tentang bahaya gelung yang tidak terhingga dan bagaimana mereka boleh merosakkan mesin. Seperti yang anda perhatikan, kami menggunakan pernyataan tidur selepas imbasan pertama. Kami akan menggunakannya lagi di dalam gelung selama -lamanya dan beberapa fungsi yang termasuk. Tidur akan membolehkan pelaksanaan berhenti sejenak dan sementara memberikan sumber ke komputer. Saya telah menguji skrip ini pada pemproses yang cukup sederhana dan tidak mengalami masalah sama sekali. Tetapi jika anda berada di mesin yang sangat lama, atau yang ditoreh untuk sumber, anda boleh menukar bilangan detik yang tidur di sini.

Perkara pertama yang akan dilakukan oleh Loop Forever kami adalah melompat ke fungsi bernama Engine (). Apa yang kita lakukan di sini adalah sama seperti imbasan pertama kita kecuali kita memasukkannya ke dalam pelbagai yang berbeza. Setelah fungsi itu berlari, kami kini kembali ke gelung selama -lamanya di mana pernyataan jika akan dibandingkan jika kedua -dua tatasusunan ini sama. Sekiranya mereka sama, array dari imbasan kedua akan dikosongkan untuk mencegah nilai pendua pada lelaran seterusnya gelung. Walau bagaimanapun, jika nilai adalah perbezaan dalam kedua -dua tatasusunan ini, kami akan melompat ke klausa lain yang mengalihkan kami ke fungsi mengganggu kami.

Fungsi Interrupt akan berhenti dan mengumumkan kepada pengguna bahawa senarai pelanggan telah berubah. Dari sini kita akan memanggil fungsi bernama "dua kali" di mana kita memaparkan kepada pengguna kandungan alamat IP dalam array kedua. Kami sekarang akan meminta pengguna jika mereka mahu menyekat alamat IP. Ia boleh menjadi IP, bukan hanya yang dipaparkan. Sekiranya pengguna menjawab "y" untuk ya, mereka akan diminta memasukkan alamat IP. Sekiranya IP yang dimasukkan bukanlah batal, kami akan ping IP ini untuk menambah alamat MAC ke cache ARP kami. Atas sebab apa pun ketika nmap mengemukakan rangkaian itu tidak melakukan ini. Kemudian kami menggunakan ARP untuk memberi kami alamat MAC pelanggan. Oleh kerana IP boleh ditugaskan semula oleh penghala, kami tidak mahu menyekat oleh alamat IP. Sebaik sahaja ini selesai, kami menggunakan pernyataan bersarang jika untuk memeriksa sama ada alamat MAC yang kami simpan dalam $ mac adalah null. Ini bagus untuk pemeriksaan ralat sekiranya pengguna memasuki rentetan sampah. Sekiranya alamat MAC tidak wujud, kami memberitahu pengguna bahawa klien ada atau telah meninggalkan rangkaian dan meneruskan pemantauan kami di gelung selama -lamanya. Sekiranya alamat MAC wujud, kami menambahkannya kepada peraturan iptables yang akan menyekat pengguna itu dari sebarang sambungan ke komputer kami. Saya harus perhatikan di sini bahawa ini tidak menghalang anda daripada menghantar paket ke mesin itu, hanya trafik yang masuk kepada anda. Namun, ini tidak melindungi seluruh rangkaian anda. Hanya mesin yang anda gunakan sehingga peraturan iptables anda dibuang. Sekiranya anda secara tidak sengaja menyekat pelanggan yang mendapati anda perlu menyambung kepada anda boleh melepaskan peraturan ini dengan beberapa arahan iptables mudah. Kenyataan IF diteruskan dengan memberitahu pengguna bahawa alamat MAC IP yang dimasukkan kini disekat dan menunjukkan pelanggan semasa dalam talian. Pelanggan yang disekat masih akan muncul dalam senarai ini kerana kami hanya menyekatnya dari kami, bukan rangkaian. Sekiranya pengguna memilih untuk tidak menyekat pelanggan, kami hanya akan memaparkan perubahan dalam rangkaian dan kembali ke gelung selamanya.

Tidak kira apa yang pengguna lakukan dalam fungsi mengganggu, sekarang kita perlu mengemas kini nilai tatasusunan kami. Oleh kerana array kedua kini memegang nilai baru rangkaian kami, kami perlu memberi makan kepada array yang lain sebelum fungsi enjin mengisi lagi. Kami mula -mula membersihkan bahawa array untuk mengelakkan sebarang nilai pendua dan kemudian menyalin kandungan array kedua ke array pertama. Sekarang gunakan kosongkan array kedua dan kami sudah bersedia untuk memulakan gelung dengan fungsi enjin.

Sudah tentu ada satu fungsi yang saya langkau sehingga sekarang. Anda mungkin menyedari bahawa mesej pertama kami kepada pengguna berkata untuk memukul Control-C pada bila-bila masa untuk menyekat pelanggan tambahan atau keluar. Perangkap kami memanggil fungsi pertama bernama Control_C (). Yang saya lakukan di sini adalah meminta pengguna dalam pernyataan jika mereka mahu menyekat pengguna dengan cara yang sama seperti sebelumnya. Anda akan melihat jika pengguna menjawab ya kepada pernyataan jika ada baris baru di sini. "Bash Leecher.sh "digunakan untuk memulakan semula skrip ini. Sekiranya anda telah menamakan skrip ini sesuatu yang berbeza, anda mesti membekalkannya di sini. Kami melaksanakan semula skrip kami kerana perangkap masih mahu menghantar Sigint dan membunuh skrip. Membuat contoh baru menghalang skrip daripada mati yang tidak diingini. Walau bagaimanapun, membuat contoh baru tidak membiarkan Sigint selesai.

Anda mungkin juga menyedari bahawa kami juga menggunakan tidur lebih lama. Ini hanya untuk memberi masa pengguna untuk membaca apa yang berlaku sebelum beralih ke contoh baru skrip kami yang akan mengambil alih terminal ini. Sekiranya pengguna telah memilih "tidak" dan bukannya "ya" klausa lain hanya akan membenarkan skrip keluar. Kami juga pasti akan menggunakan setterm untuk mengembalikan kursor kami atau kami tidak akan mempunyai satu di terminal ini walaupun skrip telah keluar.

Tujuan untuk menyekat on-the-fly adalah mudah. Anda mungkin mempunyai lebih daripada satu pelanggan untuk menyekat jika terdapat banyak pelanggan yang agresif. Anda mungkin membuat keputusan kemudian setelah melangkau peluang menyekat klien dalam fungsi mengganggu yang anda perlukan. Atau mungkin anda tahu ada sesuatu yang salah sebaik sahaja anda memulakan skrip. Sekiranya tidak ada pelanggan baru yang datang atau ditinggalkan di rangkaian yang dipersoalkan, kami tidak akan berpeluang menyekat apa -apa sehingga mereka melakukannya.

Bagaimana skrip ini dapat diperbaiki

Jelas mendengar loceng sistem sentiasa hilang kerana positif palsu boleh menjengkelkan. Membuat skrip ini dapat pelanggan putih yang anda percayai mungkin akan mengurangkan ini. Loceng sistem pasti dapat menyusahkan jika seseorang menghadapi masalah yang dihubungkan untuk jangka masa yang panjang.
Kadang -kadang anda dapat melihat beberapa pelanggan beralih dari IP ke nama host. Banyak program, seperti Etherape, melakukan perkara yang sama. Sekiranya penghala anda bertindak kerana DNS anda mungkin akan menunjukkan nama tuan rumah secara berterusan. Saya tidak fikir ada di antara anda yang ingin menyekat sambungan dengan penghala anda. Walau bagaimanapun, menawarkan parameter untuk beralih ke IP hanya mungkin bagus untuk sebahagian daripada anda.
Terdapat juga masalah kecil dengan skrip yang berlarutan apabila pengguna menyekat klien dengan Control-C. Ini tidak menimbulkan bahaya melainkan pengguna memutuskan untuk menyekat beribu-ribu pelanggan dengan Control-C. Walau bagaimanapun semua contoh skrip dibunuh semasa keluar. Tetapi kerana kita akan mendapat asas di sini, ini semestinya baik -baik saja.

Sistem pengesanan pencerobohan dengan bash

#!/bin/bash # interupt dan keluar fungsi control_c () clear echo -e "Adakah anda ingin menyekat sambungan dengan pelanggan?\ n "echo -e" masukkan y atau n: "baca yn if [" $ yn "==" y "]; maka echo -e" \ nenter IP alamat untuk menyekat: \ n "baca ip if [-n $ ip]; kemudian echo -e "\ nnow mengambil alamat mac untuk menyekat ... \ n" ping -c 1 $ ip> /dev /null mac = "arp $ ip | Grep Ether | awk "print $ 3" jika [-z $ mac]; kemudian jelas echo -e "\ n *** pelanggan tidak wujud atau tidak lagi \ di rangkaian ini ***" echo -e "\ nskipping action dan meneruskan pemantauan.\ n \ n "tidur 2 bash leecher.SH EXIT 0 IPTABLES lain -a input -m mac - -mac -source $ mac -j drop clear echo -e "\ nclient with mac alamat $ mac sekarang \ disekat.\ n "echo -e" kami akan terus memantau perubahan \ dalam klien \ n \ n "tidur 2 bash leecher.sh exit 0 fi fi else clear echo -e "\ n \ nleecher telah keluar \ n \ n" setterm -cursor pada rm -f $ pid exit 0 fi # Cetak imbasan dari enjin () dua kali () g = 0 len = $ #kedua [@] untuk ((g = 0; g /dev /null mac = "arp $ ip | grep ether | awk" print $ 3 "if [-z $ mac]; echo -e "\ n *** pelanggan tidak wujud atau tidak lagi di rangkaian ini ***" echo -e "\ nskipping tindakan dan meneruskan pemantauan.\ n \ n "lain iptables -a input -m mac - -mac -source $ mac -j drop clear echo -e" \ nclient with mac alamat $ mac kini disekat.\ n "echo -e" Kami akan terus memantau perubahan \ dalam pelanggan \ n \ n "echo -e" pelanggan semasa adalah: \ n "dua kali echo -e" \ nresuming pemantauan ... "fi fi else clear echo -e" Pelanggan semasa adalah: \ n "dua kali echo -e" menyambung semula pemantauan ... "fi # berfungsi untuk terus memantau untuk sebarang perubahan enjin ()  # scan networks sekali lagi untuk perbandingan perubahan. untuk subnet dalam $ (/sbin/ifconfig | awk '/inet addr/&& !/127.0.0.1/ && !A [$ 2] ++ \ print substr ($ 2,6) ') lakukan kedua+= ("$ (nmap -sp $ subnet%.*.0/24 | indeks awk '($ 0, t) \ print $ i' t = "$ t" i = "$ i") ") tidur 1 selesai # pastikan pengguna log masuk sebagai akar jika [[$ euid -ne 0]]; Kemudian echo "skrip ini mesti dijalankan sebagai akar" 1> & 2 keluar 1 fi # periksa jika nmap dipasang ifnmap = "type -p nmap" jika [-z $ ifnmap]; maka echo -e "\ n \ nnmap mesti dipasang untuk program ini untuk berfungsi \ n "echo -e" hanya nmap 5.00 dan 5.21 disokong pada masa ini \ n "echo -e" Sila pasang dan cuba lagi "Keluar 0 fi Clear Echo -e" \ nnow mencari pelanggan di rangkaian tempatan anda "echo -e" control -c pada bila -bila masa Untuk menyekat pelanggan tambahan atau keluar \ n " # keluarkan fail temp pada keluar dan biarkan Control-C keluar. perangkap control_c sigint # matikan kursor setterm -cursor off # Buat beberapa tatasusunan dan pembolehubah mengisytiharkan -a pertama mengisytiharkan -a sid kedua = 5.21 # Periksa versi NMAP jika [5.21 = $ (nmap --version | awk '/ nmap/ print $ 3')]; Kemudian i = 5 t = laporkan lain i = 2 t = tuan rumah fi # dapatkan ip dari antara muka dan jalankan imbasan pertama untuk subnet dalam $ (/sbin/ifconfig | awk '/inet addr/&& !/127.0.0.1/ && !A [$ 2] ++ print \ substr ($ 2,6) ') lakukan pertama+= ("$ (nmap -sp $ subnet%.*.0/24 | indeks awk '($ 0, t) cetak $ i' \ t = "$ t" i = "$ i") ") tidur 1 dilakukan echo -e" pelanggan semasa adalah: \ n "#display array elements dan tambah garis baru e = 0 len = $ #first [@] 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 mencari pelanggan di rangkaian tempatan anda (s) control-c pada bila-bila masa untuk menyekat pelanggan tambahan atau keluar dari pelanggan semasa 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 kini memantau pelanggan baru. Sebarang perubahan dengan pelanggan akan dilaporkan oleh loceng sistem. Sekiranya Bell tidak diaktifkan butiran akan log ke konsol ini. ================================================= =========== Senarai pelanggan telah berubah! 192.168.12.9 192.168.12.43 Mephistolist 10.0.0.140 Adakah anda ingin menyekat sambungan dengan pelanggan? Masukkan Y atau N: Y Masukkan Alamat IP untuk menyekat: 192.168.12.9 ================================================ ========== pelanggan dengan alamat MAC 7c: ed: 8d: 9c: 93: 8e kini disekat. Kami akan terus memantau perubahan pelanggan ============================================ ==================

Tutorial Linux Berkaitan:

  • Cara Memperluas Pengurus Fail Thunar dengan Tindakan Kustom
  • Pengurus Rangkaian Linux GUI
  • Senarai alat Kali Linux terbaik untuk ujian penembusan dan ..
  • Cara memperbaiki dan menyahpepijat skrip shell anda dengan shellcheck
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Bolehkah linux mendapat virus? Meneroka kelemahan Linux ..
  • Penyulitan cakera penuh dengan veracrypt di Ubuntu linux
  • Cara Mengurus Sambungan Tanpa Wayar Menggunakan IWD di Linux
  • Ubuntu 20.04 Pemantauan Sistem dengan Widget Conky
  • Ubuntu 22.04 Pemantauan Sistem dengan Widget Conky