AIX Sistemlerde Parola Kirma

Normal bir kullanıcı olarak ele geçirdiğiniz veya /etc/passwd dosyasını okuyabildiğiniz AIX sistemlerde, sisteme giriş yapma yetkisi olan kullanıcıları tahmin/tespit edebilirsiniz.

root olarak ele geçirdiğiniz AIX sistemlerin parolalarını, John the Ripper yazılımını kullanarak kırabilirsiniz. Bu bize, deneme-yanılma saldırısıyla(brute-force) çok zaman kaybetmeden, komşu sistemlere gürültüsüz şekilde erişebilmemizi sağlayabilir.

AIX sistemlerdeki bazı ufak farklılıkları, /etc/passwd ve /etc/security/passwd dosyalarındaki detayları bu yazıda özetlemeye çalıştım.


Nedir bu /etc/security/passwd dosyası?

AIX sistemlere erişimi olan kullanıcılar /etc/passwd dosyasında bulunurlar. Ancak şifrelenmiş parolalar bu dosyada değil, sadece root kullanıcısının okuma hakkı olan /etc/security/passwd dosyasında tutulurlar.

 

Sisteme root Erişiminiz Yoksa

Hedef sistemde root olamadıysanız, /etc/passwd dosyası da yapacağınız diğer saldırılar için size bazı ipuçları verebilir. Örnek bir /etc/passwd dosyasını[1] inceleyelim:

root:!:0:0::/root:/usr/bin/bash
daemon:!:1:1::/etc:
bin:!:2:2::/bin:
sys:!:3:3::/usr/sys:
adm:!:4:4::/var/adm:
uucp:!:5:5::/usr/lib/uucp:
guest:!:100:100::/home/guest:
nobody:!:4294967294:4294967294::/:
lpd:!:9:4294967294::/:
lp:*:11:11::/var/spool/lp:/bin/false
invscout:*:6:12::/var/adm/invscout:/usr/bin/ksh
sshd:*:202:201::/var/empty:/usr/bin/ksh
oracle:*:101:202::/home/oracle:/usr/bin/ksh
operasyon:!:203:204::/home/operasyon:/usr/bin/bash
dbadmin:!:777:205::/home/dbadmin:/usr/bin/ksh

AIX sistemlerdeki /etc/passwd dosyaları incelendiğinde, ikinci kolondaki ! (ünlem) ve * (yıldız) karakterleri göze çarpacaktır. Bu karakterler, /etc/security/passwd dosyasında şifresi olan ve olmayan kullanıcıları yansıtmaktadır.
Ünlem (!) karakteri olan kullanıcıların /etc/security/passwd dosyasında şifrelenmiş birer parolası vardır denilebilir. (Sistem özel olarak ayarlandıysa bu kullanıcıların boş şifreleri olabilir, veya hesapları devre dışı durumda olabilir)
Yıldız (*) karakteri olan kullanıcıların /etc/security/passwd dosyasında kaydı yoktur ve bu kullanıcılar sisteme giriş yapamazlar.

Yukarıdaki dosyayı incelediğimizde;

  1. lp, invscout, sshd ve oracle kullanıcılarıyla sisteme giriş yapamayacağımızı görebiliriz.
  2. Sistem kurulumuyla gelen daemon, bin, sys, adm gibi kullanıcıların da, /etc/security/passwd dosyasında muhtemelen geçerli bir şifresi bulunmamaktadır. Bu kullanıcıların ayrıca en son kolondaki login shell bölümü boş olması da yorumlamada kullanılabilir.
  3. Bu durumda elimizde root, operasyon ve dbadmin kullanıcıları kaldı.
  4. AIX sistemlerde default shell Korn Shell’dir (/usr/bin/ksh). Fakat genelde sistem yöneticilerinin, özellikle Linux geçmişi olanların, getirdikleri kolaylıklar nedeniyle Bash tercih ettiğini ve varsayılan shell’lerini bash yaptıklarını görebiliriz.

Yukarıdakileri göz önüne aldığımızda, root ve operasyon hesaplarının muhtemelen sıkça kullanıldığı (Bash shell), dbadmin hesabının ise tahminen çok kullanılmadığı ve belki de güncellenmeyen zayıf bir şifreye sahip olabileceğini ön görebiliriz. Operasyon, dbadmin gibi hesaplar diğer sunucularda da bulunma ihtimali olan hesaplardır. Ayrıca diğer bazı sunucularda, incelendiğimiz sistemde kullanılmayan oracle hesabına şifre verilmiş olabilir.

Duruma bağlı olarak bu hesaplara basit brute-force denemeleri yapabilirsiniz. Veya rsh aktifse ve kullanıcının home dizinine yazma izniniz bulunuyorsa, .rhosts dosyasına + + yazarak eski güzel günleri yadedebilirsiniz.

 

Sistemde root Erişimi Elde Ettiyseniz

Herhangi bir yöntemle hedef AIX sunuculardan birisine root erişimi elde ettiyseniz, yukarıda bahsettiğim /etc/security/passwd dosyasını okuyabilir ve bu dosyayı John the Ripper yazılımının okuyabileceği hale dönüştürüp parola kırma işlemini gerçekleştirebilirsiniz. Bu sayede, root şifresini tespit edebilir veya diğer hesapların şifrelerini bularak komşu sistemleri ele geçirebilirsiniz.

Örnek bir /etc/security/passwd dosyasını[1] inceleyelim:

root:
password = JYheSiLsil/OI
lastupdate = 1275641576

daemon:
password = *

bin:
password = *

sys:
password = *

adm:
password = *

uucp:
password = *

guest:
password = *

nobody:
password = *

lpd:
password = *

operasyon:
password = ho/Gl4LsilF4M
lastupdate = 1153248697
flags =

dbadmin:
password = hHvsilSILCmZM
lastupdate = 1154342459

Yukarıda görüldüğü gibi, root, operasyon ve dbadmin kullanıcıları için /etc/security/passwd dosyalarında şifrelenmiş birer parola mevcut. Diğer hesaplar ise devre dışı (* işareti bulunmaktadır).

John, bu haliyle /etc/secure/passwd dosyasını kıramıyor. Sadece “password =” bölümündeki şifrelenmiş parolaları bir dosyaya aktarıp john’a verebilirsiniz.

$ grep -E ‘password = [^*]’ ornek-passwd |sed -r ‘s/.*=\s(.*)/\1/’
JYheSiLsil/OI
ho/Gl4LsilF4M
hHvsilSILCmZM

Ancak bu durumda dosyada username değeri bulunmayacağından, kullanıcı adlarına benzer/aynı şifrelerin tahmin edilmesi çok uzun sürebilir. Yukarıdaki işlem yerine /etc/secure/passwd dosyasını standart bir /etc/passwd dosyası formatına çevirebilirsiniz. Böylece john the ripper, kullanıcı adlarıyla aynı veya benzer olan basit şifreleri daha kolay bulabilir.

$ ./unaix.sh ornek-passwd
root:JYheSiLsil/OI:0:0:root::/usr/bin/ksh
daemon:*:0:0:daemon::/usr/bin/ksh
bin:*:0:0:bin::/usr/bin/ksh
sys:*:0:0:sys::/usr/bin/ksh
adm:*:0:0:adm::/usr/bin/ksh
uucp:*:0:0:uucp::/usr/bin/ksh
guest:*:0:0:guest::/usr/bin/ksh
nobody:*:0:0:nobody::/usr/bin/ksh
lpd:*:0:0:lpd::/usr/bin/ksh
operasyon:ho/Gl4LsilF4M:0:0:operasyon::/usr/bin/ksh
dbadmin:hHvsilSILCmZM:0:0:dbadmin::/usr/bin/ksh

 

Yukarıdaki unaix.sh dosyasını buradan indirebilirsiniz.

Aşağıdaki basit denemede iki yöntem arasındaki farkı görebilirsiniz. Yukarıdaki çıktıları deneme1 ve deneme2 adlı dosyalara yazdıralım, ve ardından…

$ ./john –single deneme1
Loaded 3 password hashes with 3 different salts (Traditional DES [128/128 BS SSE2])
guesses: 0  time: 0:00:00:00 100%  c/s: 0.00

Eh, tabi ki single modu kullanıcı adı bulunduğunda daha efektif bir yöntemdir. Wordlist’le deneyelim.

$ ./john –wordlist=dict.txt deneme1
Loaded 3 password hashes with 3 different salts (Traditional DES [128/128 BS SSE2])
root             (?)
guesses: 1  time: 0:00:00:00 100%  c/s: 9800  trying: 1234 – write

Yine 1 tane bulabildik. (wordlist’imiz çok geniş olmadığından)

Oysa ki kullanıcı adları da bulunan bir dosyada, şansınız yaver giderse işiniz daha kolay olabilir. unaix.sh script’i ile oluşturduğumuz deneme2 dosyasını deneyelim.

$ ./john –single deneme2
Loaded 3 password hashes with 3 different salts (Traditional DES [128/128 BS SSE2])
root             (root)
dbadmin          (dbadmin)
guesses: 2  time: 0:00:00:00 100%  c/s: 26920  trying: Operasyon42 – Operasyon59

Görüldüğü gibi daha kolay bir şekilde zayıf şifreleri tespit ettik. Ayrıca hangi şifre hangi kullanıcıya ait onu da daha rahat görebiliyoruz. Bu tarz ufak detaylar, yapılan denetimleri hızlandırabilir.

Notlar
[1] Bu yazıdaki örnek /etc/passwd ve /etc/security/passwd dosyaları, gerçek sistemlerle ilişkili değildir. Test sistemlerinden alınmış veya örnek olması açısından elle oluşturulmuş dosyalardır.
[2] unaix.sh dosyasını indirmek için tıklayın

Leave a Reply

Your email address will not be published. Required fields are marked *