
PersistenceSniper, Blue Teams, Incident Responders ve System Administrators tarafından Windows makinelerine yerleştirilmiş kalıcılıkları yakalamak için kullanılabilen bir Powershell betiğidir . Komut dosyası ayrıca Powershell Galerisi’nde de mevcuttur .
neden
Neden böyle bir araç yazıyorsunuz diye sorabilirsiniz. Başlangıç olarak, etrafa bakmayı denedim ve birden fazla makinede otomatik olarak bilinen kalıcılık tekniklerini arayan ve aynı zamanda sonuçları hızlı ve kolay bir şekilde ayrıştırıp karşılaştırabilen özel kullanım durumuma uygun bir araç bulamadım. Elbette, Sysinternals’ın Otomatik Çalıştırmalarıharika bir araçtır ve kesinlikle kullanılmaya değerdir, ancak sonuçları standart olmayan biçimlerde verdiği ve komut satırıyla bazı maskaralıklar yapmadığınız sürece uzaktan çalıştırılamayacağı düşünülürseeşdeğer, benim için uygun bulmadım. Ayrıca, şu ana kadar PersistenceSniper’da uyguladığım bazı teknikler bildiğim kadarıyla Autoruns’ta henüz uygulanmadı. Her neyse, ihtiyacınız olan, kullanımı kolay, halihazırda uygulanmış birçok özelliğe sahip GUI tabanlı bir araçsa, Autoruns gitmenin yoludur, aksi takdirde PersistenceSniper’ın bir şansı olmasına izin verin, bunu kaçırmaz 🙂
kullanım
PersistenceSniper’ı kullanmak şu kadar basittir:PS C:\> git clone https://github.com/last-byte/PersistenceSniper
PS C:\> Import-Module .\PersistenceSniper\PersistenceSniper\PersistenceSniper.psd1
PS C:\> Find-AllPersistence
Aracın nasıl kullanılacağına veya hangi parametrelerin mevcut olduğuna ve nasıl çalıştıklarına dair ayrıntılı bir açıklamaya ihtiyacınız varsa, PersistenceSniper’s Find-AllPersistencePowershell’in yardım özelliklerini destekler, böylece modülü içe aktardıktan sonra aşağıdaki komutu kullanarak ayrıntılı, güncellenmiş yardım alabilirsiniz:Get-Help -Name Find-AllPersistence -Full
PersistenceSniper’s Find-AllPersistence, aşağıdaki özelliklere sahip PSCustomObject türünde bir dizi nesne döndürür:Bu, çıktıların kolayca biçimlendirilmesine ve filtrelenmesine olanak tanır. Diyelim ki yalnızca saldırganın NT AUTHORITY\SYSTEM (diğer adıyla Sistem) olarak erişimi yeniden kazanmasına izin verecek kalıcılıkları görmek istiyorsunuz:PS C:\> Find-AllPersistence | Where-Object "Access Gained" -EQ "System"

Tabii ki, PersistenceSniper Powershell tabanlı bir araç olarak, Out-GridViewetkileşim için GUI tabanlı bir tabloya sahip olmak için çıktısını iletmek gibi bazı harika numaralar gerçekleştirilebilir.

sonuçları yorumlama
Daha önce tanıtıldığı gibi, Find-AllPersistencebir dizi Powershell Özel Nesnesi çıktısı verir. Her nesne, işlevin aradığı farklı teknikleri filtrelemek, sıralamak ve daha iyi anlamak için kullanılabilecek aşağıdaki özelliklere sahiptir:
- BilgisayarAdı: Bu oldukça basittir.
Find-AllPersistenceParametre olmadan çalıştırırsanız-ComputerName, PersistenceSniper yalnızca yerel makinede çalışır. Aksi takdirde belirttiğiniz uzak bilgisayar(lar)da çalışacaktır; - Teknik: Bu, toplumda yaygın olarak bilindiği üzere tekniğin kendisinin adıdır;
- Sınıflandırma: Bu özellik, MITRE ATT&CK tekniğine ve alt teknik numarasına göre teknikleri hızlı bir şekilde tanımlamak için kullanılabilir. MITRE ATT&CK sınıflandırması olmayan teknikler için, diğer sınıflandırmalar kullanılır, en yaygını Hexacorn’unkidir, çünkü birçok teknik onun tarafından keşfedilmiştir. Bir tekniğin kaynağı güvenilir bir şekilde tanımlanamadığında, “Kataloglanmamış Teknik N.#” sınıflandırması kullanılır;
- Yol: Bu, tekniğin yerleştirildiği dosya sistemindeki veya kayıt defterindeki yoldur;
- Değer: Bu, tekniklerin kullandığı kayıt defteri özelliğinin değeri veya dosya sistemine bir şey yerleştirmeye dayanan bir teknik olması durumunda kullanılan yürütülebilir dosyanın/kütüphanenin adıdır;
- Erişim Kazanıldı: Bu, tekniğin saldırgana verdiği erişim türüdür. Örneğin, HKCU altında bir Çalıştır anahtarı ise, kazanılan erişim kullanıcı düzeyinde olurken, HKLM altındaysa sistem düzeyinde olacaktır;
- Not: Bu, işleyişinin kolayca kavranabilmesi için tekniğin hızlı bir açıklamasıdır;
- Referans: Bu, analistin daha fazla incelemesi gerekirse, tekniğin daha derinlemesine bir açıklamasına bir bağlantıdır.
Yanlış pozitiflerle başa çıkmak
Kabul edelim, kalıcılık teknikleri için avlanmak aynı zamanda birçok yanlış pozitifle uğraşmak zorunda kalmayı da beraberinde getiriyor. Bunun nedeni, bazı tekniklerin neredeyse hiçbir zaman yasal olarak kullanılmamasına rağmen, birçoğunun sistem açılışında veya kullanıcı oturum açma sırasında otomatik olarak çalıştırılması gereken yasal yazılımlar tarafından kullanılmasıdır.
Bu, birçok ortamda bilinen yanlış pozitifleri içeren bir CSV dosyası oluşturarak üstesinden gelinebilecek bir zorluk teşkil eder. Kuruluşunuz altın bir görüntü gibi bir şey kullanarak sistemleri dağıtıyorsa, PersistenceSniper’ı yeni oluşturduğunuz bir sistemde çalıştırabilir, sonuçların CSV’sini alabilir ve diğer makinelerdeki sonuçları filtrelemek için kullanabilirsiniz. Bu yaklaşım aşağıdaki avantajlarla birlikte gelir:
- Sıkıcı ve hataya açık olabilecek bir beyaz listeyi yönetmek zorunda kalmamak;
- Yanlış pozitifleri, aracı kullanan kuruluşlara ve kuruluş birimlerine uyarlamak;
- Aracın kodunda herkese açık olarak ifşa etmeyerek yanlış pozitifleri karıştırmak isteyen saldırganların işini zorlaştırır.
Find-AllPersistencebulguların bir CSV dosyasına doğrudan çıktısını sağlayan, aynı zamanda bir CSV dosyasını girdi olarak alıp sonuçları farklılaştırabilen parametrelerle birlikte gelir.PS C:\> Find-AllPersistence -DiffCSV false_positives.csv

Artımlı anlık görüntüler alarak kalıcılık arama
PersistenceSniper’ı kullanmanın harika bir yolu, arkadaşım Riccardo’nun önerdiği şekilde, onu artımlı bir şekilde kullanmaktır: Her X saatte bir çalışan, önceki yinelemenin çıktısını -DiffCSVparametre aracılığıyla alan ve sonuçları yeni bir CSV’ye veren bir Zamanlanmış Görev ayarlayabilirsiniz. . Artan değişiklikleri takip ederek, izlediğiniz makineye yerleştirilen yeni kalıcılıkları oldukça küçük bir zaman çerçevesi içinde tespit edebilmelisiniz.
Şu ana kadar uygulanan kalıcılık teknikleri
Kalıcılık konusu, özellikle Windows makinelerinde, temelde iki haftada bir yeni keşifler gören konulardan biridir. Araştırmacılar tarafından şimdiye kadar bulunan çok sayıda kalıcı teknik göz önüne alındığında, hala bunları uygulama sürecindeyim. Şimdiye kadar aşağıdaki 31 teknik başarıyla uygulandı:
- Çalıştır Anahtarı
- RunOnce Anahtarı
- Görüntü Dosyası Yürütme Seçenekleri
- Doğal Dil Geliştirme Platformu 6 DLL Geçersiz Kılma Yolu
- AEDebug Anahtarları
- Windows Hata Raporlama Hata Ayıklayıcısı
- Windows Hata Raporlama ReflectDebugger
- Komut İstemi Otomatik Çalıştırma
- Gezgin Yükü
- Winlogon Kullanıcı Adı
- Winlogon Kabuğu
- Windows Terminal startOnUserLogin
- AppCertDlls DLL Enjeksiyonu
- Uygulama Yollarının Ele Geçirilmesi
- ServiceDll Ele Geçirme
- Grup İlkesi Uzantıları DLL’leri
- Winlogon MPBildirim
- CHM Yardımcı DLL’si
- hhctrl.ocx’in ele geçirilmesi
- Başlangıç Klasörü
- Kullanıcı Başlatma Mpr Oturum Açma Komut Dosyası
- AutodialDLL Winsock Enjeksiyonu
- LSA Uzantıları DLL’si
- ServerLevelPluginDll DNS Sunucusu DLL Ele Geçirme
- LSA Kimlik Doğrulama Paketleri DLL’si
- LSA Güvenlik Paketleri DLL’si
- Winlogon Bildirim Paketleri DLL
- Explorer Araçları Ele Geçirme
- .NET DbgManagedDebugger
- ErrorHandler.cmd Ele Geçirme
- WMI Abonelikleri
Kredi
Bu senaryoda uygulanan teknikler, dünya çapındaki yetenekli araştırmacılar tarafından zaten yayınlanmıştır, bu nedenle, kredinin vadesi geldiğinde kredi vermek doğrudur. Şunlar olmasaydı bu proje olmazdı:
- Hexacorn ve hiç bitmeyen Beyond good ol’ Run anahtar serisi ;
- Grzegorz Tworek ve inanılmaz kalıcılığı-info.github.io web sitesi ;
- Soğuk ve bilinmeyen kalıcılık tekniklerini açıklayan diğer tüm araştırmacılar.
Ayrıca @APTortellini’deki arkadaşlarıma, özellikle Riccardo Ancarani’ye , onun cılız bir metin yönelimli komut dosyasından tam teşekküllü bir Powershell aracına dönüşmesine yardımcı olan fikir seli için teşekkür etmek isterim.
Lisans
Bu proje CC0 1.0 Evrensel lisansı altındadır. TL; DR: Çalışmayı ticari amaçlarla dahi olsa izin istemeden kopyalayabilir, değiştirebilir, dağıtabilir ve gerçekleştirebilirsiniz.