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