1#
2# p0f - SYN fingerprints
3# ----------------------
4#
5# .-------------------------------------------------------------------------.
6# | The purpose of this file is to cover signatures for incoming TCP/IP     |
7# | connections (SYN packets). This is the default mode of operation for    |
8# | p0f. This is also the biggest and most up-to-date set of signatures     |
9# | shipped with this project. The file also contains a detailed discussion |
10# | of all metrics examined by p0f, and some practical notes on how to      |
11# | add new signatures.                                                     |
12# `-------------------------------------------------------------------------'
13#
14# (C) Copyright 2000-2006 by Michal Zalewski <lcamtuf@coredump.cx>
15# (C) Copyright 2011 by Carnegie Mellon University
16#      - Roman Danyliw
17#      - version: 2011100301 (11/03/2011)
18#      - Contact <netsa-help@cert.org> for bugs and contributions
19#
20# Each line in this file specifies a single fingerprint. Please read the
21# information below carefully before attempting to append any signatures
22# reported by p0f as UNKNOWN to this file to avoid mistakes. Note that
23# this file is compatible only with the default operation mode, and not
24# with -R or -A options (SYN+ACK and RST+ modes).
25#
26# We use the following set metrics for fingerprinting:
27#
28# - Window size (WSS) - a highly OS dependent setting used for TCP/IP
29#   performance control (max. amount of data to be sent without ACK).
30#   Some systems use a fixed value for initial packets. On other
31#   systems, it is a multiple of MSS or MTU (MSS+40). In some rare
32#   cases, the value is just arbitrary.
33#
34#   NEW SIGNATURE: if p0f reported a special value of 'Snn', the number
35#   appears to be a multiple of MSS (MSS*nn); a special value of 'Tnn'
36#   means it is a multiple of MTU ((MSS+40)*nn). Unless you notice the
37#   value of nn is not fixed (unlikely), just copy the Snn or Tnn token
38#   literally. If you know this device has a simple stack and a fixed
39#   MTU, you can however multiply S value by MSS, or T value by MSS+40,
40#   and put it instead of Snn or Tnn. One system may exhibit several T
41#   or S values. In some situations, this might be a source of some
42#   additional information about the setup if you have some time to dig
43#   thru the kernel sources; in some other cases, like Windows, there seem
44#   to be a multitude of variants and WSS selection algorithms, but it's
45#   rather difficult to find a pattern without having the source.
46#
47#   If WSS looks like a regular fixed value (for example is a power of two),
48#   or if you can confirm the value is fixed by looking at several
49#   fingerprints, please quote it literaly. If there's no apparent pattern
50#   in WSS chosen, you should consider wildcarding this value - but this
51#   should be the last option.
52#
53#   NOTE: Some NAT devices, such as Linux iptables with --set-mss, will
54#   modify MSS, but not WSS. As a result, MSS is changed to reflect
55#   the MTU of the NAT device, but WSS remains a multiple of the original
56#   MSS. Fortunately for us, the source device would almost always be
57#   hooked up to Ethernet. P0f handles it automatically for the original
58#   MSS of 1460, by adding "NAT!" tag to the result.
59#
60#   In certain configurations, Linux erratically (?) uses MTU from another
61#   interface on the default gw interface. This only happens on systems with
62#   two network interfaces. Thus, some Linux systems that do not go thru NAT,
63#   but have multiple interfaces instead, will be also tagged this way.
64#
65#   P0f recognizes and automatically wildcards WSS of 12345, as generated
66#   by sendack and sendsyn utilities shipped with the program, when
67#   reporting a new signature. See test/sendack.c and test/sendsyn.c for more
68#   information about this.
69#
70# - Overall packet size - a function of all IP and TCP options and bugs.
71#   While this is partly redundant in the real world, we record this value
72#   to capture rare cases when there are IP options (which we do not currently
73#   examine) or packet data past the headers. Both situations are rare.
74#
75#   Packet size MAY be wildcarded, but the meaning of the wildcard is
76#   very special, and means the packet must be larger than PACKET_BIG
77#   (defined in config.h as 100). This is usually not necessary, except
78#   for some really broken implementations in RST+ mode. For more information,
79#   see p0fr.fp. P0f automatically wildcards big packets when reporting
80#   new signatures.
81#
82#   NEW SIGNATURE: Copy this value literally.
83#
84# - Initial TTL - We check the actual TTL of a received packet. It can't
85#   be higher than the initial TTL, and also shouldn't be dramatically
86#   lower (maximum distance is defined in config.h as 40 hops).
87#
88#   NEW SIGNATURE: *Never* copy TTL from a p0f-reported signature literally.
89#   You need to determine the initial TTL. The best way to do it is to
90#   check the documentation for a remote system, or check its settings.
91#   A fairly good method is to simply round the observed TTL up to
92#   32, 64, 128, or 255, but it should be noted that some obscure devices
93#   might not use round TTLs (in particular, some shoddy appliances and
94#   IRIX and Tru64 are known to use "original" initial TTL settings). If not
95#   sure, use traceroute or mtr to see how far you are from the host.
96#
97#   Note that -F option overrides this check if no signature can be found.
98#
99# - Don't fragment flag (DF) - some modern OSes set this to implement PMTU
100#   discovery. Others do not bother.
101#
102#   NEW SIGNATURE: Copy this value literally. Note: this setting is
103#   sometimes cleared by firewalls and/or certain connectivity clients.
104#   Try to find out what's the actual state for a given OS if you see both,
105#   and add the right one. P0f will automatically detect a case when a
106#   firewall removed the DF flag and will append "(firewall!)" suffix to
107#   the signature, so if the DF version is the right one, don't add no-DF
108#   variant, unless it has a different meaning.
109#
110# - Maximum segment size (MSS) - this setting is usually link-dependent. P0f
111#   uses it to determine link type of the remote host.
112#
113#   NEW SIGNATURE: Always wildcard this value, except for rare cases when
114#   you have an appliance with a fixed value, know the system supports only
115#   a very limited number of network interface types, or know the system
116#   is using a value it pulled out of nowhere. I use specific unique MSS
117#   to tell Google crawlbots from the rest of Linux population, for example.
118#
119#   If a specific MSS/MTU is unique to a certain link type, be sure to
120#   add it to mtu.h instead of creating several variants of each signature.
121#
122# - Window scaling (WSCALE) - this feature is used to scale WSS.
123#   It extends the size of a TCP/IP window to 32 bits, of sorts. Some modern
124#   systems implement this feature.
125#
126#   NEW SIGNATURE: Observe several signatures. Initial WSCALE is often set
127#   to zero or other low value. There's usually no need to wildcard this
128#   parameter.
129#
130# - Timestamp - some systems that implement timestamps set them to
131#   zero in the initial SYN. This case is detected and handled appropriately.
132#
133#   NEW SIGNATURE: Copy T or T0 option literally.
134#
135# - Selective ACK permitted - a flag set by systems that implement
136#   selective ACK functionality,
137#
138#   NEW SIGNATURE: copy S option literally.
139#
140# - NOP option - its presence, count and sequence is a useful OS-dependent
141#   characteristic,
142#
143#   NEW SIGNATURE: copy N options literally.
144#
145# - Other and unrecognized options (TTCP-related and such) - implemented by
146#   some eccentric or very buggy TCP/IP stacks ;-),
147#
148#   NEW SIGNATURE: copy ? options literally.
149#
150# - EOL option. Contrary to the popular belief, the presence of EOL
151#   option is actually quite rare, most systems just NOP-pad to the
152#   packet boundary.
153#
154#   NEW SIGNATURE: copy E option literally.
155#
156# - The sequence of TCP all options mentioned above - this is very
157#   specific to the implementation,
158#
159#   NEW SIGNATURE: Copy the sequence literally.
160#
161# - Quirks. Some buggy stacks set certain values that should be zeroed in a
162#   TCP packet to non-zero values. This has no effect as of today, but is
163#   a valuable source of information. Some systems actually seem to leak
164#   memory there. Other systems just exhibit harmful but very specific
165#   behavior. This section captures all unusual yes-no properties not
166#   related to the main and expected header layout. We detect the following:
167#
168#   - Data past the headers. Neither SYN nor SYN+ACK packets are supposed
169#     to carry any payload. If they do, we should take notice. The actual
170#     payload is not examined, but will be displayed if use the -X option.
171#     Note that payload is not unusual in RST+ mode (see p0fr.fp), very
172#     rare otherwise.
173#
174#   - Options past EOL. Some systems have some trailing data past EOL
175#     in the options section of TCP/IP headers. P0f does not examine this
176#     data as of today, simply detects its presence. If there is a
177#     confirmed sizable population of systems that have data past EOL, it
178#     might be a good idea to look at it. Until then, you have to recompile
179#     p0f with DEBUG_EXTRAS set or use -x to display this data,
180#
181#   - Zero IP ID. This again is a (mostly) harmless setting to use a fixed
182#     IP ID for packets with DF set. Some systems reportedly use zero ID,
183#     most OSes do not. There is a very slight probability of a false
184#     positive when IP ID is "naturally" chosen to be zero on a system
185#     that otherwise does set proper values, but the probability is
186#     neglible (if it becomes a problem, recompile p0f with IGNORE_ZEROID
187#     set in the sources).
188#
189#   - IP options specified. Usually, packets do not have any IP options
190#     set, but there can be some. Until there is a confirmed sizable
191#     population of systems that do have IP options in a packet, p0f
192#     does not examine those in detail, but it might change (use
193#     DEBUG_EXTRAS or -x to display IP options if any found),
194#
195#   - URG pointer value. SYN packets do not have URG flag set, so the
196#     value in URG pointer in TCP header is ignored. Most systems set it
197#     to zero, but some OSes (some versions of Windows, for example) do
198#     not zero this field or even simply leak memory; the actual value is
199#     not examined, because most cases seem to be just random garbage
200#     (you can use DEBUG_EXTRAS or -x to report this information though);
201#     see doc/win-memleak.txt for more information,
202#
203#   - "Unused" field value. This should be always zero, but some systems
204#     forget to clear it. This might result in some funny issues in the
205#     future. P0f checks for non-zero value (and will display it if
206#     DEBUG_EXTRAS is set, or you can use -x),
207#
208#   - ACK number non-zero. ACK value in SYN packets with no ACK flag
209#     is disregarded and is usually set to zero (just like with URG
210#     pointer), but some systems forget to do it. The exact value is
211#     not examined (but will be displayed with DEBUG_EXTRAS, or you can
212#     use -x). Note that this is not an anomaly in SYN+ACK and RST+ modes,
213#
214#   - Non-zero second timestamp. The initial SYN packet should have the
215#     second timestamp always zeroed. SYN+ACK and RST+ may "legally" have
216#     this quirk though,
217#
218#   - Unusual flags. If, in addition to SYN (or SYN+ACK), there are some
219#     auxilinary flags that do not modify the very meaning of a packet,
220#     p0f records this (this can be URG, PUSH, or something else).
221#
222#     Note: ECN flags (ECE and CWR) are ignored and denoted in a separate
223#     way. ECN is never by default, because some systems can't handle it,
224#     and it probably does not make much sense to include it in signatures
225#     right now.
226#
227#   - TCP option segment parsing problems. If p0f fails to decode options
228#     because of a badly broken packet, it records this fact.
229#
230#   There are several other quirks valid only in RST+ mode, see p0fr.fp for
231#   more information. Those quirks are unheard of in SYN and SYN+ACK
232#   modes.
233#
234#   NEW SIGNATURE: Copy "quirks" section literally.
235#
236# We DO NOT use ToS for fingerprinting. While the original TCP/IP
237# fingerprinting research believed this value would be useful for this
238# purpose, it is not. The setting is way too often tweaked by network
239# devices.
240#
241# To wildcard MSS, WSS or WSCALE, replace it with '*'. You can also use a
242# modulo operator to match any values that divide by nnn - '%nnn' (and,
243# as stated above, WSS also supports special values Snn and Tnn).
244#
245# Fingerprint entry format:
246#
247# wwww:ttt:D:ss:OOO...:QQ:OS:Details
248#
249# wwww     - window size (can be * or %nnn or Sxx or Txx)
250#	     "Snn" (multiple of MSS) and "Tnn" (multiple of MTU) are allowed.
251# ttt      - initial TTL
252# D        - don't fragment bit (0 - not set, 1 - set)
253# ss       - overall SYN packet size (* has a special meaning)
254# OOO      - option value and order specification (see below)
255# QQ       - quirks list (see below)
256# OS       - OS genre (Linux, Solaris, Windows)
257# details  - OS description (2.0.27 on x86, etc)
258#
259# If OS genre starts with '*', p0f will not show distance, link type
260# and timestamp data. It is useful for userland TCP/IP stacks of
261# network scanners and so on, where many settings are randomized or
262# bogus.
263#
264# If OS genre starts with @, it denotes an approximate hit for a group
265# of operating systems (signature reporting still enabled in this case).
266# Use this feature at the end of this file to catch cases for which
267# you don't have a precise match, but can tell it's Windows or FreeBSD
268# or whatnot by looking at, say, flag layout alone.
269#
270# If OS genre starts with - (which can prefix @ or *), the entry is
271# not considered to be a real operating system (but userland stack
272# instead). It is important to mark all scanners and so on with -,
273# so that they are not used for masquerade detection (also add this
274# prefix for signatures of application-induced behavior, such as
275# increased window size with Opera browser).
276#
277# Option block description is a list of comma or space separated
278# options in the order they appear in the packet:
279#
280# N	   - NOP option
281# E	   - EOL option
282# Wnnn	   - window scaling option, value nnn (or * or %nnn)
283# Mnnn	   - maximum segment size option, value nnn (or * or %nnn)
284# S	   - selective ACK OK
285# T 	   - timestamp
286# T0	   - timestamp with zero value
287# ?n       - unrecognized option number n.
288#
289# P0f can sometimes report ?nn among the options. This means it couldn't
290# recognize this option (option number nn). It's either a bug in p0f, or
291# a faulty TCP/IP stack, or, if the number is listed here:
292#
293#   http://www.iana.org/assignments/tcp-parameters
294#
295# ...the stack might be simply quite exotic.
296#
297# To denote no TCP options, use a single '.'.
298#
299# Quirks section is usually an empty list ('.') of oddities or bugs of this
300# particular stack. List items are not separated in any way. Possible values:
301#
302# P     - options past EOL,
303# Z	- zero IP ID,
304# I	- IP options specified,
305# U	- urg pointer non-zero,
306# X     - unused (x2) field non-zero,
307# A	- ACK number non-zero,
308# T     - non-zero second timestamp,
309# F     - unusual flags (PUSH, URG, etc),
310# D     - data payload,
311# !     - broken options segment.
312#
313# WARNING WARNING WARNING
314# -----------------------
315#
316# Do not add a system X as OS Y just because NMAP says so. It is often
317# the case that X is a NAT firewall. While nmap is talking to the
318# device itself, p0f is fingerprinting the guy behind the firewall
319# instead.
320#
321# When in doubt, use common sense, don't add something that looks like
322# a completely different system as Linux or FreeBSD or LinkSys router.
323# Check DNS name, establish a connection to the remote host and look
324# at SYN+ACK (p0f -A -S should do) - does it look similar?
325#
326# Some users tweak their TCP/IP settings - enable or disable RFC1323,
327# RFC1644 or RFC2018 support, disable PMTU discovery, change MTU, initial
328# TTL and so on. Always compare a new rule to other fingerprints for
329# this system, and verify the system isn't "customized". It is OK to
330# add signature variants caused by commonly used software (PFs, security
331# packages, etc), but it makes no sense to try to add every single
332# possible /proc/sys/net/ipv4/* tweak on Linux or so.
333#
334# KEEP IN MIND: Some packet firewalls configured to normalize outgoing
335# traffic (OpenBSD pf with "scrub" enabled, for example) will, well,
336# normalize packets. Signatures will not correspond to the originating
337# system (and probably not quite to the firewall either).
338#
339# NOTE: Try to keep this file in some reasonable order, from most to
340# least likely systems. This will speed up operation. Also keep most
341# generic and broad rules near ehe end.
342#
343# Still decided to add signature? Let us know - mail a copy of your discovery
344# to lcamtuf@coredump.cx. You can help make p0f better, and I can help you
345# make your signature more accurate.
346#
347
348##########################
349# Standard OS signatures #
350##########################
351
352# ----------------- AIX ---------------------
353
354# AIX is first because its signatures are close to NetBSD, MacOS X and
355# Linux 2.0, but it uses a fairly rare MSSes, at least sometimes...
356# This is a shoddy hack, though.
357
35845046:64:0:44:M*:.:AIX:4.3
359
36016384:64:0:44:M512:.:AIX:4.3.2 and earlier
361
36216384:64:0:60:M512,N,W%2,N,N,T:.:AIX:4.3.3-5.2 (1)
36332768:64:0:60:M512,N,W%2,N,N,T:.:AIX:4.3.3-5.2 (2)
36465535:64:0:60:M512,N,W%2,N,N,T:.:AIX:4.3.3-5.2 (3)
365
36665535:64:0:64:M*,N,W1,N,N,T,N,N,S:.:AIX:5.3 ML1
367
368# ----------------- Linux -------------------
369
370S1:64:0:44:M*:A:Linux:1.2.x
371512:64:0:44:M*:.:Linux:2.0.3x (1)
37216384:64:0:44:M*:.:Linux:2.0.3x (2)
373
374# Endian snafu! Nelson says "ha-ha":
3752:64:0:44:M*:.:Linux:2.0.3x (MkLinux) on Mac (1)
37664:64:0:44:M*:.:Linux:2.0.3x (MkLinux) on Mac (2)
377
378S4:64:1:60:M1360,S,T,N,W0:.:Linux:2.4 (Google crawlbot)
379S4:64:1:60:M1430,S,T,N,W0:.:Linux:2.4-2.6 (Google crawlbot)
380
381S2:64:1:60:M*,S,T,N,W0:.:Linux:2.4 (large MTU?)
382S3:64:1:60:M*,S,T,N,W0:.:Linux:2.4 (newer)
383S4:64:1:60:M*,S,T,N,W0:.:Linux:2.4-2.6 (possibly CentOS 3.x)
384
385S3:64:1:60:M*,S,T,N,W1:.:Linux:2.6, seldom 2.4 (older, 1)
386S4:64:1:60:M*,S,T,N,W1:.:Linux:2.6, seldom 2.4 (older, 2)
387S3:64:1:60:M*,S,T,N,W2:.:Linux:2.6, seldom 2.4 (older, 3)
388S4:64:1:60:M*,S,T,N,W2:.:Linux:2.6, seldom 2.4 (older, 4) (possibly FC 3-5, CentOS 4.x, Mandrake 10, Ubuntu 4-6)
389T4:64:1:60:M*,S,T,N,W2:.:Linux:2.6 (older, 5)
390S4:64:1:60:M*,S,T,N,W4:.:Linux:2.6 (older, 6) (possibly Mandriva 2010.x, Ubuntu 7.x)
391
392S4:64:1:60:M*,S,T,N,W5:.:Linux:2.6 (newer, 1) (possibly Mandriva 2008.x, 2009.1, Ubuntu 7-9)
393S4:64:1:60:M*,S,T,N,W6:.:Linux:2.6 (newer, 2) (possibly FC8-14, Chromium 5.x, Ubuntu 10.x, OpenSuse 11.x)
394S4:64:1:60:M*,S,T,N,W7:.:Linux:2.6 (newer, 3) or Mac OSX 10.3.1 (possibly FC 6)
395T4:64:1:60:M*,S,T,N,W7:.:Linux:2.6 (newer, 4)
396S2:64:1:60:M*,S,T,N,W6:.:Linux:2.6 (newer, 5)
397S44:128:1:52:M*,N,W0,N,N,S:.:Linux:2.6 (newer, 6) (possibly Ubuntu 10.x)
398S4:64:1:52:M*,N,N,S,N,W5:.:Linux:2.6 (newer, 7) (possibly Ubuntu 8.x)
399S4:64:1:60:S,T,M*,N,W5:.:Linux:2.6 (newer, 8) (possibly Mandriva 2009.0)
400S3:64:1:60:M*,S,T,N,W6:.:Linux:2.6 (newer, 9) (possibly OpenSuse 11.4)
401
402S20:64:1:60:M*,S,T,N,W0:.:Linux:2.2 (1)
403S22:64:1:60:M*,S,T,N,W0:.:Linux:2.2 (2)
404S11:64:1:60:M*,S,T,N,W0:.:Linux:2.2 (3)
405
406# Popular cluster config scripts disable timestamps and
407# selective ACK:
408
409S4:64:1:48:M1460,N,W0:.:Linux:2.4 in cluster
410
411# This happens only over loopback, but let's make folks happy:
41232767:64:1:60:M16396,S,T,N,W0:.:Linux:2.4 (loopback)
41332767:64:1:60:M16396,S,T,N,W2:.:Linux:2.6 (newer, loopback)
414S8:64:1:60:M3884,S,T,N,W0:.:Linux:2.2 (loopback)
415
416# Opera visitors:
41716384:64:1:60:M*,S,T,N,W0:.:-Linux:2.2 (Opera?)
41832767:64:1:60:M*,S,T,N,W0:.:-Linux:2.4 (Opera?)
419
420# Some fairly common mods & oddities:
421S22:64:1:52:M*,N,N,S,N,W0:.:Linux:2.2 (tstamp-)
422S4:64:1:52:M*,N,N,S,N,W0:.:Linux:2.4 (tstamp-)
423S4:64:1:52:M*,N,N,S,N,W2:.:Linux:2.6 (tstamp-)
424S4:64:1:44:M*:.:Linux:2.6? (barebone, rare!)
425T4:64:1:60:M1412,S,T,N,W0:.:Linux:2.4 (rare!)
426
427# ----------------- FreeBSD -----------------
428
42916384:64:1:44:M*:.:FreeBSD:2.0-4.2
43016384:64:1:60:M*,N,W0,N,N,T:.:FreeBSD:4.4 (1)
431
4321024:64:1:60:M*,N,W0,N,N,T:.:FreeBSD:4.4 (2)
433
43457344:64:1:44:M*:.:FreeBSD:4.6-4.8 (RFC1323-)
43557344:64:1:60:M*,N,W0,N,N,T:.:FreeBSD:4.6-4.9
436
43732768:64:1:60:M*,N,W0,N,N,T:.:FreeBSD:4.8-5.1 (or MacOS X 10.2-10.3)
43865535:64:1:60:M*,N,W0,N,N,T:.:FreeBSD:4.7-5.2 (or MacOS X 10.2-10.4) (1)
43965535:64:1:60:M*,N,W1,N,N,T:.:FreeBSD:4.7-5.2 (or MacOS X 10.2-10.4) (2)
440
44165535:64:1:60:M*,N,W0,N,N,T:Z:FreeBSD:5.1 (1)
44265535:64:1:60:M*,N,W1,N,N,T:Z:FreeBSD:5.1 (2)
44365535:64:1:60:M*,N,W2,N,N,T:Z:FreeBSD:5.1 (3)
44465535:64:1:64:M*,N,N,S,N,W1,N,N,T:.:FreeBSD:5.3-5.4
44565535:64:1:64:M*,N,W1,N,N,T,S,E:P:FreeBSD:6.x (1) or MacOS X 10.6
44665535:64:1:64:M*,N,W0,N,N,T,S,E:P:FreeBSD:6.x (2)
44765535:64:1:60:M*,N,W3,S,T:.:FreeBSD:7.x, 8.x
448
44965535:64:1:44:M*:Z:FreeBSD:5.2 (RFC1323-)
450
451# 16384:64:1:60:M*,N,N,N,N,N,N,T:.:FreeBSD:4.4 (tstamp-)
452
453# ----------------- NetBSD ------------------
454
45516384:64:0:60:M*,N,W0,N,N,T:.:NetBSD:1.3
45665535:64:0:60:M*,N,W0,N,N,T0:.:-NetBSD:1.6 (Opera)
45716384:64:1:60:M*,N,W0,N,N,T0:.:NetBSD:1.6
45865535:64:1:60:M*,N,W1,N,N,T0:.:NetBSD:1.6W-current (DF)
45965535:64:1:60:M*,N,W0,N,N,T0:.:NetBSD:1.6X (DF) or Sony PlayStation 3
46032768:64:1:60:M*,N,W0,N,N,T0:.:NetBSD:1.6Z or 2.0 (DF)
46132768:64:1:64:M1416,N,W0,S,N,N,N,N,T0:.:NetBSD:2.0G (DF)
46232768:64:1:64:M*,N,W0,S,N,N,N,N,T0:.:NetBSD:3.0 (DF)
463
464# ----------------- OpenBSD -----------------
465
46616384:64:1:64:M*,N,N,S,N,W0,N,N,T:.:OpenBSD:3.0-3.9
46757344:64:1:64:M*,N,N,S,N,W0,N,N,T:.:OpenBSD:3.3-3.4
46816384:64:0:64:M*,N,N,S,N,W0,N,N,T:.:OpenBSD:3.0-3.4 (scrub)
46965535:64:1:64:M*,N,N,S,N,W0,N,N,T:.:-OpenBSD:3.0-3.4 (Opera?)
47032768:64:1:64:M*,N,N,S,N,W0,N,N,T:.:OpenBSD:3.7
471
472# ----------------- Solaris -----------------
473
474S17:64:1:64:N,W3,N,N,T0,N,N,S,M*:.:Solaris:8 (RFC1323 on)
475S17:64:1:48:N,N,S,M*:.:Solaris:8 (1)
476S17:255:1:44:M*:.:Solaris:2.5-7 (1)
477
478# Sometimes, just sometimes, Solaris feels like coming up with
479# rather arbitrary MSS values ;-)
480
481S6:255:1:44:M*:.:Solaris:2.5-7 (2)
482S23:64:1:48:N,N,S,M*:.:Solaris:8 (2)
483S34:64:1:48:M*,N,N,S:.:Solaris:9
484S34:64:1:48:M*,N,N,N,N:.:Solaris:9 (no sack)
485S44:255:1:44:M*:.:Solaris:7
486
4874096:64:0:44:M1460:.:SunOS:4.1.x, nmap syn scan(8)
488
489S34:64:1:52:M*,N,W0,N,N,S:.:Solaris:10 (beta), OpenSolaris
49032850:64:1:64:M*,N,N,T,N,W1,N,N,S:.:Solaris:10 (1203?)
49132850:64:1:64:M*,N,W1,N,N,T,N,N,S:.:Solaris:9.1
492
493# ----------------- IRIX --------------------
494
49549152:60:0:44:M*:.:IRIX:6.2-6.4
49661440:60:0:44:M*:.:IRIX:6.2-6.5
49749152:60:0:52:M*,N,W2,N,N,S:.:IRIX:6.5 (RFC1323+) (1)
49849152:60:0:52:M*,N,W3,N,N,S:.:IRIX:6.5 (RFC1323+) (2)
499
50061440:60:0:48:M*,N,N,S:.:IRIX:6.5.12-6.5.21 (1)
50149152:60:0:48:M*,N,N,S:.:IRIX:6.5.12-6.5.21 (2)
502
50349152:60:0:64:M*,N,W2,N,N,T,N,N,S:.:IRIX:6.5 IP27
504
505# ----------------- Tru64 -------------------
506# Tru64 and OpenVMS share the same stack on occassions.
507# Relax.
508
50932768:60:1:48:M*,N,W0:.:Tru64:4.0 (or OS/2 Warp 4)
51032768:60:0:48:M*,N,W0:.:Tru64:5.0 (or OpenVMS 7.x on Compaq 5.0 stack)
5118192:60:0:44:M1460:.:Tru64:5.1 (no RFC1323) (or QNX 6)
51261440:60:0:48:M*,N,W0:.:Tru64:v5.1a JP4 (or OpenVMS 7.x on Compaq 5.x stack)
513
514# ----------------- OpenVMS -----------------
515
5166144:64:1:60:M*,N,W0,N,N,T:.:OpenVMS:7.2 (Multinet 4.3-4.4 stack)
517
518# ----------------- MacOS -------------------
519
520S2:255:1:48:M*,W0,E:.:MacOS:8.6 classic
521
52216616:255:1:48:M*,W0,E:.:MacOS:7.3-8.6 (OTTCP)
52316616:255:1:48:M*,N,N,N,E:.:MacOS:8.1-8.6 (OTTCP)
52432768:255:1:48:M*,W0,N:.:MacOS:9.0-9.2
525
52632768:255:1:48:M1380,N,N,N,N:.:MacOS:9.1 (OT 2.7.4) (1)
52765535:255:1:48:M*,N,N,N,N:.:MacOS:9.1 (OT 2.7.4) (2)
528
52965535:64:1:64:M*,N,W3,N,N,T,S,E:P:MacOS:X 10.x (10.3-7)
53065535:64:1:64:M*,N,W2,N,N,T,S,E:P:iOS:3.1+, 4.1-3
53165535:64:1:48:M*,S,E:P:iOS:3.x, 4.2
532
533# ----------------- Windows -----------------
534
535# Windows TCP/IP stack is a mess. For most recent XP, 2000 and
536# even 98, the pathlevel, not the actual OS version, is more
537# relevant to the signature. They share the same code, so it would
538# seem. Luckily for us, almost all Windows 9x boxes have an
539# awkward MSS of 536, which I use to tell one from another
540# in most difficult cases.
541
5428192:32:1:44:M*:.:Windows:3.11 (Tucows)
543S44:64:1:64:M*,N,W0,N,N,T0,N,N,S:.:Windows:95
5448192:128:1:64:M*,N,W0,N,N,T0,N,N,S:.:Windows:95b
545
546# There were so many tweaking tools and so many stack versions for
547# Windows 98 it is no longer possible to tell them from each other
548# without some very serious research. Until then, there's an insane
549# number of signatures, for your amusement:
550
551S44:32:1:48:M*,N,N,S:.:Windows:98 (low TTL) (1)
5528192:32:1:48:M*,N,N,S:.:Windows:98 (low TTL) (2)
553%8192:64:1:48:M536,N,N,S:.:Windows:98 (13)
554%8192:128:1:48:M536,N,N,S:.:Windows:98 (15)
555S4:64:1:48:M*,N,N,S:.:Windows:98 (1)
556S6:64:1:48:M*,N,N,S:.:Windows:98 (2)
557S12:64:1:48:M*,N,N,S:.:Windows:98 (3
558T30:64:1:64:M1460,N,W0,N,N,T0,N,N,S:.:Windows:98 (16)
55932767:64:1:48:M*,N,N,S:.:Windows:98 (4)
56037300:64:1:48:M*,N,N,S:.:Windows:98 (5)
56146080:64:1:52:M*,N,W3,N,N,S:.:Windows:98 (RFC1323+)
56265535:64:1:44:M*:.:Windows:98 (no sack)
563S16:128:1:48:M*,N,N,S:.:Windows:98 (6)
564S16:128:1:64:M*,N,W0,N,N,T0,N,N,S:.:Windows:98 (7)
565S26:128:1:48:M*,N,N,S:.:Windows:98 (8)
566T30:128:1:48:M*,N,N,S:.:Windows:98 (9)
56732767:128:1:52:M*,N,W0,N,N,S:.:Windows:98 (10)
56860352:128:1:48:M*,N,N,S:.:Windows:98 (11)
56960352:128:1:64:M*,N,W2,N,N,T0,N,N,S:.:Windows:98 (12)
570
571# What's with 1414 on NT?
572T31:128:1:44:M1414:.:Windows:NT 4.0 SP6a (1)
57364512:128:1:44:M1414:.:Windows:NT 4.0 SP6a (2)
5748192:128:1:44:M*:.:Windows:NT 4.0 (older)
575
576# Windows XP and 2000. Most of the signatures that were
577# either dubious or non-specific (no service pack data)
578# were deleted and replaced with generics at the end.
579
58065535:128:1:48:M*,N,N,S:.:Windows:2000 SP4, XP SP1+, 2003
5818192:128:1:48:M*,N,N,S:.:Windows:2000 SP2+, XP SP1+ (seldom 98), Vista SP1, 7 SP1, 2008 SP2
582S20:128:1:48:M*,N,N,S:.:Windows:SP3
583S45:128:1:48:M*,N,N,S:.:Windows:2000 SP4, XP SP1+ (2)
58440320:128:1:48:M*,N,N,S:.:Windows:2000 SP4
585
586S6:128:1:48:M*,N,N,S:.:Windows:XP, 2000 SP2+
587S12:128:1:48:M*,N,N,S:.:Windows:XP SP1+ (1)
588S44:128:1:48:M*,N,N,S:.:Windows:XP SP1+, 2000 SP3
58964512:128:1:48:M*,N,N,S:.:Windows:XP SP1+, 2000 SP3 (2)
59032767:128:1:48:M*,N,N,S:.:Windows:XP SP1+, 2000 SP4 (3)
591
592# Windows 2003, Vista, 2008, and 7
593
5948192:128:1:52:M*,W8,N,N,N,S:.:Windows:Vista (beta)
59532768:32:1:52:M1460,N,W0,N,N,S:.:Windows:2003 AS
59665535:64:1:52:M1460,N,W2,N,N,S:.:Windows:2003 (1)
59765535:64:1:48:M1460,N,N,S:.:Windows:2003 (2)
5988192:128:1:52:M*,N,W2,N,N,S:.:Windows:Vista SP1, 7 SP1
5998192:128:1:52:M*,N,W8,N,N,S:.:Windows:Vista SP0/SP2, 7 SP0+, 2008 SP0
60065535:64:0:60:M*,N,W0,S,T:.:Windows:7 SP1+
601
602# Odds, ends, mods:
603
604S52:128:1:48:M1260,N,N,S:.:Windows:XP/2000 via Cisco
60565520:128:1:48:M*,N,N,S:.:Windows:XP bare-bone
60616384:128:1:52:M536,N,W0,N,N,S:.:Windows:2000 w/ZoneAlarm?
6072048:255:0:40:.:.:Windows:.NET Enterprise Server
60844620:64:0:48:M*,N,N,S:.:Windows:ME no SP (?)
609S6:255:1:48:M536,N,N,S:.:Windows:95 winsock 2
61032000:128:0:48:M*,N,N,S:.:Windows:XP w/Winroute?
61116384:64:1:48:M1452,N,N,S:.:Windows:XP w/Sygate? (1)
61217256:64:1:48:M1460,N,N,S:.:Windows:XP w/Sygate? (2)
613
614# No need to be more specific, it passes:
615*:128:1:48:M*,N,N,S:U:-Windows:XP/2000 while downloading (leak!)
616
617# ----------------- HP/UX -------------------
618
61932768:64:1:44:M*:.:HP-UX:B.10.20
62032768:64:1:48:M*,W0,N:.:HP-UX:11.00-11.11
621
622# Whoa. Hardcore WSS.
6230:64:0:48:M*,W0,N:.:HP-UX:B.11.00 A (RFC1323+)
624
625# ----------------- RiscOS ------------------
626
62716384:64:1:68:M1460,N,W0,N,N,T,N,N,?12:.:RISC OS:3.70-4.36 (inet 5.04)
62812288:32:0:44:M536:.:RISC OS:3.70 inet 4.10
6294096:64:1:56:M1460,N,N,T:T:RISC OS:3.70 freenet 2.00
630
631# ----------------- BSD/OS ------------------
632
6338192:64:1:60:M1460,N,W0,N,N,T:.:BSD/OS:3.1-4.3 (or MacOS X 10.2)
634
635# ---------------- NetwonOS -----------------
636
6374096:64:0:44:M1420:.:NewtonOS:2.1
638
639# ---------------- NeXTSTEP -----------------
640
641S8:64:0:44:M512:.:NeXTSTEP:3.3 (1)
642S4:64:0:44:M1024:.:NeXTSTEP:3.3 (2)
643
644# ------------------ BeOS -------------------
645
6461024:255:0:48:M*,N,W0:.:BeOS:5.0-5.1
64712288:255:0:44:M*:.:BeOS:5.0.x
648
649# ------------------ OS/400 -----------------
650
6518192:64:1:60:M1440,N,W0,N,N,T:.:OS/400:V4R4/R5
6528192:64:0:44:M536:.:OS/400:V4R3/M0
6534096:64:1:60:M1440,N,W0,N,N,T:.:OS/400:V4R5 + CF67032
654
65528672:64:0:44:M1460:A:OS/390:?
656
657# ------------------ ULTRIX -----------------
658
65916384:64:0:40:.:.:ULTRIX:4.5
660
661# ------------------- QNX -------------------
662
663S16:64:0:44:M512:.:QNX:demodisk
66416384:64:0:60:M1460,N,W0,N,N,T0:.:QNX:6.x
665
666# ------------------ Novell -----------------
667
66816384:128:1:44:M1460:.:Novell:NetWare 5.0
6696144:128:1:44:M1460:.:Novell:IntranetWare 4.11
6706144:128:1:44:M1368:.:Novell:BorderManager ?
671
672# According to rfp:
6736144:128:1:52:M*,W0,N,S,N,N:.:Novell:Netware 6 SP3
674
675# -------------- SCO UnixWare ---------------
676
677S3:64:1:60:M1460,N,W0,N,N,T:.:SCO:UnixWare 7.1
678S17:64:1:60:M*,N,W0,N,N,T:.:SCO:UnixWare 7.1.x
679S23:64:1:44:M1380:.:SCO:OpenServer 5.0
680
681# ------------------- DOS -------------------
682
6832048:255:0:44:M536:.:DOS:Arachne via WATTCP/1.05
684T2:255:0:44:M984:.:DOS:Arachne via WATTCP/1.05 (eepro)
68516383:64:0:44:M536:.:DOS:Unknown via WATTCP (epppd)
686
687# ------------------ OS/2 -------------------
688
689S56:64:0:44:M512:.:OS/2:4
69028672:64:0:44:M1460:.:OS/2:Warp 4.0
691
692# ----------------- TOPS-20 -----------------
693
694# Another hardcore MSS, one of the ACK leakers hunted down.
6950:64:0:44:M1460:A:TOPS-20:version 7
696
697# ------------------ AMIGA ------------------
698
699S32:64:1:56:M*,N,N,S,N,N,?12:.:AMIGA:3.9 BB2 with Miami stack
700
701# ------------------ Minix ------------------
702
703# Not quite sure.
704# 8192:210:0:44:M1460:X:@Minix:?
705
706# ------------------ Plan9 ------------------
707
70865535:255:0:48:M1460,W0,N:.:Plan9:edition 4
709
710# ----------------- AMIGAOS -----------------
711
71216384:64:1:48:M1560,N,N,S:.:AMIGAOS:3.9 BB2 MiamiDX
713
714# ----------------- FreeMiNT ----------------
715
716S44:255:0:44:M536:.:FreeMiNT:1 patch 16A (Atari)
717
718###########################################
719# Appliance / embedded / other signatures #
720###########################################
721
722# ---------- Firewalls / routers ------------
723
724S12:64:1:44:M1460:.:@Checkpoint:(unknown 1)
725S12:64:1:48:N,N,S,M1460:.:@Checkpoint:(unknown 2)
7264096:32:0:44:M1460:.:ExtremeWare:4.x
727
728S32:64:0:68:M512,N,W0,N,N,T,N,N,?12:.:Nokia:IPSO w/Checkpoint NG FP3
729S16:64:0:68:M1024,N,W0,N,N,T,N,N,?12:.:Nokia:IPSO 3.7 build 026
730
731S4:64:1:60:W0,N,S,T,M1460:.:FortiNet:FortiGate 50
732
7338192:64:1:44:M1460:.:@Eagle:Secure Gateway
734
735# ------- Switches and other stuff ----------
736
7374128:255:0:44:M*:Z:Cisco:7200, Catalyst 3500, etc
738S8:255:0:44:M*:.:Cisco:12008
739S4:255:0:44:M536:Z:Cisco:IOS 11.0
74060352:128:1:64:M1460,N,W2,N,N,T,N,N,S:.:Alteon:ACEswitch
74164512:128:1:44:M1370:.:Nortel:Contivity Client
742
743# ---------- Caches and whatnots ------------
744
7458190:255:0:44:M1428:.:Google:Wireless Transcoder (1)
7468190:255:0:44:M1460:.:Google:Wireless Transcoder (2)
7478192:64:1:64:M1460,N,N,S,N,W0,N,N,T:.:NetCache:5.2
74816384:64:1:64:M1460,N,N,S,N,W0,N:.:NetCache:5.3
74965535:64:1:64:M1460,N,N,S,N,W*,N,N,T:.:NetCache:5.3-5.5 (or FreeBSD 5.4)
75020480:64:1:64:M1460,N,N,S,N,W0,N,N,T:.:NetCache:4.1
751S44:64:1:64:M1460,N,N,S,N,W0,N,N,T:.:NetCache:5.5
752
75332850:64:1:64:N,W1,N,N,T,N,N,S,M*:.:NetCache:Data OnTap 5.x
754
75565535:64:0:60:M1460,N,W0,N,N,T:.:CacheFlow:CacheOS 4.1
7568192:64:0:60:M1380,N,N,N,N,N,N,T:.:CacheFlow:CacheOS 1.1
757
758S4:64:0:48:M1460,N,N,S:.:Cisco:Content Engine
759
76027085:128:0:40:.:.:Dell:PowerApp cache (Linux-based)
761
76265535:255:1:48:N,W1,M1460:.:Inktomi:crawler
763S1:255:1:60:M1460,S,T,N,W0:.:LookSmart:ZyBorg
764
76516384:255:0:40:.:.:Proxyblocker:(what's this?)
766
76765535:255:0:48:M*,N,N,S:.:Redline: T|X 2200
768
769# ----------- Embedded systems --------------
770
771S9:255:0:44:M536:.:PalmOS:Tungsten T3/C
772S5:255:0:44:M536:.:PalmOS:3/4
773S4:255:0:44:M536:.:PalmOS:3.5
7742948:255:0:44:M536:.:PalmOS:3.5.3 (Handera)
775S29:255:0:44:M536:.:PalmOS:5.0
77616384:255:0:44:M1398:.:PalmOS:5.2 (Clie)
777S14:255:0:44:M1350:.:PalmOS:5.2.1 (Treo)
77816384:255:0:44:M1400:.:PalmOS:5.2 (Sony)
779
780S23:64:1:64:N,W1,N,N,T,N,N,S,M1460:.:SymbianOS:7
7818192:255:0:44:M1460:.:SymbianOS:6048 (Nokia 7650?)
7828192:255:0:44:M536:.:SymbianOS:(Nokia 9210?)
783S22:64:1:56:M1460,T,S:.:SymbianOS:? (SE P800?)
784S36:64:1:56:M1360,T,S:.:SymbianOS:60xx (Nokia 6600?)
785S36:64:1:60:M1360,T,S,W0,E:.:SymbianOS:60xx
786
78732768:32:1:44:M1460:.:Windows:CE 3
788
789# Perhaps S4?
7905840:64:1:60:M1452,S,T,N,W1:.:Zaurus:3.10
791
79232768:128:1:64:M1460,N,W0,N,N,T0,N,N,S:.:PocketPC:2002
793
794S1:255:0:44:M346:.:Contiki:1.1-rc0
795
7964096:128:0:44:M1460:.:Sega:Dreamcast Dreamkey 3.0
797T5:64:0:44:M536:.:Sega:Dreamcast HKT-3020 (browser disc 51027)
798S22:64:1:44:M1460:.:Sony:Playstation 2 (SOCOM?)
799
800S12:64:0:44:M1452:.:AXIS:Printer Server 5600 v5.64
801
8023100:32:1:44:M1460:.:Windows:CE 2.0
803
804####################
805# Fancy signatures #
806####################
807
8081024:64:0:40:.:.:-*NMAP:syn scan (1)
8092048:64:0:40:.:.:-*NMAP:syn scan (2)
8103072:64:0:40:.:.:-*NMAP:syn scan (3)
8114096:64:0:40:.:.:-*NMAP:syn scan (4)
8121024:64:0:44:M*:.:-*NMAP:syn scan (5)
8132048:64:0:44:M*:.:-*NMAP:syn scan (6)
8143072:64:0:44:M*:.:-*NMAP:syn scan (7)
815
8161024:64:0:40:.:A:-*NMAP:TCP sweep probe (1)
8172048:64:0:40:.:A:-*NMAP:TCP sweep probe (2)
8183072:64:0:40:.:A:-*NMAP:TCP sweep probe (3)
8194096:64:0:40:.:A:-*NMAP:TCP sweep probe (4)
820
8211024:64:0:60:W10,N,M265,T,E:P:-*NMAP:OS detection probe (1)
8222048:64:0:60:W10,N,M265,T,E:P:-*NMAP:OS detection probe (2)
8233072:64:0:60:W10,N,M265,T,E:P:-*NMAP:OS detection probe (3)
8244096:64:0:60:W10,N,M265,T,E:P:-*NMAP:OS detection probe (4)
825
8261024:64:0:60:W10,N,M265,T,E:PF:-*NMAP:OS detection probe w/flags (1)
8272048:64:0:60:W10,N,M265,T,E:PF:-*NMAP:OS detection probe w/flags (2)
8283072:64:0:60:W10,N,M265,T,E:PF:-*NMAP:OS detection probe w/flags (3)
8294096:64:0:60:W10,N,M265,T,E:PF:-*NMAP:OS detection probe w/flags (4)
830
8311:64:0:60:W10,N,M1460,T,S:A:-*NMAP:OS detection probe (5)
83263:64:0:60:M1400,W0,S,T,E:A:-*NMAP:OS detection probe (6)
8334:64:0:60:T,N,N,W5,N,M640:A:-*NMAP:OS detection probe (7)
8344:64:0:56:S,T,W10,E:A:-*NMAP:OS detection probe (8)
83516:64:0:60:M536,S,T,W10,E:A:-*NMAP:OS detection probe (9)
836512:64:0:56:M265,S,T:A:-*NMAP:OS detection probe (10)
8373:64:0:52:W10,N,M1460,S,N,N:UX:-*NMAP:OS detection probe (11)
83831337:64:0:60:W10,N,M265,T,S:A:-*NMAP:OS detection probe (12)
839
84032767:64:0:40:.:.:-*NAST:syn scan
841
84212345:255:0:40:.:A:-p0f:sendsyn utility
843
844S4:255:0:40:.:A:-*sinfp:active scan (1)
845S4:255:0:60:M1460,T,W1,S,E:A:-*sinfp:active scan (2)
846
847# UFO - see tmp/*:
84856922:128:0:40:.:A:-@Mysterious:port scanner (?)
8495792:64:1:60:M1460,S,T,N,W0:T:-@Mysterious:NAT device (2nd tstamp)
850S12:128:1:48:M1460,E:P:@Mysterious:Chello proxy (?)
851S23:64:1:64:N,W1,N,N,T,N,N,S,M1380:.:@Mysterious:GPRS gateway (?)
852
853#####################################
854# Generic signatures - just in case #
855#####################################
856
857*:128:1:52:M*,N,W0,N,N,S:.:@Windows:XP/2000 (RFC1323+, w, tstamp-)
858*:128:1:52:M*,N,W*,N,N,S:.:@Windows:XP/2000 (RFC1323+, w+, tstamp-)
859*:128:1:52:M*,N,N,T0,N,N,S:.:@Windows:XP/2000 (RFC1323+, w-, tstamp+)
860*:128:1:64:M*,N,W0,N,N,T0,N,N,S:.:@Windows:XP/2000 (RFC1323+, w, tstamp+)
861*:128:1:64:M*,N,W*,N,N,T0,N,N,S:.:@Windows:XP/2000 (RFC1323+, w+, tstamp+)
862
863*:128:1:48:M536,N,N,S:.:@Windows:98
864*:128:1:48:M*,N,N,S:.:@Windows:XP/2000
865
866
867