Proses yaddaşına müdaxilə-Kritik məlumatların oğurlanması

Proses yaddaşına müdaxilə-Kritik məlumatların oğurlanması

Giriş

Yaddaş təhlili kompüterin yaddaşından dəyişgən (volatile) məlumatların çıxarılmasını və təhlinini əhatə edən bir sahədir. Dəyişgən məlumat dedikdə hansı məlumatlar nəzərdə tutulur? Kompüterin müvəqqəti saxlama yaddaşında (RAM) saxlanılan və söndürüldükdə və ya yenidən işə salındıqda itirilən məlumatlar aiddir. Bu məlumatlar dinamikdir və sistem işləyən zaman daim dəyişir. Misal olaraq aktiv proseslər, başa çatmış proseslər, şəbəkə əlaqələri, aktiv istifadəçi seansları, bufer yaddaş məlumatların göstərə bilərik. Yoluxmuş kompüterin analizi zamanı dəyişgən məlumatlar zərərli proqramların analizi və ya icazəsiz girişlərlə bağlı məlumatların əldə edilməsinə kömək edir. Bu məlumatların itirilməzdən əvvəl tutmaq və təhlil etmək vacib nüanslardan biridir.Yaddaşın əldə edilməsi prosesi dəyişgən yaddaşın, həmin ana olan şəklinin (snapshot),  daimi yaddaşa köçürülməsini nəzərdə tutur.

Yaddaşın idarə edilməsi

Yaddaşın idarə edilməsi, əməliyyat sisteminin fiziki yaddaşının ayrılması, boşaldılması və idarə edilməsi alqoritmlərinə aiddir. İlk öncə virtual yaddaş anlayışı ilə tanış olmalıyıq. Windows əməliyyat sistemi hər bir prosesi virtual ünvan sahəsi (virtual address space) ilə təmin edir. Bu abstraksiya prosesin gördüyü virtual yaddaşla fiziki yaddaş arasında ayrılıq yaradır (şəkil 1). Burada iki terminə qısa aydınlıq gətirməliyik, bunlar yaddaş meneceri (memory manager) və yaddaş idarəetmə vahididir (memory management unit). Yaddaş meneceri yaddaş resurslarının təşkili ilə məşğul olan əməliyyat sisteminin moduludur. Həm fiziki yaddaşın, həm də virtual yaddaşın idarə edilməsinə cavabdehdir. Proseslərin icrası üçün lazım olan yaddaş sahəsini təmin edir. Yaddaş idarəetmə vahidi ( MMU ) virtual yaddaş ünvanlarının müvafiq fiziki yaddaş ünvanlarına çevrilməsinə cavabdeh aparat (hardware) komponentidir. MMU ünvan tərcüməsi, qorunması və yaddaş icazələrinin yoxlanılmasında mühüm rol oynayır.

Tələb səhifələməsi (demand paging) yalnız lazım olduqda fiziki yaddaşa (RAM) məlumatların yüklənməsini təmin yaddaş idarəetmə texnikasıdır. Sadə izah etsək, bir proses fiziki yaddaşda olmayan səhifəyə daxil olmağa çalışdıqda xəta baş verir, bu zaman tələb səhifələməsi ikinci dərəcəli (secondary storage) yaddaşdan istək əsasında məlumatları fiziki yaddaşa (RAM) yükləyir. Şəkil 1-də bu “Disk” kimi göstərilib.

Avadanlıq səviyyəsində yaddaş səhifələr formasında təşkil olunur. Səhifələmə (paging) hər bir prosesə fiziki yaddaşın tam həcmini tələb etmədən mövcud virtual ünvan məkanın (virtual address space) görməyə imkan verir. Windows əməliyyat sistemində virtual ünvan sahəsi 4 KB ölçüsündə səhifələrə bölünür. Bu ünvanlar yaddaş meneceri tərfindən idarə olunur. Şəkil 2 4 KB səhifənin 32 bitlik virtual ünvanda strukturunu göstərir.

Səhifə kataloquna giriş (Page Directory Entry) ünvanını hesablamaq üçün CR3 registrindən 31:12 bitləri ilə virtual ünvandan 31:22 bitləri birləşdirmək lazımdır. Daha sonra PDE-dən 31:12 bitlərini virtual ünvanın 21:12 bitləri ilə birləşdirərək səhifə cədvəlinə girişi (Page Table Entry) hesablayırıq. Son olaraq PTE-nin 31:12 bitlərini, virtual ünvanın 11:0 bitləri ilə birləşdirərək fiziki ünvanı (Physical Address) əldə edirik. Şəkil 3-də bu hesablamanı əyani formada göstərək:

Prosess yaddaşı

Proseslər yaddaşda EPROCESS strukturu ilə təmsil olunur. EPROCESS, Windows əməliyyat sistemində bir prosesi təmsil etmək üçün istifadə olunan məlumat strukturudur. Bu, prosesləri idarə etmək və izləmək üçün istifadə olunur (şəkil 4).

Əsas strukturlara qısa nəzər salaq:

  • Pcb (Process Control Block): Ünvan tərcüməsi üçün DirectoryTableBase, kernel rejimində və istifadəçi rejimində prosesin icra olunan vaxtı kimi kritik məlumatları özündə saxlayır.
  • CreateTime: Prosesin yaranma vaxtın göstərir.
  • ExitTime: Prosesin yekunlaşma vaxtın göstərir.
  • UniqueProcessId: Prosesə təyin edilmiş tam ədəd (PID)
  • ImageFileName: İcra olunan faylın adı.
  • ThreadListHead: Bütün prosesin axınlarını (threads) birləşdirən ikiqat əlaqəli siyahı saxlayır.
  • Peb (Process Environment Block): Bu struktur prosesin DLL siyahılarını, cari iş kataloqu (current working directory), komanda xətti arqumentləri (command line arguments), dəyişənlər və s. kimi vacib məlumatlara malikdir.

Debugger vasitəsilə EPROCESS strukturuna nəzər salaq, struktur çox uzun olduğundan şəkil 5-də az bir hissəsini göstərilmişdir:

Yaddaşda axtarış

Yaddaşda axtarışı virtual maşının RAM məlumatları üzərində aparılacaq. Araşdırmanı aparmaq üçün «Volatility» alətindən istifadə ediləcəkdir. İlk öncə kompüterin ümumi məlumatlarına baxaq (şəkil 6):

Əməliyyat sisteminin Windows 10, 64 bit olduğunu görürük. İcra olunan proseslərin siyahısı ilə tanış olaq.

Şəkildə proseslərin PID, PPID (Parent PID), icra olunan faylın adı, virtual adres, yaranma tarixi, bitmə vaxtı və s. məlumatları görürük. Bəzi proseslərin axın sayının 0 olduğunu görürük. Bu proseslərin çıxış vaxtının göstərildiyini və bu prosesin artıq fəaliyyətinin dayandığını göstərir. Müxtəlif proseslərin yaradılmış şəbəkə əlaqələri, onların IP ünvanları, ötürmə protokolu çıxarılır.

İcra olunan proseslərin yaddaşında kiçik bir eksperiment edək. Bunun uçun yuxarıda icra elədiyimiz icra olunan proseslərin içindən “chrome”proses ailəsini götürək. İlk öncə brauzerin tarixçəsin çıxaraq. Bunun üçün “chrome” prosesinin PID nömrəsini öyrənirik. PID öyrəndikdən sonra, «vol.exe -f /path/to/file» windows.handles —pid | Select-String «History» əmri ilə tarix faylının handle ünvanını götürürük. Daha sonra yaddaşdakı həmən hissəni dump fayla yazırıq. Dump fayl növbəti əmr ilə çıxarlır vol.exe -f «/path/to/file» -o «» windows.dumpfile —pid —virtaddr . Alınan dump fayl SQLite3 verilənlər bazası faylıdır. Verilənlər bazasının strukturu ilə daha yaxından tanış olaq.

Burada saytlara giriş tarixçəsi, yüklənən faylların ünvanları və s. məlumarlar var. Giriş olunan saytlara nəzər salaq. Diqqətimizi çəkən məqam “Gmail” poçt sisteminə girişin olmasıdır .

“Title” sütununda daxil olunan poçt ünvanının adını görürük. Növbəti addım həmin poçt ünvanının RAM yaddaşdan alınmasıdır. Bunun üçün icra olunan bütün “chrome” proseslərin siyahısını götürürük. Bu siyahı üzrə proseslərin yaddaşda ayrılmış hissələrini fayla dump edirik: vol.exe -f «/path/to/file» -o «» windows.memmap.Memmap —pid —dump. Alınan dump faylların hər birinin içərisində tapdığımız poçt ünvanının axtarışını həyata keçiririk. Tapdığımız sətirdə “password” açar sözünü görürük. Bu açar söz poçt ünvanının şifrəsini təyin etmək üçün istifadə olunur.

Axtardığımız poçt ünvanının şifrəsi «3gv1zK&@PD%9«.

Qeyd — SSL istifadə edildikdə belə proses yaddaşında məlumatlar düz mətn şəklində saxlanılır.