Dumping Clear-Text Credentials

Published on 29.01.20

https://www.priviasecurity.com/windows-sistemlerde-tutulan-parolalarin-acik-metin-halinde-elde-edilmesi/

1. Giriş

Windows sistemlere yönelik yapılan sızma testlerinde ana hedef, bir sisteme sızdıktan sonra tüm sistemleri ele geçirmektir. Bu nedenle testlerin son aşaması olarak, sistemlerin ortak bir noktadan yönetilebilmesini sağlayan ve Active Directory Domain ortamında ana sunucu rolünde bulunan DC (Domain Controller) sunucusunun ele geçirilmesi ve tüm yönetimin ele alınması amaçlanır. DC rolündeki sunucunun ele geçirilmesi için genel olarak Active Directory Domain ortamına bağlı bir makineye yönelik sızma işlemi gerçekleştirilir ve Domain Controller’a erişim sağlamak amacıyla ele geçirilen makine üzerinden bazı yöntemler uygulanarak ilerleme sağlanır. Bu yöntemler post exploitation aşamaları olarak tanımlanır. Genel post exploitation aşamaları aşağıda listelenmiştir:

• Privilege Escalation (Hak ve Yetki Yükseltme)

• Credential Dump (Kimlik Bilgilerinin Ele Geçirilmesi)

• Lateral Movement/Pivoting (Yanal Hareket)

• Persistence (Kalıcılık Sağlama)

 Yukarıda belirtilen her bir post exploitation aşamasının nasıl gerçekleştiği ile ilgili aşağıda belirtilen örnekler verilebilir.

• Ele geçirilen ilk makineye kısıtlı yetkiler ile erişim sağlanmışsa makinenin içerisinde bulunan herhangi bir zafiyetten yararlanılır ve yetki yükseltme işlemi gerçekleştirilir.

• Yüksek yetkiler elde edilen makine üzerinden çeşitli alanlarda bulunan işe yarar kimlik bilgileri ele geçirilir.

• Ağ üzerinden ele geçirilen kimlik bilgisi ile pivoting işlemi yapılarak Domain Controller’a erişim sağlanır.

• DC üzerinde kalıcılık sağlanır.

Bu yazıda pivoting işleminin gerçekleştirilmesi için yüksek hak ve yetkilerle ele geçirilmiş bir makine üzerinden kimlik bilgilerinin farklı alanlardan açık metin halinde ele geçirilmesi işlemi uygulamalı bir şekilde anlatılmıştır. Uygulamanın gerçekleştirilmesi için Windows Server 2012 R2 işletim sistemi kurulu bir DC sunucusu ve Domain ortamına dahil edilmiş Windows Server 2008 R2 işletim sistemi kurulu olan bir dosya sunucusu kullanılmıştır. Senaryoya göre, dosya sunucusu SYSTEM haklarıyla ele geçirilecek ve bu sunucu üzerinden Domain Controller’da oturum açabilen bir kullanıcıya ait kimlik bilgileri açık metin olarak elde edilecektir.

2. Kimlik Bilgilerinin Açık Metin Halinde Ele Geçirilmesi

Önceki bölümde bahsedildiği üzere, Windows sistemler üzerinde gerçekleştirilen post exploitation işlemlerinde, bir makine üzerinde en yüksek hak ve yetkiler elde edildikten sonra o makine üzerinden işe yarar kimlik bilgileri elde edilmeye çalışılır. Çünkü, Domain ortamına bağlı bir makine üzerinden Domain Admin yetkilerine sahip bir hesabın parolasının elde edilmesi, bu parola ile DC makine üzerinde oturum açmaya yarayacağı için işleri oldukça kolaylaştıracaktır. Bu bölümde, SYSTEM hakları ile oturum elde edilmiş Windows Server 2008 R2 işletim sistemine sahip makine üzerinden, farklı başlıklar altında açık metin kimlik bilgilerinin nasıl elde edilebileceği uygulamalı bir şekilde anlatılacaktır.

2.1. LSA Secrets

Windows sistemlerde yerel güvenlik politikasının yönetilmesi, denetlenmesi, sistemde oturum açılması ve kimlik doğrulama işlemleri LSA (Local Security Authority) tarafından yönetilir. LSA Secrets, LSA sistemine ait kritik verileri alt anahtarlar altında şifreli bir şekilde saklayan bir anahtardır. Bu bilgileri “HKEY_LOCAL_MACHINE/Security/Policy/Secrets” yolu ile tanımlanan anahtar altında saklanır. “HKEY_LOCAL_MACHINE/Security/Policy/” anahtarı ise LSA gizli verilerine erişmek için gereken verileri saklar. Windows, bu anahtarda tutulan bilgilerin hassas olması nedeniyle varsayılan olarak yalnızca SYSTEM hesabına erişim izni verir. SYSTEM hesabı ile erişim sağlanmış bir oturum üzerinden LSA servisine ait kritik veriler açık metin olarak ele geçirilebilir.

Resim 2.1.1- LSA Secrets Anahtarı

Resim 2.1.1’de LSA Secrets anahtarı ve alt anahtarları görülmektedir. Bu alt anahtarlar aşağıda açıklanmıştır:

$MACHINE.ACC: Güvenlik kanalının parolası, birincil Domain Controller bilgisayara ait bir hesap ile birlikte burada depolanır ve tüm yedek Domain Controller makinelere çoğaltılır.

DefaultPassword: Otomatik oturum açma etkinse, belirtilen parola burada tutulur.

NL$KM: Önbelleğe alınmış olan Domain parolalarını şifrelemek için kullanılan gizli anahtar burada depolanır.

DPAPI_SYSTEM: Kullanıcıya ait Master Key’in yedeklenen alandan geri yüklenmesi işleminde, ilk olarak şifreleme anahtarı decode edilir. Ardından deşifreleme işleminin gerçekleşmesi için bu anahtarda tutulan yerel yönetici hesabının parolası kullanılır.

“Secrets” altında saklanan bilgilere ait detaylar, her bir anahtarın altında oluşturulmuş farklı anahtarlar altında saklanırlar. Bu anahtarlar aşağıda açıklanmıştır:

• CurrVal: Gizli verinin şifrelenmiş hali tutulur.

• CupdTime: Son güncelleme zamanı tutulur.

• OldVal: Gizli verinin önceki değeri tutulur.

• OupdTime: Önceki güncelleme zamanı tutulur.

• SecDesc: Gizli veriye hangi kullanıcıların erişip erişemeyeceklerini belirten bir güvenlik tanımlayıcısıdır.

Elimizde dosya sunucusundan “NT AUTHORITY\SYSTEM” haklarıyla elde edilmiş olan bir meterpreter oturumu bulunmaktadır. LSA Secrets anahtarından verileri çekmek için ilk olarak “Mimikatz” aracı kullanılacaktır. Mimikatz aracı (mimikatz.exe) ve bileşenleri (mimilib.dll,mimidrv.sys) meterpreter üzerinden dosya sunucusuna yüklenmiştir.

Resim 2.1.2- Mimikatz

“privilege::debug” komutu ile mimikatz’e debug yetkisi verdikten sonra kayıt defterinden LSA verilerini çekmek için

lsadump::secrets

komutu kullanılacaktır. Bu komut ile LSA Secrets anahtarında tutulan kayıtlar gelecektir.

Resim 2.1.3 – Mimikatz ile LSA Gizli Verilerinin Getirilmesi

Meterpreter oturumu elde edilmiş bir makine üzerinde mimikatz aracı ile işlemler yapmak için meterpreter’e ait olan “kiwi” modülü de kullanılabilir. Bu modül

load kiwi

komutu ile yüklendikten sonra,

lsa_dump_secrets

komutu ile LSA gizli verileri yeniden getirilebilir.

Resim 2.1.4 – Mimikatz ile LSA Gizli Verilerinin Meterpreter Üzerinden Getirilmesi

Ayrıca Metasploit Framework tarafından “lsa_secrets” adlı bir modül sunulmaktadır. Bu modül meterpreter üzerinde çalıştırılarak, şifreli bir şekilde tutulan veriler deşifrelenmiş olarak getirilebilir.

Resim 2.1.5 – lsa_secrets

Makine üzerinden bir meterpreter oturumunun elde edilmediği ya da mimikatz aracının yüklenmediği durumlarda, kayıt defteri anahtarları bir dosyaya kaydedilerek yerel makine üzerinde incelenebilir. Bunun için;

reg save <<Kayıt-Yolu>> <<Dosya-Yolu>>

komutu kullanılarak kayıt defterinde bulunan anahtarlar belirtilen dosyalara kaydedilebilir. LSA gizli verilerinin incelenmesi için SECURITY anahtarı dışarı çıkartılabilir. Ayrıca verilerin hashlenmiş bir şekilde tutulduğu SYSTEM ve SAM anahtarları da dışarıya çıkartılabilir ve bu üç dosya birlikte incelenebilir.

Resim 2.1.6’da anahtarların belirtilen dosyalara çıkartılması için gerekli komutlar yer almaktadır. Anahtarlar çıkarıldıktan sonra bu dosyalar saldırgana ait makineye çekilecek ve bu makine üzerinde incelenecektir.

Resim 2.1.6 – reg save

Mimikatz aracı karşı makine üzerinde çalıştırıldığında belirli bölgelerden istenilen verileri çekebildiği gibi, yerel makine üzerinde çalıştırılarak belirtilen dosyaları incelemek için de kullanılabilir. Dosya sunucusu üzerinde oluşturulan dosyalar yerel makineye indirilmiştir. Aşağıdaki komut kullanılarak LSA gizli verileri üzerinde inceleme yapılabilir.

lsadump::secrets /system:<<SYSTEM_dosya_yolu>> /security:<<SECURITY_dosya_yolu>> /sam:<<SAM_dosya_yolu>>

Bu komutun çalıştırılmasıyla birlikte LSA gizli verileri ekrana yazılmıştır.

Resim 2.1.7 – Yerel Makine Üzerinde Mimikatz ile İnceleme

Yerel makineye indirilen dosyalar mimikatz aracı ile incelenebileceği gibi, “impacket” aracıyla da inceleme yapılabilir. Impacket, Python programlama dili ile yazılmış modüller içeren bir post exploitation çerçevesidir. Impacket aracı varsayılan olarak KALI işletim sisteminde “/usr/share/doc” dizini altında gelmektedir. Ayrıca buradan indirilerek yapılarak kullanılabilir.

Mimikatz aracının “lsadump::secrets” komutu ile aynı işlemleri yapan “secretsdump” modülü kullanılarak, dosya sunucusu üzerinden elde edilmiş 3 dosya üzerinde inceleme yapılabilir. Bu işlem için aşağıdaki komut kullanılabilir.

python secretsdump.py -sam <<SAM_dosya_yolu>> -security <<SECURITY_dosya_yolu>>  -system <<SYSTEM LOCAL_dosya_yolu>> LOCAL

Resim 2.1.8 – Yerel Makine Üzerinde Impacket ile İnceleme

2.2. LSASS Process

Windows sistemlerde güvenlik politikaları LSASS (Local Security Authority Subsystem Service) tarafından yönetilir. LSASS, Windows sistemler üzerinde kimlik doğrulama, parola değişikliklerini yönetme ve token oluşturma işlemlerinden sorumludur. LSASS sistemi bu işlemleri “lsass.exe” adlı process ile yönetir. Lsass.exe, Windows işletim sisteminin çalışmaya başmasıyla birlikte başlar ve makine kapanana kadar sürekli olarak çalışmaya devam eder.

Lsass.exe, Windows işletim sisteminde oturum açmış kullanıcıların parolalarına ait hash değerlerini tutar. Ancak Windows 8.1 ve Windows Server 2012 R2 işletim sistemlerinden önceki versiyonlarda WDigest ve SSP kimlik doğrulamalarını desteklemek için kimliği doğrulanmış kullanıcıların parolaları lsass.exe process belleğinde açık metin olarak tutuluyordu. Böylece kimlik doğrulamış kullanıcılara ait parolalar lsass.exe belleğinden elde edilebilir.

Elimizde dosya sunucusundan “NT AUTHORITY\SYSTEM” haklarıyla elde edilmiş olan bir meterpreter oturumu bulunmaktadır. Mimikatz aracı kullanılarak lsass.exe process belleğinden açık metin parolalar getirilebilir. Bu işlem için mimikatz aracı bileşenleriyle birlikte makineye yüklenmiştir. Aşağıdaki komut kullanılarak oturum açmış kullanıcılara ait açık metin parolalar elde edilebilir.

sekurlsa::logonpasswords

Resim 2.2.1’de mimikatz aracından elde edilen çıktılar görülmektedir.

Resim 2.2.1 – Giriş Yapmış Kullanıcıların Parolaları

Makine üzerinde, Domain Admin yetkilerine sahip olan “sysadmin” hesabı ve yerel “Administrator” hesabı oturum açmıştır. İki hesabın da parolalarının “Password1” olduğu tespit edilmiştir.

Meterpreter oturumu üzerinden de lsass.exe process belleğinde bulunan değerleri elde edilebilir. Bunun için “kiwi” modülü kullanılabilir. Kiwi modülü yüklendikten sonra aşağıdaki komut çalıştırılarak oturum açmış hesapların açık parolaları elde edilebilir.

creds_wdigest

Resim 2.2.2’de meterpreter üzerinden elde edilmiş, oturum açmış kullanıcılara ait olan açık metin parolalar yer almaktadır.

Resim 2.2.2 – Meterpreter Üzerinden Parolaların Alınması

İşletim sisteminin Windows 8.1 ve Windows Server 2012 R2 üstü olması durumunda parolalar açık metin olarak alınamayacaktır. Varsayılan olarak üst versiyonlarda WDigest desteği kapalı olduğu için parolalar lsass.exe belleğinde açık metin olarak tutulmamaktadır. Ancak Metasploit Framework tarafından sunulan “wdigest_caching” modülü kullanılarak Windows 8.1 ve Windows Server 2012 R2 üstü versiyonlarda da parolaların açık metin olarak tutulması sağlanabilir. Böylece, bu işlemden sonra makine üzerinde bir hesap oturum açtığında ve lsass.exe belleğinden veriler tekrar alındığında bu kez giriş yapmış kullanıcının parolası açık metin olarak elde edilebilecektir. Resim 2.2.3’de WDigest, wdigest_caching modülü kullanılarak aktif edilmiştir.

Resim 2.2.3 – wdigest_caching

Mimikatz “.exe” uzantılı bir dosya olarak kullanılabildiği veya meterpreter üzerinden modül olarak yüklenebildiği gibi, bir powershell modülü olarak da kullanılabilir. Powersploit adlı powershell modüllerinden oluşan bir post-exploitation framework bulunmaktadır. Bu framework “Invoke-Mimikatz” adlı bir modül içermektedir. Bu modül kurban makineye yüklenerek çalıştırılabilir. Hiçbir parametre belirtilmeden çalıştırıldığında varsayılan olarak “sekurlsa::logonpasswords” komutunu çalıştırmaktadır.

Resim 2.2.4 – Invoke-Mimikatz

Lsass.exe process belleği dump edilerek, elde edilen dosya yerel bilgisayarda incelenebilir. Bunun için ilk olarak “lsass.exe” belleği dump edilmelidir. Daha sonra bu dosya kurban bilgisayardan yerel bilgisayara taşınmalıdır. Ardından yerel bilgisayar üzerinden bu dosya üzerinde inceleme yapılabilir.

Belleğin dump edilmesi için “procdump” aracı kullanılabilir. Bu araç Windows SysInternals tarafından sunulmaktadır ve buradan indirilebilir. Aşağıda procdump aracı kullanılarak lsass.exe process belleğinin dump edilmesini sağlayan komut yer almaktadır.

procdump.exe -accepteula -ma lsass.exe c:\windows\temp\lsass.dmp

Komut çalıştırıldıktan sonra lsass.exe process belleği dump edilmiştir ve dışarıya 31 MB boyutunda lsass.dmp adlı bir dosya çıkarılmıştır.

Resim 2.2.5 – LSASS Dump

Bu işlemden sonra elde edilen dosya yerel makineye alınarak mimikatz aracı ile incelenebilir. Aşağıdaki mimikatz komutu kullanılarak bir dump dosyası belirtilebilir.

sekurlsa::minidump <<LSASS_dump_dosya_yolu>>

Ardından aşağıdaki komut çalıştırıldığında belirtilen dosya üzerinden parolalar elde edilecektir:

sekurlsa::logonpasswords

Resim 2.2.6’da lsass.dmp dosyasından elde edilen kimlik bilgileri görülmektedir.

Resim 2.2.6 – Dump Dosyasının İncelenmesi

WDigest kimlik doğrulamasının aktif olduğu makinelerden açık metin parolaları elde etmek için WCE (Windows Credentials Editor) kullanılabilir. Bu araç; oturum açmış kullanıcıları listelemek, silmek, değiştirmek ve eklemek için kullanılan bir araçtır. WCE kullanılarak; açık metin parolalar, LM/NTLM hash değerleri ve Kerberos biletleri elde edilebilir, ayrıca pass-the-hash saldırıları gerçekleştirilebilir.  WCE penetrasyon testlerinde yaygın olarak kullanılan araçlardan biridir. Windows XP, 2003, Vista, 7, 2008 ve 8 işletim sistemlerini desteklemektedir. Aşağıdaki komut kullanılarak WCE aracı ile WDigest açık metin parolaları elde edilebilir:

wce.exe -w

Resim 2.2.7 – WCE ile WDigest Parolalarının Elde Edilmesi

2.3. Credential Manager

Credential Manager; Windows kullanıcı adları, parolalar ve adresler gibi kimlik bilgilerinin şifreli olarak saklandığı bir alandır. Bu bilgiler yerel bilgisayarda, aynı ağdaki diğer bilgisayarlarda, sunucularda veya web siteleri gibi internet ortamında kullanılmak üzere kaydedilebilir. Ayrıca bu veriler File Explorer, Microsoft Office, Skype, Internet Explorer gibi uygulamalar tarafından da kullanılabilir. Credential Manager için kimlik bilgileri farklı kategorilere ayrılmaktadır:

Windows Credentials: Windows ve Windows servisleri için kullanılır.

Certificate-Based Credentials: Çoğunlukla iş ağlarında akıllı kartlarla birlikte kullanılır.

Generic Credentials: Windows’a yüklenilen bazı uygulamalar tarafından kullanılır (Örnek: OneDrive, Slack, Xbox Live vb.) .

Web Credentials: Windows, Skype, Internet Explorer veya diğer Microsoft uygulamaları tarafından depolanan web siteleri için oturum açma bilgilerini saklar. Yalnızca Windows 10 ve Windows 8.1’de yer almaktadır.

LaZagne, yerel bilgisayarda saklanan birçok parolayı almak için kullanılan açık kaynaklı bir uygulamadır. Belirtilen link üzerinden LaZagne aracının kullanımını ve kimlik bilgilerini elde edebildiği uygulamaları inceleyebilirsiniz.

LaZagne.exe “all” parametresi ile birlikte kullanıldığında kimlik bilgisi elde edebileceği tüm alanları inceler ve buralardan kimlikleri elde eder.  Dolayısıyla Credential Manager üzerinde saklanan kimlik bilgileri de LaZagne uygulaması ile elde edilebilir.

Resim 2.3.1 – laZagne

Ayrıca, Credential Manager içerisinde tutulan Web kimlik bilgilerini ele geçirmek için Nishang içerisinde bulunan Get-WebCredentials modülü kullanılabilir. Bu modül çalıştırıldığında kayıtlı Web kimlik bilgileri elde edilecektir.

Resim 2.3.2 – Get-WebCredentials

2.4. Group Policy Preferences

Windows Server 2008 işletim sistemi ve bu sürümün Grup İlkesi (Group Policy) seçeneklerini kullanan sistemlerde, kimlik doğrulamış olan Domain kullanıcısının bilgileri SYSVOL dizini altında groups.xml, scheduledtasks.xml veya services.xml dosyalarında tutulur. Bu dosyalarda tutulan parola AES 256 bit şifreleme algoritması ile şifrelenmiş bir biçimde saklanmaktadır. Bu şifreli metnin çözülmesi için gereken anahtar Microsoft tarafından yayınlanmıştır. GPP parolası yetkisiz bir hesap ile ele geçirilirse, dosya içerisinde yer alan bilgiler yetkili bir hesaba ait olduğu takdirde bir privilege escalation (hak ve yetki yükseltme) işlemi gerçekleşmiş olacaktır.

GPP parolasının elde edilmesi “gp3finder.exe” adlı araç kullanılabilir. Bu araç parolaları Microsoft tarafından paylaşılan anahtar ile şifreler veya deşifreler. Resim 2.4.1’de Domain Controller makineden alınmış olan “Groups.xml” adlı dosyanın içeriği görülmektedir.

Resim 2.4.1 – Groups.xml

Bu resimde görülen “VPe/o9YRyz2cksnYRbNeQj35w9KxQ5ttbvtRaAVqxaE” değeri, Domain Admin yetkisindeki “sysadmin” adlı kullanıcıya ait parolanın şifrelenmiş halidir. Aşağıdaki komut kullanılarak Gp3Finder aracı ile elde edilen şifreli metin decrypt edilebilir.

gp3finder.exe -D VPe/o9YRyz2cksnYRbNeQj35w9KxQ5ttbvtRaAVqxaE

Resim 2.4.2 – Parolanın Elde Edilmesi

GPP parolasının elde edilmesi için Metasploit Framework tarafından sunulan “smb_enum_gpp” modülü de kullanılabilir. Metasploit Framework konsolu üzerinden modül seçilerek parametrelere uygun değerler atandıktan sonra, modül çalıştırıldığında makine üzerinde tespit edilen XML dosyaları içerisinden alınan şifreli parola decrypt edilecek ve açık metin halinde gösterilecektir.

Resim 2.4.3 – Metasploit ile Parolanın Elde Edilmesi

Farklı bir Framework olan Powershell Empire kullanılarak, makine üzerinde tespit edilen XML dosyalarından parolalar elde edilebilir. Bu işlem için Empire “gpp” adlı bir modül sunmaktadır.

Resim 2.4.4 – Empire ile Parolanın Elde Edilmesi

Ayrıca Metasploit Framework tarafından sunulan ve post modülleri arasında yer alan “gpp” modülü kullanılarak Group Policy XML dosyaları içerisinden parolalar elde edilebilir.

Resim 2.4.5 – Metasploit Post Modülü ile Parolanın Elde Edilmesi

3. Korunma Yöntemleri

Windows sistemler üzerinde çeşitli alanlarda tutulan parolaların açık metin olarak tutulmaması için bazı yöntemler mevcuttur:

• Windows 7, Windows 8, Windows Server 2008 R2 ve Windows Server 2012 işletim sistemleri üzerinde KB2871997 güncellemesi yapılarak Microsoft SSP’nin açık metin parola saklaması önlenebilir.

• Gerekmediği takdirde WDigest kimlik doğrulaması kayıt defteri üzerinden devre dışı bırakılmalıdır. (HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest)

• Windows 10 ve Server 2016 işletim sistemlerinde sanallaştırma tabanlı güvenlik ile LSA servisini izole eden CredentialGuard teknolojisi kullanılmalıdır.

• Group Policy üzerinden, “Debug Programs” özelliğinde tanımlanmış “Administrators” kullanıcı grubu kaldırılmalıdır. Çünkü mimikatz gibi araçlar “SeDebugPrivilege” yetkisine ihtiyaç duyduğundan dolayı bu yetkiyi alamadıklarında kimlik bilgilerini elde edemeyeceklerdir. SeDebugPrivilege yetkisi belirli kullanıcılara atanmalıdır.

• “HKLM\SYSTEM\CurrentControlSet\Control\LSA” anahtarı altında “RunAsPPL” anahtarı oluşturulmalı ve “1” değeri atanmalıdır. Böylece LSASS üzerinden kimlik bilgilerinin çekilmesi engellenecektir.

• “HKLM\SYSTEM\CurrentControlSet\Control\LSA” anahtarı altında “DisableRestrictedAdmin” anahtarı oluşturulmalıdır ve “0” değeri atanmalıdır. Bu anahtar ağdaki sistemlerde RDP oturumlarının kısıtlı yönetici modunda alınmasına izin verir. Ayrıca, yöneticinin RDP oturumu aldığı sistemin içinden ağ kimlik doğrulamasına izin vermemek için “DisableRestrictedAdminOutboundCreds” anahtarı 1 değeriyle oluşturulmalıdır.

• Domain ortamına bağlı bir makine DC makine ile iletişim kuramadığında önbellekte tutulan parola hash değerleri ile karşılaştırma yapar. Windows varsayılan olarak son 10 parola hash değerlerini önbellekte tutar. Önbelleğin devre dışı bırakılması için “Computer Configuration -> Windows Settings -> Local Policy -> Security Options -> Interactive Logon: Number of previous logons to cache” yolu ile tanımlanan özelliğe “0” değeri atanmalıdır.

Kaynaklar

Icon Back to Top