-
Notifications
You must be signed in to change notification settings - Fork 99
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extra flags in TCP handshake will break JA4L calculation #22
Comments
Thanks, good catch! We'll want to add this fix to the Rust and Wireshark versions as well. @igr001-galactica |
@aminebenhariz @john-althouse So how should the corrected JA4L algorithm handle TCP flags?
Option 1JA4L should look at
Option 2JA4L should unset
Option 3? @aminebenhariz's patch (#23) uses Option 1. I'll apply it for the Rust implementation. |
During the testing of JA4+ in our labs at Venari Security, we noticed that the JA4L is not showing for some TCP sessions. After further investigation, we narrowed down this behaviour to TCP handshake flags.
TCP handshake usually follows the SYN, SYN-ACK, ACK sequence. But for some systems (specially with ECN enabled by default on Apple products, since iOS 11 and macOS Sierra). Also, we often encounter the usage of PSH flag in the TCP handshake in many systems.
Here is a example of a TLS session with ECN (pcap file: macos_tcp_flags.zip)
Notice how the extra flags ECN and CWR are used in the TCP handshake. Those extra flags will prevent the script from calculating the JA4L-C and JA4L-S because it's expecting a clean SYN, SYN-ACK, ACK sequence:
The text was updated successfully, but these errors were encountered: