Operating System Fingerprinting and p0f
When we talk about operating system fingerprinting we’re really talking about identifying a remote operating system based on the characteristics of its TCP/IP network stack. Due to differences in the way developers implement networking stacks, typically, unique identifiers within the packets transmitted by a host will allow for comparison based on known signatures.
Two general techniques are used to profile a networking stack for known
signature comparison: active and passive. Active
fingerprinting
requires network interaction with the
target host by sending out a probe and then looking for packet
settings or flags that differ in the response. For example, if I were
to send a packet to an open port with the ACK TCP
flag set, and then I received a response packet from the host with a
window size of 4,000, the DF bit set, the RST flag
set, and the sequence number unsynced with the one sent, I could
search through a list of known behaviors from this type of probe and
establish that this likely is the Mac OS 8.6 operating system. Of
course, this requires that a huge database of known stack signatures
be compiled beforehand.
Nmap by Fyodor (http://www.insecure.org/nmap/) is one of the
best active fingerprinting tools in the field; it uses a variety of
probes and has a signature database with thousands of entries.
Passive fingerprinting doesn’t require special probes. Passive fingerprinting observes normal network traffic, but uses the same difference ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access