Siber güvenlik bir güç gösterisidir. Siber suçlular ve işletmeler, büyük ödülün ayrıcalıklı bilgilere sahip olmak olduğu sürekli bir savaş içerisindedir. İşletmeler hassas verileri korumak için mücadele ederken, siber suçluların amacı bunlara erişmektir. Taraflardan her biri silahını seçer. Bu blog'da her iki tarafın da sıklıkla tercih ettiği bir silahı inceleyeceğiz: PowerShell.

İçindekiler:

PowerShell nedir?

Windows PowerShell'i bir komut satırı yorumlama aracı olarak adlandırdığımızda, özelliklerini tam olarak ifade edememiş oluruz. PowerShell, Komut İstemi gibi bir programın yapabileceği her şeyi yapmanın yanı sıra, yöneticiler tarafından görevleri otomatikleştirmek amacıyla kullanılan bir betik komut yazma dilidir. Buna iyi bir örnek olarak Active Directory yönetimi gösterilebilir. Yöneticiler, kuruluşlarının Active Directory'sini manuel olarak yönetmek için saatlerini harcamayı seçebilir ya da bunun yerine toplu eylemleri gerçekleştirmek üzere tek bir PowerShell komut dosyası veya komutundan faydalanabilirler. Birçok yönetici, AD Yönetim Merkezi veya AD Kullanıcılar ve Bilgisayarları gibi kullanabilecekleri GUI araçlarına kıyasla PowerShell'i tercih eder.

Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durumŞekil 1: Bir PowerShell penceresi

PowerShell komut dosyası yazımı oldukça kapsamlı bir konudur. Bu blog boyunca ele alınan kavramları daha iyi anlamak için, PowerShell komut dosyası yazımının üç önemli bileşenini inceleyeceğiz.

  • Cmdlet: PowerShell, cmdlet adı verilen hafif komutları kullanır. Bir cmdlet (command-let olarak telaffuz edilir), genellikle fiil-komut veya fiil-isim biçiminde yazılan benzersiz yapısıyla tanımlanabilir. Örneğin, Active Directory'de bir kullanıcı hesabını aramak Search-ADAccount (Ara-ADHesabı anlamına gelir) cmdlet'ini kullanır. Burada Search fiil ve ADAccount da komuttur. Komutların ve cmdlet'lerin işlevi temelde aynıdır; bilgisayara ne yapması gerektiğini söylemek.
  • Modül: Bir modül, belirli bir amaç için bir araya getirilmiş bir dizi komut, cmdlet, komut dosyası, işlev ve daha fazlasını içerir. Bir modül dört önemli bileşenden oluşur: bir kod parçası, kodun ihtiyaç duyabileceği ek komut dosyaları veya yardım dosyaları, bir bildirim dosyası ve bir dizin. Bir bildirim dosyası bir indeks gibidir: bir modülün içeriğini listeler ve işlenme şeklini açıklar.
  • Döküm: Bir döküm, belirli bir PowerShell oturumu sırasında nelerin yürütüldüğüne dair eksiksiz bir özet sunar. PowerShell oturumlarının dökümlerinin oluşturulması için yönetici veya kullanıcının eylemi etkinleştirmesi gerekir. Bu iki şekilde yapılabilir: PowerShell komutları ya da Grup İlkesi değişikliği yoluyla. Yöneticiler, dökümü etkinleştirmek için Start-transcript ve Stop-transcript komutlarını ekleyebilir. Bu iki komut arasında yürütülen tüm işlemler Belgelerim klasöründe bir metin dosyası olarak saklanır. Blog'un ilerleyen kısımlarında döküm günlük kaydının Grup İlkesi değişikliği yoluyla nasıl yapılandırılacağını inceleyeceğiz.

Siber suçluların siber saldırılarda Powershell'i kullandığı 5 durum

PowerShell yöneticilerin en sevdiği araçlardan olsa da saldırganların da sıklıkla kullandığı bir saldırı vektörüdür. Bunun nedeni, PowerShell'in Windows ortamında izlenebilirliğinin olması ya da olmamasıdır. PowerShell izin verilen bir araç olduğundan, siber suçluların ayrıcalıklarını artırması ve kötü amaçlı komut dosyalarını yürütmesi daha kolay olur.

PowerShell çoğunlukla bir güvenlik açığından yararlanıldıktan sonra kullanılan bir araçtır. Bunun nedeni, PowerShell'in çoğu kullanıcı hesabında varsayılan olarak etkin olmasıdır. Bir saldırgan ağa giriş yaptığında, programı bir yönetici olarak çalıştırabilir veya ayrıcalıkları yükseltmek için birkaç komutu kolaylıkla yürütebilir. Şimdi, siber suçluların siber saldırıları gerçekleştirmek için PowerShell'i kullanabileceği beş durumu ele alalım.

  1. PowerShell komut dosyası yazma: MITRE ATT&CK® çerçevesine göre, PowerShell Komut ve Komut Yazma yorumlaması açısından bir alt teknik olarak listelenmektedir. Siber suçlular genellikle hedefleri ile ilgili bilgileri edinmek ve kötü amaçlı kodu uzaktan yürütmek için PowerShell cmdlet'lerini kötüye kullanır. PowerShell, aynı zamanda, diske fiilen dokunmadan kötü amaçlı yazılım dosyalarını bilgisayarın belleğine indirmek ve bunları yürütmek için kullanılır. Siber saldırıları gerçekleştirmek için kullanılan PowerShell cmdlet'leri arasında Invoke-Command veya Start-Process yer alır. Invoke-Command, bir komutu uzaktan yürütmek için, Start-Process de bir uygulamayı veya işlemi sistemde yerel olarak çalıştırmak için kullanılır.

  2. Etki alanı bulma: Saldırganlar kurumsal ağa giriş yaptıktan sonra, belirli cmdlet'leri kullanarak yerel yönetici olarak mevcut etki alanlarının, grupların ve bu etki alanlarındaki kullanıcı veya bilgisayar hesaplarının bir listesini alabilir. Bu da bu hesapların veya grupların sahip olabileceği ayrıcalıklara dayalı olarak bir sonraki hedeflerini belirlemelerine yardımcı olur. Windows ortamında, kullanabilecekleri cmdlet'ler arasında, dizindeki etki alanlarının listesini almak için Get-ADDomain, kullanıcıların listesini almak için Get-ADUser, dizindeki bilgisayarların listesini almak için Get-ADComputer ve belirli bir gruptaki kullanıcıların listesini almak için Get-ADGroupMember bulunur. Başta her ana bilgisayar hakkında derinlikli bilgi veren Get-ADComputer olmak üzere, bu cmdlet'ler nesnelerden her biri ile ilgili birçok bilgi verir.

  3. Ayrıcalık yükseltme: PowerShell'e erişim sağlanması, ayrıcalıkların kolayca yükseltilebilecek olması demektir. Daha önce de gördüğümüz gibi, saldırgan yerel bir yönetici gibi davranarak etki alanındaki bilgisayarların listesi hakkında bilgi edinerek bir hedef seçtiğinde, ilgili hedef için ACL'yi kontrol etmek üzere Get-Acl cmdlet'ini kullanır.

    Saldırganlar, izinlerin listesini aldıktan sonra, hedef bilgisayar için daha yüksek izinlere sahip olan kullanıcıyı veya kullanıcı grubunu seçer. Bu grubun üyeleri ile ilgili bilgileri alırlar (Get-ADGroupMember cmdlet'ini kullanarak). Daha sonra bu hesaplar arasında erişim sağladıkları hesaplar ile eşleşenler olup olmadığını kontrol etmek için grup üyelerinin listesini incelerler. Bunu yaptıktan sonra, mevcut sistemi kullanarak hedef makinedeki komut dosyalarını uzaktan yürütmek için PS-Exec komutunu kullanırlar.

  4. Yanal hareket: Yanal hareket, saldırganın ağdaki güvenlik ihlali bulunan bir ana bilgisayardan diğerine hareket etmesini içeren bir saldırı tekniğidir. Yanal harekette çoğunlukla aşağıdaki iki araçtan birini kullanılır: Windows Uzaktan Yönetimi (WinRM) veya Cobalt Strike. WinRM, uzak bağlantılar kurmak için kullanılan tüm Windows makinelerinde dahili olarak sunulan bir araçtır ve Cobalt Strike, saldırıları simüle etmek için kullanılan bir sızma testi aracıdır.

    PowerShell'i yanal hareket amaçlı olarak kullanmanın iki yolu bulunur:

    • Saldırgan ağa giriş yaptıktan sonra, PowerShell'i yerel yönetici olarak çalıştırabilir, ayrıcalıkları yükseltebilir, bir komut dosyasını başka bir ana bilgisayarda yürütmek üzere PS-Exec komutunu kullanabilir ve son olarak ayrıcalıklı bir uzak bağlantı kurabilir.
    • İkinci yol, saldırganın hedef aldığı istediği bir istemciyle bağlantı kurmak amacıyla WinRM'nin kullanılmasını içerir. WinRM'yi başka bir istemciye bağlanmak amacıyla kullanmak için, istemcide bir dinleyicinin etkinleştirilmiş olması gerekir. PowerShell, istemcide dinlemeyi etkinleştirmek için kullanılabilir. Alternatif olarak, Cobalt Strike kullanıldığında, Cobalt Strike'ı başlatmak için PowerShell kullanılabilir.
  5. Dosyasız kötü amaçlı yazılımlar: Dosyasız kötü amaçlı yazılımlar, dosya tabanlı benzerleri gibi yürütülebilir kötü amaçlı dosyalara bağlı kalmak yerine hedef makinede mevcut olan yerel araçları kullanır. Bilgisayarın sabit sürücüsü yerine belleğinde çalıştırılır ve bu da tespit edilmesini zorlaştırır. PowerShell saldırının izlenebilirliğini önlemek amacıyla kullanıldığından, büyük ölçüde dosyasız kötü amaçlı yazılımların yürütülmesinde kullanılır. Bir saldırgan, Invoke-Command cmdlet'iyle komutları uzak bir hedef sistemde yürütmek için PowerShell'i kullanabilir.

Windows sistemlerinde PowerShell günlük kaydı

Windows, PowerShell etkinliğini izlemek için üç tür günlük kaydı mekanizması sunar.

  • Modül günlük kaydı: Bu günlükler, tetiklenmiş olabilecek PowerShell modüllerini izler. Windows'un PowerShell için sunduğu Active Directory modülünü örnek olarak ele alalım. Bir BT yöneticisi PowerShell'i kullanıcılar oluşturmak veya Grup İlkesi nesnelerini değiştirmek için kullandığında, Active Directory modülü arka planda yürütülür. Bu, modül günlük kaydıyla izlenir. Bu günlüklerin olay kimliği 4103'tür. Modül günlükleri yürütülen modül hakkında bazı bilgiler sağlıyor olsa da yürütülmüş olan komutları güvenilir bir şekilde kayıt altına alamayabilir.
  • Komut dosyası bloku günlük kaydı: Komut dosyası blokları, bir seferde yürütülen komut dosyası veya cmdlet bloklarıdır. Bunlar genellikle süslü ayraç içinde yazılır. Komut dosyası bloku günlükleri, komut dosyasının tamamını, yürütülen komutları ve ilgili yürütme işlemini kimin tetiklediğini kaydeder. Bu komut dosyası blok günlüklerinin olay kimliği 4104'tür.
  • Döküm günlük kaydı: Dökümler, PowerShell oturumu sırasında yürütülen komut dosyasının tamamını kaydeder. Bu dosya daha sonra kullanıcının Belgeler klasöründe saklanır. Dökümler "PowerShell_transcript" ile başlayan adlara sahip metin dosyaları olarak saklanır. Bunlar, ilgili oturumda yürütülen komut dosyalarının meta verilerini ve zaman damgalarını kaydeder ve ayrıntılı neden analizinde kullanışlıdır. Ancak, döküm günlükleri kullanılarak oluşturulan verilerin çoğu modül ve komut dosyası blok günlüklerinde kayıt altına alınır.

PowerShell günlük kaydı, belirli bir makine için yerel Grup İlkesi Düzenleyicisi üzerinden veya bir etki alanındaki bir kullanıcı grubu veya OU için Grup İlkesi Yönetim Düzenleyicisi aracılığıyla etkinleştirilebilir. Altı basit adımda bunun nasıl yapılacağına bakalım:

  1. Grup İlkesi Yönetimi Düzenleyicisini açın.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durumŞekil 2: Grup İlkesi Yönetimi Düzenleyicisi

  2. İlgili gerekliliğe göre Kullanıcı Yapılandırması veya Bilgisayar Yapılandırması altında Yönetim Şablonları seçeneğine tıklayın.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durum

  3. Windows Bileşenleri seçeneğine tıklayın.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durum

  4. Ekranı aşağı kaydırın ve Windows PowerShell'e tıklayın.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durum

  5. Sunulanlar arasından etkinleştirilmesi gereken PowerShell günlük mekanizmalarını seçin. Diyelim ki komut dosyası blok günlüklerini etkinleştirmek istiyorsunuz.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durum

  6. PowerShell Komut Dosyası Blok Günlüğünü Aç'a tıklayın. Verilen radyo düğmelerinden Etkin düğmesini seçin ve Uygula'ya tıklayın.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durum

Diğer PowerShell günlüklerinin oluşturulmasını etkinleştirmek için benzer bir süreç izlenebilir. Birçok kuruluş, çok fazla sayıda olay günlüğünün oluşturulması nedeniyle PowerShell günlük kaydını devre dışı bırakır. Siber güvenlikte en iyi uygulamalardan biri olarak, kuruluşların üç türün tamamı olmasa dahi en azından komut dosyası bloku günlük kaydı olacak şekilde PowerShell günlük kaydını etkinleştirmesi önerilir.

PowerShell'in bir SIEM çözümünün Active Directory denetim özelliği kullanılarak denetlenmesi

BT yöneticilerinin PowerShell komut dosyalarını izlemek için oluşturulan birçok olay günlüğünü takip etmesi zor olabilir. Log360 gibi Active Directory denetimi işleviyle donatılmış bir SIEM çözümü, aşağıdaki şekillerde BT yöneticilerinin süreci kolaylaştırmasına yardımcı olabilir:

  • Modül günlük kaydı ve komut dosyası bloku günlük kaydı raporlarını kullanarak ağı kötü amaçlı kod yürütmelerine karşı izlemek.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durumŞekil 3: ManageEngine Log360'ta modül günlük kaydı raporları

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durumŞekil 4: ManageEngine Log360'ta Komut Dosyası Bloku Günlük Kaydı raporları

  • Belirli PowerShell işlem izleme raporlarının kullanılmasıyla PowerShell tarafından yürütülen tüm işlemleri izlemek.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durumŞekil 5: ManageEngine Log360'ta PowerShell işlem izleme raporları

  • Uyarı özelliğini kullanarak SMS ve e-posta yoluyla anında güvenlik uyarıları almak.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durumŞekil 6: ManageEngine Log360'ta Uyarı Profilini yapılandırma özelliği

  • Bu yürütme işlemleri için uyarılar tetiklendiğinde kötü amaçlı işlemleri durdurmak amacıyla komut dosyalarını yürütmek.

    Siber suçluların siber saldırılarda Powershell komut dosyalarını kullandığı 5 durumŞekil 7: ManageEngine Log360'ta Komut Dosyası Yürütme özelliği

Log360 ile PowerShell denetimi hakkında daha fazla bilgi edinmek üzere kişiselleştirilmiş bir tanıtım almak için ürün uzmanlarımızla iletişime geçin veya bu çözümü kendiniz denemek için 30 günlük ücretsiz deneme sürümünü indirin.