التصيد الاحتيالي (Phishing) — أساسيات الأمن السيبراني
التصيد الاحتيالي (Phishing)
ما هو Phishing؟
محاولة خداع لسرقة معلومات حساسة.
أنواع Phishing
📧 Email Phishing
رسائل تتنكر كجهات موثوقة.
🎯 Spear Phishing
هجوم موجه لشخص/منظمة محددة.
🐋 Whaling
استهداف المدراء التنفيذيين.
📱 Smishing
عبر الرسائل النصية.
📞 Vishing
عبر المكالمات الهاتفية.
علامات التحذير
- 🔗 روابط مشبوهة
- ✍️ أخطاء إملائية
- ⚠️ طلب معلومات عاجل
- 📧 عنوان مرسل غريب
- 🎁 عروض "جيدة جداً"
كيف تحمي نفسك؟
- تحقق من المرسل
- لا تضغط روابط مشبوهة
- تحقق من HTTPS
- استخدم 2FA
# كاشف روابط التصيد البسيط
import re
from urllib.parse import urlparse
class PhishingDetector:
def __init__(self):
# الكلمات المشبوهة في الروابط
self.suspicious_keywords = [
'login', 'signin', 'verify', 'secure',
'account', 'update', 'confirm', 'banking',
'paypal', 'amazon', 'apple', 'microsoft',
'password', 'credential'
]
# نطاقات موثوقة (مثال)
self.trusted_domains = [
'google.com', 'microsoft.com', 'apple.com',
'amazon.com', 'paypal.com', 'facebook.com'
]
# TLDs مشبوهة
self.suspicious_tlds = [
'.tk', '.ml', '.ga', '.cf', '.gq',
'.xyz', '.top', '.work', '.click'
]
def analyze_url(self, url):
"""تحليل URL للكشف عن التصيد"""
results = {
"url": url,
"risk_score": 0,
"warnings": [],
"is_suspicious": False
}
try:
parsed = urlparse(url)
domain = parsed.netloc.lower()
path = parsed.path.lower()
# 1. فحص HTTPS
if parsed.scheme != 'https':
results["risk_score"] += 2
results["warnings"].append("⚠️ لا يستخدم HTTPS")
# 2. فحص طول URL
if len(url) > 75:
results["risk_score"] += 1
results["warnings"].append("⚠️ URL طويل جداً")
# 3. فحص IP بدلاً من نطاق
if re.match(r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', domain):
results["risk_score"] += 3
results["warnings"].append("🚨 يستخدم IP بدلاً من نطاق")
# 4. فحص @ في URL
if '@' in url:
results["risk_score"] += 3
results["warnings"].append("🚨 يحتوي @ (محاولة إخفاء)")
# 5. فحص الكلمات المشبوهة
for keyword in self.suspicious_keywords:
if keyword in domain and domain not in self.trusted_domains:
results["risk_score"] += 2
results["warnings"].append(f"⚠️ يحتوي كلمة مشبوهة: {keyword}")
break
# 6. فحص TLD مشبوه
for tld in self.suspicious_tlds:
if domain.endswith(tld):
results["risk_score"] += 2
results["warnings"].append(f"⚠️ نطاق TLD مشبوه: {tld}")
break
# 7. فحص النطاقات الفرعية الكثيرة
subdomains = domain.split('.')
if len(subdomains) > 4:
results["risk_score"] += 2
results["warnings"].append("⚠️ نطاقات فرعية كثيرة")
# 8. فحص typosquatting (مثال بسيط)
typos = {
'googel': 'google', 'gogle': 'google',
'microsft': 'microsoft', 'mircosoft': 'microsoft',
'amzon': 'amazon', 'amazn': 'amazon'
}
for typo, correct in typos.items():
if typo in domain:
results["risk_score"] += 4
results["warnings"].append(f"🚨 Typosquatting محتمل: {typo} → {correct}")
# التقييم النهائي
if results["risk_score"] >= 5:
results["is_suspicious"] = True
results["verdict"] = "🔴 خطر عالي"
elif results["risk_score"] >= 3:
results["is_suspicious"] = True
results["verdict"] = "🟡 مشبوه"
else:
results["verdict"] = "🟢 يبدو آمناً"
except Exception as e:
results["warnings"].append(f"خطأ في التحليل: {str(e)}")
return results
# اختبار
detector = PhishingDetector()
urls = [
"https://google.com/search",
"http://googel-login.tk/verify",
"http://192.168.1.1/paypal/login",
"https://secure-banking-update.xyz/account"
]
for url in urls:
result = detector.analyze_url(url)
print(f"\n{result['verdict']} - {url}")
for warning in result['warnings']:
print(f" {warning}")اختبر فهمك