OS Fingerprinting
Network stacks do not behave consistently, and there are specific behaviors.
Many RFCs contain optional behavior.
Some stacks have bugs.
Some stacks have optional behaviors.
Some stacks are not fully compliant (e.g., constrained devices).
Fingerprinting is possible by:
Sending a sequence of probes.
Observing response.
Matching behavior against a database.
The process lacks specificity.
Fingerprints may not be found for unknown systems.
A fingerprint may match multiple systems.
A combination of open/closed ports may not allow a full fingerprint.
Example: Nmap TCP Tests T2-T7.
TCP null (no flags set) pkt with the IP DF bit set and a window of 128 to an open port.
TCP pkt with SYN, FIN, URG, PSH flags set and a window of 256 to an open port. IP DF bit is 0.
TCP ACK pkt with IP DF and a window of 1024 to an open port.
TCP SYN pkt without IP DF and a window of 31337 to a closed port.
TCP ACK pkt with IP DF and a window of 32768 to a closed port.
TCP pkt with the FIN, PSH, URG flags set and a window of 65535 to a closed port. IP DF bit is 0.
Mitigation
Restrict the number of ports open.
Accurate fingerprinting relies on responses from open ports.
Detect scanning and enumeration with a firewall-specific rule.
Simple port maps and fingerprint attempts are easily recognized.
Advanced assessments, taking hours/days are not trivial to detect.
If supported, enable network obfuscation mechanisms.
OS may emulate the behavior of another system.
Last updated