İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması

Yayınlayan
Mehmet Kelepçe
Yayınlanma tarihi
06-05-2022
Okuma süresi
15 DK

İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması

Gelişmiş birçok işlemci varsayılan olarak koruma mekanizması ile tasarlanmaktadır. İşlemcilerin koruma mekanizmalarının nasıl atlatılabileceğinin anlaşılabilmesi için öncelikle bu koruma mekanizmalarının anlaşılması gerekmektedir.

Bilgisayarlar üzerinde CPU ve RAM donanımları bulunmaktadır. Kullanılan bilgisayarlar üzerlerinde zaman paylaşımlı olarak çalışmakta olan her işleme process (işlem) denilmektedir. Tüm process’ler, RAM bellek ve CPU arasındaki koordinasyon ile çalışmakta, RAM bellek üzerinde belirli alanlarda konumlandırılmakta ve zamanlanmış şekilde, sırayla hızlı bir biçimde çalıştırılmaktadırlar.

Ram bellek üzerinde var olan herhangi iki-üç adet process’e ait şema üstündeki görüntü aşağıdaki gibidir.

 

Şemaya bakıldığında, chrome.exe ve git.exe process’leri aynı RAM bellek üzerindedir. Daha yukarıdan bakıldığında, işletim sisteminin kendiside tıpkı bu process’ler gibi RAM bellek üzerinde çalışmaktadır.

Yukarıdaki şema üzerinden örneklendirerek devam edilirse; Process 1 üzerinde herhangi bir pointer’a rastgele herhangi bir adres verildiğinde, process kendi alanının dışına çıkacağı için ilgili process sonlandırılacaktır. Koruma mekanizmasının olmadığı durumlarda farklı bir process başka bir process’in bellek alanına erişip orada var olan herhangi bir veriyi bozabilme ihtimali bulunmaktadır. Bu durumu bir örnek ile açıklamak gerekirse bir bankaya ait veri tabanı uygulaması üzerinde yapılacak yanlış bir işlem ile hesap bakiyeleri üzerinde veri değişikliği sağlanabilmesi gibi hatalı bir işlem söz konusu olabilmektedir. İşletim sistemi ve CPU açısından bakıldığında, bu tür durumlar çok büyük risk teşkil etmektedir. Bu sebeple bahsedilen şekillerde riskler teşkil eden bir tehdidin bir şekilde engelleniyor olması gerekmektedir. Engelleme işletim sisteminin yapabileceği bir engelleme olmadığı için gerekli işlem doğrudan doğruya processor (işlemci) tarafından yapılmaktadır.  Fakat gerçekleştirilmesi gereken koruma, tüm işlemci mekanizmaları tarafından sağlanmamaktadır. Düşük seviyedeki işlemciler -örneğin IOT cihazlarda bulunan microcontroller’lar (mikrodenetleyiciler)- CPU’lar üzerinde bahsedilen şekilde mekanizmalar bulunmayabilmektedir. Koruma mekanizması bulunmayan işlemcilere örnek olarak 8, 16 bit işlemciler ve gömülü sistemlerde kullanılan işlemciler verilebilir. Günümüzde kullanılan birçok işlemci koruma mekanizmalarına sahip olarak üretilmektedir.

İşlemcilerin koruma mekanizması iki düzeylidir. Bunlar;

  • Bellek koruması (Memory protection),
  • Komut koruması (Instruction protection).

Yukarıda bahsedilen çerçevede bellek korumasına değinilmiştir.

Komut Koruması Nedir?

İşlemciler üzerinde var olan bazı makine komutları, yanlış kullanılması halinde sistemi tamamen çökmesine sebep olabilmektedir. Haberleşme portlarına bilgi gönderen IN OUT, interrupt’ları (kesme) açıp kapatan komutlar (CLI vb. komutları) bu komutlardan bazılarıdır.

Bir grup makine komutu bu durumlarda özel olarak processor tarafından incelenip kontrol edilmektedir. Bir process’in bu komutları kullanabilecek yetkiye sahip olup olmadığı kontrol edilmektedir. Bu tür bir yetkisi bulunmuyorsa “komut koruması” devreye girerek komutun çalıştırılmaması sağlanmaktadır.

Bahsedilen türdeki komutların kullanımı yüksek tehlike arz edebilmektedir. Bu sebeple ilgili komutları sıradan yetkiye sahip process’ler kullanamamaktadırlar. Sıradan kullanıcı yetkisinde çalışan bir process üzerinde, aşağıda var olan ve “C” dilinde “Inline Assembly” olarak yazılan CLI komutunun çalıştırılması sırasında Komut koruması devreye girerek “exception” (istisna/kural dışılık) oluşturulacaktır.

int main(void){

      __asm{

              cli

           }

      return 0;

}  

Örnekten de anlaşılacağı üzere birkaç satır makine kodu sistem üzerinde çok kritik sonuçlara sebebiyet verebilmektedir.

Inline assembly kodu “debugger” (hata ayıklayıcı) aracılığıyla çalıştırıldığı sırada “privileged instruction” (ayrıcalıklı komut) hatası alınacaktır.

 

İşletim sisteminin çalışması esnasında kendi faaliyetlerini gerçekleştirmesi için bellekteki her alana erişmesi ve bu sebeple yukarıda örneklendirilen komutları kullanması gerekebilmektedir. Bu durum söz konusu olduğunda hangi process’lerin bu komutu kullanabileceği veya kullanamayacağı devreye girmektedir. İşletim sistem üzerinde çalışan bir process aşağıdaki iki moddan birinde çalışabilir;

  1. User mode (Kullanıcı modu),
  2. Kernel/ Privileged/Supervisor mode (Çekirdek/Ayrıcalıklı/Yönetici modu).

Eğer bir process “kernel mode” üzerinde yürütülüyorsa hiçbir engele takılmadan işlem yapabilecektir. CPU bu durumda ilgili process’in her istediği komutu çalıştırmakla görevlidir.

Eğer process “user mode” üzerinde yürütülmekteyse bellek ve komut korumalarına takılabilmektedir. Linux ve Windows üzerinde sıradan kullanıcıların yazdıkları her process “user mode” üzerinde çalışmaktadır. 

Koruma engeline takılmadan çalışan veya “kernel mode” üzerinde çalışan kodlar işletim sisteminin kodlarıdır ve işletim sisteminin kodları bellek üzerinde istediği alana erişebilmektedir.

"Kernel Mode" Üzerinde Process Yürütülebilir Mi?

İşletim sistemi üzerinde hiçbir koruma engeline takılmadan bir process veya herhangi bir kod çalıştırılmak isteniyorsa, ilgili process önceliklendirilmeli ve yetkilendirilmelidir. Aygıt sürücüleri veya kernel modül olarak adlandırılan yazılımlar bu konuda “kernel mode” üzerinde çalışabilmektedirler. Windows işletim sistemi üzerinde kernel modülü biçiminde herhangi bir kullanım söz konusu değildir.

Engelleri aşmak amacıyla aygıt sürücüleri tasarlanıp kodlandıktan sonra bu sürücülerin işletim sistemi üzerinde yüklenmiş olmaları gerekmektedir.

Aygıt sürücülerini yükleyebilecek kullanıcı hesabı yetkili bir kullanıcı hesabı olmalıdır. Windows üzerinde herhangi bir yetki gerektiren yazılımı sistem üzerinde yüklerken, User access control (UAC) popup’ı ile yetkili kullanıcı erişimi istenecektir. Aygıt sürücüsünün sistem üzerinde yapacağı değişiklikler, sistem üzerinde kritiklik arz edebileceğinden bu UAC popup’I güvenlik uyarısı betimlemesi yapmaktadır.

Linux/unix üzerinde root parolasına sahip her kullanıcı bu yüklemeleri gerçekleştirebilir. Linux / Unix üzerinde var olan ve sistemin root yetkilerini ele geçirmek isteyen kernel exploitler (istismar araçları/sömürücüler) bu mantık çerçevesinde çalışmaktadır. Exploitler kernel üzerinde “user mode” ile “kernel mode” arasında geçiş yapılabilecek bir güvenlik zayıflığını sömürmektedirler.

Aşağıdaki ekran görüntüsü üzerinde bir pointer’a adres atanmaktadır. Atanan adres bilgisi process’in erişmeye yetkisi olmadığı bir adres bloğunu temsil etmektedir. Derleme sırasında process, kendi alanının dışına çıktığı icin Exception Thrown (İstisna Atıldı) hatası alınacaktır.

 

İşlemcilerin Bellek Koruması Uygulama Modeli Nasıldır?

İşlemcilerin bellek koruması sağlayabilmesi için bellek içerisinde var olan process’lerin konumlarını bilmesi gerekmekte ve bu bilgiyi işletim sistemi üzerinden edinmektedirler. İşletim sistemi; oluşturulan her bir process icin process kontrol bloğu tutmakta ve bu blokta bulunan process’lerin konumlarını işlemciye iletmektedir.

Aşağıdaki görselde bir işlemcinin register’ının (kaydının) bulunduğu varsayılmaktadır. Bu register’lardan biri, bir process’in bellek üzerinde nereye yüklü olduğunu göstermektedir. Bir diğer register ise bellekte yüklü bulunan process’in uzunluğunu tutmaktadır. Bu durumda, CPU herhangi bir process’in başka bir process’in alanına erişip erişmediğini anlayabilmektedir. Çünkü hangi process’in nereye konumlandırıldığını ve uzunluğunu bilmektedir.

 

CPU, kontrollerini sağlamak için kendi üzerinde bulunan bu register’lara bakmaktadır. Register’ların değerlerini yöneten mekanizma işletim sistemi olmaktadır. Koruma mekanizmalarının mantığına ve kontrolüne bu perspektif ile bakıldığı durumda kolay ve uygulanabilir olduğu anlaşılabilmektedir.

İhlal Durumunda Koruma Mekanizması Nasıl İşler?

Aşağıdaki verilen MOV assembly komutu, EAX registerını kullanarak belirli bir adrese ulaşmak istediği sırada, process’in dışına erişim anlaşıldığında, processor içsel kesme denilen internal interruptlar oluşturmaktadır. İşletim sistemleri bu komutları ve ihlalleri gördüğünde process’leri sonlandırmaktadır. 

MOV EAX, [X]

Not: X temsilidir.

 

Mehmet KELEPÇE

Senior Cyber Security Specialist | Red Team

Diğer Blog Yazıları_

Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Infraskope Server ve Özellikleri
Infraskope Server ve Özellikleri
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kurumlarda Ağ Güvenlik Stratejileri
Kurumlarda Ağ Güvenlik Stratejileri
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
Log Yönetiminde Ajanlı/Ajansız Çözümler
Log Yönetiminde Ajanlı/Ajansız Çözümler
Herkesin aklındaki soru: Yapay Zeka Nedir?
Herkesin aklındaki soru: Yapay Zeka Nedir?
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Web Cache Poisoning
Web Cache Poisoning
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
ARP Poisoning
ARP Poisoning
Cross-Site Request Forgery (CSRF) Zafiyeti
Cross-Site Request Forgery (CSRF) Zafiyeti
SSRF (Server Side Request Forgery)
SSRF (Server Side Request Forgery)
BlueBorne
BlueBorne
Server Side Template Injection Nedir?
Server Side Template Injection Nedir?
Linux Restricted Shell Atlatma Teknikleri
Linux Restricted Shell Atlatma Teknikleri
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
SDR-Sharp Kullanımı
SDR-Sharp Kullanımı
Log Yönetimi | Log Management | Veritabanı Log | Siem
Log Yönetimi | Log Management | Veritabanı Log | Siem
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Phishing Nedir?
Phishing Nedir?
“GOLD” Affix Phishing Attack
“GOLD” Affix Phishing Attack
Sızma Testi ve Ödül Avcılığı Hizmetleri
Sızma Testi ve Ödül Avcılığı Hizmetleri
Güvenilir Olarak CAPTCHA Yapılandırılması
Güvenilir Olarak CAPTCHA Yapılandırılması
Basit Kriptolojiden Günümüze Evrilişi
Basit Kriptolojiden Günümüze Evrilişi
Dosya Sistem Analizinin Önemi
Dosya Sistem Analizinin Önemi
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Sızma (Penetrasyon) Testi Nedir?
Sızma (Penetrasyon) Testi Nedir?
Start Up Kültürü
Start Up Kültürü
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Kritik Altyapılar ve SCADA Güvenliği
Kritik Altyapılar ve SCADA Güvenliği
Zararlı Yazılım Analiz Teknikleri
Zararlı Yazılım Analiz Teknikleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
PHISHING Hakkında Her şey
PHISHING Hakkında Her şey
Sosyal Mühendislik Nedir?
Sosyal Mühendislik Nedir?
Siber Hijyen
Siber Hijyen
Adli Bilişim (Digital Forensic) Nedir?
Adli Bilişim (Digital Forensic) Nedir?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
SolarWinds Vaka Analizi
SolarWinds Vaka Analizi
Frida ile SSL Pinning Bypass
Frida ile SSL Pinning Bypass
COOKİE Nedir? Nasıl Çalışır?
COOKİE Nedir? Nasıl Çalışır?
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Adwind Rat Technical Analysis Report (ENG)
Adwind Rat Technical Analysis Report (ENG)
SOC Nedir, Firmalar İçin Neden Önemlidir?
SOC Nedir, Firmalar İçin Neden Önemlidir?
Blockchain Nedir?
Blockchain Nedir?
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
Active Directory Güvenlik İpuçları
Active Directory Güvenlik İpuçları
Nisan 2022 Siber Güvenlik Bülteni
Nisan 2022 Siber Güvenlik Bülteni
Mavi Takım Üyeleri İçin Windows Core Process
Mavi Takım Üyeleri İçin Windows Core Process
Kişiler İçin Bilgi Güvenliği Rehberi
Kişiler İçin Bilgi Güvenliği Rehberi
DDoS Nedir?
DDoS Nedir?
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Siber İstihbarat ve Siber Tehdit İstihbaratı
Siber İstihbarat ve Siber Tehdit İstihbaratı
JWT Saldırıları
JWT Saldırıları
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages