USB Regedit Forensic : Python

Bugün python dili ile küçükte olsa forensic yazılımı yapmaya başlayalım.

Bu yazılımda sistemlere takılan usb bellekler ile ilgili kayıtların inceleme yapan kişiye hızlı bir şekilde analizi amaçlanmıştır. İlk amacımız usbstor altındaki usb sayılarını saymak sonrasında usb sayısı kadar olan usb kayıt isimlerini tutmak daha sonrasında ise usb kayıt isimleri altındaki alt usb idleri bir değere atamaktır.Öncellikle python komutları işe regedit üzerinden bilgileri okumak için modüller arayışı içerisine girdim. Winreg modulünü sistemime pip install winreg komutu ile kurdum.  Winreg fonkisyonunda kod içerisine from _winreg import * komutu ile import edildi. Amacımız usb bilgilerin tutulduğu regedit kayıtını tespit edip değerleri okumak içinde kodu geliştirmektir.

Birazda daha anlaşılır olması için regedit kayıtı üzerinden konumu belirtilen sadece bir adet USB belleğin regedit bilgilerini tespit eden kod parçacığı…

Regedit Konumu

SYSTEM\CurrentControlSet\Enum\USBSTOR\ yolu içerindeki CdRom&Ven_Linux&Prod_File-CD_Gadget&Rev_0404 adlı usb belleğin id si ve bellek adını FriendlyName ve ContainerID regedit kayıtlarından elde etmek için winreg modülünün  EnumValue fonksiyonu ile filtreledik.

Aşağıki Kod içerisinde ise tüm Usb kayıtlarına ait regedit kayıtları sunmaktadır.

Elde edilen bu üç değer birleştirilerek bir usb yolu elde etmektir. Bu usb yollarıda  list adlı diziye atanarak orada tutulmuştur.

Sonrasında list dizine atanan her yolun regedit üzerindeki kayıtları  key = OpenKey(HKEY_LOCAL_MACHINE, list[x]) çekilmiştir. Key değerindeki HardwareID ve ContainerID kayıtları filtrelenerek ekrana yazdırılmıştır. Bu arada HardwareID ile usb adı çekilmiştir. Dünkü komut satırında FriendlyName ile çekilmişti ama her usb kayıtlarında Friendlyname değeri bazen tutulduğu tespit edildiği içi her zaman değer tutan HardwareID değeri kullanılması tercih edilmiştir.

 Ayrıca time fonksiyonu import edilerek ve kodumuzu WHİLE TRUE altında her 10 saniye bir sonsuz döngüye  verilerek listenin güncellenmesi sağlanmıştır.

from _winreg import *
import time


while True:
    list = []

    usbstor = "SYSTEM\CurrentControlSet\Enum\USBSTOR"
    with OpenKey(HKEY_LOCAL_MACHINE, usbstor) as usb_key:
            toplam_usb = QueryInfoKey(usb_key)[0]
            for device in range(0, toplam_usb):
                key_ad = EnumKey(usb_key, device)
                with OpenKeyEx(usb_key, key_ad) as sub_key_ad:
                        for i in range(0, QueryInfoKey(sub_key_ad)[0]):
                            list.append("{0}\\{1}\\{2}".format(usbstor, key_ad, EnumKey(sub_key_ad, i)))


    for x in range(len(list)):
        key = OpenKey(HKEY_LOCAL_MACHINE, list[x])
        print("USB delil konumu: "),
        print(list[x])
        c = QueryValueEx(key, "HardwareID") #FriendlyName  VEYA varsayilan deger ise " " ekle
        print("                   USB NAME: {} ".format(c[0:5])),
        d = QueryValueEx(key, "ContainerID") #varsayilan deger ise " " ekle
        print("ID: {} ".format(d[0]))
        print("--------------------------------------------------------------------------------------------------------------------------------------|")
    time.sleep(10)
    print( "\n")
    print("Liste Guncelleniyor")
    print( "\n")

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir