Konuyu Okuyanlar: 1 Ziyaretçi

AutoCAD DWG İçinde Yetim VBA Projesi: Didier Stevens YARA Kuralı

AutoCAD DWG İçinde Yetim VBA Projesi: Didier Stevens YARA Kuralı
[Resim: attachment.php?aid=331]

Merhaba,

Didier Stevens (SANS ISC) Ekim 2026'da AutoCAD DWG dosyalarında "yetim" (orphaned) VBA projelerini yazdı. DWG başlığındaki 0x24 ofsetindeki 32-bit işaretçi sıfır olsa bile brute-force OLE araması VBA projesi bulabiliyor. AutoCAD bu yetim projeyi "görmez"; yani dosya açılınca VBA çalışmamış olabilir. Analizde yanlış pozitif sonuç çıkarmamak için önemli.

Normal yol
VBA, DWG içine gömülü OLE olarak durur. autocad.py işaretçiyi okur; cut-bytes.py ile oyulur; oledump.py ile incelenir:
Kod:
cut-bytes.py -S autocad.py -P AutoCAD : ornek.dwg.zip | oledump.py
İşaretçi 0 ise script boş döner — genelde gömülü OLE yok demektir.

Yetim istisna
Stevens'ın örneklerinde işaretçi 0, fakat oledump gömülü OLE + VBA buluyor; hemen öncesinde 16 baytlık uzunluk başlığı da duruyor. Muhtemel neden: AutoLISP
Kod:
(dictremove (namedobjdict) "ACAD_VBA")
işaretçiyi temizleyip gövdeyi bırakıyor olabilir.

YARA (18 Ekim günlüğü)
Kod:
rule autocad_orphaned_vba_project { strings: $a = "AC10" $b = { D0 CF 11 E0 A1 B1 1A E1 } $c = "[Host Extender Info]" ascii condition: $a at 0 and uint32(0x24) == 0 and $b and $c }
VirusTotal retrohunt'ta kural yalnızca iki örneği yakalamış (hash'ler ISC günlüğünde). Yani nadir ama gerçek.

Analist kontrol listesi
  • oledump VBA bulduysa 0x24 işaretçisini de kontrol edin
  • Yetim ise "açılınca çalıştı" sonucuna atlamayın
  • Varsayılan AutoCAD kurulumunda VBA ayrı bileşendir
  • Şüpheli DWG'leri izole labda açın

Yasal uyarı
Zararlı örnekleri yalnızca izole ortamda inceleyin. TCK 243-245.

Kaynaklar
Pipeline'a eklemek
DWG kabul eden mail ağ geçidi veya CAD paylaşım klasöründe YARA kuralını çalıştırın. Yetim VBA = otomatik "kötü" değil; analist notu düşün. VBA destekli AutoCAD kurulum politikasını envanterleyin.



Uygulamada sık gördüğüm hatalar
Birçok ekip yamayı "planlandı" diye işaretleyip internete açık yüzeyde günlerce bekletiyor. İkinci sık hata: yalnızca CVE numarasına bakıp zincir etkisini görmemek. Üçüncü hata: yama sonrası log ve dosya bütünlüğüne bakmamak; oysa yama öncesi sömürü olmuş olabilir. Bu üç noktayı kendi kontrol listenize eklemenizi öneririm.

Ekip içi iletişim şablonu
Yönetime veya müşteriye yazarken teknik jargonu azaltın: hangi varlık etkilendi, internete açık mı, yama var mı, geçici azaltma ne, doğrulama nasıl yapılacak. Tek paragrafta risk + eylem + sahiplik yazmak, uzun CVE özetinden daha hızlı karar aldırır.

Lab not defteri
Bu konuyu kendi defterime şu başlıklarla işliyorum: tarih, kaynak URL, etkilenen ürün/sürüm, internete açık mı, yama komutu, geri alma planı, IOC listesi, kime haber verildi. Siz de benzer basit bir şablon tutarsanız bir ay sonra "ne yapmıştık?" sorusu cevapsız kalmaz.

İzleme ve doğrulama
Değişiklikten sonra en az bir negatif ve bir pozitif kontrol tanımlayın. Negatif: alarm boş yere düşmemeli. Pozitif: bilinen kötü örneği veya beklenen log satırını yakalamalı. İkisini de kaydedin; aksi halde "sanırım düzeldi" ile yetinirsiniz.

Sonuç
Özetle: kaynağı okuyun, kendi envanterinize bağlayın, yama veya azaltmayı uygulayın, sonra doğrulayın. TurkTeam'de yorumlarda kendi ortamınızdan (ürün adı ve sürüm yeter, hassas IP yazmayın) kısa deneyim paylaşırsanız herkes faydalanır.


Adım adım kontrol listesi (kopyala-yapıştır)
  1. Kaynak duyuruyu ve varsa üretici güvenlik sayfasını arşivleyin (PDF/HTML).
  2. Envanterde etkilenen ürün var mı diye CMDB / agent raporu / netscan ile bakın.
  3. İnternete açık mı, yoksa yalnızca iç ağda mı? Buna göre SLA seçin.
  4. Yama veya yapılandırma azaltmasını stagingde deneyin.
  5. Üretim penceresinde uygulayın; değişiklik kaydı açın.
  6. Servis sağlık kontrolü + log doğrulaması yapın.
  7. Gerekliyse IOC avı veya compromise assessment planlayın.
  8. Kapanış notunu yazın: sürüm, tarih, kim onayladı.

Sık sorulanlar
Sadece okumak yeter mi? Hayır. Okuduktan sonra envanter satırına bağlanmayan bilgi operasyonel değildir.
PoC çalıştırmalı mıyım? Yalnızca izole lab ve yazılı izinle. İnternette rastgele deneme hem etik dışı hem yasadışı olabilir.
WAF / EDR tek başına kurtarır mı? Katmanlı savunma işe yarar ama yamanın yerini tutmaz; özellikle kimlik doğrulamasız RCE sınıflarında.
Ne zaman yönetime çıkmalıyım? İnternete açık kritik yüzey, aktif sömürü istihbaratı veya veri sızıntısı şüphesi varsa gecikmeden.

Örnek komut defteri
Kod:
# Tarih damgası ve ortam notu date -Is hostnamectl 2>/dev/null | head -5 || true # Ağ dinleme özeti (lab) ss -lntp | head -30 # Son reboot / güncelleme ipucu (systemd) who -b 2>/dev/null || true
Bu komutlar tanı koymaz; değişiklik öncesi/sonrası basline almak için kullanın.

İlgili TurkTeam bölümleri
Bu yazıyı okuduktan sonra aynı kategorideki komşu konulara ve Soru-Cevap bölümüne kendi lab çıktınızı (hassas veri olmadan) taşıyabilirsiniz. Kısa ekran görüntüsü veya komut çıktısı, uzun teoriden daha çok işe yarar.

Kapanış ve yasal çerçeve
TurkTeam white-hat bir topluluktur. Anlatılan teknikler eğitim, savunma ve izinli test içindir. Başkalarının sistemlerinde izinsiz tarama, sömürü, veri çalma veya "hack hizmeti" sunmak forum kurallarına ve TCK 243, 244, 245 maddelerine aykırıdır. Kendi laboratuvarınızı izolasyonla kurun; üretim verisi kullanmayın. Kaynaklardaki bağlantıları birincil referans kabul edin; bu yazı özet ve yol göstericidir, üretici duyurusunun yerini tutmaz.

Kişisel deneyim notu
Ben benzer konuları işlerken önce resmi duyuruyu iki kez okuyup sonra labda en küçük yeniden üretilebilir adımı arıyorum. Yeniden üretemiyorsam bile envanter ve yama doğrulamasını aynı gün bitirmeye çalışıyorum. Siz de "bugün tek iş" diye bir satır seçin: ya yamayı uygulayın ya da etkilenen varlık olmadığını kanıtlayın. İkisi de geçerli kapanıştır.

Okuma listesi
  • Üretici / araştırmacı birincil yazısı (kaynakçada)
  • CISA KEV veya CERT duyurusu varsa o
  • Kendi iç runbook'unuzun ilgili maddesi
Üçünden fazlasını aynı anda açmak yerine birini bitirip not alın; aksi halde tab kaybı başlar.


Ek DosyalarEkran Görüntüleri
   
Cevapla



Hızlı Menü: