Python İle Güvenlik Duvarlarını Tespit Edin

Yagami Light0

Katılımcı Üye
5 May 2023
717
324
merhaba ,sistemlerdeki guvenlik duvarlarini bula bilen bir kod yazmaya calistim , kendim test etdim 100/100 sonuc verdigini idda edemem .
Onerilerinden dolayi @alexandre20 @yosabe06 hocalarima tesekkur ederim

Python:
import requests
from bs4 import BeautifulSoup, Comment
import re
def headerarama(cevap):
    headerlar = cevap.headers
    waflar = set()
    for header_isim, header_deger in headerlar.items():
        for waf_isim in liste:
            if re.search(waf_isim, header_isim, re.IGNORECASE) or re.search(waf_isim, header_deger, re.IGNORECASE):
                waflar.add(waf_isim)
    return waflar or set()
def htmlara(html_icerik):
    soup = BeautifulSoup(html_icerik, 'html.parser')
    waflar = set()
    yorumlar = soup.find_all(string=lambda text: isinstance(text, Comment))
    for yorum in yorumlar:
        for waf_isim in liste:
            if waf_isim.lower() in yorum.lower():
                waflar.add(waf_isim)
    return waflar or set()
def cevapdara(cevap):
    waflar = set()
    for waf_isim in liste:
        if waf_isim.lower() in cevap.text.lower():
            waflar.add(waf_isim)
    return waflar or set()
def wafbul(url):
    cevap = requests.get(url)
    header_waflar = headerarama(cevap)
    html_waflar = htmlara(cevap.text)
    cevap_waflar = cevapdara(cevap)
    tespitler = header_waflar.union(html_waflar).union(cevap_waflar)
    return tespitler
liste = [
    'aesecure', 'airlock', 'aliyundun', 'astra', 'awaf', 'barracuda', 'bekchy', 'bigip', 'binarysec',
    'blockdos', 'bluedon', 'bulletproof', 'cisco', 'cloudflare', 'comodo', 'denyall', 'distil',
    'dotdefender', 'f5', 'fortiweb', 'fortinet', 'frontdoor', 'greywizard', 'hyperguard', 'incapsula', 'indusguard',
    'isaserver', 'jiasule', 'kona', 'limelight', 'litespeed', 'malcare', 'modsecurity', 'neustar', 'newdefend',
    'nsfocus', 'naxsi', 'onmessage', 'openresty', 'paloalto', 'perimeterx', 'radware', 'reblaze', 'rsfirewall',
    'safedog', 'safeline', 'secucloud', 'sectigo', 'secureentry', 'sentry', 'shadowd', 'shield', 'sitelock',
    'sonicwall', 'sophos', 'stackpath', 'sucuri', 'trustwave', 'wallarm', 'websecurify', 'webshield', 'webtotem',
    'yundun', 'yunjiasu', 'zenedge',
    'a10', 'ace', 'akamai', 'appgate', 'armorlogic', 'aruba', 'azure', 'barracudawebappfirewall', 'bitninja', 'checkpoint',
    'denypal', 'distil', 'fortiguard', 'imperva', 'kaspersky', 'modsecurity', 'netscaler', 'naxsi',
    'varnish', 'wallarm', 'wordfence', 'zscaler'
]
url = input("URL : ")
tespitler = wafbul(url)
if tespitler:
    print("Bulunanlar :", tespitler)
else:
    print("Bulunmadi")
Anlatim
headerarama()
: koddaki bu fonksiyon http headerlerini inceleyerek WAF belirtilerini arar (cf-ray vb. ) . Headerler icinde gezinerek, header ismi(name) veya header degeri (value) içinde WAF isimlerinin geçip geçmediğini düzenli ifadelerle(import re amaci buydu) kontrol eder.
htmlara() : html(parse edilmis) içeriği üzerinde gezinerek WAF belirtilerini bulmaya calisir . BeautifulSoup kütüphanesi kullanarak html içeriğini okur ve html (verdigimiz urlde request yapinca karsimiza gelen sayfadaki) yorumları (comment) içerisinde WAF isimleri arar.
cevapdara() : Bu fonksiyon http yanıtının (response) metini içeriğinde doğrudan WAF belirtilerini arar. Metin içeriği üzerinde doğrudan bir arama yapar(onceden belirttigim liste icinde) ve WAF isimlerini içeren kisimlari bulmaya calisir.
wafbul(): Bu aslinda bizim ana fonksiyonumz, cunki verilen bir urle http isteği gönderir ve yanıtı alır. Ardından, bu yanıtı önce headerarama(), htmlara() ve cevapdara() fonksiyonlarına göndererek her birinin WAF belirtilerini tespit etmeye sağlar. Son olarak, tüm tespit edilen WAF belirtilerini (yukarida anlattigim 3 fonksiyonda buldugu belirtileri) birleştirerek bir set oluşturur ve bu seti ciktiya verir.
Firewall Listesi :
Listeye ekleme yaparsaniz sevinirim (listeyi yapay zeka kullanarak aldim)

liste = [
'aesecure', 'airlock', 'aliyundun', 'astra', 'awaf', 'barracuda', 'bekchy', 'bigip', 'binarysec',
'blockdos', 'bluedon', 'bulletproof', 'cisco', 'cloudflare', 'comodo', 'denyall', 'distil',
'dotdefender', 'f5', 'fortiweb', 'fortinet', 'frontdoor', 'greywizard', 'hyperguard', 'incapsula', 'indusguard',
'isaserver', 'jiasule', 'kona', 'limelight', 'litespeed', 'malcare', 'modsecurity', 'neustar', 'newdefend',
'nsfocus', 'naxsi', 'onmessage', 'openresty', 'paloalto', 'perimeterx', 'radware', 'reblaze', 'rsfirewall',
'safedog', 'safeline', 'secucloud', 'sectigo', 'secureentry', 'sentry', 'shadowd', 'shield', 'sitelock',
'sonicwall', 'sophos', 'stackpath', 'sucuri', 'trustwave', 'wallarm', 'websecurify', 'webshield', 'webtotem',
'yundun', 'yunjiasu', 'zenedge',
'a10', 'ace', 'akamai', 'appgate', 'armorlogic', 'aruba', 'azure', 'barracudawebappfirewall', 'bitninja', 'checkpoint',
'denypal', 'distil', 'fortiguard', 'imperva', 'kaspersky', 'modsecurity', 'netscaler', 'naxsi',
'varnish', 'wallarm', 'wordfence', 'zscaler'
]
 

Butcherb3y

Uzman üye
1 Eyl 2022
1,604
1,189
Anıtkabir
merhaba ,sistemlerdeki guvenlik duvarlarini bula bilen bir kod yazmaya calistim , kendim test etdim 100/100 sonuc verdigini idda edemem .
Onerilerinden dolayi @alexandre20 @yosabe06 hocalarima tesekkur ederim

Python:
import requests
from bs4 import BeautifulSoup, Comment
import re
def headerarama(cevap):
    headerlar = cevap.headers
    waflar = set()
    for header_isim, header_deger in headerlar.items():
        for waf_isim in liste:
            if re.search(waf_isim, header_isim, re.IGNORECASE) or re.search(waf_isim, header_deger, re.IGNORECASE):
                waflar.add(waf_isim)
    return waflar or set()
def htmlara(html_icerik):
    soup = BeautifulSoup(html_icerik, 'html.parser')
    waflar = set()
    yorumlar = soup.find_all(string=lambda text: isinstance(text, Comment))
    for yorum in yorumlar:
        for waf_isim in liste:
            if waf_isim.lower() in yorum.lower():
                waflar.add(waf_isim)
    return waflar or set()
def cevapdara(cevap):
    waflar = set()
    for waf_isim in liste:
        if waf_isim.lower() in cevap.text.lower():
            waflar.add(waf_isim)
    return waflar or set()
def wafbul(url):
    cevap = requests.get(url)
    header_waflar = headerarama(cevap)
    html_waflar = htmlara(cevap.text)
    cevap_waflar = cevapdara(cevap)
    tespitler = header_waflar.union(html_waflar).union(cevap_waflar)
    return tespitler
liste = [
    'aesecure', 'airlock', 'aliyundun', 'astra', 'awaf', 'barracuda', 'bekchy', 'bigip', 'binarysec',
    'blockdos', 'bluedon', 'bulletproof', 'cisco', 'cloudflare', 'comodo', 'denyall', 'distil',
    'dotdefender', 'f5', 'fortiweb', 'fortinet', 'frontdoor', 'greywizard', 'hyperguard', 'incapsula', 'indusguard',
    'isaserver', 'jiasule', 'kona', 'limelight', 'litespeed', 'malcare', 'modsecurity', 'neustar', 'newdefend',
    'nsfocus', 'naxsi', 'onmessage', 'openresty', 'paloalto', 'perimeterx', 'radware', 'reblaze', 'rsfirewall',
    'safedog', 'safeline', 'secucloud', 'sectigo', 'secureentry', 'sentry', 'shadowd', 'shield', 'sitelock',
    'sonicwall', 'sophos', 'stackpath', 'sucuri', 'trustwave', 'wallarm', 'websecurify', 'webshield', 'webtotem',
    'yundun', 'yunjiasu', 'zenedge',
    'a10', 'ace', 'akamai', 'appgate', 'armorlogic', 'aruba', 'azure', 'barracudawebappfirewall', 'bitninja', 'checkpoint',
    'denypal', 'distil', 'fortiguard', 'imperva', 'kaspersky', 'modsecurity', 'netscaler', 'naxsi',
    'varnish', 'wallarm', 'wordfence', 'zscaler'
]
url = input("URL : ")
tespitler = wafbul(url)
if tespitler:
    print("Bulunanlar :", tespitler)
else:
    print("Bulunmadi")
Anlatim
headerarama()
: koddaki bu fonksiyon http headerlerini inceleyerek WAF belirtilerini arar (cf-ray vb. ) . Headerler icinde gezinerek, header ismi(name) veya header degeri (value) içinde WAF isimlerinin geçip geçmediğini düzenli ifadelerle(import re amaci buydu) kontrol eder.
htmlara() : html(parse edilmis) içeriği üzerinde gezinerek WAF belirtilerini bulmaya calisir . BeautifulSoup kütüphanesi kullanarak html içeriğini okur ve html (verdigimiz urlde request yapinca karsimiza gelen sayfadaki) yorumları (comment) içerisinde WAF isimleri arar.
cevapdara() : Bu fonksiyon http yanıtının (response) metini içeriğinde doğrudan WAF belirtilerini arar. Metin içeriği üzerinde doğrudan bir arama yapar(onceden belirttigim liste icinde) ve WAF isimlerini içeren kisimlari bulmaya calisir.
wafbul(): Bu aslinda bizim ana fonksiyonumz, cunki verilen bir urle http isteği gönderir ve yanıtı alır. Ardından, bu yanıtı önce headerarama(), htmlara() ve cevapdara() fonksiyonlarına göndererek her birinin WAF belirtilerini tespit etmeye sağlar. Son olarak, tüm tespit edilen WAF belirtilerini (yukarida anlattigim 3 fonksiyonda buldugu belirtileri) birleştirerek bir set oluşturur ve bu seti ciktiya verir.
Firewall Listesi :
Listeye ekleme yaparsaniz sevinirim (listeyi yapay zeka kullanarak aldim)

liste = [
'aesecure', 'airlock', 'aliyundun', 'astra', 'awaf', 'barracuda', 'bekchy', 'bigip', 'binarysec',
'blockdos', 'bluedon', 'bulletproof', 'cisco', 'cloudflare', 'comodo', 'denyall', 'distil',
'dotdefender', 'f5', 'fortiweb', 'fortinet', 'frontdoor', 'greywizard', 'hyperguard', 'incapsula', 'indusguard',
'isaserver', 'jiasule', 'kona', 'limelight', 'litespeed', 'malcare', 'modsecurity', 'neustar', 'newdefend',
'nsfocus', 'naxsi', 'onmessage', 'openresty', 'paloalto', 'perimeterx', 'radware', 'reblaze', 'rsfirewall',
'safedog', 'safeline', 'secucloud', 'sectigo', 'secureentry', 'sentry', 'shadowd', 'shield', 'sitelock',
'sonicwall', 'sophos', 'stackpath', 'sucuri', 'trustwave', 'wallarm', 'websecurify', 'webshield', 'webtotem',
'yundun', 'yunjiasu', 'zenedge',
'a10', 'ace', 'akamai', 'appgate', 'armorlogic', 'aruba', 'azure', 'barracudawebappfirewall', 'bitninja', 'checkpoint',
'denypal', 'distil', 'fortiguard', 'imperva', 'kaspersky', 'modsecurity', 'netscaler', 'naxsi',
'varnish', 'wallarm', 'wordfence', 'zscaler'
]
Ellerinize sağlık
 

ACE Veen

Uzman üye
4 Şub 2023
1,111
563
Belirsiz
merhaba ,sistemlerdeki guvenlik duvarlarini bula bilen bir kod yazmaya calistim , kendim test etdim 100/100 sonuc verdigini idda edemem .
Onerilerinden dolayi @alexandre20 @yosabe06 hocalarima tesekkur ederim

Python:
import requests
from bs4 import BeautifulSoup, Comment
import re
def headerarama(cevap):
    headerlar = cevap.headers
    waflar = set()
    for header_isim, header_deger in headerlar.items():
        for waf_isim in liste:
            if re.search(waf_isim, header_isim, re.IGNORECASE) or re.search(waf_isim, header_deger, re.IGNORECASE):
                waflar.add(waf_isim)
    return waflar or set()
def htmlara(html_icerik):
    soup = BeautifulSoup(html_icerik, 'html.parser')
    waflar = set()
    yorumlar = soup.find_all(string=lambda text: isinstance(text, Comment))
    for yorum in yorumlar:
        for waf_isim in liste:
            if waf_isim.lower() in yorum.lower():
                waflar.add(waf_isim)
    return waflar or set()
def cevapdara(cevap):
    waflar = set()
    for waf_isim in liste:
        if waf_isim.lower() in cevap.text.lower():
            waflar.add(waf_isim)
    return waflar or set()
def wafbul(url):
    cevap = requests.get(url)
    header_waflar = headerarama(cevap)
    html_waflar = htmlara(cevap.text)
    cevap_waflar = cevapdara(cevap)
    tespitler = header_waflar.union(html_waflar).union(cevap_waflar)
    return tespitler
liste = [
    'aesecure', 'airlock', 'aliyundun', 'astra', 'awaf', 'barracuda', 'bekchy', 'bigip', 'binarysec',
    'blockdos', 'bluedon', 'bulletproof', 'cisco', 'cloudflare', 'comodo', 'denyall', 'distil',
    'dotdefender', 'f5', 'fortiweb', 'fortinet', 'frontdoor', 'greywizard', 'hyperguard', 'incapsula', 'indusguard',
    'isaserver', 'jiasule', 'kona', 'limelight', 'litespeed', 'malcare', 'modsecurity', 'neustar', 'newdefend',
    'nsfocus', 'naxsi', 'onmessage', 'openresty', 'paloalto', 'perimeterx', 'radware', 'reblaze', 'rsfirewall',
    'safedog', 'safeline', 'secucloud', 'sectigo', 'secureentry', 'sentry', 'shadowd', 'shield', 'sitelock',
    'sonicwall', 'sophos', 'stackpath', 'sucuri', 'trustwave', 'wallarm', 'websecurify', 'webshield', 'webtotem',
    'yundun', 'yunjiasu', 'zenedge',
    'a10', 'ace', 'akamai', 'appgate', 'armorlogic', 'aruba', 'azure', 'barracudawebappfirewall', 'bitninja', 'checkpoint',
    'denypal', 'distil', 'fortiguard', 'imperva', 'kaspersky', 'modsecurity', 'netscaler', 'naxsi',
    'varnish', 'wallarm', 'wordfence', 'zscaler'
]
url = input("URL : ")
tespitler = wafbul(url)
if tespitler:
    print("Bulunanlar :", tespitler)
else:
    print("Bulunmadi")
Anlatim
headerarama()
: koddaki bu fonksiyon http headerlerini inceleyerek WAF belirtilerini arar (cf-ray vb. ) . Headerler icinde gezinerek, header ismi(name) veya header degeri (value) içinde WAF isimlerinin geçip geçmediğini düzenli ifadelerle(import re amaci buydu) kontrol eder.
htmlara() : html(parse edilmis) içeriği üzerinde gezinerek WAF belirtilerini bulmaya calisir . BeautifulSoup kütüphanesi kullanarak html içeriğini okur ve html (verdigimiz urlde request yapinca karsimiza gelen sayfadaki) yorumları (comment) içerisinde WAF isimleri arar.
cevapdara() : Bu fonksiyon http yanıtının (response) metini içeriğinde doğrudan WAF belirtilerini arar. Metin içeriği üzerinde doğrudan bir arama yapar(onceden belirttigim liste icinde) ve WAF isimlerini içeren kisimlari bulmaya calisir.
wafbul(): Bu aslinda bizim ana fonksiyonumz, cunki verilen bir urle http isteği gönderir ve yanıtı alır. Ardından, bu yanıtı önce headerarama(), htmlara() ve cevapdara() fonksiyonlarına göndererek her birinin WAF belirtilerini tespit etmeye sağlar. Son olarak, tüm tespit edilen WAF belirtilerini (yukarida anlattigim 3 fonksiyonda buldugu belirtileri) birleştirerek bir set oluşturur ve bu seti ciktiya verir.
Firewall Listesi :
Listeye ekleme yaparsaniz sevinirim (listeyi yapay zeka kullanarak aldim)

liste = [
'aesecure', 'airlock', 'aliyundun', 'astra', 'awaf', 'barracuda', 'bekchy', 'bigip', 'binarysec',
'blockdos', 'bluedon', 'bulletproof', 'cisco', 'cloudflare', 'comodo', 'denyall', 'distil',
'dotdefender', 'f5', 'fortiweb', 'fortinet', 'frontdoor', 'greywizard', 'hyperguard', 'incapsula', 'indusguard',
'isaserver', 'jiasule', 'kona', 'limelight', 'litespeed', 'malcare', 'modsecurity', 'neustar', 'newdefend',
'nsfocus', 'naxsi', 'onmessage', 'openresty', 'paloalto', 'perimeterx', 'radware', 'reblaze', 'rsfirewall',
'safedog', 'safeline', 'secucloud', 'sectigo', 'secureentry', 'sentry', 'shadowd', 'shield', 'sitelock',
'sonicwall', 'sophos', 'stackpath', 'sucuri', 'trustwave', 'wallarm', 'websecurify', 'webshield', 'webtotem',
'yundun', 'yunjiasu', 'zenedge',
'a10', 'ace', 'akamai', 'appgate', 'armorlogic', 'aruba', 'azure', 'barracudawebappfirewall', 'bitninja', 'checkpoint',
'denypal', 'distil', 'fortiguard', 'imperva', 'kaspersky', 'modsecurity', 'netscaler', 'naxsi',
'varnish', 'wallarm', 'wordfence', 'zscaler'
]
eline salğık
 

yosabe06

Üye
19 Ağu 2016
73
33
Eline sağlık.
özel mesajına dönemedim kusura bakma bu aralar çok yorgunum. headerlara bakman güzel olmuş nede olsa tek kişisin bütün firewalların isimlerini takip edemezsin.

fakat kod yazarken Türkçe değişken isimleri kullanmamaya özen göster, yarın bir gün bu kodu githubda paylaşmak istersen diğer insanlar Türkçe değişkenleri anlamakta zorlanabilir.

ek olarak waf tespitine işletim sistemi tespit özelliğide ekleyebilirsin. bunun için işletim sistemlerinde bulunan default portların numaraları ve response imzalarını karşılaştırabilirsin.

örnek veriyorum diyelim ki 192 168 . 1 .1 in işletim sistemini tespit etmek istiyorsun portlara bağlantı kurup gelen response içerisinde mcrosoft,windows geçip geçmediğine bakabilirsin.

port tarama kısımını sıfırdan yazıyorsan biraz seni zorlayabilir ama yinede değer katar.
 

Yagami Light0

Katılımcı Üye
5 May 2023
717
324
Eline sağlık.
özel mesajına dönemedim kusura bakma bu aralar çok yorgunum. headerlara bakman güzel olmuş nede olsa tek kişisin bütün firewalların isimlerini takip edemezsin.

fakat kod yazarken Türkçe değişken isimleri kullanmamaya özen göster, yarın bir gün bu kodu githubda paylaşmak istersen diğer insanlar Türkçe değişkenleri anlamakta zorlanabilir.

ek olarak waf tespitine işletim sistemi tespit özelliğide ekleyebilirsin. bunun için işletim sistemlerinde bulunan default portların numaraları ve response imzalarını karşılaştırabilirsin.

örnek veriyorum diyelim ki 192 168 . 1 .1 in işletim sistemini tespit etmek istiyorsun portlara bağlantı kurup gelen response içerisinde mcrosoft,windows geçip geçmediğine bakabilirsin.

port tarama kısımını sıfırdan yazıyorsan biraz seni zorlayabilir ama yinede değer katar.
Teşekkür ederim hocam . kodu yazarken değişkenlerin anlamlarını direkt isminden bulmak için türkçe değişken kullanıyorum genellikle ancak ileride projelerimde dikkata alacağım . Diğer dediğiniz özelliği yarından başlayarak yazmaya başlayacağım öneriniz için teşekkürler.
 
Ü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.