Penetration Testing (Sızma Testi)¶
Genel Bakış¶
Sızma testi, bir sistemin güvenlik açıklarını tespit etmek ve değerlendirmek için yapılan kontrollü saldırı simülasyonlarıdır. Bu testler, sistemin güvenlik önlemlerinin etkinliğini ölçer ve potansiyel zayıf noktaları ortaya çıkarır.
Temel Kavramlar¶
1. Sızma Testi Planlaması¶
public class PenetrationTestPlan
{
public string Scope { get; set; }
public List<string> TestObjectives { get; set; }
public List<string> TestMethods { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public List<string> ExcludedSystems { get; set; }
public List<string> Testers { get; set; }
public string ReportingFormat { get; set; }
public void ValidatePlan()
{
if (string.IsNullOrEmpty(Scope))
throw new ArgumentException("Test kapsamı belirtilmelidir");
if (TestObjectives == null || !TestObjectives.Any())
throw new ArgumentException("Test hedefleri belirtilmelidir");
if (StartDate >= EndDate)
throw new ArgumentException("Test tarihleri geçerli değil");
}
}
2. Güvenlik Açığı Taraması¶
public class VulnerabilityScanner
{
private readonly ILogger<VulnerabilityScanner> _logger;
private readonly List<string> _targetUrls;
private readonly List<string> _scanTypes;
public VulnerabilityScanner(ILogger<VulnerabilityScanner> logger)
{
_logger = logger;
_targetUrls = new List<string>();
_scanTypes = new List<string> { "SQL Injection", "XSS", "CSRF", "File Inclusion" };
}
public async Task<List<Vulnerability>> ScanTarget(string url)
{
var vulnerabilities = new List<Vulnerability>();
foreach (var scanType in _scanTypes)
{
try
{
var result = await PerformScan(url, scanType);
if (result.IsVulnerable)
{
vulnerabilities.Add(new Vulnerability
{
Type = scanType,
Severity = result.Severity,
Description = result.Description,
Recommendation = result.Recommendation
});
}
}
catch (Exception ex)
{
_logger.LogError(ex, $"Tarama hatası: {scanType}");
}
}
return vulnerabilities;
}
}
3. Raporlama ve Analiz¶
public class PenetrationTestReport
{
public string ProjectName { get; set; }
public DateTime TestDate { get; set; }
public List<Vulnerability> Findings { get; set; }
public RiskAssessment RiskLevel { get; set; }
public List<string> Recommendations { get; set; }
public void GenerateReport()
{
var report = new StringBuilder();
report.AppendLine($"Sızma Testi Raporu: {ProjectName}");
report.AppendLine($"Test Tarihi: {TestDate}");
report.AppendLine($"Risk Seviyesi: {RiskLevel}");
report.AppendLine("\nBulunan Güvenlik Açıkları:");
foreach (var finding in Findings.OrderByDescending(f => f.Severity))
{
report.AppendLine($"- {finding.Type} (Önem: {finding.Severity})");
report.AppendLine($" Açıklama: {finding.Description}");
report.AppendLine($" Öneri: {finding.Recommendation}");
}
report.AppendLine("\nGenel Öneriler:");
foreach (var recommendation in Recommendations)
{
report.AppendLine($"- {recommendation}");
}
File.WriteAllText($"PenetrationTestReport_{DateTime.Now:yyyyMMdd}.txt", report.ToString());
}
}
Best Practices¶
1. Test Planlaması¶
- Kapsam belirleme
- Hedef sistemlerin tanımlanması
- Test yöntemlerinin seçimi
- Zaman planlaması
- İzin ve onay süreçleri
2. Test Yürütme¶
- Etik kurallara uyum
- Sistem etkisinin minimize edilmesi
- Veri güvenliği
- Dokümantasyon
- İletişim yönetimi
3. Raporlama ve Takip¶
- Bulguların detaylı raporlanması
- Risk değerlendirmesi
- Önerilerin sunulması
- Düzeltme planı
- Takip testleri
Sık Sorulan Sorular¶
1. Sızma testi neden önemlidir?¶
- Güvenlik açıklarının tespiti
- Risk değerlendirmesi
- Yasal uyumluluk
- Müşteri güveni
- Sürekli iyileştirme
2. Sızma testi nasıl yapılır?¶
- Planlama
- Bilgi toplama
- Güvenlik açığı taraması
- Sömürü testleri
- Raporlama
3. Sızma testi zorlukları nelerdir?¶
- Kapsam belirleme
- Sistem etkisi
- Yasal sınırlamalar
- Uzmanlık gereksinimi
- Zaman ve maliyet