X
X
TRY

Postfix Queue Abuse: Kuyruk Manipülasyonu ile Gecikmeli / Zamanlanmış Spam Gönderimi

AnasayfaYazılarGenelPostfix Queue Abuse: Kuyruk Manipül...

 

Neden Önemli?

Postfix, Linux/Unix tabanlı sistemlerde en yaygın MTA'lardan biridir. /var/spool/postfix altında mail, active, deferred, hold, incoming vb. alt dizinlerle kuyruk yönetilir. Saldırganların bu kuyruk yapısını kötüye kullanması; spam, veri sızıntısı, veya teslimat bozma (delivery sabotage) senaryolarını mümkün kılar. Kuyrukta gerçekleşen manipülasyonlar hem forensic zorluğu yaratır hem de kurum IP/alan itibarına ciddi zarar verebilir.


2. Postfix Kuyruk Yapısı (Hızlı Özet)

  • /var/spool/postfix/incoming — Yeni teslim için gelen mesajlar.

  • /var/spool/postfix/active — Gönderilmeye hazır (sıradaki) mesajlar.

  • /var/spool/postfix/deferred — Gönderilemeyen, yeniden denenecek mesajlar.

  • /var/spool/postfix/hold — Manuel veya politika nedeniyle bekletilen mesajlar.

  • Diğer yardımcı dizinler: bounce, trace, maildrop vb.

Kuyruk dosyaları genelde posta ID’leriyle adlandırılır; Postfix araçları (postqueue -p, postcat, postsuper) kuyruk yönetimi ve görüntüleme sağlar.


3. Saldırı Vektörleri — Gerçekçi Örnekler

  1. Dosya Sistemi Erişimi ile Kuyruğa Dosya Yerlestirme

    • Saldırgan (yerel exploit, cron job ya da zafiyetle elde edilmiş shell) kuyruk dizinine doğrudan dosya yerleştirir. Postfix’in dizin izinleri zayıfsa bu mümkün olabilir.

  2. Hold → Release Manipülasyonu

    • Mesajlar postsuper -h ile hold’a alınır. postsuper -r ile serbest bırakılarak toplu gönderim tetiklenebilir.

  3. Kuyruk Dosyalarının Modifikasyonu

    • Mesaj başlıkları veya envelope adresleri değiştirilerek hedef kitle / bounce davranışı manipüle edilir.

  4. Postfix Queue Flooding Kullanarak Rate Limit Aşma

    • Binlerce küçük mesaj kuyrukta biriktirilir ve birden ortaya çıkacak şekilde zamanlanır.

  5. Zamanlanmış Cron / At Görevleri ile Postfix Komutları Çalıştırma

    • postsuper -r ALL deferred gibi komutlar zamanlanarak büyük gönderim tetiklenebilir.


4. Tespit / Detection — Neye Bakmalı, Hangi Sinyaller Kritik?

A. Kuyruk Dosyası Faaliyetleri

  • ls -lR /var/spool/postfix ile beklenmedik yeni dosyalar.

  • stat ile dosya oluşturma zamanları ve UID/GID kontrolü (root dışında oluşturulan dosyalar şüpheli).

  • inotify veya auditd ile kuyruk alt dizinlerindeki write/modify olayları.

B. Postfix Komut Kullanımı

  • postqueue -p sıklığı artışı — normalde sabit aralıklarla çalışır.

  • postsuper kullanım kayıtlarının incelenmesi (/var/log/auth.log, /var/log/maillog).

C. Log Korelasyonu

  • /var/log/maillog veya syslog: aynı sender’den kısa sürede çok sayıda queue/hint/hold/release olayları.

  • Mail queue ID’leri ile bağlantılı olağandışı status değişimleri.

D. Network / SMTP Davranışları

  • Ani outbound bağlantı artışı (port 25/587) veya mail server’den çıkan gönderim hacmi artışı.

  • Gelen/ayrılan bounce oranı artışı.

E. SIEM / ML

  • SIEM’e kuyruk /postfix komut loglarını gönderin; anomali korelasyon kuralları oluşturun (ör. postsuper çalıştırıldıktan sonra 1 saat içinde outbound mail hacmi > X).


5. Örnek Komutlar ve Hızlı İnceleme

  • Kuyruk listesi:

 
postqueue -p
  • Belirli bir mesajın içeriğini gösterme:

 
postcat -q # veya postcat -q 3F6C4123A
  • Mesajı hold’a alma / serbest bırakma:

 
postsuper -h postsuper -r
  • Kuyruktaki tüm mesajların IDs:

 
postqueue -p | tail -n +2 | awk '{print $1}' | tr -d '*:'
  • Kuyruk dizininde son oluşturulan dosyalar:

 
find /var/spool/postfix -type f -printf '%T+ %p\n' | sort -r | head -n 50
  • postqueue çıktısını parse edip CSV’ye çevirme (örnek):

 
postqueue -p | awk 'BEGIN{print "queue_id,state,from,to"} /^([A-F0-9]{9,})/{id=$1} /from=</{from=$2} /to=</{to=$2; print id "," state "," from "," to}'

6. Analiz & Forensik Yaklaşımı

  1. İlk Adım: İzolasyon

    • Şüpheli sunucu ağdan izole edilir (broad outbound engelleme veya host-based firewall ile port 25/587 çıkışı kısıtla).

  2. Kuyruk Snapshot’u Al

    • tar czf /tmp/postfix-queue-snap.tgz /var/spool/postfix (salt okunur snapshot alın, orijinal silinmeden önce).

  3. Logların Korunması

    • /var/log/maillog, /var/log/auth.log gibi logları kopyala; timestamp doğrula.

  4. IDS/Kural Analizi

    • Mail IDs ile postcat kullanıp başlık, envelope ve gövde incelenir.

  5. Dosya Sahipliği ve İzin Analizi

    • stat ile UID/GID, at time shift, ACL kontrolü, SUID/SGID dosyalar.

  6. Hash ve İmza

    • Kuyruk dosyalarının hash’ini al; daha sonra rollback ve change detection için sakla:

 
find /var/spool/postfix -type f -exec sha256sum {} \; > /tmp/postfix-queue-hashes.txt
  1. Malicious Patterns

    • Aynı gövdeyi taşıyan çok sayıda mesaj, rastgele adres listeleri, long encoded payload’lar, base64 overuse gibi pattern’leri tespit et.


7. Önleme / Mitigasyon (Pratik Öneriler)

İzinler & Sahiplik

  • Postfix dizinlerinin sahipliğini ve izinlerini kesinleştir:

 
chown -R postfix:postfix /var/spool/postfix find /var/spool/postfix -type d -exec chmod 0750 {} \; find /var/spool/postfix -type f -exec chmod 0640 {} \;
  • Kuyruğa doğrudan erişim mümkün olmasın; postfix işlemi harici kullanıcılar yerine dedicated kullanıcı ile çalışmalı.

Audit & Monitoring

  • auditd kuralı eklensin:

 
auditctl -w /var/spool/postfix -p wa -k postfix_queue_change
  • inotify veya File Integrity Monitoring (Tripwire, OSSEC, AIDE) ile real-time değişim alarmı.

Komut Erişim Kontrolü

  • sudo yapılandırmasını sıkı tut; postsuper/postqueue komutlarına kimlerin erişebileceğini sınırlandır.

Rate Limiting & Policy

  • Postfix tarafında smtpd_client_message_rate_limit, smtpd_client_recipient_rate_limit gibi parametreleri kullan:

 
smtpd_client_message_rate_limit = 100 smtpd_client_recipient_rate_limit = 1000
  • policyd veya postfwd gibi ek policy motorları ile abusive pattern’leri engelle.

Automated Guards

  • SIEM korelasyonuyla postsuper -r komutu tetiklendiğinde otomatik alarm.

  • SOAR playbook: otomatik izolasyon, kuyruk snapshot alma, SOC bildirimi.

Chroot & Safe Ops

  • Postfix chroot yapılandırmalarını (mümkünse) kontrol et; chroot dışı yazma risklerini minimize et.

Quarantine & Hold Rules

  • Güvenilmeyen kaynaklardan gelen toplu eklemeler otomatik hold’a alınsın; SOC onayı ile release.


8. Örnek SIEM Korelasyon Kuralları (Mantık)

  • Kural A: postsuper komutu bir non-admin kullanıcı tarafından çalıştırıldıysa → HIGH alert.

  • Kural B: 5 dakika içinde outbound mail count > (baseline * 5) → Investigate queue.

  • Kural C: Çok sayıda holdrelease işlemi aynı saat içinde → Trigger SOAR playbook.


9. Otomatik Response Playbook (SOAR)

  1. Alarm tetiklendiğinde sunucuyu ağdan izole et (egress 25/587 block).

  2. Kuyruk snapshot’u al (tar + sha256sum).

  3. postqueue -p çıktısını SIEM’e gönder; postcat ile top 20 mesajı incele.

  4. Eğer spam campaign doğrulanırsa postsuper -h ile toplu hold.

  5. İlgili gönderen hesapları geçici disable et, parola sıfırlama zorunlu kıl.

  6. İletiler ve metadata’yı adli inceleme için sakla (chain-of-custody).


10. İleri Seviye Tavsiyeler

  • Kuyruk dosyalarını periodik olarak hash’leyip değişiklik tespiti.

  • Postfix çalışırken kuyruk dizinleri için SELinux/apparmor profilleri yazın — sadece postfix sürecinin yazmasına izin verin.

  • MTA-level sandboxing: şüpheli kuyruk değişikliklerine karşı host-based inline checks.

  • Outbound mail akışı için “queue watermark” KPI’sı belirleyin; SIEM uyarısı eşiği.


11. Örnek Basit İzleme Scripti (cron ile)

/usr/local/bin/check_postfix_queue.sh:

 
#!/bin/bash THRESH=500 COUNT=$(postqueue -p | tail -n +2 | grep -c '^[A-F0-9]') if [ "$COUNT" -gt "$THRESH" ]; then logger -t POSTFIX-ALERT "Queue size $COUNT exceeds threshold $THRESH" # optionally: send mail to SOC or call webhook fi

cron:

 
*/5 * * * * root /usr/local/bin/check_postfix_queue.sh

Postfix kuyruk manipülasyonu, doğrudan MTA katmanında yapılan, tespit edilmesi zor ama etkisi büyük bir saldırı türüdür. Korunmak için: izinleri sıkılaştırın, kuyruk aktivitelerini izleyin (auditd/inotify), postqueue/postsuper kullanımını kısıtlayın, SIEM ile log korelasyonu kurun ve SOAR playbook’ları ile otomatik müdahale hazırlayın. Adli inceleme için snapshot ve hash alma süreçlerini rutine koyun.

 

 

# Postfix Queue Abuse: Kuyruk Manipülasyonu ile Gecikmeli / Zamanlanmış Spam Gönderimi **Özet:** Postfix kuyruğu (`/var/spool/postfix`) üzerinde gerçekleştirilen kötü niyetli müdahaleler (dosya yerleştirme, hold/release manipulasyonu, kuyruk flooding) saldırganlara zamanlı ve büyük ölçekli spam veya veri exfiltration imkânı verir. Bu yazıda tespit, adli analiz, önleme ve otomasyon adımlarını teknik örneklerle açıklıyoruz. --- ## 1. Neden Önemli? Postfix MTA birçok kurumda kritik altyapıdır; kuyruk manipülasyonu doğrudan MTA seviyesinde gerçekleştiği için tespiti zor, etkisi yüksek saldırılara yol açar. Kuyruk tabanlı saldırılar IP/alan itibarı, teslimat metrikleri ve yasal uyumluluk üzerinde ciddi hasar yaratabilir. --- ## 2. Postfix Kuyruk Mimarisi (Kısa) - `/var/spool/postfix/incoming` — yeni gelenler - `/var/spool/postfix/active` — gönderilmeye hazır - `/var/spool/postfix/deferred` — daha sonra denenecekler - `/var/spool/postfix/hold` — bekletilen iletiler Postfix yönetim araçları: `postqueue`, `postcat`, `postsuper`, `mailq`. --- ## 3. Tipik Saldırı Senaryoları - **Doğrudan dosya yerleştirme:** Ele geçirilen host/kullanıcı kuyruk dizinine dosya koyar. - **Hold / Release zinciri:** Mesajları hold’a alıp zamanlanmış/otomatik release ile toplu gönderim. - **Kuyruk dosyası modifikasyonu:** Envelope veya Headers değiştirilerek hedeflemeler; bounce manipülasyonu. - **Cron/At tabanlı tetikleme:** `postsuper -r ALL deferred` gibi komutlarla toplu serbest bırakma. --- ## 4. Detection — Hangi Sinyallere Bakılmalı? 1. **Dosya sistem değişimleri:** Yeni/şüpheli UID ile oluşturulan dosyalar. 2. **Komut kullanımı:** `postsuper`, `postqueue`, `postcat` erişimlerinin audit log’ları. 3. **Kuyruk metrikleri:** `postqueue -p` anormal büyüme. 4. **Log korelasyonu:** `maillog`/syslog’ta hold/release pattern’leri. 5. **Ağ davranışı:** Outbound SMTP bağlantılarında ani artış. **Hızlı komutlar** ```bash # Kuyruk listesi postqueue -p # Son eklenen kuyruk dosyaları find /var/spool/postfix -type f -printf '%T+ %p\n' | sort -r | head -n 50 # Belirli ID içeriği postcat -q

5. Forensik Adımlar (İzole et → Snapshot al → İncele)

  1. İzole et: Egress SMTP çıkışlarını kısıtla (ör. iptables), host’u networkten ayır.

  2. Snapshot al: Kuyruk dizininin salt okunur arşivini al:

 
tar czf /tmp/postfix-queue-snap-$(date +%F_%T).tgz /var/spool/postfix
  1. Hash al: İzleme ve değişiklik karşılaştırması için:

 
find /var/spool/postfix -type f -exec sha256sum {} \; > /tmp/postfix-queue-hashes.txt
  1. Log kopyala: /var/log/maillog, /var/log/auth.log vb.

  2. postcat ile örnekleri incele — header, envelope, body encoding.


6. Önleme & Sertleştirme (Pratik)

İzinler ve Sahiplik

 
chown -R postfix:postfix /var/spool/postfix find /var/spool/postfix -type d -exec chmod 0750 {} \; find /var/spool/postfix -type f -exec chmod 0640 {} \;

Audit (örnek)

 
# auditd kuralı (tek satır) auditctl -w /var/spool/postfix -p wa -k postfix_queue_change

Sudo & Komut Kontrolü

  • postsuper/postqueue erişimini sudoers ile kısıtlayın, sadece yetkili hesaplar kullanabilsin.

Rate Limiting (Postfix main.cf örnekleri)

 
smtpd_client_message_rate_limit = 100 smtpd_client_recipient_rate_limit = 1000

Policy Engines

  • policyd, postfwd, milter ile abusive pattern blocking.

SELinux / AppArmor

  • Postfix işlemine sadece gerekli izinleri verin; kuyruk dizinine write iznini sadece postfix kullanıcısına bırakın.


7. Otomasyon & SOAR Playbook (Özet)

  • Alarm: postsuper -r/unusual postqueue event → trigger SOAR.

  • SOAR otomatik adımları: egress block → kuyruk snapshot → top mesajları postcat ile parse et → hold/disable hesap → SOC notification → forensic paket oluştur.

 


8. İzleme & KPI

  • Kuyruk büyüklüğü (daily/hourly)

  • Hold → Release olay sayısı

  • postqueue komutu çalıştırma sıklığı

  • Outbound mail count anormallikleri

  • False positive / incident doğrulama süresi


9. Örnek İzleme Scripti (İyileştirilmiş)

/usr/local/bin/check_postfix_queue.sh

 
#!/bin/bash THRESH=500 COUNT=$(postqueue -p | awk '/^[A-F0-9]/ {print $1}' | wc -l) if [ "$COUNT" -gt "$THRESH" ]; then logger -t POSTFIX-ALERT "Queue size $COUNT exceeds threshold $THRESH" # webhook to SIEM or send mail fi

cron: */5 * * * * root /usr/local/bin/check_postfix_queue.sh


10. Sonuç

Postfix kuyruk manipülasyonuna karşı emniyet; izin yönetimi, gerçek zamanlı izleme, komut erişim kontrolü, SIEM korelasyon ve SOAR tabanlı otomatik müdahale ile sağlanır. Adli süreçler için snapshot + hash alma süreçlerini standart işletim prosedürüne ekleyin.

 

Logları incelemek için:

 
ausearch -k postfix_queue_change # veya ausearch -k postfix_queue_change --start recent

E — AppArmor Profil İskeleti (Postfix için örnek)

/etc/apparmor.d/usr.sbin.postfix (sadece skeleton — üretimde test edin)

 
# AppArmor profile for postfix (skeleton) #include <tunables/global> usr.sbin.postfix { # include common abstractions #include <abstractions/base> #include <abstractions/nameservice> /usr/sbin/postfix rix, /var/spool/postfix/ rix, /var/spool/postfix/** rwk, # Allow postfix process write within spool (tighten if possible) /etc/postfix/** r, /var/log/mail.log w, /var/run/postfix/** rw, capability net_bind_service, capability setgid, capability setuid, deny /var/spool/postfix/** wklx, # example: deny unexpected operations — test carefully }

Not: AppArmor profilleri dikkatle test edilmeli; önce complain modunda başlayın.


SOAR Playbook (YAML — pseudo, üretime uyarlayın)

 
name: postfix_queue_abuse_response description: > Automated playbook to respond to suspicious Postfix queue activity (postsuper/postqueue anomalies). triggers: - event: "postqueue_anomaly_detected" source: "SIEM" conditions: - queue_size > 500 - event contains "postsuper -r" OR "postsuper -h release pattern" steps: - id: isolate_host action: firewall_block_egress inputs: host: "{{host_ip}}" ports: [25,587] outputs: status: isolate_status - id: snapshot_queue action: run_command inputs: host: "{{host_ip}}" command: "tar czf /tmp/postfix-queue-snap-{{timestamp}}.tgz /var/spool/postfix && find /var/spool/postfix -type f -exec sha256sum {} \\; > /tmp/postfix-hashes-{{timestamp}}.txt" outputs: snapshot: snapshot_path - id: collect_logs action: gather_logs inputs: host: "{{host_ip}}" paths: ["/var/log/maillog", "/var/log/auth.log"] outputs: logs_location: logs_path - id: analyze_top_messages action: run_script inputs: host: "{{host_ip}}" script: | #!/bin/bash postqueue -p | head -n 50 > /tmp/top_queue_{{timestamp}}.txt awk '/^[A-F0-9]/{print $1}' /tmp/top_queue_{{timestamp}}.txt | while read id; do postcat -q $id > /tmp/msg_$id.txt; done outputs: messages: message_files - id: hold_sus_messages action: conditional conditions: - "{{analysis_result}} == 'malicious'" then: - action: run_command inputs: host: "{{host_ip}}" command: "postsuper -h {{list_of_ids}}" else: - action: notify_soc inputs: text: "Manual review required" - id: remediate_accounts action: run_command inputs: command: "disable_user {{suspicious_user}} && force_password_reset {{suspicious_user}}" - id: create_ticket action: create_ticketing_system inputs: severity: high artifacts: [snapshot_path, logs_path, message_files] - id: lift_isolation action: conditional conditions: - "{{investigation_complete}} == true" then: - action: firewall_unblock_egress inputs: host: "{{host_ip}}" ports: [25,587]

Bu playbook, SOAR platformuna göre (Phantom, Demisto, Swimlane) uyarlanmalı; adımlar, kimlik doğrulama ve erişim yönetimi parametreleri eklenmeli.


 Geliştirilmiş İzleme Scripti (Webhook ile SIEM bildirimi)

/usr/local/bin/check_postfix_queue_notify.sh

 
#!/bin/bash THRESH=500 COUNT=$(postqueue -p | awk '/^[A-F0-9]/ {count++} END{print count+0}') WEBHOOK="https://siem.example.com/webhook/postfix" if [ "$COUNT" -gt "$THRESH" ]; then payload=$(cat <<EOF {"host":"$(hostname)","queue_count":$COUNT,"threshold":$THRESH,"timestamp":"$(date -Is)"} EOF ) curl -s -X POST -H "Content-Type: application/json" -d "$payload" "$WEBHOOK" logger -t POSTFIX-ALERT "Queue size $COUNT exceeds threshold $THRESH, SIEM notified" fi

cron: */5 * * * * root /usr/local/bin/check_postfix_queue_notify.sh


Son Notlar / Öneriler

  • Bu adımları üretimde devreye almadan önce test ortamında doğrulayın.

  • AppArmor/SELinux ve auditd politikalarını kademeli olarak ve complain modunda test edin.

  • SOAR playbook’larını küçük adımlarla (isolation → snapshot → manual review) başlayıp otomatikleşme derecesini aşamalı arttırın.


Hosting Billing Software by WISECP
Top