Skip to content

Commit

Permalink
Merge pull request #778 from Yamato-Security/readme-2.19.0
Browse files Browse the repository at this point in the history
readme-2.19.0
  • Loading branch information
YamatoSecurity authored Nov 26, 2024
2 parents 91da684 + 5252bd1 commit 3de77e8
Show file tree
Hide file tree
Showing 10 changed files with 78 additions and 66 deletions.
38 changes: 22 additions & 16 deletions README-Japanese.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Windowsのイベントログから攻撃を検出するキュレーションさ
- [同じ名前の複数のフィールド名からフィールドデータを出力する](#同じ名前の複数のフィールド名からフィールドデータを出力する)
- [フィールド修飾子 (Field Modifiers)](#フィールド修飾子-field-modifiers)
- [対応しているSigmaのフィールド修飾子](#対応しているsigmaのフィールド修飾子)
- [追加のフィールド修飾子](#追加のフィールド修飾子)
- [非推奨のフィールド修飾子](#非推奨のフィールド修飾子)
- [対応していないフィールド修飾子](#対応していないフィールド修飾子)
- [ワイルドカード](#ワイルドカード)
- [null keyword](#null-keyword)
Expand Down Expand Up @@ -522,44 +522,50 @@ detection:
```

- `|base64offset|contains`: データは、エンコードされた文字列内の位置によって、3つの異なる方法でbase64にエンコードされます。この修飾子は、文字列を3つのバリエーションにエンコードし、その文字列がbase64文字列のどこかにエンコードされているかどうかをチェックします。
- `|cased`: Make the search case-sensitive.
- `|cased`: 大文字と小文字を区別して検索します。
- `|cidr`: IPv4またはIPv6のCIDR表記をチェックします。(例:`192.0.2.0/24`)
- `|contains`: 指定された文字列が含まれることをチェックします。
- `|contains|all`: 指定された複数の文字列が含まれることをチェックします。
- `|contains|all|windash`: `contains|windash`と同じですが、すべてのキーワードが存在する必要があります。
- `|contains|cased`: フィールドの値が指定された大文字小文字を区別する文字列を含むかをチェックします。
- `|contains|windash`: 文字列をそのままチェックするだけでなく、最初の`-`文字を`/`文字に変換し、そのバリエーションもチェックします。
- `|endswith`: 指定された文字列で終わることをチェックします。
- `|endswith|windash`: 指定された文字列で終わることをチェックし、最初の`-`文字を`/`文字に変換し、そのバリエーションもチェックします。
- `|endswith|cased`: フィールドの値が指定された大文字小文字を区別する文字列で終わることをチェックします。
- `|endswith|windash`: 指定された文字列で終わることをチェックし、最初の`-`文字を`/`、`–` (en dash)、`—` (em dash)、`―` (horizontal bar)文字のバリエーションに変換し、チェックします。
- `|exists`: フィールドが存在するかをチェックします。
- `|fieldref`: 2つのフィールドの値が同じかどうかをチェックする。これは `|equalsfield` 修飾子と同じです。
- `|fieldref|contains`: 一方のフィールドの値がもう一方のフィールドに含まれているかどうかをチェックします。
- `|fieldref|endswith`: 左側のフィールドが右側のフィールドの文字列で終わっているかどうかをチェックします。`condition` で `not` を使用することで、それらが異なるかどうかをチェックできます。
- `|fieldref|startswith`: 左側のフィールドが右側のフィールドの文字列で始まっているかどうかをチェックします。`condition` で `not` を使用することで、それらが異なるかどうかをチェックできます。
- `|gt`: フィールドの値が指定した数値より大きいかどうかをチェックします。
- `|gte`: フィールドの値が指定した数値以上かどうかをチェックします。
- `|lt`: フィールドの値が指定した数値より小さいかどうかをチェックします。
- `|lte`: フィールドの値が指定した数値以下かどうかをチェックします。
- `|re`: 大文字と小文字を区別する正規表現を使用する。 (regexクレートを使用しているので、サポートされている正規表現の書き方は以下のドキュメントを参照してください。 <https://docs.rs/regex/latest/regex/#syntax>)
> 注意: [Sigma ルールにおける正規表現の構文](https://github.com/SigmaHQ/sigma-specification/blob/main/appendix/sigma-modifiers-appendix.md#regular-expression) PCREを使用しており、文字クラス、ルックビハインド、アトミック・グルーピングなどの特定のメタ文字はサポートされていません。Rust regex crateはSigmaルールですべての正規表現を使用できるはずですが、互換性がない可能性があります。
- `|re|i`: (Insensitive) 大文字小文字を区別しない正規表現を使用する。
- `|re|m`: (Multi-line) 複数行にまたがってマッチする。`^` / `$` は行頭/行末にマッチする。
- `|re|s`: (Single-line) ドット (`.`) は改行文字を含むすべての文字にマッチする。
- `|startswith`: 指定された文字列で始まることをチェックします。
- `|startswith|cased`: フィールドの値が指定された大文字小文字を区別する文字列で始まるかをチェックします。
- `|utf16|base64offset|contains`: UTF-16文字列がBase64文字列内にエンコードされているかどうかをチェックします。
- `|utf16be|base64offset|contains`: UTF-16ビッグエンディアンの文字列がBase64文字列内にエンコードされているかどうかをチェックします。
- `|utf16le|base64offset|contains`: UTF-16リトルエンディアン文字列がBase64文字列内にエンコードされているかどうかをチェックします。
- `|wide|base64offset|contains`: `utf16le|base64offset|contains` のエイリアスで、UTF-16リトルエンディアンの文字列をチェックします。

### 追加のフィールド修飾子
### 非推奨のフィールド修飾子

以下の修飾子はsigmaの仕様にはないが、特殊な使用例のために追加されたものであります:

- `|equalsfield`: 指定されたイベントキーと合致することをチェックします。2つのフィールドの値が一致しないことをチェックしたい場合は`condition`で`not`を使ってください。
- `|endswithfield`: 指定されたイベントキーが指定された文字列で終わることをチェックします。指定されたイベントキーが指定された文字列で終わらないことをチェックしたい場合は`condition`で`not`を使ってください。
以下の修飾子は非推奨となり、Sigma仕様の修飾子に置き換えられました。

- `|equalsfield`: 現在は`|fieldref`に置き換えられています。
- `|endswithfield`: 現在は `|fieldref|endswith`に置き換えられています。

## 対応していないフィールド修飾子

以下の修飾子は、現在サポートされていないため、Sigmaリポジトリでこれらの修飾子を使用するルールは含まれていません:
以下の修飾子は現在サポートされていません:

- `base64ǀutf16be`
- `base64ǀutf16le`
- `base64ǀwide`
- `contains|expand`
- `expand`
- `gt`
- `gte`
- `lt`
- `lte`

## ワイルドカード

Expand Down
50 changes: 28 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ We also create new rules with converted field names and values for `process_crea
- [Outputting field data from multiple field names with the same name](#outputting-field-data-from-multiple-field-names-with-the-same-name)
- [Field Modifiers](#field-modifiers)
- [Supported Sigma Field Modifiers](#supported-sigma-field-modifiers)
- [Extra Field Modifiers](#extra-field-modifiers)
- [Deprecated Field Modifiers](#deprecated-field-modifiers)
- [Unsupported Field Modifiers](#unsupported-field-modifiers)
- [Wildcards](#wildcards)
- [null keyword](#null-keyword)
Expand Down Expand Up @@ -520,45 +520,51 @@ This document is updated every time there is an update to Sigma or Hayabusa rule
- 'Keyword-2'
condition: keywords
```

- `|base64offset|contains`: Data will be encoded to base64 in three different ways depending on its position in the encoded string. This modifier will encoded a string to all three variations and check if the string is encoded somewhere in the base64 string.
- `|cased`: Make the search case-sensitive.
- `|cidr`: Matches on a IPv4 or IPv6 CIDR notation (Ex: `192.0.2.0/24`)
- `|contains`: Checks if a word is contained in the data
- `|contains|all`: Checks if multiple words are contained in the data
- `|cased`: Makes the search case-sensitive.
- `|cidr`: Checks if a field value matches on a IPv4 or IPv6 CIDR notation. (Ex: `192.0.2.0/24`)
- `|contains`: Checks if a field value contains a certain string.
- `|contains|all`: Checks if multiple words are contained in the data.
- `|contains|all|windash`: Same as `|contains|windash` but all of the keywords need to be present.
- `|contains|windash`: Will check the string as-is, as well as convert the first `-` character to a `/` character and check that variation as well.
- `|endswith`: Checks the end of the string.
- `|contains|cased`: Checks if a field value contains a certain case-sensitive string.
- `|contains|windash`: Will check the string as-is, as well as convert the first `-` character to `/`, `–` (en dash), `—` (em dash), and `―` (horizontal bar) character permutations.
- `|endswith`: Checks if a field value ends with a certain string.
- `|endswith|cased`: Checks if a field value ends with a certain case-sensitive string.
- `|endswith|windash`: Checks the end of the string and performs variations for dashes.
- `|exists`: Checks if a field exists.
- `|fieldref`: Checks to see if the values in two fields are the same. This is the same as the `|equalsfield` modifier.
- `|fieldref`: Checks to see if the values in two fields are the same. You can use `not` in the `condition` if you want to check if two fields are different.
- `|fieldref|contains`: Checks to see if the value of one field is contained in another field.
- `|fieldref|endswith`: Check if the field on the left ends with the string of the field on the right. You can use `not` in the `condition` to check if they are different.
- `|fieldref|startswith`: Check if the field on the left starts with the string of the field on the right. You can use `not` in the `condition` to check if they are different.
- `|gt`: Checks if a field value is greater than a certain number.
- `|gte`: Checks if a field value is greater than or equal to a certain number.
- `|lt`: Checks if a field value is less than a certain number.
- `|lte`: Checks if a field value is less than or equal to a certain number.
- `|re`: Use case-sensitive regular expressions. (We are using the regex crate so please out the documentation at <https://docs.rs/regex/latest/regex/#syntax> to learn how to write supported regular expressions.)
> Caution: [Regular expression syntax in Sigma rules](https://github.com/SigmaHQ/sigma-specification/blob/main/appendix/sigma-modifiers-appendix.md#regular-expression) uses PCRE with certain metacharacters for character classes, lookbehind, atomic grouping, etc... being unsupported. The Rust regex crate should be able to use all regular expressions in Sigma rules but there is a possibility of incompatibility.
- `|re|i`: (Insensitive) Use case-insensitive regular expressions.
- `|re|m`: (Multi-line) Match across multiple lines. `^` / `$` match the start/end of line.
- `|re|s`: (Single-line) dot (`.`) matches all characters, including the newline character.
- `|startswith`: Checks the string from the beginning.
- `|startswith`: Checks if a field value starts with a certain string.
- `|startswith|cased`: Checks if a field value starts with a certain case-sensitive string.
- `|utf16|base64offset|contains`: Checks to see if a certain UTF-16 string is encoded inside a base64 string.
- `|utf16be|base64offset|contains`: Checks to see if a certain UTF-16 big-endian string is encoded inside a base64 string.
- `|utf16le|base64offset|contains`: Checks to see if a certain UTF-16 little-endian string is encoded inside a base64 string.
- `|wide|base64offset|contains`: Alias for `utf16le|base64offset|contains`, checking for UTF-16 little-endian strings.

### Extra Field Modifiers
### Deprecated Field Modifiers

The following modifiers are not in the sigma specification but have been added for very specific use cases.
The following modifiers are now deprecated and replaced by modifiers that adhere more to the sigma specifications.

- `|equalsfield`: Check if two fields have the same value. You can use `not` in the `condition` if you want to check if two fields are different.
- `|endswithfield`: Check if the field on the left ends with the string of the field on the right. You can use `not` in the `condition` if they are different.
- `|equalsfield`: Now is replaced by `|fieldref`.
- `|endswithfield`: Now is replaced by `|fieldref|endswith`.

## Unsupported Field Modifiers

The following modifiers are currently not supported, but currently only the `|expand` and `|contains|expand` modifiers are actually used in rules:
The following modifiers are currently not supported:

- `base64ǀutf16be`
- `base64ǀutf16le`
- `base64ǀwide`
- `contains|expand`
- `expand`
- `gt`
- `gte`
- `lt`
- `lte`

## Wildcards

Expand Down
17 changes: 12 additions & 5 deletions config/closing_messages.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
初心忘るべからず - Shoshin Wasuru Bekarazu - Never forget the beginner's mind.
無事是貴人 - Buji Kore Kinin - Once you free yourself from attachment and aversion, you will be truly a noble person.
急がば回れ - Isogaba Maware - If you are in a hurry, take the long way.
一瞬一瞬を大切に - Isshun Isshun O Taisetu Ni - Treasure each moment.
一瞬一瞬を大切に - Isshun Isshun O Taisetsu Ni - Treasure each moment.
無念無想 - Munen Musou - No assumptions, no preconceptions.
臨機応変 - Rinki Ou Hen - Adapt to the situation.
臨機応変 - Rin Ki Ou Hen - Adapt to the situation.
日々是好日 - Nichinichi Kore Koujitsu - Everyday is a good day.
風林火山 - Fuu Rin Ka Zan - Swift as the wind, silent as the forest, fierce as fire, immovable as a mountain.
不動心 - Fudoushin - Immovable mind.
Expand All @@ -26,7 +26,7 @@
臨戦態勢 - Rinsen Taisei - Always ready for battle.
一事が万事 - Ichiji Ga Banji - One thing leads to everything.
難行苦行 - Nangyou Kugyou - Arduous and rigorous practice.
塞翁失馬 - Saiou Shitu Ba - The old man lost his horse. (A blessing in disguise.)
塞翁失馬 - Sai Ou Shitsu Ba - The old man lost his horse. (A blessing in disguise.)
時来たり - Toki Kitari - The time has come.
失敗は成功のもと - Shippai Wa Seikou No Moto - Failure is the root of success.
天の時、地の利、人の和 - Ten No Toki, Chi No Ri, Hito No Wa - Heavenly timing, earthly advantage, personal harmony
Expand All @@ -35,9 +35,16 @@
残心 - Zanshin - Stay vigilant even after your task is complete.
疾風勁草 - Shippuu Keisou - Strong grass withstands strong wind.
風流韻事 - Fuuryuu Injin - The art of refinement and elegance.
知彼知己 - Chi HI Chi Ki - Know the enemy, know yourself.
知彼知己 - Chi Hi Chi Ki - Know thy enemy, know thyself.
百聞は一見に如かず - Hyakubun Wa Ikken Ni Shikazu - Seeing once is better than hearing a hundred times.
一難去ってまた一難 - Ichinan Satte Mata Ichinan - One difficulty after another.
居安思危 - Kyo An Shi Ki - In times of peace, think of danger.
苦あれば楽あり - Ku Areba Raku Ari - Positive outcomes come from enduring hardships.
禍福は糾える縄の如し - Kafuku Wa Azanaeru Nawa No Gotoshi - Good and bad fortune are intertwined like a rope.
禍福は糾える縄の如し - Kafuku Wa Azanaeru Nawa No Gotoshi - Good and bad fortune are intertwined like a rope.
頑張ってや〜 - Gambatte Ya~ - Do your best!
笑う門には福来たる - Warau Kado Ni Wa Fuku Kitaru - Fortune comes to the house of those who laugh.
一笑一若 - Isshou Ichijaku - One laugh, one youthful spirit.
笑いは心の薬 - Warai Wa Kokoro No Kusuri - Laughter is medicine for the soul.
苦は楽の種 - Ku Wa Raku No Tane - Suffering is the seed of joy.
災い転じて福となす - Wazawai Tenjite Fuku To Nasu - Turn misfortune into fortune.
困難に道あり - Konnan Ni Michi Ari - The obstacle is the way.
3 changes: 2 additions & 1 deletion config/opening_messages.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ Fine-tuned for the art of detection~
Forged for the modern-day digital detective~
Cutting through the noise, straight to the threats~
Finding needles in the hay stack~
Collecting the gold specks in the desert~
Collecting the gold specks in the desert~
Since 2021~
16 changes: 4 additions & 12 deletions doc/SupportedSigmaFieldModifiers.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,10 @@
| startswith | 443 | 6 |

# Hayabusa unsupported field modifiers
| Field Modifier | Sigma Count | Hayabusa Count |
|:------------------------------|--------------:|-----------------:|
| containsǀexpand | 1 | 0 |
| expand | 9 | 0 |
| gt | 0 | 0 |
| gte | 0 | 0 |
| lt | 0 | 0 |
| lte | 0 | 0 |
| utf16beǀbase64offsetǀcontains | 0 | 0 |
| utf16leǀbase64offsetǀcontains | 0 | 0 |
| utf16ǀbase64offsetǀcontains | 0 | 0 |
| wideǀbase64offsetǀcontains | 0 | 0 |
| Field Modifier | Sigma Count | Hayabusa Count |
|:-----------------|--------------:|-----------------:|
| containsǀexpand | 1 | 0 |
| expand | 9 | 0 |

# Hayabusa supported correlation rules
| Correlation Rule | Sigma Count | Hayabusa Count |
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
author: Zach Mathis
date: 2022/04/18
modified: 2022/12/16
modified: 2024/11/25

title: Possible Token Impersonation
description: Tries to detect token impersonation by tools like Cobalt Strike.
Expand All @@ -18,7 +18,7 @@ detection:
selection_TokenImpersonationCharacteristics:
LogonType: 9 # New Interactive
ImpersonationLevel|contains: 1833 # It is actually %%1833 for Impersonation level of "Impersonation".
SubjectUserName|equalsfield: TargetUserName
SubjectUserName|fieldref: TargetUserName
condition: selection_basic and selection_TokenImpersonationCharacteristics
falsepositives:
- normal system usage
Expand Down
4 changes: 2 additions & 2 deletions hayabusa/sysmon/Sysmon_1_Low_ExeFileRenamed.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
author: Zach Mathis
date: 2022/12/23
modified: 2023/11/09
modified: 2023/11/25

title: 'Renamed Exe File'
description: 'This is to detect when an .exe file was renamed. Attackers will often rename malware and lolbas tools in order not to be detected. %OriginalFileName% is the original filename in the PE header when the .exe was compiled.'
Expand All @@ -18,7 +18,7 @@ detection:
EventID: 1
OriginalFileName|endswith: '.exe'
FileNameAndOriginalNameAreSame:
Image|endswithfield: OriginalFileName
Image|fieldref|endswith: OriginalFileName
FilterUnknown:
- OriginalFileName: '\?'
- OriginalFileName: '-'
Expand Down
Loading

0 comments on commit 3de77e8

Please sign in to comment.