Linux Persistence
Last updated
Last updated
Davamlılıq, qarşı tərəfin sistemi yenidən başladıqda, dəyişdirilmiş məlumatlar və onların girişini kəsə biləcək digər fasilələr zamanı girişi saxlamaq üçün istifadə etdiyi üsullardan ibarətdir. Davamlılıq üçün istifadə olunan yollar müxtəlifdir. Və hər birinin özünə məxsus yolları vardır. Müxtəlif senarilərə əsasən biz bu yollardan istifadə etməliyik.
İlkin giriş əldə kifayət deyil, hədəflərinizə davamlı girişi qurmaq və saxlamaq lazımdır.
Persistence taktikaları bölməsində olan altından xətt çəkilmiş texnikalar bizə hədəf sistemdə aydın və metodiki yollarla necə davamlılığı təmin edə biləcəyimizi göstərir.
Aşağıdakı açar texnikaları və alt-texnikaları biz bu bölmədə araşdıracayıq:
SSH açarı ilə persistence
İcazələri yüksək olan hesab yaratmaq
Unix shell də konfigurasiyaları dəyişmək ( .bashrc faylında backdoor yaratmaq kimi)
Web shell və ya backdoor
Kron jobs
Məqsədimiz sistemə ilkin giriş əldə etdikdən sonra Linux hədəfində persistence (davamlılıq) yaratmaqdır.
Qeyd: Bəzi davamlılıq üsulları uğurla icra olunmaq üçün “root” icazələri tələb edəcək.
SSH açarı ilə persistence
İstifadə edəcəyimiz ilk davamlılıq texnikası parol əsaslı autentifikasiyadan fərqli olaraq SSH açarı əsasında identifikasiyanın yaradılması və istifadəsi prosesidir. Bu davamliliq texnikası, istifadəçi hesabının parolları dəyişdirilərsə bele, hədəf sistemə girişi qorumağa kömək edəcək.
Qeyd: Bu texnika SSH konfiqurasiya faylında Public key doğrulamasının aktivləşdirilməsini tələb edir.
Bu texnikanı yerinə yetirmək üçün siz hədəf sistemə ilkin giriş əldə etməlisiniz və SSH konfiqurasiya faylını dəyişdirmək istəsəniz, “root” imtiyazlarına ehtiyacınız olacaq.
İlkin addım SSH açar cütünün yaradılmasıdır, Bunu kali Linux da etmək lazımdır, çünkü biz ssh ilə sistemə bağlanacayıq. Biz bu əmrdən istifadə edəcəyik:
Aşağıdakı ekran görüntüsündə göstərilən kimi, bu, yaradılacaq public və private açarlar üçün saxlama yerini, həmçinin SSH açarı üçün parol ifadəsini təyin etməyi təklif edəcək. Bu vəziyyətdə standart seçimlərdən istifadə edəcəyik.
Public və private açar cütünü yaratdıqdan sonra siz yaratdığınız açıq açarın (id_rsa.pub) məzmununu kopyalamalı və onu hədəf sistemdəki hədəf istifadəçi hesabının .ssh qovluğundakı “authorized_keys” faylına əlavə etməli olacaqsınız. Bu halda, açıq açarı /root/.ssh/authorized_keys-də yerləşən “root” istifadəçinin “authorized_keys” faylına əlavə edəcəyik.
Qeyd: .ssh kataloqu və “authorized_keys” faylı yoxdursa, onları yaratmalı olacaqsınız, bunu aşağıdakı əmrlərle yerinə yetirməklə etmək olar:
Yaraddığınız açıq açarın kontentini “authorized_keys” faylına yerləşdirdikdən sonra o, aşağıda göstərilən ekran görüntüsü kimi olmalidir.
Həmçinin .ssh qovluğuna və “authorized_keys” faylına lazımi icazələri tətbiq etmək tövsiyə olunur, bunu aşağıdakı əmrləri yerinə yetirməklə etmək olar:
Aşağıdakı ekran görüntüsündə göstərildiyi kimi, yaratdığınız public açarı əlavə etdikdən sonra, indi parol təqdim etmədən hədəflə SSH vasitəsilə bağlantı əldə edə biləcəksiniz.
İndi biz SSH açarları vasitəsilə davamlı girişi uğurla qura bildik və nəticədə parolların dəyişdirilməsinin səbəb olduğu gələcək autentifikasiya xətalarını azaltdıq.
İcazələri yüksək olan hesab yaratmaq
Danışacağımız növbəti davamlılıq texnikası giriş üçün imtiyazlı yerli hesabın yaradılması prosesidir, istifadəçi hesabının parolu dəyişdirilərsə, bu texnika hədəf sistemə girişi saxlamaq üçün istifadə edilə bilər, lakin yerli istifadəçi hesabının yaradılması daha az istifadəçisi və xidmət hesabı olan serverlərdə yeni bir istifadəçi kimi asanlıqla aşkarlanacaq.
Aşkarlanmamaq üçün biz gizli adla istifadəçi hesabı yaradacağıq, bu halda xidmət hesabı kimi birdirmək üçün “ssh” adlı istifadəçi hesabı yaradacağıq.
Qeyd: Linux sistemlərində yeni istifadəçi hesabı yaratmaq üçün sizə “root” imtiyazları tələb olunacaq.
Aşağıdakı əmri işlətməklə hədəfdə istifadəçi hesabı yarada bilərik:
Hesabı yaratdıqdan sonra istifadəçini "sudo" qrupuna əlavə etməliyik, bu istifadəçiyə inzibati imtiyazlar verəcəkdir, bunu aşağıdakı əmri işlətməklə etmək olar:
İstifadəçi hesabını “sudo” qrupuna əlavə etdikdən sonra hesab üçün parol təyin etməliyik, bunu aşağıdakı əmri yerinə yetirməklə etmək olar:
Şifrəni təyin etdikdən sonra istifadəçi hesabının əlavə olunduğunu təsdiqləmək üçün /etc/passwd faylının məzmununu sadalaya bilərik.
İndi SSH parol autentifikasiyası vasitəsilə yeni istifadəçi hesabı ilə autentifikasiya edə bilərsiniz, alternativ olaraq birinci bölmədə yaratdığımız ssh ictimai açarını istifadəçi hesabının ev parolunda “authorized_keys” faylına əlavə edə bilərsiniz.
SSH vasitəsilə serverlə autentifikasiya etdikdən sonra sudo əmrindən istifadə etməklə istifadəçi hesabının inzibati imtiyazlara malik olduğunu təsdiqləyə bilərik.
Əvvəlki ekran görüntüsündə göstərildiyi kimi, istifadəçi hesabı inzibati imtiyazlara malikdir və “root” hesaba daxil olmadan və ya onunla qarşılıqlı əlaqədə olmadan sistemdə istənilən əmri işlədə bilər.
Bu hesab, hədəf sistemdə “root” hesabından və ya hər hansı digər qanuni istifadəçi hesablarından istifadə etmədən istədiyiniz zaman arxa qapıya giriş üçün istifadə oluna bilər və hədəfə açıq girişinizin olmasını təmin edir.
Bu davamlılıq texnikası istifadəçi hesabının .bashrc faylında bizim netcat dinləyicimizə qoşulacaq bash reverse shell əlavə edilməsini əhatə edəcək. .bashrc faylı bash-ı fərdiləşdirmək üçün istifadə edilən konfiqurasiya faylıdır və istifadəçi bash qabığı ilə daxil olduqda yerinə yetirilir.
İlk addım mətn redaktoru ilə .bashrc faylının açılmasını əhatə edəcək. Bunu aşağıdakı əmri yerinə yetirməklə etmək olar:
Faylı mətn redaktoru ilə açdıqdan sonra istifadəçi hər dəfə daxil olduqda bizə reverse shell təmin edəcək sadə bash əmri əlavə edə bilərik. Bunu aşağıdakı əmri əlavə etməklə etmək olar:
Aşağıdakı ekran görüntüsündə göstərildiyi kimi, emr Kalinin IP-ni və netcat-in dinlədiyi portu əhatə etməlidir.
İstifadəçi hər dəfə istifadəçi hesabına daxil olduqda, .bashrc faylındakı əmr yerinə yetiriləcək və nəticədə aşağıdakı ekran görüntüsündə göstərildiyi kimi sizə netcat dinləyicisində reverse shell təqdim edəcək.
Biz indi .bashrc faylı vasitəsilə davamliligi qura bildik, bu texnikanın əlavə üstünlüyü var ki, reverse shell qanuni konfiqurasiya faylında gizlədilib, aşkar etmək daha çətindir.
Bu davamlılıq texnikası PHP web shellinin yaradılması və hədəf serverə yüklənməsini əhatə edir. Hədəf serverin LAMP stack ini işlətdiyini nəzərə alsaq, biz PHP meterpreter payloadi yarada və onu arxa qapı kimi web serverə yükləyə bilərik.
İlk addım Msfvenom ilə PHP payloadinin yaradılmasını əhatə edəcək, bunu aşağıdakı əmri işlətməklə etmək olar:
Paylaod yaratdıqdan sonra PHP teqlərini əlavə etməklə onu dəyişdirməli olacaqsınız ki, skript aşağıdakı ekran görüntüsündə göstərildiyi kimi düzgün icra olunsun.
İndi aşağıdakı əmrləri işlətməklə dinləyicini Metasploit ilə qura bilərik:
Növbəti addım yenicə yaratdığımız PHP qabığının veb serverə yüklənməsini əhatə edəcək, bunu Kali VM-də yerli veb server qurmaqla etmək olar:
Sonra onu hədəf mashina endirin:
Bu halda, biz “backup.php” faylını aşağıdakı ekran görüntüsündə göstərildiyi kimi /var/www/html kataloqu altında webserverin root-una yükləyəcəyik.
Brauzerinizlə aşağıdakı URL-ə daxil olaraq veb-serverdəki “backup.php” faylına keçməklə hədəfdə meterpreter session əldə edə bilərik:
Brauzer vasitəsilə daxil olmaq PHP kodunu yerinə yetirməli və nəticədə aşağıdakı ekran görüntüsündə göstərildiyi kimi dinləyicinizdə ölçmə seansı təqdim etməlidir.
SSH vasitəsilə autentifikasiya etmədən hədəf serverə girişi qoruyub saxlamağa imkan verən meterpreter payload yükləməklə davamlılığı uğurla qura bildik.
Bu texnika, müəyyən bir cədvəl üzrə dəfələrlə reverse shell command ve ya a web shell yetirərək hədəf sistemə davamlı girişi təmin etmək üçün Cron jobs-dan istifadə etməyi əhatə edir.
Cron müəyyən bir cədvəl üzrə dəfələrlə proqramları, skriptləri və digər əmrləri işlədən vaxta əsaslanan xidmətdir.
Cron sizə seçdiyiniz zamana gore proqram, skript və ya əmr işlətmək imkanı verir, bu Cron jobs-lar daha sonra “crontab” faylında saxlanılır.
Crontab faylını redaktə etməklə hədəf sistemə bir cron jobu əlavə edə bilərik, bunu hədəf sistemdə aşağıdakı əmri işlətməklə etmək olar:
İndi hər dəqiqə netcat əmrini yerinə yetirəcək yeni bir cron işi əlavə edə bilərik, bu crontab faylına aşağıdakı sətri əlavə etməklə edilə bilər:
Cron jobunu əlavə etdikdən sonra faylı save elemeliyik.
İndi Kali-də aşağıdakı əmri işlətməklə netcat dinləyicimizi qura bilərik:
Bir dəqiqədən sonra cron jobu yerinə yetiriləcək və siz aşağıdakı ekran görüntüsündə göstərildiyi kimi netcat dinləyicinizdə reverse shell alacaqsiniz.
Alternativ olaraq, reverse shell əldə etmək üçün netcat istifadə etmək əvəzinə, əvvəlki bölmədə yaratdığımız və yüklədiyimiz PHP meterpreter shellini yerinə yetirən cron jobu yarada bilərik. Bu, crontab faylına aşağıdakı sətri əlavə etməklə edilə bilər:
Aşağıdakı ekran görüntüsündə göstərildiyi kimi, bir dəqiqədən sonra bir meterpreter session achilacaqdir.
Biz indi dinləyicimizə yenidən qoşulan cron jobu yaratmaqla hədəf serverdə davamlılığı uğurla qura bildik, əlavə olaraq hədəf serverə yüklədiyimiz PHP meterpreter qabığını yerinə yetirən cron jobu da.