Dosya tara
Platform Fidye Kuralı Tarayıcı İstatistikler Wiki Hikaye GitHub Dosya tara
VIRUSKOV / WIKI / İMZALAR / HYDRADRAGONSIG

HydraDragonSig
İmza Formatı Rehberi

HydraDragonSig YAML kuralları • Multron imza odası • HydraDragon Antivirus • OpenEDR

HydraDragonSig, HydraDragon'un kendi imza motorudur: bir kural, dosyadaki stringleri, PE importlarını, bayt desenlerini, bölümleri ve ikonları birlikte değerlendirir. YARA'nın bayt gücünü PE yapısı ve kural birleştirme ile tek bir YAML dosyasında toplar. Yeni aile imzaları için genellikle en iyi seçenek budur. Bu sayfa formatı örneklerle anlatır; her anahtarın tam tanımı FORMAT.md dosyasındadır.

01 Ne zaman HydraDragonSig?

FormatEn iyi olduğu yer
HydraDragonSigBir ailenin birkaç benzersiz stringi + importları / bayt deseni / bölüm adları; kuralları birleştirme; PE'ye özel koşullar.
YARAKarmaşık bayt mantığı, sayaçlar (#a), modüller (pe., math.).
ClamAV .ndb / .ldbTek bayt imzası ya da birkaç alt imzalı mantık; ClamAV ile paylaşılacak imzalar.

02 Dosya yapısı

Bir dosya rules: altında kural listesi taşır. Her kuralın bir id, title, severity ve en az bir koşulu olur. !include diger.yaml satırı başka bir dosyayı önce yükler.

Remcos örneği
rules:
  - id: TROJAN-REMCOS-A-001
    title: "Remcos RAT"
    severity: high
    verdict: malware
    family: "Trojan.Win32.Remcos.A"
    logic: all
    conditions:
      - type: string_set
        min: 2
        nocase: true
        wide: true
        values:
          - "Remcos_Mutex_Inj"
          - "licence_code.txt"
          - "Breaking-Security.Net"
      - type: import_any
        names: ["!SetWindowsHookExA", "!GetAsyncKeyState"]

Bu kural, üç benzersiz stringden en az ikisi (ASCII veya UTF-16, büyük/küçük harf duyarsız) ve iki klavye/kanca API'sinden biri birlikte görüldüğünde dosyayı Trojan.Win32.Remcos.A olarak işaretler.

03 Kural alanları

AnahtarAnlamı
idBenzersiz kimlik. rule_match bununla başvurur.
title, description, tagsYalnızca çıktı.
severityinfo … critical. Kararı değiştirmez.
verdictmalware, pua, suspicious (varsayılan), clean, trusted.
familyDosya için bildirilen tehdit adı (Category.Platform.Family[.Variant]).
score, confidenceSkor toplanır (en çok 100); en yüksek skorlu bulgu tehdit adını verir.
logic, thresholdany (varsayılan), all, threshold.
privateEşleşir ama bulgu üretmez; rule_match için yapı taşı.
file_pathKuralı yalnızca bu tam yol için çalıştırır (%SystemRoot%\…).
mitre{id, name, tactic} listesi.

04 Mantık ve karar

▶ Threshold tuzağı
threshold her koşulu sayar; file_type: pe ve file_size_lte gibi neredeyse her PE'de tutan koşullar da dahil. threshold: 3 ile bu ikisi varken tek bir yaygın import (ör. VirtualAlloc) kuralı tetikler ve temiz dosyalar zararlı görünür. Bu tür kapıları logic: all ile ya da ayrı bir private kural + rule_match ile kurun.

05 Koşul türleri

GrupTürlerNotlar
Stringlerstring_contains, string_set, string_regex, env_referencestring_contains ve string_set dosyanın ham baytlarında aranır (ascii, wide = UTF-16LE, utf16 = UTF-16BE). string_set için min yazılmazsa bütün değerler gerekir. Regex'ler 5+ karakterlik çıkarılmış stringlerde çalışır. decoded: true base64 / hex stringleri çözüp onlarda da arar.
PEimport_any/all/set/regex, export_*, dll_any, dll_regex, suspicious_import_count, section_entropy, section_name_regex, packed_peImport adları dll!fonksiyon sonuna göre eşleşir: !VirtualAlloc tam fonksiyon adını ister. import_set için min varsayılanı 1'dir.
Dosyafile_type, file_size_gte/lte, file_entropy, hash_sha256/md5, path_regex, feature_gteTür, boyut, entropi, hash, yol, sayısal özellikler.
Baytlarbyte_pattern, byte_set, unpacker_anyBölüm 6'daki sözdizimi; scope arama aralığını sınırlar, excludes bilinen temiz blobları dışarıda bırakır. byte_set için min varsayılanı tüm desenlerdir.
Birleştirmerule_matchBölüm 8.
İkon / görselpe_icon_any, image_fuzzy_hash_anydHash / pHash / ClamAV .idb. İkonlar paylaşılır: tek başına karar değildir.

06 Bayt desenleri

SözdizimiAnlamı
4D 5A / 4D5ASabit baytlar
??, 4?Herhangi bir bayt / yarım bayt joker
~00Bu bayt dışında herhangi biri
[4], [2-8], [4-]Atlama: tam 4 / 2–8 arası / 4 ve fazlası (en çok 4096)
( 90 | E8 ?? )Alternatifler
byte_pattern
{ 4D 5A [2-4] ( 90 | 91 ) ~00 }

07 native_signature

YARA'ya benzer atomlar (text, regex, bytes) ve bir mantıksal ifade. Text atomları ascii, wide, nocase, fullword, xor, base64 değiştiricilerini destekler.

native_signature
- type: native_signature
  expression: "$cmd and (2 of ($url*) or $key at 0x40)"
  atoms:
    - id: cmd
      value: "powershell -enc"
      nocase: true
      ascii: true
      wide: true
    - id: url1
      value: "/gate.php"
    - id: url2
      kind: regex
      value: "https?://[0-9]{1,3}(\\.[0-9]{1,3}){3}/"
    - id: key
      kind: bytes
      value: "{ 6A 40 68 00 30 00 00 }"
İfadeAnlamı
$a, any/all/2 of them, 2 of ($s*)Atom eşleşmeleri
$a at 0x40, $a in (0..1024), $a at $b + 16Konumlar (her geçiş dikkate alınır)
@a < @b, @a[8] == @bKonum karşılaştırma; [n] konuma n bayt ekler (YARA'daki sıra numarası değildir)
filesize < 500KB, uint16(0) == 0x5A4DBoyut ve sabit değerler
PE, DotNet, ELF, Script …Dosya türü
and, or, not, ( )Mantık

Desteklenmeyenler yüklemede reddedilir: #a, !a, for, uint8, pe. gibi modüller.

08 Kuralları birleştirme

rule_match, aynı taramada daha önce eşleşmiş kurallara bakar. private: true yardımcı kurallar kendi başlarına bulgu üretmez; bunları birleştiren kural karar verir.

private + rule_match
rules:
  - id: HELPER-INJECT
    title: "Helper: injection imports"
    severity: info
    private: true
    conditions:
      - type: import_all
        names: ["!VirtualAllocEx", "!WriteProcessMemory", "!CreateRemoteThread"]

  - id: TROJAN-INJECTOR-001
    title: "Small PE with injection imports"
    severity: high
    verdict: malware
    family: "Trojan.Win32.Injector.A"
    logic: all
    conditions:
      - type: file_size_lte
        bytes: 307200
      - type: rule_match
        ids: [HELPER-INJECT]

09 Yükleme kontrolleri

Motor kural dosyasını yüklerken şunları bildirir: bilinmeyen anahtarlar (yazım hataları), geçersiz regex / bayt deseni / ifade, hiç eşleşemeyecek koşullar, bilinmeyen dosya türleri, tekrar eden kimlikler. Taramadan kontrol etmek için:

CLI
hydradragonsig --rules my_rules.yaml --check-rules
▶ YAML tırnakları
İçinde : veya # geçen, ya da özel karakterle başlayan değerleri tırnak içine alın. Tek tırnak içinde ' karakteri '' diye yazılır. Bir YAML hatası bütün dosyanın yüklenmesini durdurur.

10 İyi imza yazmak

11 İmza odası ve retrohunt

  1. Multron panelindeki imza odasında adı Category.Platform.Family[.Variant] olarak kurun ve HydraDragonSig rule şablonunu açın.
  2. Her kuralın kanonik biçimde bir family değeri ve malware, pua veya suspicious kararı olmalı.
  3. Kaydetme katı modda yapılır: yükleme kontrollerindeki her sorun kaydı reddeder ve hatayı gösterir.
  4. Kaydettikten sonra retrohunt, imzayı saklanan bütün dosyalarda arar; eşleşmeleri tam motorla yeniden tarar. Sonuçlarda temiz bir dosya varsa imzayı daraltın.

12 Tam referans

Her anahtarın varsayılanı, eşleşme ayrıntıları, dosya türü ve özellik listeleri: hydradragonsig/FORMAT.md.