Skip to content

Commit 3e2eaa9

Browse files
committed
Explain field selections and meanings
Create documentation on which fields are used to create the fingerprint and why. Warn users that fingerprints are currently subject to change in the future.
1 parent a4a80b7 commit 3e2eaa9

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,27 @@ SMB Fingerprinting Zeek package
66
## Purpose
77
This package will generate a fingerprint based upon observed values from the SMB negotation process, in a similar fashion to JA3 for TLS. This may be used to generate alerts for known-bad fingerprints (blacklist), as well as identify abnormal SMB clients (whitelist).
88

9+
*WARNING* _Fingerprints generated may change in a future release_. At this time, this package is still incredibly bleeding edge, and I continue to refine which fields are used to generate the fingerprint.
10+
11+
## Fields used to generate fingerprint
12+
In order to fingerprint SMB clients, I had to determine which fields could possibly change based on the client software used.
13+
14+
15+
SMB1 Fields used:
16+
17+
* dialects - Strings that declare what versions of SMB the client supports
18+
* max_buffer_len - Maxiumum buffer size for SMB messages supported by the client
19+
* max_mpx_count - Maximum amount of open SMB commands the client supports at a single time (mpx = multiplex)
20+
* native_os - A string that describes the OS of the client; Similar to an HTTP User Agent.
21+
* native_lanman - The client's native LAN Manager type; Essentially the same as above
22+
* primary_domain - The primary domain as specified by the client; rarely set
23+
* capabilities.unicode - Whether or not the client supports unicode; Interesting because Windows clients always do
24+
* capabilities.level_2_oplocks - Whether or not the client supports read-only opportunistic locking; default on in Windows since XP
25+
26+
SMB2 Fields used:
27+
28+
* dialects - Integers that declare what versions of SMB the client supports
29+
930
## TODO
1031

1132
* Submit patch to Zeek to include capabilities in smb2_negotiate_request event

0 commit comments

Comments
 (0)