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

23 Kasım 2014 Pazar

Farklı Bir Kaba Kuvvet Saldırı Aracı: Crowbar (Levye)

Farklı Bir Kaba Kuvvet Saldırı Aracı: Crowbar (Levye)

Günümüzde bilgi sistemlerinin ve internetin yaygınlaşmasıyla bilginin önemi de artmıştır. Bu sebeple, bilgiye yönelik saldırılar artış göstermiş, bu durum da bilgi güvenliğine verilen önemi arttırmıştır. Bir bilgi sistemini korumak için 2 önemli tedbirin alınması bir çok saldırıya karşı koruma sağlamaktadır. İlk tedbir güncelleştirmelerin sağlanması,  ikincisi ise kimlik doğrulama mekanizmasının etkin olarak işletilmesidir.

Neden Crowbar ve Diğer Araçlardan Farkları

Bu yazıda kimlik doğrulamasına karşı saldırı gerçekleştirebilen Crowbar (Levye)  isimli bir araç tanıtılacaktır. Crowbar RDP, SSH, VNC, VPN adlı servislere karşı kimlik doğrulama mekanizmasını kaba kuvvet saldırıları ile atlatmak için kullanılan bir araçtır. Piyasada belirtilen servislere kaba kuvvet saldırılarını gerçekleştirebilen bir çok araç bulunabilir. Ancak, Crowbar aracının diğer araçlardan önemli bir farkı bulunmaktadır. Diğer araçlar kullanıcı adı ve parola ile kaba kuvvet saldırısı gerçekleştirirken, Crowbar ise kimlik doğrulama anahtarlarını kullanarak da kaba kuvvet saldırılarını gerçekleştirebilmektedir. Şöyle ki, bir çok araç SSH servisine kullanıcı adı ve parola ile saldırılar düzenleyebilmektedir. Ancak bazı sistem yöneticileri kullanıcı hesap parolalarını çok karmaşık verebilmektedir. Bu parolaları SSH istemci uygulamalarına (putty gibi) kaydetmemekte ve karmaşıklığı sebebiyle de her defasında bu parolayı girmek istememektedirler. Bu sebeple, SSH anahtarı ile hedef sisteme giriş sağlamayı seçebilmektedirler. Bu gibi bir durumda klasik kaba kuvvet saldırı araçları yetersiz kalabilmekte, SSH anahtarı ile kaba kuvet saldırısı yapabilen bir araca ihtiyaç duyulabilmektedir. Bu ihtiyacı da Crowbar gidermektedir.
Bu yazıda bilgi güvenliği, kimlik doğrulama ve kaba kuvvet saldırıları ile ilgili temel bilgiler verilecek, sonrasında ise Crowbar aracının kullanım alanlarına incelenecektir.

1) Bilgi güvenliği ve Kimlik doğrulama

Bilgi, diğer bütün kurum varlıkları gibi organizasyon için değeri olan ve dikkatle korunması gereken bir varlıktır. Organizasyon tarafından korunması gereken bazı varlıklar şunlar olabilir:

  • Kurumsal bilgiler
  • Müşteri/Tedarikçilere ait bilgiler
  • İnternet üzerinden yayınlanan bilgiler
  • Kurum kullanıcılarına açık bilgi ve servisler
  • Halka açık bilgiler


Bilgi güvenliğinin temelinde Gizlilik (Confidentiality), Bütünlük (Integrity) ve Erişebilirlik (Availability) yatmaktadır. Bu üçlüye kısaca CIA adı verilmektedir. Bu üçlünün yanında temel bilgi güvenliği unsurları şu şekildedir:



CIA gibi en önemli bilgi güvenliği unsurlarından birisi de kimlik doğrulamadır. Kimlik doğrulama (Authentication), kullanıcının sisteme bağlanabilmesi için ilk başta yapılması gereken işlemdir. Sistem kullanımı sırasında cihaz veya kullanıcının kimliğinin doğrulanmasıdır. Bu işlem ile kullanıcının sahip olduğu kimlik bilgisinin sistemde kayıtlı olup olmadığı kontrol edilir. Daha sonra kullanıcıya verilen parola (veya parola gibi kullanılabilecek başka bir veri) da kontrol edilerek doğrulama işlemi yapılır. Doğrulama sağlanırsa kullanıcıya sisteme giriş izni verilir. Bilgisayar ağları ve bilgisayar sistemleri dışında fiziksel sistemler için de çok önemlidir ve bu yüzden çok aşamalı kimlik doğrulama yöntemleri kullanılmaktadır.

2) Çok Aşamalı Kimlik Doğrulama ve Kaba Kuvvet Saldırıları

Kimlik doğrulama mekanizmasını daha etkin hale getirebilmek için çok aşamalı kimlik doğrulama mekanizmasının kullanılması tavsiye edilmektedir. Çok aşamalı kimlik doğrulamanın 3 temel ayağı bulunur.
  • Something you know (Bilinenler): Kullanıcı ile erişmek istediği sistem arasında paylaşılan gizli veriler bu guruba girer. Buna en iyi örnek kullanıcıya ait şifre bilgisidir.
  • Something you have (Sahip olunanlar): Kullanıcılara ait jetonlar (token) da bir çeşit kimlik beliryecisidirler. Bu kimlik belirleyicilerin sahibi olan bir kullanıcı sisteme kimliğini doğrulatabilir. Örnek olarak akıllı kartlar verilebilir.  Bir akıllı kartı kullanarak kimlik doğrulatmak isteyen bir kullanıcı genellikle ek olarak something you know (bilinenler)  bilgisini  (PIN) de ispat etmek zorundadır.
  • Something you are (Olunan):  Bazı sistemler kullanıcıya ait biyolojik özellikleri kimlik doğrulayıcı olarak kullanırlar. Örnek olarak retina taraması, parmak izi, kan örneği ve ses tanımlama verilebilir.

Bu sistemler yaygın olarak kullanılmakla birlikte bazı riskleri de mevcuttur. Örneğin parmak izi okutularak yapılan doğrulamalarda kesin sonuç almak çok zordur, veya ses tanımlama yöntemiyle kimlik doğrulayan sistemler kullanıcının sesi kaydedilerek kolayca atlatılabilir. Buna benzer bir çok sebepten dolayı biometrik kimlik doğrulama yöntemleri kesin sonuç vermeyen ve tam olarak güvenilir olmayan sistemlerdir.

Günümüzde bir çok sistemde, özellikle iç ağda kullanılan sistemlerde, çok aşamalı kimlik doğrulama yerine tek aşamalı kimlik doğrulama kullanılmaktadır. Örneğin bir Windows bilgisayara uzaktan bağlantı kurabilmek için kullanıcı adı ve parola kullanılmaktadır. Benzer olarak bir SSH sunucuya bağlantı için kullanıcı adı ve parola kullanılabildiği gibi sadece bir sertifika da kullanılabilmektedir. Kullanıcı kimlik bilgilerini veya sertifikayı elde eden saldırgan, ek bir önlem alınmamışsa hedef sisteme erişim sağlayabilmektedir. Bu yöntem kaba kuvvet saldırıları için de kullanılabilir. Kaba kuvvet saldırılarıyla, hedef sisteme bir veya birden çok bilgi ile saldırılarak hedef sistemdeki kimlik doğrulama mekanizması atlatılmaya çalışılır.

3) Crowbar Aracı ve Kullanımı

Crowbar aracı diğer araçlardan daha farklı yöntemler kullandığından bahsetmiştik. Bu araç, yazının başında bahsettiğimiz SSH anahtarı örneği haricinde VNC anahtarı, OpenVPN konfigürasyon dosyası kullanarak da kaba kuvvet saldırısı gerçekleştirebilmektedir. Ayrıca NLA (Network Level Authentication) desteği olan uzak masa üstü bağlantısı gerçekleştirilen sistemlere de kaba kuvvet saldırısı gerçekleştirebilmesi bu aracın önemini daha da arttırmaktadır. Bir çok araç, NLA desteği olan Windows işletim sistemi uzak masaüstü bağlantısına kaba kuvvet saldırısı gerçekleştirememektedir. Bu araç bu yönleri ile diğer araçlardan kendini ayırabilmektedir. Ayrıca kaba kuvvet saldırılarını oldukça hızlı bir şekilde gerçekleştirebilmesi de aracın bir diğer önemli özelliğidir.

Crowbar ile RDP kaba kuvvet saldırılarının gerçekleştirilmesi için örnek bir komut aşağıdaki gibidir:
./crowbar.py -b rdp -s 192.168.2.0/24 -U /root/Desktop/userlist -C /root/Desktop/passlist -d


Bu komut ile, 192.168.2.0/24 ağında root kullanıcısının masaüstündeki userlist adlı bir kullanıcı adı dosyası ve passlist adlı bir parola listesi kullanılarak RDP kaba kuvvet saldırısı denemesi gerçekleştirebilmektedir. Ayrıca "-d" parametresi ile öncelikle ilgili ağda RDP servisi açık olan bilgisayarlar keşfedilmekte, sonrasında ise bu servisi açık olan bilgisayarlarda kaba kuvvet saldırısını gerçekleştirmektedirler.

SSH kaba kuvvet saldırısına yönelik bir kullanım örneği de aşağıdaki gibidir:
./crowbar.py -b sshkey -s 192.168.2.0/24 -u root -k /root/.ssh/ -d


Bu örnekte ise, sadece root adlı kullanıcı adı ile SSH kaba kuvvet saldırısı denemesi gerçekleştirilmektedir. SSH anahtarı olarak da bir dizinin (/root/.ssh/) tamamı altındaki dosyalar verilmiştir.

VNC kaba kuvvet saldırısına yönelik bir kullanım örneği de aşağıdaki gibidir:
./crowbar.py -b vnckey -s 192.168.2.105/32 -p 5902 -c /root/.vnc/passwd


Bu örnekte ise tek bir IP için (192.168.2.105) VNC kaba kuvvet saldırısı gerçekleştirilmiştir. "-p" seçeneği ile varsayılan VNC servisine ait port yerine başka bir port verilmiştir.
OpenVPN kaba kuvvet saldırısına yönelik bir kullanım örneği de aşağıdaki gibidir:
./crowbar.py -b openvpn -s 198.7.62.204/32 -p 443 -m /root/Desktop/vpnbook.ovpn -k /root/Desktop/vpnbook_ca.crt -u vpnbook -c cr2hudaF


Bu örnekte ise, OpenVPN konfigürasyon dosyası ve erişim sertifikası kullanılarak kimlik bilgileri ile OpenVPN kaba kuvvet saldırısı gerçekleştirilmiştir.

Crowbar aracının ayrıntılı kullanımı için aracın yazarına ait olan blogdaki ilgili yazı  incelenebilir.

4) Sonuç

Sızma testlerinde klasik kaba kuvvet saldırı araçlarının gerçekleştirmediği bir açığı kapatan Crowbar aracı kaba kuvvet kuvvet saldırılarına farklı bir boyut kazandırmıştır. Bu araç ile diğer araçların gerçekleştirmediği yöntemlerle kaba kuvvet işlemleri gerçekleştirmekte ve sızma testleri için önemli bir araç olarak kullanılabilecektir.

Kaynak:
https://www.bilgiguvenligi.gov.tr/sizma-testleri/farkli-bir-kaba-kuvvet-saldiri-araci-crowbar-levye.html

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

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