Kullanımdan kaldırılan özellikler¶
Kullanımdan kaldırılan özel anahtar sözcükler ve count toplama işlevi Hayabusa'da hâlâ desteklenmektedir, ancak gelecekte kurallar içinde kullanılmayacaktır.
Kullanımdan kaldırılan özel anahtar sözcükler¶
Şu anda aşağıdaki özel anahtar sözcükler belirtilebilir:
value: dizeye göre eşleşir (joker karakterler ve borular da belirtilebilir).min_length: karakter sayısı belirtilen sayıdan büyük veya eşit olduğunda eşleşir.regexes: bu alanda belirttiğiniz dosyadaki düzenli ifadelerden biri eşleşirse eşleşir.allowlist: bu alanda belirttiğiniz dosyadaki düzenli ifadeler listesinde herhangi bir eşleşme bulunursa kural atlanır.
Aşağıdaki örnekte, aşağıdakiler doğruysa kural eşleşecektir:
ServiceName,malicious-serviceolarak adlandırılır veya./rules/config/regex/detectlist_suspicous_services.txtiçinde bir düzenli ifade içerir.ImagePathen az 1000 karakter içerir.ImagePath,allowlistiçinde herhangi bir eşleşmeye sahip değildir.
detection:
selection:
Channel: System
EventID: 7045
ServiceName:
- value: malicious-service
- regexes: ./rules/config/regex/detectlist_suspicous_services.txt
ImagePath:
min_length: 1000
allowlist: ./rules/config/regex/allowlist_legitimate_services.txt
condition: selection
regexes ve allowlist anahtar sözcüğü örnek dosyaları¶
Hayabusa'nın ./rules/hayabusa/default/alerts/System/7045_CreateOrModiftySystemProcess-WindowsService_MaliciousServiceInstalled.yml dosyası için kullanılan iki yerleşik düzenli ifade dosyası vardı:
./rules/config/regex/detectlist_suspicous_services.txt: şüpheli hizmet adlarını tespit etmek için./rules/config/regex/allowlist_legitimate_services.txt: meşru hizmetlere izin vermek için
regexes ve allowlist içinde tanımlanan dosyalar, herhangi bir kural dosyasının kendisini değiştirmeye gerek kalmadan, onlara başvuran tüm kuralların davranışını değiştirmek için düzenlenebilir.
Ayrıca oluşturduğunuz farklı detectlist ve allowlist metin dosyalarını da kullanabilirsiniz.
Kullanımdan kaldırılan toplama koşulları (count kuralları)¶
Bu, Hayabusa'da hâlâ desteklenmektedir ancak gelecekte Sigma korelasyon kurallarıyla değiştirilecektir.
Temeller¶
Yukarıda açıklanan condition anahtar sözcüğü yalnızca AND ve OR mantığını uygulamakla kalmaz, aynı zamanda olayları sayabilir veya "toplayabilir".
Bu işlev "toplama koşulu" olarak adlandırılır ve bir koşulu bir boru ile bağlayarak belirtilir.
Aşağıdaki parola spreyi tespit örneğinde, 5 dakikalık bir zaman dilimi içinde tek bir kaynak IpAddress adresinden 5 veya daha fazla TargetUserName değeri olup olmadığını belirlemek için koşullu bir ifade kullanılır.
detection:
selection:
Channel: Security
EventID: 4648
condition: selection | count(TargetUserName) by IpAddress > 5
timeframe: 5m
Toplama koşulları aşağıdaki biçimde tanımlanabilir:
count() {operator} {number}: Borudan önceki ilk koşulla eşleşen günlük olayları için, eşleşen günlüklerin sayısı{operator}ve{number}ile belirtilen koşul ifadesini karşılarsa koşul eşleşir.
{operator} aşağıdakilerden biri olabilir:
==: Değer belirtilen değere eşitse, koşulla eşleşiyor olarak kabul edilir.>=: Değer belirtilen değerden büyük veya eşitse, koşulun karşılandığı kabul edilir.>: Değer belirtilen değerden büyükse, koşulun karşılandığı kabul edilir.<=: Değer belirtilen değerden küçük veya eşitse, koşulun karşılandığı kabul edilir.<: Değer belirtilen değerden küçükse, koşulun karşılandığı gibi işlem görür.
{number} bir sayı olmalıdır.
timeframe aşağıdaki biçimde tanımlanabilir:
15s: 15 saniye30m: 30 dakika12h: 12 saat7d: 7 gün3M: 3 ay
Toplama koşulları için dört kalıp¶
- count argümanı veya
byanahtar sözcüğü yok. Örnek:selection | count() > 10Zaman dilimi içinde
selection10 defadan fazla eşleşirse, koşul eşleşir. Bunlar,group-byalanını kullanmayan Event Count korelasyon kurallarıyla değiştirilir. - count argümanı yok ancak bir
byanahtar sözcüğü var. Örnek:selection | count() by IpAddress > 10Aynı
IpAddressiçinselection10 defadan fazla doğru olmalıdır. Bu #2 kuralları, #1 kurallarından daha yaygındır. Gruplamak için birden çok alan da belirtebilirsiniz. Örneğin:by IpAddress, ComputerBunlar,group-byalanını kullanan Event Count korelasyon kurallarıyla değiştirilir. - count argümanı var ancak
byanahtar sözcüğü yok. Örnek:selection | count(TargetUserName) > 10Zaman dilimi içinde
selectioneşleşir veTargetUserName10 defadan fazla farklı olursa, koşul eşleşir. Bunlar,group-byalanını kullanmayan Value Count korelasyon kurallarıyla değiştirilir. - Hem count argümanı hem de
byanahtar sözcüğü var. Örnek:selection | count(Users) by IpAddress > 10Aynı
IpAddressiçin, koşulun eşleşmesi için 10 defadan fazla farklıTargetUserNameolması gerekir. Bu #4 kuralları, #3 kurallarından daha yaygındır. Bunlar,group-byalanını kullanan Value Count korelasyon kurallarıyla değiştirilir.
Kalıp 1 örneği¶
Bu en temel kalıptır: count() {operator} {number}. Aşağıdaki kural, selection 3 veya daha fazla defa gerçekleşirse eşleşir.
Kalıp 2 örneği¶
count() by {eventkey} {operator} {number}: Borudan önceki condition ile eşleşen günlük olayları aynı {eventkey} ile gruplanır. Her gruplama için eşleşen olay sayısı {operator} ve {number} ile belirtilen koşulu karşılarsa, koşul eşleşir.
Kalıp 3 örneği¶
count({eventkey}) {operator} {number}: Koşul borusundan önceki koşulla eşleşen günlük olayında {eventkey} değerinin kaç tane farklı değerinin bulunduğunu sayar. Sayı {operator} ve {number} içinde belirtilen koşullu ifadeyi karşılarsa, koşulun karşılandığı kabul edilir.
Kalıp 4 örneği¶
count({eventkey_1}) by {eventkey_2} {operator} {number}: Koşul borusundan önceki koşulla eşleşen günlükler aynı {eventkey_2} ile gruplanır ve her gruptaki {eventkey_1} değerinin farklı değerlerinin sayısı sayılır. Her gruplama için sayılan değerler {operator} ve {number} ile belirtilen koşullu ifadeyi karşılarsa, koşul eşleşir.
Count kuralı çıktısı¶
Count kuralları için ayrıntı çıktısı sabittir ve orijinal count koşulunu [condition] içinde ve ardından kaydedilen eventkey'leri [result] içinde yazdırır.
Aşağıdaki örnekte, kaba kuvvet saldırısına uğrayan TargetUserName kullanıcı adlarının bir listesi ve ardından kaynak IpAddress yer almaktadır:
[condition] count(TargetUserName) by IpAddress >= 5 in timeframe [result] count:41 TargetUserName:jorchilles/jlake/cspizor/lpesce/bgalbraith/jkulikowski/baker/eskoudis/dpendolino/sarmstrong/lschifano/drook/rbowes/ebooth/melliott/econrad/sanson/dmashburn/bking/mdouglas/cragoso/psmith/bhostetler/zmathis/thessman/kperryman/cmoody/cdavis/cfleener/gsalinas/wstrzelec/jwright/edygert/ssims/jleytevidal/celgee/Administrator/mtoussain/smisenar/tbennett/bgreenwood IpAddress:10.10.2.22 timeframe:5m
Uyarının zaman damgası, tespit edilen ilk olayın zamanı olacaktır.



