Donnerstag, 13. September 2018

Android'te Kali Linux Exploid Yapma

Kali Linux üzerinden android exploit oluşturabilirsiniz bunun için Kalide komut satırına girip aşşağıdaki kodları yazıyoruz:
cd desktop (türkçe olanlar için Masaüstü)
git clone creetsec/TheFatRat.git
cd TheFatRat
chmod +x setup.sh
./setup.sh (size zahmet erdirmeden kuruyor otomatik olarak.)
chmod +x fatrat
./fatrat diyerek programı başlatıyoruz.
En başta bize 1'den 10'a kadar rakamlar verecektir buradan android exploit için 1'i 2. gelen sayfada ise 3'ü tuşluyoruz.
LHOSTyani ipv4 adresini istemekte) Bunu bulmak için ekstradan bir kontrol sayfası açıp ifconfig yazıyoruz. Sonrasında çıkan ip adresini "LHOST" yazan yere yazıyoruz.
Sonrasında Set "LPORT" yazan yerlere açık portumuzu yazıyoruz.
Sonrasında dosyamıza isim veriyoruz.
Burada en çok yararlı olan 3 numaralı olan exploit tarzıdır bunuda yazdıktan sonra payload oluşturulur.
Masaüstündeki TheFatRat klasörüne girip backdoored klasörüne giriyoruz.
burada exploitimizi apk dosyası halinde bulabiliriz.
Sonrasında bunu Armitage ekleyin ve kurbanlarınızın gelmesini bekleyin.

Buffer Owerflow

Bellek Taşması Nedir?
Bellek taşması, sınırlı boyuttaki bellek alanına, planlanan miktarın üzerinde veri kopyalanınca yaşanan taşma durumudur. En klasik örneği vermek gerekirse:

char a[4];
strcpy(a, 'cok uzun bir metin');
Örnek C kodunu açıklamak gerekirse:
A isimli 4 baytlık bir karakter dizisi tanımlandı.
Fonksiyon yardımıyla bu karakter dizisine 18 karakterlik bir metin kopyalandı.
Ayrılan alan 4 baytlıktı, 18 karakter kopyalamaya çalıştığımızda ayırdığımız bellek taşacak ve geri kalan 14 karakter belleğin kenarındaki diğer bellek alanlarına yazılacak.
Eğer belleği taşırıp diğer hafıza alanlarına yazılacak baytlar saldırgan tarafından kontrol edilebiliyorsa, programın akışını kontrol edebilmek ya da değiştirmek mümkün olur.

Temel olarak buffer overflow için şunu söyleyebiliriz:
Uygulamanın çalışma sırasında kullanıcıdan aldığı bir girdiye ayrılan sınırın üstünde data girişi yapmaktır.
Birçok overflow yazısında int buff[125] gibi bir girdi alanı açılıp strcpy, memcpy vs ile C dilinin kontrolsüz fonksiyonlarını kullanarak uygulamaya 125'ten fazla bir input yollayarak programı patlatmayı anlatır.
Anlatılanda doğrudur, mantık aynen bu şekilde işler, haddinden fazla inputu göndermek ve eğer kontrol yoksa uygulamayı patlatmak.
Uygulamaya fazla input yolladığımızda stack'in yapısından dolayı stack'e atılan parametreler ve geri dönüş değerler ezilir/kaybolur bundan dolayı uygulama crash olur ve sonlanır.
İyi bir exploit, geri dönüş değerini istediğimiz bir alana referans ettirmek ve o alana shellcode'umuzu doldurmak ile olur. Sonrası işlemcide, sağolsun kendisi bizim için işlemleri yapacaktır.


Exploit Geliştirme Araçları
Debug ve Disassemble Yöntemleri
Debugger Yazılımları (windbg , ImmunityDebugger, Gnu Debuger)
Disassembler Yazılımı (IDA Disassembler)
Buffer Overflow’un Temelleri
Hatalı Kod Örnekleri
Açık Avlama Yöntemleri
Fuzzing
Crash ve Binary Analizi
Shellcoding
Shellcode temelleri
Shellcode geliştirme süreci
Shellcode çeşitleri
Windows Exploiting
Stack Overflow Exploiting
Unicode Overflow Exploiting
SEH Overflow Exploiting
Bypassing SafeSEH
Egg hunter Shellcodes ve exploiting

Linux Exploiting
Stack Overflow ve Exploiting.

DNS Brute Subdomain

Kullanımı :

Kod:
python subScan.py
Kaynak Kod :

Kod:
# -*- coding: utf-8 -*-
#Author : A1peren
#All copyrights to KoDa / TurkHackteam
#!/usr/bin/python/
import socket, sys, os, time
banner = """
 ____             _       ____  _   _ ____                 
| __ ) _ __ _   _| |_ ___|  _ \| \ | / ___|  ___ __ _ _ __ 
|  _ \| '__| | | | __/ _ \ | | |  \| \___ \ / __/ _` | '_ \
| |_) | |  | |_| | ||  __/ |_| | |\  |___) | (_| (_| | | | |
|____/|_|   \__,_|\__\___|____/|_| \_|____/ \___\__,_|_| |_|
                                            Author: KoDa
"""
if len(sys.argv)==2:
    pass
else:
    try:
        os.system("clear")
    except:
        os.system("cls")
    print(banner)
    exit("Usage: python "+sys.argv[0]+" <target>\n\n")
def subScan(host):
    print(banner)
    print("Host script results:\n| dns-brute: \n|   DNS Brute-force hostnames: \n|")
    try:
        ip = socket.gethostbyname( host )
        print("|     "+host+" - "+ip+" - "+time.ctime().split(" ")[3]+"\n|")
    except:
        exit("ERROR:\n      Not Connected the server !")
    liste = ["mail.","ftp.","cpanel.","webmail."]
    for i in liste:
        try:
            new_host=i+host
            ip = socket.gethostbyname(new_host)
            print("|     "+new_host+" - "+ip+" - "+time.ctime().split(" ")[3]+"\n|")
        except:
            pass
    print("-"*20+"\n\n")
subScan(str(sys.argv[1]).replace("https://","").replace("http://","").replace("www.","").replace("/",""))