Cain & Abel etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Cain & Abel 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

13 Kasım 2013 Çarşamba

İpucu: hashdump Hatası: priv_passwd_get_sam_hashes

hashdump Hatası: priv_passwd_get_sam_hashes

Meterpreter kabuğuna SYSTEM hakları ile düşüldükten sonra, yerel kullanıcı parola özetlerini almak için Meterpreter kabuğunda hashdump komutunu çalıştırmak gerekir. Meterpreter hashdump komutu, LSASS prosesine kod enjekte eder, CreateThread() fonksiyonunu çağırır ve enjekte edilen kod da LSASS içerisinden parola özetlerini alıp ekrana bastırır. Ancak artık bir çok AV ve HIPS gibi güvenlik mekanizmaları bahsedilen API çağrılarını önlerler. Bu sebeple Meterpreter hashdump çalışmayabilir. Bu ve benzer sebepelerle aşağıdaki gibi bir hata alınabilir:
meterpreter > hashdump
[-] priv_passwd_get_sam_hashes: Operation failed: The parameter is incorrect.

Bu durumlarda aşağıdaki işlemler denenebilir:

1) getsystem çalıştırılır. Örnek:

Kaynak: http://www.offensive-security.com/metasploit-unleashed/Pivoting
"getsystem" komutu ile ilgili ayrıntılı bilgi için bakınız.

2) Modül olarak hashdump kullanılır.

Not: Bu modül kayıt defterindeki SAM/SYSTEM anahtarlarını kullanır. Bu modülün çalışması için yönetici hakkı yetmez, SYSTEM haklarını ele geçirmek gereklidir.

Kaynak:
http://securityweekly.com/2014/10/post-exploitation-metasploit-and-windows-hashes.html

3) priv eklentisi yüklendikten sonra SYSTEM hakkı alınır.

Kaynak: http://www.offensive-security.com/metasploit-unleashed/Privilege_Escalation

4) getprivs komutu çalıştırılır. Daha sonra da Meterpreter hashdump veya diğer teknikler denenebilir.


5) MSF bypassuac modülü ile UAC kapatılır (Çalıştığını hiç görmedim)


6) Kayıt defterinden SAM ve SYSTEM dosyası alınır ve BT makinesine indirilir.

Kaynak:
http://ertugrulbasaranoglu.blogspot.com/2013/07/ipucu-kayt-defterinden-sam-ve-system.html

7) Prosesler listelendikten sonra başka bir prosese atlanır. Atlanan prosesin SYSTEM hakları ile çalışan ama winlogon’dan büyük olmayan bir proses olması tavsiye edilir. Svchost.exe dosyası sıçramak için iyi bir proses sayılır. (Aşağıdaki örnekte DA olan kullanıcının prosesine sıçranmıştır.)
Proseslerin listelenmesi: ps

Prosese sıçranması: migrate ProsesID

8) Modül olarak migrate kullanılır.

Kaynak: http://www.offensive-security.com/metasploit-unleashed/Windows_Post_Manage_Modules#migrate

9) Prosese sıçramak için Incognito da kullanılabilir.
Bu amaçla önce tokenlar listelenir:

Sonra da jeton alınır.

Kaynak: http://www.offensive-security.com/metasploit-unleashed/Fun_With_Incognito

10) SYSTEM hakları varken Windows kabuğuna düşülerek yerel bir yönetici oluşturulur.

Daha sonra da psexec ile o kullanıcı hesabı ile bağlantı kurulur.
RHOST: ms08_067 zafiyetinin bulunduğu bilgisayarın IP bilgisi
SMBPass: Yeni oluşturulan kullanıcının parolası (TestP@ss123)
SMBUser: Yeni oluşturulan kullanıcının adı (TestYerelKullanici)
LHOST: Kendi bilgisayarımızın IP bilgisi

Kaynak: http://ertugrulbasaranoglu.blogspot.com/2013/10/ipucu-psexec-modulu-ile-yeni.html
Daha sonra da hashdump denenir.

11) SYSTEM hakları varken Windows kabuğuna düşülerek yerel bir yönetici oluşturulur.

Daha sonra da o bilgisayara RDP ile girilip, Cain&Abel ile alınabilir. Veya SAM ve SYSTEM dosyası alınabilir. Online olarak almak için aşağıdaki işlemler uygulanabilir:
http://ertugrulbasaranoglu.blogspot.com/2013/08/ipucu-yerel-hesap-bilgilerinin.html
http://ertugrulbasaranoglu.blogspot.com/2013/07/ipucu-kayt-defterinden-sam-ve-system.html

12) MSF smart_hashdump post modülü kullanılır.

MSF smart_hashdump post modülü şu şekilde çalışır:

  • Sahip olunan yetki, işletim sistemi, rolü (DC olup olmadığı) belirlenir.
  • SYSTEM hakkına sahip olunmuşsa, kayıt defterinden SAM anahtarının altı okunur.
  • DC ise, LSASS içerisine kod enjekte edilir.
  • İşletim sistemi Windows Server 2008 ise ve yönetici haklarına sahip olunmuşsa, şu 3 adım gerçekleştirilir: Meterpreter getsystem komutu ile SYSTEM hakkı elde edilir. Eğer hata alındı ise, SYSTEM hakkıyla çalışan bir prosese sıçranır. Sonrasında da LSASS prosesine kod enjekte edilir.
  • İşletim sistemi Wİndows 7 ve üzeri bir işletim sistemi, UAC devre dışı ve yönetici haklarına sahip olunmuşsa, Meterpreter getsystem komutu ile SYSTEM hakkı elde edilir ve kayıt defterindeki SAM anahtarı okunur. 
  • İşletim sistemi Wİndows 2000/2003 veya XP ise, Meterpreter getsystem komutu ile SYSTEM hakkı elde edilir ve kayıt defterindeki SAM anahtarı okunur.
Kaynak:

13) Volume Shadow Copy ile SAM/SYSTEM/NTDS.dit dosyası alındıktan sonra bu dosyalar analiz edilir. NTDS.dit ve SYSTEM ile DC üzerinden domain kullanıcılarına parola özetlerinin elde edilmesi için bakınız.


15 Ağustos 2013 Perşembe

İpucu: Yerel Hesap Bilgilerinin Çevrimiçi Olarak Elde Edilmesi

İpucu: Yerel Hesap Bilgilerinin Çevrimiçi Olarak Elde Edilmesi


Yerel kullanıcıların hesap bilgileri bilgisayar kapalı halde iken harici bir aygıt (USB/ CD / DVD) kullanılarak elde edilebilir. Ayrıntılı bilgi için bakınız:
http://ertugrulbasaranoglu.blogspot.com/2012/12/ipucu-makineye-fiziksel-olarak-eriserek.html
SAM ve SYSTEM dosyaları bilgisayar açık halde iken Cain&Abel gibi bir uygulama ile de elde edilebilir. Bu işlemi gerçekleştirebilmek için bilgisayar üzerinde yönetici haklarına sahip olmak gerekmektedir.

Öncelikle Cain & Abel isimli uygulama çalıştırılır, “Cracker” sekmesine tıklanır ve “+” ikonuna tıklanır.
Şekil - 1: Cain & Abel ile Cracker Adımı

Böylece yerel kullanıcı hesap özetleri elde edilir. Bu aşamaya ait ekran görüntüsü aşağıda verilmiştir.
Şekil - 2: Cain & Abel ile Yerel Kullanıcı Hesap Özetlerinin Ele Geçirilmesi

Bu aşamadan sonra ait hesap özetleri üzerinde sağ tıklanarak export işlemi yapılır ve oluşturulan dosya notepad ile açılarak “zayifKullanici” ya ait hesap özet bilgisinin NT Hash tarafı kopyalanır.
Şekil - 3: Yerel Kullanıcı Hesap Özetlerine Ait Çıktının Elde Edilmesi

Not: Windows 7 makinelerde varsayılan olarak LM özet tutulmamaktadır. LM özeti çok daha kolay bir şekilde kırılabilmektedir.

Web üzerinde bir çok sitede online olarak NT özetleri kırılmaktadır. Bu sitelerden bir tanesi de www.md5decrypter.co.uk adresli olanıdır. Bu siteye girerek kullanıcıya ait NT Hash bilgisi aşağıdaki resimdekine benzer şekilde girilirse, kullanıcıya ait açık parola bilgisi elde edilecektir.
Şekil - 4: Kullanıcıya Ait Açık Parola Bilgisinin Web Üzerinden Elde Edilmesi