Noir ile Sırları Tespit Etmek – PassiveScan Avantajı
Merhaba güvenlik tutkunları! Bugün OWASP Noir v0.18’in heyecan verici yeni özelliklerine, özellikle de PassiveScan işlevselliğine odaklanıyoruz. Bu güncelleme Noir’ın yeteneklerini geliştiriyor; Eskiden yalnızca uç noktaları tespit ederken artık kural dosyalarına dayalı olarak sırları ve diğer güvenlik sorunlarını da eş zamanlı olarak tanımlayabiliyor. Bu özellikten şu şekilde yararlanabilirsiniz:
Noir nedir?
OWASP Noir, yazılım sistemlerindeki güvenlik açıklarını belirlemeye adanmış açık kaynaklı bir projedir. API uç noktalarını, web uç noktalarını ve kaynak kodundaki diğer potansiyel giriş noktalarını keşfetme yeteneği sağlayarak beyaz kutu güvenlik testlerini ve güvenlik hatlarını geliştirmede uzmanlaşmıştır.
Daha fazlasını mı öğrenmek istiyorsunuz? Belgelerimize ve OWASP Proje Belgelerimize göz atın.
Noir’ın Pasif Taraması
Noir, v0.18.x sürümüyle birlikte etkinleştirilebilen PassiveScan özelliğini sunar. -P
veya --passive-scan
bayrak. Bu işlevsellik, aracın önceden tanımlanmış yollarda veya özel konumlarda pasif kuralları taramasına olanak tanır:
İşletim Sistemi | Yol |
---|---|
MacOS: | ~/.config/noir/passive_rules/ |
Linux: | ~/.config/noir/passive_rules/ |
Windows: | %APPDATA%\noir\passive_rules\ |
Her kural YAML formatını takip eder ve çeşitli kuralları OWASP Noir Pasif Kuralları’nda keşfedebilirsiniz. Örneğin, ÖZEL ANAHTARI tespit etmeye yönelik bir kural şuna benzer:
id: private-key
info:
name: "Detect PRIVATE_KEY"
author:
- "hahwul"
severity: critical
description: "Detects the presence of PRIVATE_KEY in the code"
reference:
- ""
matchers-condition: or
matchers:
- type: word
patterns:
- "PRIVATE_KEY"
- "-----BEGIN PRIVATE KEY-----"
condition: or
- type: regex
patterns:
- "PRIVATE_KEY\\s*=\\s*['\"]?[^'\"]+['\"]?"
- "-----BEGIN PRIVATE KEY-----[\\s\\S]*?-----END PRIVATE KEY-----"
condition: or
category: secret
techs:
- '*'
Kuralların Hazırlanması
Bu kuralları verimli bir şekilde kullanmak için noir-passive-rules deposunu varsayılan yola kopyalamak isteyebilirsiniz:
git clone https://github.com/owasp-noir/noir-passive-rules ~/.config/noir/passive_rules/
Alternatif olarak, onu başka bir dizine kopyalayabilir ve Noir’ın yapılandırmasını bu yeni konumu işaret edecek şekilde güncelleyebilirsiniz:
# cat ~/.config/noir/config.yaml
passive_scan: true
passive_scan_path: ["~/repositories/noir-passive-rules"]
Taramayı Çalıştırma
Yapılandırıldıktan sonra -P bayrağıyla bir tarama başlatabilirsiniz:
Bunu çalışırken görmek için Rails uygulaması ve özel anahtarla basit bir test ortamı oluşturalım:
rails new testapp
openssl genrsa -out ./testapp/private_key.pem 1024
Şimdi Noir’ı çalıştırın:
Noir’ın yalnızca uç noktaları algılamakla kalmayıp aynı zamanda PassiveScan aracılığıyla PRIVATE_KEY dosyasını da tanımladığını göreceksiniz.
Diğer araçlarla entegrasyon gerekiyorsa çıktı biçimini örneğin JSON’a ayarlayabilirsiniz:
noir -b ./testapp/ -P -f json --no-log
Bu, hem uç nokta bilgilerini hem de pasif tarama bulgularını içeren sonuçları sağlayacaktır:
{
"endpoints": [
{
"url": "/favicon.ico",
"method": "GET",
"params": [],
"details": {
"code_paths": [
{
"path": "./testapp/public/favicon.ico"
}
]
},
"protocol": "http",
"tags": []
},
{
"url": "/422.html",
"method": "GET",
"params": [],
"details": {
"code_paths": [
{
"path": "./testapp/public/422.html"
}
]
},
"protocol": "http",
"tags": []
},
{
"url": "/apple-touch-icon.png",
"method": "GET",
"params": [],
"details": {
"code_paths": [
{
"path": "./testapp/public/apple-touch-icon.png"
}
]
},
"protocol": "http",
"tags": []
},
{
"url": "/500.html",
"method": "GET",
"params": [],
"details": {
"code_paths": [
{
"path": "./testapp/public/500.html"
}
]
},
"protocol": "http",
"tags": []
},
{
"url": "/404.html",
"method": "GET",
"params": [],
"details": {
"code_paths": [
{
"path": "./testapp/public/404.html"
}
]
},
"protocol": "http",
"tags": []
},
{
"url": "/apple-touch-icon-precomposed.png",
"method": "GET",
"params": [],
"details": {
"code_paths": [
{
"path": "./testapp/public/apple-touch-icon-precomposed.png"
}
]
},
"protocol": "http",
"tags": []
},
{
"url": "/robots.txt",
"method": "GET",
"params": [],
"details": {
"code_paths": [
{
"path": "./testapp/public/robots.txt"
}
]
},
"protocol": "http",
"tags": []
},
{
"url": "/up",
"method": "GET",
"params": [],
"details": {
"code_paths": [
{
"path": "./testapp//config/routes.rb"
}
]
},
"protocol": "http",
"tags": []
}
],
"passive_results": [
{
"id": "private-key",
"info": {
"name": "Detect PRIVATE_KEY",
"author": [
"hahwul"
],
"severity": "critical",
"description": "Detects the presence of PRIVATE_KEY in the code",
"reference": [
""
]
},
"category": "secret",
"techs": [
"*"
],
"file_path": "./testapp/private_key.pem",
"line_number": 1,
"extract": "-----BEGIN PRIVATE KEY-----"
}
]
}
PassiveScan’i güvenlik kontrollerinize entegre ederek yalnızca uç nokta tespitini geliştirmekle kalmaz, aynı zamanda gizli güvenlik açıklarını ortaya çıkarma yeteneğinizi de önemli ölçüde geliştirirsiniz.
Güvende kalın ve mutlu taramalar yapın!