Skip to content

Commit 286afff

Browse files
authored
docs: Documentation for version 1.8.0 (#139)
* add driver events section * documentation changes for version 1.8.0 * address typos
1 parent 9cd1054 commit 286afff

File tree

12 files changed

+338
-125
lines changed

12 files changed

+338
-125
lines changed

configs/fibratus.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ output:
301301
#template-name: fibratus
302302

303303
# Represents the target index for kernel events. It allows time specifiers to create indices per time frame.
304-
# For example, fibratus-%Y-%m generates the index name with current year and and month time specifiers
304+
# For example, fibratus-%Y-%m generates the index name with current year and month time specifiers
305305
#index-name: fibratus
306306

307307
# Contains the full JSON body of the index template. For more information refer to

docs/_coverpage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<img src='logo.png'></img>
55
</div>
66

7-
# fibratus <small>1.6.0</small>
7+
# fibratus <small>1.8.0</small>
88

99
> A modern tool for Windows kernel exploration and observability with a focus on security
1010

docs/_sidebar.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* [Registry](kevents/registry.md)
1414
* [Network](kevents/network.md)
1515
* [Handle](kevents/handle.md)
16+
* [Driver](kevents/driver.md)
1617
* <ion-icon name="filter-outline"></ion-icon> Filters and Rules
1718
* [Needle In The Haystack](filters/introduction.md)
1819
* [Prefiltering](filters/prefiltering.md)

docs/filters/fields.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ The following tables summarize available field names that can be used in filter
7878
| ps.sibling.pid | Sibling process identifier | `ps.sibling.id = 6050` |
7979
| ps.sibling.comm | Sibling process command line | `ps.sibling.name contains '/k /v'` |
8080
| ps.sibling.exe | Sibling process executable full path | `ps.sibling.exe = 'C:\\Windows\\system32\\cmd.exe'` |
81+
| ps.sibling.args | Sibling process command line arguments | `ps.sibling.args in ('C:\\Windows\\system32\\cmd.exe')` |
8182
| ps.sibling.sid | Sibling process security identifier | `ps.sibling.sid contains 'SYSTEM'` |
8283
| ps.sibling.sessionid | Sibling process session identifier | `ps.sibling.sessionid = 1` |
8384
| ps.sibling.domain | Sibling process domain name | `ps.sibling.domain = 'NT AUTHORITY'` |

docs/filters/functions.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,3 +288,24 @@ Additionally, some functions may return a collection of values. Function names a
288288
```
289289
fibratus run regex(ps.name, 'power.*(shell|hell).dll', '.*hell.exe')
290290
```
291+
292+
### Miscellaneous functions
293+
294+
#### is_minidump
295+
296+
`is_minidump` checks the signature of the provided file and returns `true` if the signature matches the `minidump` file.
297+
298+
- **Specification**
299+
```
300+
is_mindump(path: <string>) :: <bool>
301+
```
302+
- `string`: The file path for which the minidump signature is checked
303+
- `return` `true` if the file contains the `minidump` signature or `false` otherwise
304+
305+
- **Examples**
306+
307+
Assuming the `file.name` field contains `C:\\Temp\\lsass.dmp` which is a valid `minidump` file. The function call would return a `true` value.
308+
309+
```
310+
fibratus run is_minidump(file.name)
311+
```

docs/filters/images/rule-alert.png

123 KB
Loading

docs/filters/introduction.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ It may look intimidating at first glance, but once you get familiar with the syn
1313
Filters represent the foundation of the [rule engine](/filters/rules) that provides threat detection capabilities. For example, the following stanza detects the outbound communication followed by the execution of the command shell within one-minute time window. The action invokes the [alert sender](/alerts/senders) to emit the security alert via email or Slack.
1414

1515
```yaml
16-
- group: remote connection and command shell execution
16+
- group: Remote connection followed by the command shell execution
1717
policy: sequence
1818
rules:
19-
- name: establish remote connection
19+
- name: Establish remote connection
2020
condition: >
2121
kevt.name = 'Connect'
2222
and
@@ -25,7 +25,7 @@ Filters represent the foundation of the [rule engine](/filters/rules) that provi
2525
net.dip,
2626
'10.0.0.0/8',
2727
'172.16.0.0/12')
28-
- name: spawn command shell
28+
- name: Spawn command shell
2929
max-span: 1m
3030
condition: >
3131
kevt.name = 'CreateProcess'
@@ -34,7 +34,10 @@ Filters represent the foundation of the [rule engine](/filters/rules) that provi
3434
and
3535
ps.sibling.name in ('cmd.exe', 'powershell.exe')
3636
action: >
37-
{{ emit "Command shell spawned after remote connection"
38-
(printf "%s process spawned a command shell after connecting to %s" .Kevts.k2.PS.Exe .Kevts.k1.Kparams.dip)
37+
{{
38+
emit
39+
.
40+
"Command shell spawned after remote connection"
41+
"%2.ps.exe process spawned a command shell after connecting to %1.net.dip"
3942
}}
4043
```

docs/filters/operators.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ The filter engine supports logical, arithmetic, and string operators. Operator n
44

55
## Binary operators
66

7-
The filtering query language supports the following comparison binary operators:
7+
The filtering query language supports the following comparison binary operators:
88

99
- `=` (equal)
1010
- `!=` (not equal)
1111
- `<` (less than)
1212
- `>` (greater than)
1313
- `>=` (greater or equal)
1414
- `<=` (less or equal)
15+
- `~=` (case-insensitive string comparison)
1516

1617
## Logical operators
1718

docs/filters/prefiltering.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Prefiltering
22

3-
Sometimes it is useful to drop certain events either by image (process) name or event type once the event is peeked from the tracing buffer. Besides this, the kernel stream consumer can be configured to ignore events at the `ETW` session level. This can drastically reduce the load if you're not interested in particular events that are producing an immense volume of data.
3+
Sometimes it is useful to drop certain events either by image (process) name or event type once the event is peeked from the tracing buffer. Besides this, the kernel stream consumer can be configured to ignore events at the `ETW` session level. This can drastically reduce the impact on the system load if you're not interested in events that may produce an immense volume of data.
44

55
The above is the summary of configuration options that influence the collection of kernel events by the `Kernel Logger`. These options are placed in the `kstream` section of the configuration file.
66

@@ -10,10 +10,12 @@ The above is the summary of configuration options that influence the collection
1010
- `enable-fileio` enables/disables the collection of the file system events
1111
- `enable-image` enables/disables the collection of image loading/unloading events
1212
- `enable-handle` enables/disables the collection of handle events
13+
- `enable-audit-api` enables/disables kernel audit API calls events
14+
- `enable-antimalware-engine` enables/disables Antimalware Engine events, which primarily provide a source of [driver-loading](kevents/driver.md) events
1315

1416
### Blacklisting {docsify-ignore}
1517

16-
If you want to permanently exclude specific kernel events or processes that produce them from the event flow, you can achieve this by defining the blacklist in the `kstream.blacklist` configuration section:
18+
If you want to permanently exclude specific events or processes that produce them from the event flow, you can achieve this by defining the blacklist in the `kstream.blacklist` configuration section:
1719

18-
- `events` contains a list of kernel event names that are dropped from the event stream.
20+
- `events` contains a list of event names that are dropped from the event stream.
1921
- `images` contains a list of case-sensitive process image names including the extension. Any event originated by the image specified in this list is dropped from the event stream.

0 commit comments

Comments
 (0)