Python ile Zararlı Yazılım Analizi!

Agent-47

Katılımcı Üye
23 Mar 2023
411
260
HACKERİSTAN
a3b2jeo.png

İyi günler Türk Hack Team ailesi.

Bugün sizlere zararlı yazılım analizi hakkında bir içerik hazırlayacağım. Aynı zamanda biliyorsunuz ki günümüzde doğrudan sonuç odaklı yaşıyoruz. Bundan dolayı sizler için Python ile geliştirebileceğiniz analiz kod örnekleri vereceğim. Daha sonrasında bu kodları farklı projeler üretmek veya ufkunuzu açmak için kullanabilirsiniz.

PpUz4Fr.gif

IvwCnY9.png


Çalışmaya Başlamadan Önce Hazırlık
F3beZqk.png

Çalışmaya başlamadan önce bu linke veya bu linke giderek, önceden hazırlanmış birçok zararlı yazılıma erişebilir ve bunlar üzerinden testlerinizi yapabilirsiniz.
Dinamik analizler için sanal bir bilgisayar kurup, çalışmalarınızı içinde yapmanızı tavsiye ediyorum.
BRQuqDc.png


Zararlı Yazılım Analizi Süreçleri

F3beZqk.png


Zararlı yazılım analizi, temel olarak iki ana süreçten oluşur: statik analiz ve dinamik analiz.


Statik Analiz

Statik analiz, zararlı yazılımın çalıştırılmadan önce incelenmesi ve analiz edilmesi sürecidir. Bu analiz türünde, dosya özellikleri, dosya içeriği, gömülü metin dizeleri ve diğer meta veriler incelenir. Statik analiz, güvenli bir ortamda zararlı yazılımın iç yapısını anlamak için kullanılır ve potansiyel zararlı işlemleri belirlemeye yardımcı olur. Statik analiz süreci, zararlı yazılımın kodu veya dosya formatının deşifre edilmesi ve çözümlenmesiyle başlar ve daha sonra özellikler ve bağımlılıkların analiziyle devam eder.


Rec6PsU.gif


Dinamik Analiz

Dinamik analiz, zararlı yazılımın gerçek zamanlı olarak çalıştırıldığı ve sistemdeki etkilerinin gözlemlendiği bir süreçtir. Bu analiz türü, zararlı yazılımın çalıştırılması sırasında ağ trafiği, sistem değişiklikleri, dosya işlemleri ve diğer sistem etkileşimleri gibi davranışlarını incelemeyi amaçlar. Dinamik analiz, genellikle sanal ortamlarda veya izole edilmiş sistemlerde gerçekleştirilir, böylece zararlı yazılımın gerçek sistemlere zarar vermesi önlenir. Dinamik analiz, zararlı yazılımın nasıl çalıştığı, hangi sistem kaynaklarını kullandığı ve sistemle nasıl etkileşime girdiği hakkında derinlemesine bilgi sağlar.


VIRUS.gif


Python ile Statik Analiz Örnekleri
F3beZqk.png

Dosya Özellikleri Analizi

Zararlı yazılım dosyasının özelliklerini inceleyerek (dosya boyutu, oluşturulma tarihi, değiştirilme tarihi vb.), dosyanın şüpheli olup olmadığına dair ipuçları elde edebilirsiniz.
Bu şekilde dosyanın daha önceden değiştirilip, değiştirilmediği, benzer dosyaların boyutları, vb. gibi veriler üzerinden bir çıkarımda bulunabilirsiniz. Sonrasında dosya türü gibi farklı verileri ekleyip, farklı analizlerde bulunabilirsiniz.
t32_c2_a1_p4@2x.png

Python:
import os
import time

file_path = "malware.exe" # dosya yolu

# Dosya özelliklerini al
file_size = os.path.getsize(file_path)
created_time = os.path.getctime(file_path)
modified_time = os.path.getmtime(file_path)

# Dosya özelliklerini yazdır
print(f"File size: {file_size} bytes")
print(f"Created time: {time.ctime(created_time)}")
print(f"Modified time: {time.ctime(modified_time)}")

Çıktı:
23O5P6j.png


PE Dosyası Analizi

PE (Portable Executable) dosyası, Microsoft Windows işletim sistemi tarafından kullanılan ve uygulama veya sürücü gibi yürütülebilir dosyaları içeren bir dosya formatıdır. PE Dosyası Analizi, bu dosya formatını inceleyerek dosyanın işleyişi hakkında bilgi sağlayan bir tekniktir.

PE dosyasının yapısı, bir dosyanın içindeki bölümler, dosya başlığı, dosya kaynakları, yürütülebilir kod, veri blokları ve benzeri özellikleri içerir. PE Dosyası Analizi, bu özellikleri inceler ve dosyanın amacını ve potansiyel risklerini belirlemeye yardımcı olur.
Ne8Aa2u.png

Python:
import pefile

pe = pefile.PE("malware.exe")

# PE dosya özelliklerini yazdır
print(f"Entry Point: {hex(pe.OPTIONAL_HEADER.AddressOfEntryPoint)}")
print(f"Number of Sections: {len(pe.sections)}")
print("Sections:")
for section in pe.sections:
    print(f"  {section.Name.decode('utf-8')} - VA: {hex(section.VirtualAddress)} - Size: {section.SizeOfRawData}")

Çıktı:
oXu3baW.png

Import ve Export Analizi

Import Analizi, bir yürütülebilir dosyanın diğer dosyalardan hangi fonksiyonları çağırdığını ve bu fonksiyonların nerede bulunduğunu belirlemeye yardımcı olur. Bu analiz, bir yazılımın hangi kütüphanelerini ve fonksiyonlarını kullandığını anlamak için kullanılabilir.

Export Analizi ise, bir yürütülebilir dosyanın kendi içinde hangi fonksiyonları barındırdığını ve diğer dosyaların bu fonksiyonları nasıl kullanabileceğini belirlemeye yardımcı olur. Bu analiz, bir yazılımın hangi fonksiyonları kullanıcılar veya diğer yazılımlar tarafından çağırabileceğini anlamak için kullanılabilir.

Zararlı yazılımların kullandığı harici fonksiyonları ve kütüphaneleri analiz ederek, zararlı yazılımın amacı ve işlevselliği hakkında bilgi toplayabilirsiniz.


Python:
import pefile

pe = pefile.PE("example_malware.exe")

# İmportları yazdır
if hasattr(pe, "DIRECTORY_ENTRY_IMPORT"):
    print("Imports:")
    for entry in pe.DIRECTORY_ENTRY_IMPORT:
        print(f"  {entry.dll.decode('utf-8')}")
        for function in entry.imports:
            print(f"    {function.name.decode('utf-8')}")

# Exportları yazdır
if hasattr(pe, "DIRECTORY_ENTRY_EXPORT"):
    print("Exports:")
    for function in pe.DIRECTORY_ENTRY_EXPORT.symbols:
        print(f"  {function.name.decode('utf-8')}")

Çıktı:
K6RsXeS.png

String Analizi
String Analizi, bir yazılımın içindeki metin verilerini inceleyen bir tekniktir. Bu analiz, zararlı yazılım analizi ve yazılım geliştirme süreçlerinde kullanılır.

Bir yazılım, kullanıcı arayüzünde, hata mesajlarında, komut dosyalarında, kaynak kodunda ve diğer birçok yerde metin verileri içerir. String Analizi, bu metin verilerini inceleyerek yazılımın işleyişi hakkında bilgi sağlar.

Örneğin, bir zararlı yazılımın içindeki bir dize, bir şifreleme algoritmasını belirleyebilir veya bir komut dosyasında bir kötü amaçlı URL'yi açığa çıkarabilir. Bu bilgi, zararlı yazılımın tespit edilmesi ve temizlenmesi için kullanılabilir.

Zararlı yazılım içindeki metin dizelerini çıkararak, zararlı yazılımın amacı ve işlevleri hakkında daha fazla bilgi edinebilirsiniz.
tangled-string.gif

Python:
import string
import pefile

def strings_in_file(file_path, min_len=5):
    with open(file_path, "rb") as file:
        result = ""
        for char in file.read():
            if chr(char) in string.printable:
                result += chr(char)
            else:
                if len(result) >= min_len:
                    yield result
                result = ""

pe = pefile.PE("example_malware.exe")

# Stringleri yazdır
print("Strings:")
for s in strings_in_file("example_malware.exe"):
    print(f"  {s}")

Çıktı:
uJE0A6A.png


Yapılandırma Ayarları Çıkarılması

Yapılandırma Ayarları Çıkarılması (Configuration Extraction), bir yazılımın çalışması için gereken yapılandırma dosyalarından veya ayarlarının çıkarılması ve analiz edilmesi işlemidir. Bu analiz, bir yazılımın yapılandırması hakkında bilgi sağlayarak, yazılım geliştirme ve zararlı yazılım analizi süreçlerinde kullanılır.

Bir yazılım, genellikle bir konfigürasyon dosyası veya ayarları içeren bir yapılandırma dosyası kullanır. Bu dosyalar, yazılımın çalışması için gerekli olan değişkenleri, parametreleri ve diğer ayarları içerir. Yapılandırma Ayarları Çıkarılması, bu dosyaların içeriğinin analiz edilmesi ve yazılımın çalışması için gerekli olan ayarların belirlenmesi işlemini içerir.

Bazı zararlı yazılımlar, yapılandırma ayarlarını veya hassas bilgileri dosya içinde saklar. Bu bilgileri çıkararak, zararlı yazılımın işleyişine dair daha fazla bilgi elde edebilirsiniz.
the-claw-animated.gif


Python:
import re
import pefile

def extract_config(file_path, regex_pattern):
    with open(file_path, "rb") as file:
        file_data = file.read()
        config_data = re.findall(regex_pattern, file_data)
        return config_data

pe = pefile.PE("example_malware.exe")

# Örnek bir düzenli ifade (regex) ile yapılandırma ayarlarını çıkarma
config_pattern = re.compile(rb"config_key=(\w+)")
config_values = extract_config("example_malware.exe", config_pattern)

print("Config Values:")
for value in config_values:
    print(f"  {value.decode('utf-8')}")
Control Flow Graph (CFG) Analizi
Control Flow Graph (CFG) Analizi, bir yazılımın kodunun kontrol akışını temsil eden bir grafik modeli oluşturarak, yazılımın işleyişi hakkında bilgi sağlayan bir tekniktir. Bu analiz, yazılım geliştirme ve zararlı yazılım analizi süreçlerinde kullanılır.

CFG Analizi, bir yazılımın kodunu bloklara ayırır ve bu bloklar arasındaki kontrol akışını belirleyerek bir grafik modeli oluşturur. Bu model, bir yazılımın farklı kısımlarının nasıl etkileştiğini ve birbirleriyle nasıl bağlantılı olduğunu gösterir.

Zararlı yazılımların CFG'lerini inceleyerek, kodun mantığı ve çalışma şekli hakkında bilgi edinebilirsiniz. Python ile angr kütüphanesini kullanarak CFG analizi yapabilirsiniz.

hypta1I.png

Python:
import angr

binary_path = "example_malware.exe"

# Angr projeyi yükleme
project = angr.Project(binary_path)

# CFG oluşturma
cfg = project.analyses.CFG()

# CFG düğümlerini yazdırma
print("CFG Nodes:")
for node in cfg.nodes():
    print(f"  {node}")

Çıktı:
dr7xxeF.png


Python ile Dinamik Analiz Örnekleri
F3beZqk.png

Cuckoo Sandbox
Cuckoo Sandbox, otomatik olarak zararlı yazılım örneklerini çalıştırarak, ağ trafiğini, sistem değişikliklerini ve diğer davranışları analiz etmeyi sağlayan açık kaynaklı bir dinamik analiz aracıdır. Python ile Cuckoo Sandbox API'sini kullanarak analiz sonuçlarını alabilirsiniz. Ayrıca Cuckoo Sandbox hakkında daha fazla bilgi almak isterseniz
buradan websitesine gidip, dökümantasyonunu okuyabilirsiniz.

Öncelikle Cuckoo Sandbox kurulumunu tamamlamanız ve çalışır durumda olması gerekmektedir.
cuckoo-white.png

Python:
import requests

cuckoo_api_url = "http://localhost:8090"

# Cuckoo Sandbox'a dosya gönderme
with open("example_malware.exe", "rb") as file:
    response = requests.post(f"{cuckoo_api_url}/tasks/create/file", files={"file": file})
    task_id = response.json()["task_id"]

# Analiz sonuçlarını al
results_response = requests.get(f"{cuckoo_api_url}/tasks/report/{task_id}")
analysis_results = results_response.json()

# Sonuçları işleme
print(f"Task ID: {task_id}")
print(f"Malware Score: {analysis_results['info']['score']}")
Process Monitor
Process Monitor, bir uygulamanın sistemin farklı bileşenleriyle olan etkileşimlerini izleyerek, uygulamanın davranışını anlamaya yardımcı olan bir hata ayıklama ve izleme aracıdır. Bu etkileşimler, dosya işlemleri, kayıt defteri değişiklikleri, ağ trafiği ve diğer birçok bileşeni içerebilir.

Process Monitor, dinamik analiz sırasında süreçleri ve dosya etkinliklerini izlemenize olanak tanır. Python ile Process Monitor'ı (ProcMon) kullanarak dinamik analiz yapabilirsiniz. Öncelikle ProcMon'ı indirip doğru yola yerleştirmeniz gerekir.


Python:
import subprocess

procmon_path = "C:\\Path\\To\\procmon.exe"
procmon_output = "procmon_logfile.csv"
malware_path = "example_malware.exe"

# ProcMon'ı başlatma
procmon = subprocess.Popen([procmon_path, "/Quiet", "/Minimized", "/Backingfile", procmon_output])

# Zararlı yazılımı çalıştırma
subprocess.run([malware_path])

# ProcMon'ı durdurma
procmon.terminate()

# ProcMon loglarını işleme
with open(procmon_output, "r") as logfile:
    log_data = logfile.readlines()

# Log verilerini işleme ve sonuçları yazdırma
print("ProcMon Logs:")
for line in log_data:
    print(f"  {line.strip()}")
Dynamic Instrumentation
Dynamic Instrumentation, yazılımın çalışma zamanındaki davranışını analiz etmek için kullanılır. Bu teknik, yazılımın bellek yönetimi, dosya işlemleri, ağ bağlantıları ve diğer işlemleri gibi farklı bileşenleri üzerinde etkili bir şekilde çalışabilir.

Bir örnek olarak, Dynamic Instrumentation, bir yazılımın bellek yönetimini analiz etmek için kullanılabilir. Bu teknik, yazılımın bellek kullanımını analiz ederek, bellek sızıntıları veya bellek bozulmaları gibi hataları belirleyebilir. Aynı zamanda, bir yazılımın ağ bağlantılarını analiz ederek, zararlı yazılımın ne tür verileri çalabileceğini veya ne tür ağ bağlantıları kurabileceğini belirleyebilir.

Python ile frida kütüphanesini kullanarak dinamik enstrümantasyon yapabilirsiniz.

Python:
import frida

def on_message(message, data):
    print(f"Message: {message}, Data: {data}")

malware_process_name = "example_malware.exe"

# Frida ile sürece bağlanma
session = frida.attach(malware_process_name)

# Süreç içindeki bir fonksiyonu izleme
hook_script = """
Interceptor.attach(ptr("0x123456"), {
    onEnter: function(args) {
        console.log("Function called!");
    },
    onLeave: function(retval) {
        console.log("Function returned!");
    }
});
"""

script = session.create_script(hook_script)
script.on("message", on_message)
script.load()

# Dinamik analiz sırasında süreci izleme
input("Press Enter to stop the monitoring...")
Sistem API Çağrılarını İzleme

Sistem API çağrılarını izleme, bir yazılımın çalışma zamanında sistem çağrılarını izleyerek, yazılımın davranışını analiz etmek için kullanılan bir tekniktir. Bu teknik, bir yazılımın ne tür işlemler gerçekleştirdiğini belirlemeye ve zararlı yazılımların tespit edilmesine yardımcı olabilir.

Sistem API'leri, işletim sistemi ile iletişim kurarak, bir yazılımın farklı işlemleri gerçekleştirmesine olanak tanır. Örneğin, bir yazılım dosya okuma veya yazma işlemleri gerçekleştirmek için sistem API'lerini kullanabilir. Sistem API çağrılarını izlemek, bir yazılımın dosya işlemleri, ağ bağlantıları, bellek yönetimi ve diğer işlemleri gibi birçok bileşeni üzerindeki etkileşimleri analiz etmek için kullanılabilir.
files-api.gif

Python ve pydbg kütüphanesini kullanarak sistem API çağrılarını izleyebilirsiniz. Öncelikle pydbg kütüphanesini kurmanız gerekmektedir:
pip install pydbg


Python:
from pydbg import pydbg
from pydbg.defines import DBG_CONTINUE

def api_callback(dbg, args):
    print(f"API called: {args[0]}")
    return DBG_CONTINUE

malware_process_name = "example_malware.exe"

# Pydbg ile sürece bağlanma
dbg = pydbg()
dbg.attach(dbg.find_process_by_exe(malware_process_name))

# Sistem API'lerini izleme
dbg.bp_set(dbg.func_resolve("kernel32.dll", "CreateFileW"), api_callback)

# Dinamik analiz sırasında süreci izleme
dbg.debug_event_loop()
F3beZqk.png

Tulu Yıldızları Kulübü sunmuştur. Umarım sonraki projelerinizde referans alabileceğiniz güzel bir kaynak olmuştur.
Eğer konu ilginizi çektiyse, paylaşmış olduğum diğer konulara göz atabilirsiniz.

Hacklink otomasyonu | Colab ile Otonom Website Hacklemek!
HackRF ile Bluetooth Low Energy Sniffing #3
Phishing URL Kısaltma Uygulaması Yazalım! | Phishing için URL Tekniği
https://www.turkhackteam.org/konular/hackrf-ile-replay-attack-2.2033875/
QRLJacking Nedir? | Whatsapp Saldırı Vektörü Oluşturalım!
YOLO ile Derin Öğrenme! | Veri İşaretleme | Veri Eğitme | Görüntü İşleme
elinize sağlık hocam
 

Çokgen

Katılımcı Üye
4 Eyl 2023
412
196
a3b2jeo.png

İyi günler Türk Hack Team ailesi.

Bugün sizlere zararlı yazılım analizi hakkında bir içerik hazırlayacağım. Aynı zamanda biliyorsunuz ki günümüzde doğrudan sonuç odaklı yaşıyoruz. Bundan dolayı sizler için Python ile geliştirebileceğiniz analiz kod örnekleri vereceğim. Daha sonrasında bu kodları farklı projeler üretmek veya ufkunuzu açmak için kullanabilirsiniz.

PpUz4Fr.gif

IvwCnY9.png


Çalışmaya Başlamadan Önce Hazırlık
F3beZqk.png

Çalışmaya başlamadan önce bu linke veya bu linke giderek, önceden hazırlanmış birçok zararlı yazılıma erişebilir ve bunlar üzerinden testlerinizi yapabilirsiniz.
Dinamik analizler için sanal bir bilgisayar kurup, çalışmalarınızı içinde yapmanızı tavsiye ediyorum.
BRQuqDc.png


Zararlı Yazılım Analizi Süreçleri

F3beZqk.png


Zararlı yazılım analizi, temel olarak iki ana süreçten oluşur: statik analiz ve dinamik analiz.


Statik Analiz

Statik analiz, zararlı yazılımın çalıştırılmadan önce incelenmesi ve analiz edilmesi sürecidir. Bu analiz türünde, dosya özellikleri, dosya içeriği, gömülü metin dizeleri ve diğer meta veriler incelenir. Statik analiz, güvenli bir ortamda zararlı yazılımın iç yapısını anlamak için kullanılır ve potansiyel zararlı işlemleri belirlemeye yardımcı olur. Statik analiz süreci, zararlı yazılımın kodu veya dosya formatının deşifre edilmesi ve çözümlenmesiyle başlar ve daha sonra özellikler ve bağımlılıkların analiziyle devam eder.


Rec6PsU.gif


Dinamik Analiz

Dinamik analiz, zararlı yazılımın gerçek zamanlı olarak çalıştırıldığı ve sistemdeki etkilerinin gözlemlendiği bir süreçtir. Bu analiz türü, zararlı yazılımın çalıştırılması sırasında ağ trafiği, sistem değişiklikleri, dosya işlemleri ve diğer sistem etkileşimleri gibi davranışlarını incelemeyi amaçlar. Dinamik analiz, genellikle sanal ortamlarda veya izole edilmiş sistemlerde gerçekleştirilir, böylece zararlı yazılımın gerçek sistemlere zarar vermesi önlenir. Dinamik analiz, zararlı yazılımın nasıl çalıştığı, hangi sistem kaynaklarını kullandığı ve sistemle nasıl etkileşime girdiği hakkında derinlemesine bilgi sağlar.


VIRUS.gif


Python ile Statik Analiz Örnekleri
F3beZqk.png

Dosya Özellikleri Analizi

Zararlı yazılım dosyasının özelliklerini inceleyerek (dosya boyutu, oluşturulma tarihi, değiştirilme tarihi vb.), dosyanın şüpheli olup olmadığına dair ipuçları elde edebilirsiniz.
Bu şekilde dosyanın daha önceden değiştirilip, değiştirilmediği, benzer dosyaların boyutları, vb. gibi veriler üzerinden bir çıkarımda bulunabilirsiniz. Sonrasında dosya türü gibi farklı verileri ekleyip, farklı analizlerde bulunabilirsiniz.
t32_c2_a1_p4@2x.png

Python:
import os
import time

file_path = "malware.exe" # dosya yolu

# Dosya özelliklerini al
file_size = os.path.getsize(file_path)
created_time = os.path.getctime(file_path)
modified_time = os.path.getmtime(file_path)

# Dosya özelliklerini yazdır
print(f"File size: {file_size} bytes")
print(f"Created time: {time.ctime(created_time)}")
print(f"Modified time: {time.ctime(modified_time)}")

Çıktı:
23O5P6j.png


PE Dosyası Analizi

PE (Portable Executable) dosyası, Microsoft Windows işletim sistemi tarafından kullanılan ve uygulama veya sürücü gibi yürütülebilir dosyaları içeren bir dosya formatıdır. PE Dosyası Analizi, bu dosya formatını inceleyerek dosyanın işleyişi hakkında bilgi sağlayan bir tekniktir.

PE dosyasının yapısı, bir dosyanın içindeki bölümler, dosya başlığı, dosya kaynakları, yürütülebilir kod, veri blokları ve benzeri özellikleri içerir. PE Dosyası Analizi, bu özellikleri inceler ve dosyanın amacını ve potansiyel risklerini belirlemeye yardımcı olur.
Ne8Aa2u.png

Python:
import pefile

pe = pefile.PE("malware.exe")

# PE dosya özelliklerini yazdır
print(f"Entry Point: {hex(pe.OPTIONAL_HEADER.AddressOfEntryPoint)}")
print(f"Number of Sections: {len(pe.sections)}")
print("Sections:")
for section in pe.sections:
    print(f"  {section.Name.decode('utf-8')} - VA: {hex(section.VirtualAddress)} - Size: {section.SizeOfRawData}")

Çıktı:
oXu3baW.png

Import ve Export Analizi

Import Analizi, bir yürütülebilir dosyanın diğer dosyalardan hangi fonksiyonları çağırdığını ve bu fonksiyonların nerede bulunduğunu belirlemeye yardımcı olur. Bu analiz, bir yazılımın hangi kütüphanelerini ve fonksiyonlarını kullandığını anlamak için kullanılabilir.

Export Analizi ise, bir yürütülebilir dosyanın kendi içinde hangi fonksiyonları barındırdığını ve diğer dosyaların bu fonksiyonları nasıl kullanabileceğini belirlemeye yardımcı olur. Bu analiz, bir yazılımın hangi fonksiyonları kullanıcılar veya diğer yazılımlar tarafından çağırabileceğini anlamak için kullanılabilir.

Zararlı yazılımların kullandığı harici fonksiyonları ve kütüphaneleri analiz ederek, zararlı yazılımın amacı ve işlevselliği hakkında bilgi toplayabilirsiniz.


Python:
import pefile

pe = pefile.PE("example_malware.exe")

# İmportları yazdır
if hasattr(pe, "DIRECTORY_ENTRY_IMPORT"):
    print("Imports:")
    for entry in pe.DIRECTORY_ENTRY_IMPORT:
        print(f"  {entry.dll.decode('utf-8')}")
        for function in entry.imports:
            print(f"    {function.name.decode('utf-8')}")

# Exportları yazdır
if hasattr(pe, "DIRECTORY_ENTRY_EXPORT"):
    print("Exports:")
    for function in pe.DIRECTORY_ENTRY_EXPORT.symbols:
        print(f"  {function.name.decode('utf-8')}")

Çıktı:
K6RsXeS.png

String Analizi
String Analizi, bir yazılımın içindeki metin verilerini inceleyen bir tekniktir. Bu analiz, zararlı yazılım analizi ve yazılım geliştirme süreçlerinde kullanılır.

Bir yazılım, kullanıcı arayüzünde, hata mesajlarında, komut dosyalarında, kaynak kodunda ve diğer birçok yerde metin verileri içerir. String Analizi, bu metin verilerini inceleyerek yazılımın işleyişi hakkında bilgi sağlar.

Örneğin, bir zararlı yazılımın içindeki bir dize, bir şifreleme algoritmasını belirleyebilir veya bir komut dosyasında bir kötü amaçlı URL'yi açığa çıkarabilir. Bu bilgi, zararlı yazılımın tespit edilmesi ve temizlenmesi için kullanılabilir.

Zararlı yazılım içindeki metin dizelerini çıkararak, zararlı yazılımın amacı ve işlevleri hakkında daha fazla bilgi edinebilirsiniz.
tangled-string.gif

Python:
import string
import pefile

def strings_in_file(file_path, min_len=5):
    with open(file_path, "rb") as file:
        result = ""
        for char in file.read():
            if chr(char) in string.printable:
                result += chr(char)
            else:
                if len(result) >= min_len:
                    yield result
                result = ""

pe = pefile.PE("example_malware.exe")

# Stringleri yazdır
print("Strings:")
for s in strings_in_file("example_malware.exe"):
    print(f"  {s}")

Çıktı:
uJE0A6A.png


Yapılandırma Ayarları Çıkarılması

Yapılandırma Ayarları Çıkarılması (Configuration Extraction), bir yazılımın çalışması için gereken yapılandırma dosyalarından veya ayarlarının çıkarılması ve analiz edilmesi işlemidir. Bu analiz, bir yazılımın yapılandırması hakkında bilgi sağlayarak, yazılım geliştirme ve zararlı yazılım analizi süreçlerinde kullanılır.

Bir yazılım, genellikle bir konfigürasyon dosyası veya ayarları içeren bir yapılandırma dosyası kullanır. Bu dosyalar, yazılımın çalışması için gerekli olan değişkenleri, parametreleri ve diğer ayarları içerir. Yapılandırma Ayarları Çıkarılması, bu dosyaların içeriğinin analiz edilmesi ve yazılımın çalışması için gerekli olan ayarların belirlenmesi işlemini içerir.

Bazı zararlı yazılımlar, yapılandırma ayarlarını veya hassas bilgileri dosya içinde saklar. Bu bilgileri çıkararak, zararlı yazılımın işleyişine dair daha fazla bilgi elde edebilirsiniz.
the-claw-animated.gif


Python:
import re
import pefile

def extract_config(file_path, regex_pattern):
    with open(file_path, "rb") as file:
        file_data = file.read()
        config_data = re.findall(regex_pattern, file_data)
        return config_data

pe = pefile.PE("example_malware.exe")

# Örnek bir düzenli ifade (regex) ile yapılandırma ayarlarını çıkarma
config_pattern = re.compile(rb"config_key=(\w+)")
config_values = extract_config("example_malware.exe", config_pattern)

print("Config Values:")
for value in config_values:
    print(f"  {value.decode('utf-8')}")
Control Flow Graph (CFG) Analizi
Control Flow Graph (CFG) Analizi, bir yazılımın kodunun kontrol akışını temsil eden bir grafik modeli oluşturarak, yazılımın işleyişi hakkında bilgi sağlayan bir tekniktir. Bu analiz, yazılım geliştirme ve zararlı yazılım analizi süreçlerinde kullanılır.

CFG Analizi, bir yazılımın kodunu bloklara ayırır ve bu bloklar arasındaki kontrol akışını belirleyerek bir grafik modeli oluşturur. Bu model, bir yazılımın farklı kısımlarının nasıl etkileştiğini ve birbirleriyle nasıl bağlantılı olduğunu gösterir.

Zararlı yazılımların CFG'lerini inceleyerek, kodun mantığı ve çalışma şekli hakkında bilgi edinebilirsiniz. Python ile angr kütüphanesini kullanarak CFG analizi yapabilirsiniz.

hypta1I.png

Python:
import angr

binary_path = "example_malware.exe"

# Angr projeyi yükleme
project = angr.Project(binary_path)

# CFG oluşturma
cfg = project.analyses.CFG()

# CFG düğümlerini yazdırma
print("CFG Nodes:")
for node in cfg.nodes():
    print(f"  {node}")

Çıktı:
dr7xxeF.png


Python ile Dinamik Analiz Örnekleri
F3beZqk.png

Cuckoo Sandbox
Cuckoo Sandbox, otomatik olarak zararlı yazılım örneklerini çalıştırarak, ağ trafiğini, sistem değişikliklerini ve diğer davranışları analiz etmeyi sağlayan açık kaynaklı bir dinamik analiz aracıdır. Python ile Cuckoo Sandbox API'sini kullanarak analiz sonuçlarını alabilirsiniz. Ayrıca Cuckoo Sandbox hakkında daha fazla bilgi almak isterseniz
buradan websitesine gidip, dökümantasyonunu okuyabilirsiniz.

Öncelikle Cuckoo Sandbox kurulumunu tamamlamanız ve çalışır durumda olması gerekmektedir.
cuckoo-white.png

Python:
import requests

cuckoo_api_url = "http://localhost:8090"

# Cuckoo Sandbox'a dosya gönderme
with open("example_malware.exe", "rb") as file:
    response = requests.post(f"{cuckoo_api_url}/tasks/create/file", files={"file": file})
    task_id = response.json()["task_id"]

# Analiz sonuçlarını al
results_response = requests.get(f"{cuckoo_api_url}/tasks/report/{task_id}")
analysis_results = results_response.json()

# Sonuçları işleme
print(f"Task ID: {task_id}")
print(f"Malware Score: {analysis_results['info']['score']}")
Process Monitor
Process Monitor, bir uygulamanın sistemin farklı bileşenleriyle olan etkileşimlerini izleyerek, uygulamanın davranışını anlamaya yardımcı olan bir hata ayıklama ve izleme aracıdır. Bu etkileşimler, dosya işlemleri, kayıt defteri değişiklikleri, ağ trafiği ve diğer birçok bileşeni içerebilir.

Process Monitor, dinamik analiz sırasında süreçleri ve dosya etkinliklerini izlemenize olanak tanır. Python ile Process Monitor'ı (ProcMon) kullanarak dinamik analiz yapabilirsiniz. Öncelikle ProcMon'ı indirip doğru yola yerleştirmeniz gerekir.


Python:
import subprocess

procmon_path = "C:\\Path\\To\\procmon.exe"
procmon_output = "procmon_logfile.csv"
malware_path = "example_malware.exe"

# ProcMon'ı başlatma
procmon = subprocess.Popen([procmon_path, "/Quiet", "/Minimized", "/Backingfile", procmon_output])

# Zararlı yazılımı çalıştırma
subprocess.run([malware_path])

# ProcMon'ı durdurma
procmon.terminate()

# ProcMon loglarını işleme
with open(procmon_output, "r") as logfile:
    log_data = logfile.readlines()

# Log verilerini işleme ve sonuçları yazdırma
print("ProcMon Logs:")
for line in log_data:
    print(f"  {line.strip()}")
Dynamic Instrumentation
Dynamic Instrumentation, yazılımın çalışma zamanındaki davranışını analiz etmek için kullanılır. Bu teknik, yazılımın bellek yönetimi, dosya işlemleri, ağ bağlantıları ve diğer işlemleri gibi farklı bileşenleri üzerinde etkili bir şekilde çalışabilir.

Bir örnek olarak, Dynamic Instrumentation, bir yazılımın bellek yönetimini analiz etmek için kullanılabilir. Bu teknik, yazılımın bellek kullanımını analiz ederek, bellek sızıntıları veya bellek bozulmaları gibi hataları belirleyebilir. Aynı zamanda, bir yazılımın ağ bağlantılarını analiz ederek, zararlı yazılımın ne tür verileri çalabileceğini veya ne tür ağ bağlantıları kurabileceğini belirleyebilir.

Python ile frida kütüphanesini kullanarak dinamik enstrümantasyon yapabilirsiniz.

Python:
import frida

def on_message(message, data):
    print(f"Message: {message}, Data: {data}")

malware_process_name = "example_malware.exe"

# Frida ile sürece bağlanma
session = frida.attach(malware_process_name)

# Süreç içindeki bir fonksiyonu izleme
hook_script = """
Interceptor.attach(ptr("0x123456"), {
    onEnter: function(args) {
        console.log("Function called!");
    },
    onLeave: function(retval) {
        console.log("Function returned!");
    }
});
"""

script = session.create_script(hook_script)
script.on("message", on_message)
script.load()

# Dinamik analiz sırasında süreci izleme
input("Press Enter to stop the monitoring...")
Sistem API Çağrılarını İzleme

Sistem API çağrılarını izleme, bir yazılımın çalışma zamanında sistem çağrılarını izleyerek, yazılımın davranışını analiz etmek için kullanılan bir tekniktir. Bu teknik, bir yazılımın ne tür işlemler gerçekleştirdiğini belirlemeye ve zararlı yazılımların tespit edilmesine yardımcı olabilir.

Sistem API'leri, işletim sistemi ile iletişim kurarak, bir yazılımın farklı işlemleri gerçekleştirmesine olanak tanır. Örneğin, bir yazılım dosya okuma veya yazma işlemleri gerçekleştirmek için sistem API'lerini kullanabilir. Sistem API çağrılarını izlemek, bir yazılımın dosya işlemleri, ağ bağlantıları, bellek yönetimi ve diğer işlemleri gibi birçok bileşeni üzerindeki etkileşimleri analiz etmek için kullanılabilir.
files-api.gif

Python ve pydbg kütüphanesini kullanarak sistem API çağrılarını izleyebilirsiniz. Öncelikle pydbg kütüphanesini kurmanız gerekmektedir:
pip install pydbg


Python:
from pydbg import pydbg
from pydbg.defines import DBG_CONTINUE

def api_callback(dbg, args):
    print(f"API called: {args[0]}")
    return DBG_CONTINUE

malware_process_name = "example_malware.exe"

# Pydbg ile sürece bağlanma
dbg = pydbg()
dbg.attach(dbg.find_process_by_exe(malware_process_name))

# Sistem API'lerini izleme
dbg.bp_set(dbg.func_resolve("kernel32.dll", "CreateFileW"), api_callback)

# Dinamik analiz sırasında süreci izleme
dbg.debug_event_loop()
F3beZqk.png

Tulu Yıldızları Kulübü sunmuştur. Umarım sonraki projelerinizde referans alabileceğiniz güzel bir kaynak olmuştur.
Eğer konu ilginizi çektiyse, paylaşmış olduğum diğer konulara göz atabilirsiniz.

Hacklink otomasyonu | Colab ile Otonom Website Hacklemek!
HackRF ile Bluetooth Low Energy Sniffing #3
Phishing URL Kısaltma Uygulaması Yazalım! | Phishing için URL Tekniği
https://www.turkhackteam.org/konular/hackrf-ile-replay-attack-2.2033875/
QRLJacking Nedir? | Whatsapp Saldırı Vektörü Oluşturalım!
YOLO ile Derin Öğrenme! | Veri İşaretleme | Veri Eğitme | Görüntü İşleme
Ellerinize sağlık kaliteli konulardan biri bence
 
Ü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.