Crypter İle İlgili Tüm Terimler | Nedir? Nasıl Yapılır?

Dekrats

Katılımcı Üye
26 Ocak 2023
549
440
Brain
a3b2jeo.png


Merhaba arkadaşlar bugün crypter ile ilgili tüm terimleri açıklayıp ve nasıl yapıldığını anlatacağım. Eksiklerim varsa affola. İyi okumalar dilerim.

giphy.gif



6OfL8I.gif


Crypter, genellikle kötü niyetli yazılımların (malware) tespitini ve analizini zorlaştırmak için kullanılan bir yazılım veya araçtır. Crypter ile ilgili bazı terimler şunlardır:

➤ Şifreleme (Encryption): Crypter, kötü niyetli bir yazılımın kodunu veya içeriğini, başka bir algoritma kullanarak orijinalinden farklı bir formata dönüştürebilir. Bu işlem, kötü niyetli yazılımın tespitini ve analizini zorlaştırabilir.

➤ Şifre Çözme (Decryption): Şifrelenmiş kodun orijinaline dönüştürülmesi işlemidir. Crypter, kötü niyetli yazılımın kodunu orijinal formuna dökebilmek için şifre çözme işlemini gerçekleştirebilir.

➤ Metamorphic Kod (Metamorphic Code): Kötü niyetli yazılımın kodunun her seferinde otomatik olarak değiştirildiği bir teknik olan metamorphic kod, kötü niyetli yazılımların tespitini zorlaştırabilir. Crypter, kötü niyetli yazılımın kodunu otomatik olarak değiştirerek metamorphic kodlama tekniklerini uygulayabilir.

➤ Polimorfizm (Polymorphism): Polimorfizm, kötü niyetli yazılımın kodunun her seferinde farklı bir formatta dönüştüğü bir teknik olan metamorphic kodun bir türüdür. Crypter, kötü niyetli yazılımın kodunu polimorfik olarak değiştirerek her seferinde farklı bir formatta şifreleyebilir.

➤ FUD (Fully UnDetectable): "Fully UnDetectable"ın kısaltması olan FUD, kötü niyetli yazılımın tespit edilemez olduğunu ifade eder. Crypter, kötü niyetli yazılımın tespit edilemez olmasını sağlamak için çeşitli yöntemler kullanabilir.

➤ Kötü Niyetli Yazılım Obfuskasyonu (Malware Obfuscation): Crypter, kötü niyetli yazılım kodunu karmaşıklaştırarak veya gizleyerek tespitini zorlaştıran bir obfuskasyon (gizleme) süreci uygulayabilir.

➤ Algı Engelleme (Evasion): Crypter, kötü niyetli yazılımın tespitini ve analizini engellemek için antivirüs veya güvenlik yazılımlarının algılama mekanizmalarını atlatmak için çeşitli teknikler kullanabilir.

fud.png


6OfL8I.gif


Şifreleme, bir verinin anlaşılamaz hale getirilmesi için kullanılan bir yöntemdir. Şifreleme süreci, veriyi belirli bir algoritma kullanarak şifreli bir formata dönüştürerek gizlilik, güvenlik ve veri bütünlüğü sağlar. İşte şifreleme yapma adımları:

Adım 1: Şifreleme Algoritması Seçimi İlk adım, kullanmak istediğiniz bir şifreleme algoritması seçmektir. Şifreleme algoritması, veriyi şifrelemek ve şifreyi çözmek için kullanılan matematiksel yöntemlerdir. Güvenlik seviyesi yüksek ve güvenilir şifreleme algoritmaları tercih edilmelidir.

Adım 2: Anahtar Oluşturma Şifreleme algoritması kullanılarak veriyi şifrelemek için bir anahtar gereklidir. Anahtar, verinin nasıl şifreleneceğini belirler. Şifreleme algoritmasına bağlı olarak, simetrik veya asimetrik şifreleme yöntemlerinden biri kullanılabilir. Simetrik şifrelemede, aynı anahtar şifreleme ve şifre çözme işlemlerinde kullanılırken, asimetrik şifrelemede ise farklı bir anahtar çifti (genel anahtar ve özel anahtar) kullanılır.

Adım 3: Veriyi Şifreleme Seçilen şifreleme algoritması ve anahtar kullanılarak veri şifrelenir. Bu adımda, belirli bir algoritma kullanılarak veri şifrelenir ve şifreli bir formata dönüştürülür. Şifreleme algoritması ve anahtar, verinin tam olarak nasıl şifreleneceğini belirler.

Adım 4: Şifrelenmiş Veriyi Kullanma veya Gönderme Şifrelenmiş veri, güvenli bir şekilde kullanılabilir veya gönderilebilir. Şifreli veri, yalnızca doğru anahtar kullanılarak çözülebilir. Veriyi çözmek için kullanılacak olan doğru anahtar, iletişim kurulan taraf veya veri alıcısı tarafından sağlanmalıdır.

Adım 5: Şifreyi Çözme Doğru anahtar kullanılarak şifreli veri çözülür. Şifre çözme algoritması, kullanılan şifreleme algoritmasıyla uyumlu olmalıdır ve doğru anahtar kullanılmalıdır. Şifre çözme işlemi, şifreleme işleminin tam tersidir ve orijinal veriyi elde etmek için kullanılır.

ocgh09a.gif


Python:
# Şifreleme işlemi
def encrypt(text, key):
    result = ""
    for char in text:
        if char.isalpha():
            ascii_offset = ord('a') if char.islower() else ord('A')
            shifted_char = chr((ord(char) - ascii_offset + key) % 26 + ascii_offset)
            result += shifted_char
        else:
            result += char
    return result

# Kullanım
plaintext = "Merhaba Dunya"  # Şifrelenecek metin
key = 3  # Şifreleme anahtarı (shift değeri)

# Şifreleme işlemi
ciphertext = encrypt(plaintext, key)
print("Şifreli Metin:", ciphertext)

Yukarıdaki kod, "Merhaba Dunya" metnini "Caesar Cipher" yöntemiyle şifreleyerek "Phuiede Gyqad" şeklinde şifreli metin elde etmektedir.

6OfL8I.gif


SerbRansom-crypter.gif


Şifrenin çözülmesi, yani şifre çözme, şifrelenmiş bir veriyi orijinal haline dönüştürme sürecidir. Şifre çözme işlemi, doğru anahtarın kullanılmasıyla gerçekleştirilir ve aşağıdaki adımları içerir:

Adım 1: Şifreleme Anahtarının Temini Doğru şifreleme anahtarını temin etmek önemlidir. Şifre çözme işlemi için kullanılacak olan doğru anahtar, şifrelenmiş verinin şifrelenme aşamasında kullanılan anahtarla aynı olmalıdır.

Adım 2: Şifreli Veriyi Alma Şifrelenmiş veri, iletişim kurulan taraf veya veri alıcısı tarafından alınır. Şifreli veri, çözülmek istenen veridir.

Adım 3: Şifre Çözme Algoritması Seçimi Kullanılan şifreleme algoritması ve anahtara bağlı olarak, doğru şifre çözme algoritması seçilir. Şifre çözme algoritması, şifrelenmiş veriyi orijinal haline dökmek için kullanılır.

Adım 4: Şifre Çözme İşlemi Seçilen şifre çözme algoritması ve doğru anahtar kullanılarak şifreli veri çözülür. Bu adımda, belirli bir algoritma kullanılarak şifreli veri, orijinal veriye dönüştürülür. Şifre çözme algoritması ve anahtar, şifrelenme aşamasında kullanılanlarla aynı olmalıdır.

Adım 5: Orijinal Veriyi Kullanma veya İşleme Şifre çözme işlemi sonucunda elde edilen orijinal veri, kullanılabilir veya işleme alınabilir. Orijinal veri, şifrelenmeden önceki hali olan açık metin veridir. Veri, güvenli bir şekilde kullanılabilir veya ilgili işlemler için kullanılabilir.

Önemli Not: Şifre çözme işlemi, doğru anahtarın kullanılmasıyla gerçekleştirilir. Doğru anahtarın gizli ve güvenli bir şekilde saklanması ve paylaşılması önemlidir, çünkü yanlış anahtar kullanıldığında şifre çözme işlemi başarısız olur ve orijinal veri elde edilemez.

ocgh09a.gif


Python:
# Şifre çözme işlemi
def decrypt(ciphertext, key):
    result = ""
    for char in ciphertext:
        if char.isalpha():
            ascii_offset = ord('a') if char.islower() else ord('A')
            shifted_char = chr((ord(char) - ascii_offset - key) % 26 + ascii_offset)
            result += shifted_char
        else:
            result += char
    return result

# Kullanım
ciphertext = "Phuiede Gyqad"  # Çözülecek şifreli metin
key = 3  # Şifreleme anahtarı (shift değeri)

# Şifre çözme işlemi
decrypted_text = decrypt(ciphertext, key)
print("Çözülmüş Metin:", decrypted_text)

Caesar Cipher ile şifrelediğimiz kelimeyi tekrar orjinal haline getirdik.

6OfL8I.gif


Metamorfik kod, kendisini sürekli olarak değiştirerek veya dönüşerek gizlemeye çalışan, kötü niyetli yazılımların bir türüdür. Metamorfik kod, her seferinde farklı bir yapıya sahip olabilir ve bu nedenle geleneksel antivirüs yöntemlerine karşı daha zor tespit edilebilir. Metamorfik kodun nasıl oluşturulduğuna dair çeşitli yaklaşımlar vardır ve karmaşık bir süreç içerebilir. Aşağıda, genel olarak metamorfik kodun nasıl oluşturulabileceğine dair bir örnek süreç verilmiştir:

Adım 1: Şifreleme veya Sıkıştırma Metamorfik kod, şifreleme veya sıkıştırma gibi yöntemlerle orijinal kötü niyetli kodun yapısını değiştirebilir. Örneğin, kod parçaları şifrelenerek veya sıkıştırılarak orijinal kodun yapısal olarak değişmesi sağlanabilir.

Adım 2: Obfuskasyon (Belirsizleştirme) Metamorfik kod, kod parçalarını veya kod akışını karmaşık hale getirmek için obfuskasyon tekniklerini kullanabilir. Bu, kodun okunabilirliğini azaltabilir ve tespit edilme olasılığını azaltabilir. Örneğin, değişken ve fonksiyon isimleri rastgele olarak değiştirilebilir veya karmaşık matematiksel işlemler veya mantıksal ifadeler kullanılabilir.

Adım 3: Dönüşüm ve Değişim Metamorfik kod, kodun dönüşüm ve değişimine yönelik teknikler kullanabilir. Örneğin, kod blokları veya komutlar, farklı türde kod bloklarına veya komutlara dönüştürülebilir. Ayrıca, kodun sırası veya yapısı rastgele olarak değiştirilebilir.

Adım 4: Hareket (Mutation) Metamorfik kod, kodun yapısını sürekli olarak değiştirmek için mutasyon tekniklerini kullanabilir. Örneğin, kod parçaları veya komutlar, farklı kod parçaları veya komutlar ile yer değiştirilebilir veya yer değiştirebilir. Bu, kodun her seferinde farklı bir yapıya sahip olmasını sağlayabilir.

Adım 5: Hedef Platforma Uyarlanma Metamorfik kod, hedef platforma (örneğin işletim sistemi, işlemci mimarisi, dil vb.) uyarlanabilir. Bu, kodun hedef sistemde çalışabilir olmasını sağlamak için gereklidir.

ocgh09a.gif


Python:
# Basit bir metamorfik kod örneği
import random

# Rastgele sayı üreteci
def random_num():
    return random.randint(1, 100)

# Rastgele operatör üreteci
def random_operator():
    operators = ['+', '-', '*', '/']
    return random.choice(operators)

# Metamorfik kod
def metamorphic_code(x, y):
    a = x
    b = y
    for i in range(10):
        num1 = random_num()
        num2 = random_num()
        operator = random_operator()
        if operator == '+':
            a = num1 + num2
        elif operator == '-':
            a = num1 - num2
        elif operator == '*':
            a = num1 * num2
        elif operator == '/':
            if num2 != 0:
                a = num1 / num2
        b = b + a
    return b

# Kullanım
x = 5
y = 10
result = metamorphic_code(x, y)
print("Sonuç:", result)

Yukarıdaki kod, basit bir metamorfik yapıya sahiptir. Her çalıştırıldığında, rastgele sayılar ve operatörler kullanarak kodun yapı ve işleyişini değiştirir. Bu şekilde, kodun kendini sürekli olarak değiştirdiği ve farklı sonuçlar ürettiği görülmektedir. Ancak, unutulmamalıdır ki, metamorfik kodlar etik ve yasal kurallar dahilinde kullanılmalıdır ve herhangi bir yasadışı faaliyeti desteklemek veya teşvik etmekten kaçınılmalıdır.

6OfL8I.gif


crypter.gif


Polimorfizm, programlama dillerine bağlı olarak farklı şekillerde uygulanabilir. Aşağıda, genel olarak polimorfizmin nasıl uygulanabileceğine dair örnek bazı yaklaşımlar verilmiştir:


Dil tarafından desteklenen polimorfizm: Bazı programlama dilleri, polimorfizmi doğal olarak destekler ve dilin kendisi tarafından sağlanan özellikler ile polimorfik kod yazmak mümkündür. Örneğin, Java ve C# gibi nesne yönelimli dillerde, sınıfların aynı arayüzü uygulaması veya aynı üst sınıfı genişletmesi yoluyla polimorfizm sağlanabilir. Bu sayede, farklı sınıfların aynı metotları farklı şekillerde gerçekleştirmesi mümkün olabilir.

Soyut sınıflar ve arayüzler: Polimorfizm, soyut sınıflar veya arayüzler kullanılarak da elde edilebilir. Soyut sınıflar, doğrudan nesne oluşturulmasına izin vermez ve alt sınıflar tarafından uygulanması gereken metotların şablonlarını içerir. Arayüzler ise bir veya birden fazla sınıf tarafından uygulanabilir ve aynı metotların implementasyonunu gerektirir. Bu sayede, farklı sınıfların aynı arayüzü uygulayarak polimorfik kod yazmak mümkündür.

Fonksiyon göstericileri veya fonksiyon nesneleri: Bazı dillerde, fonksiyon göstericileri veya fonksiyon nesneleri kullanılarak da polimorfizm sağlanabilir. Fonksiyon göstericileri, fonksiyonların adreslerini tutan değişkenlerdir ve farklı fonksiyonların aynı imzayı kullanarak çağrılmasını sağlayabilir. Fonksiyon nesneleri ise fonksiyonların nesne olarak kullanılmasını sağlar ve farklı fonksiyonların aynı yöntem çağrısı ile çalışmasını sağlayabilir.

Veri tipi dönüşümleri: Bazı dillerde, veri tipi dönüşümleri kullanılarak da polimorfizm sağlanabilir. Örneğin, sayısal veri tiplerinin otomatik olarak dönüştürülerek aynı operatörlerin kullanılmasına izin verilir ve farklı veri tiplerinin aynı operasyonları gerçekleştirmesi sağlanabilir.

ocgh09a.gif


Örnek bir Java kodu ile polimorfizmi kullanma:

JavaScript:
// Arayüz tanımı
interface Arayuz {
  void metot();
}

// Arayüzü uygulayan sınıflar
class Sinif1 implements Arayuz {
  @Override
  public void metot() {
    System.out.println("Sinif1'den metot çağrıldı.");
  }
}

class Sinif2 implements Arayuz {
  @Override
  public void metot() {
    System.out.println("Sinif2'den metot çağrıldı.");
  }
}

public class PolimorfizmOrnegi {
  public static void main(String[] args) {
    // Arayüz tipinde referanslar
    Arayuz obj1 = new Sinif1();
    Arayuz obj2 = new Sinif2();
    
    // Polimorfizm kullanarak farklı sınıfların aynı metotunu çağırma
    obj1.metot(); // Sinif1'den metot çağrıldı.
    obj2.metot(); // Sinif2'den metot çağrıldı.
  }
}

Yukarıdaki kodda, "Arayuz" adında bir arayüz tanımlanmış ve bu arayüzü uygulayan "Sinif1" ve "Sinif2" adında iki sınıf oluşturulmuştur. Ardından "PolimorfizmOrnegi" adında bir sınıf oluşturulmuş ve main metodu içinde "Arayuz" tipinde referanslar kullanılarak "Sinif1" ve "Sinif2" sınıflarından objeler oluşturulmuştur.

Daha sonra "obj1" ve "obj2" referansları ile polimorfizm kullanılarak, "Arayuz" arayüzünü uygulayan "Sinif1" ve "Sinif2" sınıflarının aynı metot() metodunu çağırılmıştır. Böylece farklı sınıfların aynı arayüzü uygulayarak polimorfik kod yazılmıştır.

6OfL8I.gif


Malware obfuscation, zararlı yazılımların veya kötü niyetli kodun anlaşılmasını zorlaştırmak için kullanılan bir tekniktir. Bu teknik, zararlı yazılım kodunu karmaşıklaştırarak, gizleyerek veya değiştirerek, antivirüs programları veya güvenlik analiz araçları tarafından tespit edilme olasılığını azaltmayı hedefler. İşte malware obfuscation'ın genel bir örneği

ocgh09a.gif


Örnek Malware Obfuscation Kodu (Python):

Python:
# Orjinal zararlı yazılım kodu
def zararli_fonksiyon():
    print("Zararli isler yapiliyor!")

# Malware obfuscation ile gizlenmiş zararlı yazılım kodu
def gizlenmis_fonksiyon():
    # Karmaşık hesaplamalar veya anlamsız kod blokları eklenerek kodu gizleme
    for i in range(100):
        x = i * 2
        y = x + 3
        z = y / 2

    # Fonksiyonun asıl amacını gizlemek için anlamsız print veya atama işlemleri eklenme
    print("Hello World!")
    a = 5
    b = "abc"
    c = a + len(b)

    # Fonksiyonun adını değiştirerek kodu gizleme
    exec("".join([chr(ord(c) + 1) if c.isalpha() else c for c in "tnevatYvfunqra()"]))

# Obfuscated kodu çağırma
gizlenmis_fonksiyon()

Yukarıdaki örnekte, orijinal zararlı yazılım kodu "zararli_fonksiyon()" adında basit bir fonksiyondu. Malware obfuscation teknikleri kullanılarak, kod karmaşık hale getirildi, anlamsız kod blokları eklendi, gereksiz print veya atama işlemleri yapıldı ve fonksiyon adı değiştirildi. Böylece, zararlı yazılım kodu, antivirüs programları veya güvenlik analiz araçları tarafından tespit edilme olasılığını azaltmak için gizlendi.



6OfL8I.gif


databending-encrypted.gif


"Evasion", siber güvenlik alanında, güvenlik önlemlerini atlatma veya gizleme amacıyla kullanılan bir terimdir. Evasion teknikleri, siber saldırganlar veya güvenlik testçileri tarafından, güvenlik duvarları, saldırı tespit sistemleri (IDS), antivirüs programları, güvenlik yazılımları ve diğer güvenlik önlemlerini atlatmak veya engellemek için kullanılabilir. Ancak, unutulmamalıdır ki, herhangi bir siber güvenlik faaliyetinde etik ve yasal sınırlara uygun olarak hareket etmek önemlidir.

Evasion teknikleri, çeşitli yöntemler kullanarak güvenlik önlemlerini atlatmaya veya gizlemeye çalışabilir. İşte bazı yaygın evasion tekniklerinin örnekleri:

➤ Polymorphism: Zararlı yazılımın her saldırıda farklı bir formda görünmesini sağlayan bir teknik. Örneğin, zararlı yazılımın kodunu sürekli olarak değiştirerek veya şifreleyerek, antivirüs programları tarafından tespit edilme olasılığını azaltabilir.

➤ Stealth: Zararlı yazılımın kendini gizlemek için çeşitli yöntemler kullanması. Örneğin, sistemde gizli bir klasöre veya dosyaya saklanarak, veya sistem bileşenlerine zarar vermeden veya hafıza alanında gizlenerek tespit edilme olasılığını azaltabilir.

➤ Trafik Şifreleme: Zararlı yazılımın ağ trafiğini şifreleyerek, ağ güvenlik cihazları tarafından tespit edilme olasılığını azaltabilir.

➤ Zero-day Exploits: Bilinen güvenlik açıklarını kullanmak yerine, henüz keşfedilmemiş ve yamanın bulunmadığı güvenlik açıklarını kullanarak güvenlik önlemlerini atlatmak.

➤ Anti-Emulation: Zararlı yazılımın, analiz ortamlarında veya güvenlik test araçlarında çalıştığı tespit edildiğinde, farklı davranışlar sergileyerek tespit edilme olasılığını azaltmak.


Örnek: HTTP Header Manipülasyonu

Bu örnekte, saldırganın HTTP trafiğini hedef web sunucusuna ilettikten sonra, istemcinin (web tarayıcısı gibi) doğru sonuçları almasını sağlamak için HTTP başlıklarını manipüle etmesi gerekmektedir. HTTP başlıkları, web tarayıcıları ve web sunucuları arasındaki iletişimde kullanılan metaverilerdir ve kullanıcı tarayıcısına, sunucuya hangi verilerin gönderildiğini ve nasıl işlenmesi gerektiğini söyler.

ocgh09a.gif


Aşağıda, Python dilinde basit bir örnek kod parçacığı bulunmaktadır:

Python:
import requests

# Hedef URL
url = "http://example.com/login"

# HTTP başlıklarını manipüle etme
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0",
    "Referer": "http://example.com",
    "Accept-Language": "en-US,en;q=0.5",
    # Evasion için manipüle edilen başlık
    "X-Forwarded-For": "192.168.1.100",  # Yanlış bir IP adresi gösterilerek gerçek IP gizlenir
}

# HTTP POST isteği yapma
response = requests.post(url, headers=headers, data={"username": "admin", "password": "password"})

# Yanıtı kontrol etme
if response.status_code == 200:
    print("Başarılı bir şekilde giriş yapıldı!")
else:
    print("Giriş başarısız oldu.")

Bu örnekte, "X-Forwarded-For" başlığı, gerçek IP adresini gizlemek için manipüle edilmiştir. Bu, hedef web sunucunun, saldırganın gerçek IP adresini doğru bir şekilde tespit etmesini zorlaştırabilir.

6OfL8I.gif


Evasion Alt Başlıklar

AdorableEasygoingCrocodile-max-1mb.gif


6OfL8I.gif


Trafik Şifreleme;

Python:
import socket
import ssl

# Sunucu bilgileri
hostname = "www.example.com"
port = 443

# TCP soketi oluşturma
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# SSL/TLS ile şifrelenmiş soket oluşturma
ssl_sock = ssl.wrap_socket(sock)

# Sunucuya bağlanma
ssl_sock.connect((hostname, port))

# Veri gönderme
data = "Merhaba, bu trafik şifreleme ile korunan veridir!"
ssl_sock.write(data.encode())

# Veri alma
received_data = ssl_sock.read(1024)
print("Alınan veri: ", received_data.decode())

# Soketleri kapatma
ssl_sock.close()
sock.close()

Bu kod, Python programı kullanarak SSL/TLS protokolünü kullanarak sunucu ile güvenli bir bağlantı kurar ve veri iletimini şifreleyerek trafik şifreleme sağlar. "www.example.com" adresindeki bir sunucuya bağlanır, şifrelenmiş bir "Merhaba" mesajı gönderir ve sunucudan gelen şifrelenmiş veriyi alır.

6OfL8I.gif


ocgh09a.gif


Stealht:

Python:
import shutil

# Zararlı dosyanın gizli bir klasöre taşınması
shutil.move("zararli.exe", "C:/ProgramData/GizliKlasor/zararli.exe")

# Gizli klasörün ve zararlı dosyanın gizlenmesi
shutil._shutil_change_build("C:/ProgramData/GizliKlasor", "", "", False)
shutil._shutil_change_build("C:/ProgramData/GizliKlasor/zararli.exe", "", "", False)

# Zararlı yazılımın bellekte gizlenmesi
import ctypes

kernel32 = ctypes.WinDLL('kernel32.dll')
user32 = ctypes.WinDLL('user32.dll')

# Zararlı yazılımın pencerelerini gizleme
user32.ShowWindow(kernel32.GetConsoleWindow(), 0)

# Sonsuz döngüye girme ve sürekli çalışma
while True:
    # Zararlı işlemin ana kodu burada yer alır
    pass

Yukarıdaki örnek kodda, "zararli.exe" adlı zararlı bir dosya, "C:/ProgramData/GizliKlasor" adlı gizli bir klasöre taşınmış ve klasörün ve dosyanın gizli hale getirilmesi için "shutil" modülü kullanılmıştır. Ayrıca, "ctypes" modülü kullanılarak zararlı yazılımın pencerelerini gizlemesi ve sürekli olarak çalışması sağlanmıştır. Bu sadece bir örnek olup, gerçek dünya senaryolarında daha karmaşık ve kötü niyetli zararlı yazılımlar kullanılarak bilgisayar sistemlerini hedef alan saldırılar gerçekleştirilebilir.

6OfL8I.gif


BlankJitteryCaterpillar-size_restricted.gif


Anti-Emulation:

Aşağıda, anti-emülasyon tekniklerini kullanarak bir örnek kod görüntülenmiştir. Bu kod, emülasyon ortamlarında çalıştırıldığında belirli bir işlemi gerçekleştirirken, gerçek sistemlerde çalıştırıldığında farklı bir işlemi gerçekleştirmektedir. Bu, kötü niyetli yazılımların analiz ortamlarında tespit edilmesini zorlaştırmak için kullanılabilir.

Kod:
#include <stdio.h>
#include <stdbool.h>
#include <windows.h>

// Emülasyon ortamında çalıştığını kontrol etmek için bir fonksiyon
bool isEmulated()
{
    bool result = false;
    __try
    {
        __asm
        {
            pushad          // Tüm genel amaçlı kaydedicileri yığına it
            pushfd          // Flags register'ını yığına it
            xor eax, eax    // eax'i sıfırla
            cpuid           // cpuid talimatını çağır
            test eax, eax   // eax'i test et
            jz fake         // eax sıfır ise fake etiketine git
            jmp real        // eax sıfır değil ise real etiketine git
        fake:
            mov result, 1   // fake etiketi: emülatörde çalışıyoruz
            jmp done        // done etiketine git
        real:
            mov result, 0   // real etiketi: gerçek sisteme çalışıyoruz
        done:
            popfd           // Flags register'ını yığından çek
            popad           // Tüm genel amaçlı kaydedicileri yığından çek
        }
    }
    __except (EXCEPTION_EXECUTE_HANDLER)
    {
        result = true;  // Exception fırlatıldıysa emülatörde çalışıyoruz
    }
    return result;
}

int main()
{
    if (isEmulated())
    {
        printf("Emülasyon ortamında çalışıyoruz.\n");
        // Emülasyon ortamında yapılacak işlemler burada yer alabilir
    }
    else
    {
        printf("Gerçek sisteme çalışıyoruz.\n");
        // Gerçek sisteme yapılacak işlemler burada yer alabilir
    }

    return 0;
}






Yukarıdaki örnekte ardiuno ile yazılmış, "isEmulated()" adlı bir fonksiyon kullanılmaktadır. Bu fonksiyon, "cpuid" talimatını kullanarak CPU'nun durumunu kontrol ederek emülasyon ortamında çalışıp çalışmadığını tespit etmeye çalışır. Eğer emülasyon ortamında çalışıyorsa, "isEmulated()" fonksiyonu "true" değerini döndürecektir. Aksi takdirde, gerçek sistemde çalıştığı varsayılır ve "false" değeri döndürülür. Bu değerlere göre, kod belirli işlemleri gerçekleştirmek veya gerçekleştirmemek için kullanılabilir.

Beitragsbild_PDF_verschluesseln.jpg


gBPwFuWw_o.png


Uzun ve yorucu bir konu olduğunun bende farkındayım fakat böyle olması daha iyi, daha çok kitleye hitab ederiz. Bazı açıklamadığım konular ve başlıklar olabilir benim için ve diğerleri için iyi olanlarını içinden çekip elimden geldiğince anlattım. Fotoğraflar karma ve renk katması açısından eklenmiştir. E artık başka konularda görüşmek üzere, konuyu beğendiyseniz
ovca0xc.gif
butonuna basıp diğer konularıma göz atmayı unutmayınız.

Protection - Anti Debugger -Anti Sandbox - Process İnjection Nedir ? | Anlatım
Rat Nedir ? | Fud Nasıl Yapılır ? | Rat Nasıl Yayılır ? |
Burp Suite Nedir | Nasıl Kullanılır ?
İOS'tan Windows'a Dosya Aktarımı | Bilgilendirme
İnstagram Hakkında Herşey | Bilgilendirme


G3oa9Tz.png



Tulu Yıldızları Kulübü

Sen Niye Gelmiyorsun Bakayım :mad:

Tulu İnovasyon Kulübü [ Alımlar Açık! ]

a3b2jeo.png
 
Moderatör tarafında düzenlendi:

Dekrats

Katılımcı Üye
26 Ocak 2023
549
440
Brain

Grimner

Kıdemli Moderatör
28 Mar 2020
6,305
4,702
Yav sen ne yapıyorsun, bu içeriğin kalitesi ne böyle 🔥🔥🔥
Eline sağlık.
 
Son düzenleme:

Quixera

Üye
15 Eyl 2012
84
42
Uzun süredir forumda gördüğüm en kaliteli konularda ilk sıralara oynar. Ellerinize gönlünüze zihninize sağlık.
 

!BadRhyme

Üye
29 Ocak 2023
84
28
a3b2jeo.png


Merhaba arkadaşlar bugün crypter ile ilgili tüm terimleri açıklayıp ve nasıl yapıldığını anlatacağım. Eksiklerim varsa affola. İyi okumalar dilerim.

giphy.gif



6OfL8I.gif


Crypter, genellikle kötü niyetli yazılımların (malware) tespitini ve analizini zorlaştırmak için kullanılan bir yazılım veya araçtır. Crypter ile ilgili bazı terimler şunlardır:

➤ Şifreleme (Encryption): Crypter, kötü niyetli bir yazılımın kodunu veya içeriğini, başka bir algoritma kullanarak orijinalinden farklı bir formata dönüştürebilir. Bu işlem, kötü niyetli yazılımın tespitini ve analizini zorlaştırabilir.

➤ Şifre Çözme (Decryption): Şifrelenmiş kodun orijinaline dönüştürülmesi işlemidir. Crypter, kötü niyetli yazılımın kodunu orijinal formuna dökebilmek için şifre çözme işlemini gerçekleştirebilir.

➤ Metamorphic Kod (Metamorphic Code): Kötü niyetli yazılımın kodunun her seferinde otomatik olarak değiştirildiği bir teknik olan metamorphic kod, kötü niyetli yazılımların tespitini zorlaştırabilir. Crypter, kötü niyetli yazılımın kodunu otomatik olarak değiştirerek metamorphic kodlama tekniklerini uygulayabilir.

➤ Polimorfizm (Polymorphism): Polimorfizm, kötü niyetli yazılımın kodunun her seferinde farklı bir formatta dönüştüğü bir teknik olan metamorphic kodun bir türüdür. Crypter, kötü niyetli yazılımın kodunu polimorfik olarak değiştirerek her seferinde farklı bir formatta şifreleyebilir.

➤ FUD (Fully UnDetectable): "Fully UnDetectable"ın kısaltması olan FUD, kötü niyetli yazılımın tespit edilemez olduğunu ifade eder. Crypter, kötü niyetli yazılımın tespit edilemez olmasını sağlamak için çeşitli yöntemler kullanabilir.

➤ Kötü Niyetli Yazılım Obfuskasyonu (Malware Obfuscation): Crypter, kötü niyetli yazılım kodunu karmaşıklaştırarak veya gizleyerek tespitini zorlaştıran bir obfuskasyon (gizleme) süreci uygulayabilir.

➤ Algı Engelleme (Evasion): Crypter, kötü niyetli yazılımın tespitini ve analizini engellemek için antivirüs veya güvenlik yazılımlarının algılama mekanizmalarını atlatmak için çeşitli teknikler kullanabilir.

fud.png


6OfL8I.gif


Şifreleme, bir verinin anlaşılamaz hale getirilmesi için kullanılan bir yöntemdir. Şifreleme süreci, veriyi belirli bir algoritma kullanarak şifreli bir formata dönüştürerek gizlilik, güvenlik ve veri bütünlüğü sağlar. İşte şifreleme yapma adımları:

Adım 1: Şifreleme Algoritması Seçimi İlk adım, kullanmak istediğiniz bir şifreleme algoritması seçmektir. Şifreleme algoritması, veriyi şifrelemek ve şifreyi çözmek için kullanılan matematiksel yöntemlerdir. Güvenlik seviyesi yüksek ve güvenilir şifreleme algoritmaları tercih edilmelidir.

Adım 2: Anahtar Oluşturma Şifreleme algoritması kullanılarak veriyi şifrelemek için bir anahtar gereklidir. Anahtar, verinin nasıl şifreleneceğini belirler. Şifreleme algoritmasına bağlı olarak, simetrik veya asimetrik şifreleme yöntemlerinden biri kullanılabilir. Simetrik şifrelemede, aynı anahtar şifreleme ve şifre çözme işlemlerinde kullanılırken, asimetrik şifrelemede ise farklı bir anahtar çifti (genel anahtar ve özel anahtar) kullanılır.

Adım 3: Veriyi Şifreleme Seçilen şifreleme algoritması ve anahtar kullanılarak veri şifrelenir. Bu adımda, belirli bir algoritma kullanılarak veri şifrelenir ve şifreli bir formata dönüştürülür. Şifreleme algoritması ve anahtar, verinin tam olarak nasıl şifreleneceğini belirler.

Adım 4: Şifrelenmiş Veriyi Kullanma veya Gönderme Şifrelenmiş veri, güvenli bir şekilde kullanılabilir veya gönderilebilir. Şifreli veri, yalnızca doğru anahtar kullanılarak çözülebilir. Veriyi çözmek için kullanılacak olan doğru anahtar, iletişim kurulan taraf veya veri alıcısı tarafından sağlanmalıdır.

Adım 5: Şifreyi Çözme Doğru anahtar kullanılarak şifreli veri çözülür. Şifre çözme algoritması, kullanılan şifreleme algoritmasıyla uyumlu olmalıdır ve doğru anahtar kullanılmalıdır. Şifre çözme işlemi, şifreleme işleminin tam tersidir ve orijinal veriyi elde etmek için kullanılır.

ocgh09a.gif


Python:
# Şifreleme işlemi
def encrypt(text, key):
    result = ""
    for char in text:
        if char.isalpha():
            ascii_offset = ord('a') if char.islower() else ord('A')
            shifted_char = chr((ord(char) - ascii_offset + key) % 26 + ascii_offset)
            result += shifted_char
        else:
            result += char
    return result

# Kullanım
plaintext = "Merhaba Dunya"  # Şifrelenecek metin
key = 3  # Şifreleme anahtarı (shift değeri)

# Şifreleme işlemi
ciphertext = encrypt(plaintext, key)
print("Şifreli Metin:", ciphertext)

Yukarıdaki kod, "Merhaba Dunya" metnini "Caesar Cipher" yöntemiyle şifreleyerek "Phuiede Gyqad" şeklinde şifreli metin elde etmektedir.

6OfL8I.gif


SerbRansom-crypter.gif


Şifrenin çözülmesi, yani şifre çözme, şifrelenmiş bir veriyi orijinal haline dönüştürme sürecidir. Şifre çözme işlemi, doğru anahtarın kullanılmasıyla gerçekleştirilir ve aşağıdaki adımları içerir:

Adım 1: Şifreleme Anahtarının Temini Doğru şifreleme anahtarını temin etmek önemlidir. Şifre çözme işlemi için kullanılacak olan doğru anahtar, şifrelenmiş verinin şifrelenme aşamasında kullanılan anahtarla aynı olmalıdır.

Adım 2: Şifreli Veriyi Alma Şifrelenmiş veri, iletişim kurulan taraf veya veri alıcısı tarafından alınır. Şifreli veri, çözülmek istenen veridir.

Adım 3: Şifre Çözme Algoritması Seçimi Kullanılan şifreleme algoritması ve anahtara bağlı olarak, doğru şifre çözme algoritması seçilir. Şifre çözme algoritması, şifrelenmiş veriyi orijinal haline dökmek için kullanılır.

Adım 4: Şifre Çözme İşlemi Seçilen şifre çözme algoritması ve doğru anahtar kullanılarak şifreli veri çözülür. Bu adımda, belirli bir algoritma kullanılarak şifreli veri, orijinal veriye dönüştürülür. Şifre çözme algoritması ve anahtar, şifrelenme aşamasında kullanılanlarla aynı olmalıdır.

Adım 5: Orijinal Veriyi Kullanma veya İşleme Şifre çözme işlemi sonucunda elde edilen orijinal veri, kullanılabilir veya işleme alınabilir. Orijinal veri, şifrelenmeden önceki hali olan açık metin veridir. Veri, güvenli bir şekilde kullanılabilir veya ilgili işlemler için kullanılabilir.

Önemli Not: Şifre çözme işlemi, doğru anahtarın kullanılmasıyla gerçekleştirilir. Doğru anahtarın gizli ve güvenli bir şekilde saklanması ve paylaşılması önemlidir, çünkü yanlış anahtar kullanıldığında şifre çözme işlemi başarısız olur ve orijinal veri elde edilemez.

ocgh09a.gif


Python:
# Şifre çözme işlemi
def decrypt(ciphertext, key):
    result = ""
    for char in ciphertext:
        if char.isalpha():
            ascii_offset = ord('a') if char.islower() else ord('A')
            shifted_char = chr((ord(char) - ascii_offset - key) % 26 + ascii_offset)
            result += shifted_char
        else:
            result += char
    return result

# Kullanım
ciphertext = "Phuiede Gyqad"  # Çözülecek şifreli metin
key = 3  # Şifreleme anahtarı (shift değeri)

# Şifre çözme işlemi
decrypted_text = decrypt(ciphertext, key)
print("Çözülmüş Metin:", decrypted_text)

Caesar Cipher ile şifrelediğimiz kelimeyi tekrar orjinal haline getirdik.

6OfL8I.gif


Metamorfik kod, kendisini sürekli olarak değiştirerek veya dönüşerek gizlemeye çalışan, kötü niyetli yazılımların bir türüdür. Metamorfik kod, her seferinde farklı bir yapıya sahip olabilir ve bu nedenle geleneksel antivirüs yöntemlerine karşı daha zor tespit edilebilir. Metamorfik kodun nasıl oluşturulduğuna dair çeşitli yaklaşımlar vardır ve karmaşık bir süreç içerebilir. Aşağıda, genel olarak metamorfik kodun nasıl oluşturulabileceğine dair bir örnek süreç verilmiştir:

Adım 1: Şifreleme veya Sıkıştırma Metamorfik kod, şifreleme veya sıkıştırma gibi yöntemlerle orijinal kötü niyetli kodun yapısını değiştirebilir. Örneğin, kod parçaları şifrelenerek veya sıkıştırılarak orijinal kodun yapısal olarak değişmesi sağlanabilir.

Adım 2: Obfuskasyon (Belirsizleştirme) Metamorfik kod, kod parçalarını veya kod akışını karmaşık hale getirmek için obfuskasyon tekniklerini kullanabilir. Bu, kodun okunabilirliğini azaltabilir ve tespit edilme olasılığını azaltabilir. Örneğin, değişken ve fonksiyon isimleri rastgele olarak değiştirilebilir veya karmaşık matematiksel işlemler veya mantıksal ifadeler kullanılabilir.

Adım 3: Dönüşüm ve Değişim Metamorfik kod, kodun dönüşüm ve değişimine yönelik teknikler kullanabilir. Örneğin, kod blokları veya komutlar, farklı türde kod bloklarına veya komutlara dönüştürülebilir. Ayrıca, kodun sırası veya yapısı rastgele olarak değiştirilebilir.

Adım 4: Hareket (Mutation) Metamorfik kod, kodun yapısını sürekli olarak değiştirmek için mutasyon tekniklerini kullanabilir. Örneğin, kod parçaları veya komutlar, farklı kod parçaları veya komutlar ile yer değiştirilebilir veya yer değiştirebilir. Bu, kodun her seferinde farklı bir yapıya sahip olmasını sağlayabilir.

Adım 5: Hedef Platforma Uyarlanma Metamorfik kod, hedef platforma (örneğin işletim sistemi, işlemci mimarisi, dil vb.) uyarlanabilir. Bu, kodun hedef sistemde çalışabilir olmasını sağlamak için gereklidir.

ocgh09a.gif


Python:
# Basit bir metamorfik kod örneği
import random

# Rastgele sayı üreteci
def random_num():
    return random.randint(1, 100)

# Rastgele operatör üreteci
def random_operator():
    operators = ['+', '-', '*', '/']
    return random.choice(operators)

# Metamorfik kod
def metamorphic_code(x, y):
    a = x
    b = y
    for i in range(10):
        num1 = random_num()
        num2 = random_num()
        operator = random_operator()
        if operator == '+':
            a = num1 + num2
        elif operator == '-':
            a = num1 - num2
        elif operator == '*':
            a = num1 * num2
        elif operator == '/':
            if num2 != 0:
                a = num1 / num2
        b = b + a
    return b

# Kullanım
x = 5
y = 10
result = metamorphic_code(x, y)
print("Sonuç:", result)

Yukarıdaki kod, basit bir metamorfik yapıya sahiptir. Her çalıştırıldığında, rastgele sayılar ve operatörler kullanarak kodun yapı ve işleyişini değiştirir. Bu şekilde, kodun kendini sürekli olarak değiştirdiği ve farklı sonuçlar ürettiği görülmektedir. Ancak, unutulmamalıdır ki, metamorfik kodlar etik ve yasal kurallar dahilinde kullanılmalıdır ve herhangi bir yasadışı faaliyeti desteklemek veya teşvik etmekten kaçınılmalıdır.

6OfL8I.gif


crypter.gif


Polimorfizm, programlama dillerine bağlı olarak farklı şekillerde uygulanabilir. Aşağıda, genel olarak polimorfizmin nasıl uygulanabileceğine dair örnek bazı yaklaşımlar verilmiştir:


Dil tarafından desteklenen polimorfizm: Bazı programlama dilleri, polimorfizmi doğal olarak destekler ve dilin kendisi tarafından sağlanan özellikler ile polimorfik kod yazmak mümkündür. Örneğin, Java ve C# gibi nesne yönelimli dillerde, sınıfların aynı arayüzü uygulaması veya aynı üst sınıfı genişletmesi yoluyla polimorfizm sağlanabilir. Bu sayede, farklı sınıfların aynı metotları farklı şekillerde gerçekleştirmesi mümkün olabilir.

Soyut sınıflar ve arayüzler: Polimorfizm, soyut sınıflar veya arayüzler kullanılarak da elde edilebilir. Soyut sınıflar, doğrudan nesne oluşturulmasına izin vermez ve alt sınıflar tarafından uygulanması gereken metotların şablonlarını içerir. Arayüzler ise bir veya birden fazla sınıf tarafından uygulanabilir ve aynı metotların implementasyonunu gerektirir. Bu sayede, farklı sınıfların aynı arayüzü uygulayarak polimorfik kod yazmak mümkündür.

Fonksiyon göstericileri veya fonksiyon nesneleri: Bazı dillerde, fonksiyon göstericileri veya fonksiyon nesneleri kullanılarak da polimorfizm sağlanabilir. Fonksiyon göstericileri, fonksiyonların adreslerini tutan değişkenlerdir ve farklı fonksiyonların aynı imzayı kullanarak çağrılmasını sağlayabilir. Fonksiyon nesneleri ise fonksiyonların nesne olarak kullanılmasını sağlar ve farklı fonksiyonların aynı yöntem çağrısı ile çalışmasını sağlayabilir.

Veri tipi dönüşümleri: Bazı dillerde, veri tipi dönüşümleri kullanılarak da polimorfizm sağlanabilir. Örneğin, sayısal veri tiplerinin otomatik olarak dönüştürülerek aynı operatörlerin kullanılmasına izin verilir ve farklı veri tiplerinin aynı operasyonları gerçekleştirmesi sağlanabilir.

ocgh09a.gif


Örnek bir Java kodu ile polimorfizmi kullanma:

JavaScript:
// Arayüz tanımı
interface Arayuz {
  void metot();
}

// Arayüzü uygulayan sınıflar
class Sinif1 implements Arayuz {
  @Override
  public void metot() {
    System.out.println("Sinif1'den metot çağrıldı.");
  }
}

class Sinif2 implements Arayuz {
  @Override
  public void metot() {
    System.out.println("Sinif2'den metot çağrıldı.");
  }
}

public class PolimorfizmOrnegi {
  public static void main(String[] args) {
    // Arayüz tipinde referanslar
    Arayuz obj1 = new Sinif1();
    Arayuz obj2 = new Sinif2();
    
    // Polimorfizm kullanarak farklı sınıfların aynı metotunu çağırma
    obj1.metot(); // Sinif1'den metot çağrıldı.
    obj2.metot(); // Sinif2'den metot çağrıldı.
  }
}

Yukarıdaki kodda, "Arayuz" adında bir arayüz tanımlanmış ve bu arayüzü uygulayan "Sinif1" ve "Sinif2" adında iki sınıf oluşturulmuştur. Ardından "PolimorfizmOrnegi" adında bir sınıf oluşturulmuş ve main metodu içinde "Arayuz" tipinde referanslar kullanılarak "Sinif1" ve "Sinif2" sınıflarından objeler oluşturulmuştur.

Daha sonra "obj1" ve "obj2" referansları ile polimorfizm kullanılarak, "Arayuz" arayüzünü uygulayan "Sinif1" ve "Sinif2" sınıflarının aynı metot() metodunu çağırılmıştır. Böylece farklı sınıfların aynı arayüzü uygulayarak polimorfik kod yazılmıştır.

6OfL8I.gif


Malware obfuscation, zararlı yazılımların veya kötü niyetli kodun anlaşılmasını zorlaştırmak için kullanılan bir tekniktir. Bu teknik, zararlı yazılım kodunu karmaşıklaştırarak, gizleyerek veya değiştirerek, antivirüs programları veya güvenlik analiz araçları tarafından tespit edilme olasılığını azaltmayı hedefler. İşte malware obfuscation'ın genel bir örneği

ocgh09a.gif


Örnek Malware Obfuscation Kodu (Python):

Python:
# Orjinal zararlı yazılım kodu
def zararli_fonksiyon():
    print("Zararli isler yapiliyor!")

# Malware obfuscation ile gizlenmiş zararlı yazılım kodu
def gizlenmis_fonksiyon():
    # Karmaşık hesaplamalar veya anlamsız kod blokları eklenerek kodu gizleme
    for i in range(100):
        x = i * 2
        y = x + 3
        z = y / 2

    # Fonksiyonun asıl amacını gizlemek için anlamsız print veya atama işlemleri eklenme
    print("Hello World!")
    a = 5
    b = "abc"
    c = a + len(b)

    # Fonksiyonun adını değiştirerek kodu gizleme
    exec("".join([chr(ord(c) + 1) if c.isalpha() else c for c in "tnevatYvfunqra()"]))

# Obfuscated kodu çağırma
gizlenmis_fonksiyon()

Yukarıdaki örnekte, orijinal zararlı yazılım kodu "zararli_fonksiyon()" adında basit bir fonksiyondu. Malware obfuscation teknikleri kullanılarak, kod karmaşık hale getirildi, anlamsız kod blokları eklendi, gereksiz print veya atama işlemleri yapıldı ve fonksiyon adı değiştirildi. Böylece, zararlı yazılım kodu, antivirüs programları veya güvenlik analiz araçları tarafından tespit edilme olasılığını azaltmak için gizlendi.



6OfL8I.gif


databending-encrypted.gif


"Evasion", siber güvenlik alanında, güvenlik önlemlerini atlatma veya gizleme amacıyla kullanılan bir terimdir. Evasion teknikleri, siber saldırganlar veya güvenlik testçileri tarafından, güvenlik duvarları, saldırı tespit sistemleri (IDS), antivirüs programları, güvenlik yazılımları ve diğer güvenlik önlemlerini atlatmak veya engellemek için kullanılabilir. Ancak, unutulmamalıdır ki, herhangi bir siber güvenlik faaliyetinde etik ve yasal sınırlara uygun olarak hareket etmek önemlidir.

Evasion teknikleri, çeşitli yöntemler kullanarak güvenlik önlemlerini atlatmaya veya gizlemeye çalışabilir. İşte bazı yaygın evasion tekniklerinin örnekleri:

➤ Polymorphism: Zararlı yazılımın her saldırıda farklı bir formda görünmesini sağlayan bir teknik. Örneğin, zararlı yazılımın kodunu sürekli olarak değiştirerek veya şifreleyerek, antivirüs programları tarafından tespit edilme olasılığını azaltabilir.

➤ Stealth: Zararlı yazılımın kendini gizlemek için çeşitli yöntemler kullanması. Örneğin, sistemde gizli bir klasöre veya dosyaya saklanarak, veya sistem bileşenlerine zarar vermeden veya hafıza alanında gizlenerek tespit edilme olasılığını azaltabilir.

➤ Trafik Şifreleme: Zararlı yazılımın ağ trafiğini şifreleyerek, ağ güvenlik cihazları tarafından tespit edilme olasılığını azaltabilir.

➤ Zero-day Exploits: Bilinen güvenlik açıklarını kullanmak yerine, henüz keşfedilmemiş ve yamanın bulunmadığı güvenlik açıklarını kullanarak güvenlik önlemlerini atlatmak.

➤ Anti-Emulation: Zararlı yazılımın, analiz ortamlarında veya güvenlik test araçlarında çalıştığı tespit edildiğinde, farklı davranışlar sergileyerek tespit edilme olasılığını azaltmak.


Örnek: HTTP Header Manipülasyonu

Bu örnekte, saldırganın HTTP trafiğini hedef web sunucusuna ilettikten sonra, istemcinin (web tarayıcısı gibi) doğru sonuçları almasını sağlamak için HTTP başlıklarını manipüle etmesi gerekmektedir. HTTP başlıkları, web tarayıcıları ve web sunucuları arasındaki iletişimde kullanılan metaverilerdir ve kullanıcı tarayıcısına, sunucuya hangi verilerin gönderildiğini ve nasıl işlenmesi gerektiğini söyler.

ocgh09a.gif


Aşağıda, Python dilinde basit bir örnek kod parçacığı bulunmaktadır:

Python:
import requests

# Hedef URL
url = "http://example.com/login"

# HTTP başlıklarını manipüle etme
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0",
    "Referer": "http://example.com",
    "Accept-Language": "en-US,en;q=0.5",
    # Evasion için manipüle edilen başlık
    "X-Forwarded-For": "192.168.1.100",  # Yanlış bir IP adresi gösterilerek gerçek IP gizlenir
}

# HTTP POST isteği yapma
response = requests.post(url, headers=headers, data={"username": "admin", "password": "password"})

# Yanıtı kontrol etme
if response.status_code == 200:
    print("Başarılı bir şekilde giriş yapıldı!")
else:
    print("Giriş başarısız oldu.")

Bu örnekte, "X-Forwarded-For" başlığı, gerçek IP adresini gizlemek için manipüle edilmiştir. Bu, hedef web sunucunun, saldırganın gerçek IP adresini doğru bir şekilde tespit etmesini zorlaştırabilir.

6OfL8I.gif


Evasion Alt Başlıklar

AdorableEasygoingCrocodile-max-1mb.gif


6OfL8I.gif


Trafik Şifreleme;

Python:
import socket
import ssl

# Sunucu bilgileri
hostname = "www.example.com"
port = 443

# TCP soketi oluşturma
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# SSL/TLS ile şifrelenmiş soket oluşturma
ssl_sock = ssl.wrap_socket(sock)

# Sunucuya bağlanma
ssl_sock.connect((hostname, port))

# Veri gönderme
data = "Merhaba, bu trafik şifreleme ile korunan veridir!"
ssl_sock.write(data.encode())

# Veri alma
received_data = ssl_sock.read(1024)
print("Alınan veri: ", received_data.decode())

# Soketleri kapatma
ssl_sock.close()
sock.close()

Bu kod, Python programı kullanarak SSL/TLS protokolünü kullanarak sunucu ile güvenli bir bağlantı kurar ve veri iletimini şifreleyerek trafik şifreleme sağlar. "www.example.com" adresindeki bir sunucuya bağlanır, şifrelenmiş bir "Merhaba" mesajı gönderir ve sunucudan gelen şifrelenmiş veriyi alır.

6OfL8I.gif


ocgh09a.gif


Stealht:

Python:
import shutil

# Zararlı dosyanın gizli bir klasöre taşınması
shutil.move("zararli.exe", "C:/ProgramData/GizliKlasor/zararli.exe")

# Gizli klasörün ve zararlı dosyanın gizlenmesi
shutil._shutil_change_build("C:/ProgramData/GizliKlasor", "", "", False)
shutil._shutil_change_build("C:/ProgramData/GizliKlasor/zararli.exe", "", "", False)

# Zararlı yazılımın bellekte gizlenmesi
import ctypes

kernel32 = ctypes.WinDLL('kernel32.dll')
user32 = ctypes.WinDLL('user32.dll')

# Zararlı yazılımın pencerelerini gizleme
user32.ShowWindow(kernel32.GetConsoleWindow(), 0)

# Sonsuz döngüye girme ve sürekli çalışma
while True:
    # Zararlı işlemin ana kodu burada yer alır
    pass

Yukarıdaki örnek kodda, "zararli.exe" adlı zararlı bir dosya, "C:/ProgramData/GizliKlasor" adlı gizli bir klasöre taşınmış ve klasörün ve dosyanın gizli hale getirilmesi için "shutil" modülü kullanılmıştır. Ayrıca, "ctypes" modülü kullanılarak zararlı yazılımın pencerelerini gizlemesi ve sürekli olarak çalışması sağlanmıştır. Bu sadece bir örnek olup, gerçek dünya senaryolarında daha karmaşık ve kötü niyetli zararlı yazılımlar kullanılarak bilgisayar sistemlerini hedef alan saldırılar gerçekleştirilebilir.

6OfL8I.gif


BlankJitteryCaterpillar-size_restricted.gif


Anti-Emulation:

Aşağıda, anti-emülasyon tekniklerini kullanarak bir örnek kod görüntülenmiştir. Bu kod, emülasyon ortamlarında çalıştırıldığında belirli bir işlemi gerçekleştirirken, gerçek sistemlerde çalıştırıldığında farklı bir işlemi gerçekleştirmektedir. Bu, kötü niyetli yazılımların analiz ortamlarında tespit edilmesini zorlaştırmak için kullanılabilir.

Kod:
#include <stdio.h>[/B][/SIZE][/CENTER]
[SIZE=4][B][CENTER]#include <stdbool.h>
#include <windows.h>

// Emülasyon ortamında çalıştığını kontrol etmek için bir fonksiyon
bool isEmulated()
{
    bool result = false;
    __try
    {
        __asm
        {
            pushad          // Tüm genel amaçlı kaydedicileri yığına it
            pushfd          // Flags register'ını yığına it
            xor eax, eax    // eax'i sıfırla
            cpuid           // cpuid talimatını çağır
            test eax, eax   // eax'i test et
            jz fake         // eax sıfır ise fake etiketine git
            jmp real        // eax sıfır değil ise real etiketine git
        fake:
            mov result, 1   // fake etiketi: emülatörde çalışıyoruz
            jmp done        // done etiketine git
        real:
            mov result, 0   // real etiketi: gerçek sisteme çalışıyoruz
        done:
            popfd           // Flags register'ını yığından çek
            popad           // Tüm genel amaçlı kaydedicileri yığından çek
        }
    }
    __except (EXCEPTION_EXECUTE_HANDLER)
    {
        result = true;  // Exception fırlatıldıysa emülatörde çalışıyoruz
    }
    return result;
}

int main()
{
    if (isEmulated())
    {
        printf("Emülasyon ortamında çalışıyoruz.\n");
        // Emülasyon ortamında yapılacak işlemler burada yer alabilir
    }
    else
    {
        printf("Gerçek sisteme çalışıyoruz.\n");
        // Gerçek sisteme yapılacak işlemler burada yer alabilir
    }

    return 0;
}







Yukarıdaki örnekte ardiuno ile yazılmış, "isEmulated()" adlı bir fonksiyon kullanılmaktadır. Bu fonksiyon, "cpuid" talimatını kullanarak CPU'nun durumunu kontrol ederek emülasyon ortamında çalışıp çalışmadığını tespit etmeye çalışır. Eğer emülasyon ortamında çalışıyorsa, "isEmulated()" fonksiyonu "true" değerini döndürecektir. Aksi takdirde, gerçek sistemde çalıştığı varsayılır ve "false" değeri döndürülür. Bu değerlere göre, kod belirli işlemleri gerçekleştirmek veya gerçekleştirmemek için kullanılabilir.

Beitragsbild_PDF_verschluesseln.jpg


gBPwFuWw_o.png


Uzun ve yorucu bir konu olduğunun bende farkındayım fakat böyle olması daha iyi, daha çok kitleye hitab ederiz. Bazı açıklamadığım konular ve başlıklar olabilir benim için ve diğerleri için iyi olanlarını içinden çekip elimden geldiğince anlattım. Fotoğraflar karma ve renk katması açısından eklenmiştir. E artık başka konularda görüşmek üzere, konuyu beğendiyseniz
ovca0xc.gif
butonuna basıp diğer konularıma göz atmayı unutmayınız.

Protection - Anti Debugger -Anti Sandbox - Process İnjection Nedir ? | Anlatım
Rat Nedir ? | Fud Nasıl Yapılır ? | Rat Nasıl Yayılır ? |
Burp Suite Nedir | Nasıl Kullanılır ?
İOS'tan Windows'a Dosya Aktarımı | Bilgilendirme
İnstagram Hakkında Herşey | Bilgilendirme


G3oa9Tz.png



Tulu Yıldızları Kulübü

Sen Niye Gelmiyorsun Bakayım :mad:

Tulu İnovasyon Kulübü [ Alımlar Açık! ]

a3b2jeo.png
Eline Sağlık Mükemmel konu.
 
Ü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.