Source code pulled from OpenBSD for OpenNTPD. The place to contribute to this code is via the OpenBSD CVS tree.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

700 lines
28 KiB

21 years ago
20 years ago
20 years ago
20 years ago
  1. # $OpenBSD: pf.os,v 1.27 2016/09/03 17:08:57 sthen Exp $
  2. # passive OS fingerprinting
  3. # -------------------------
  4. #
  5. # SYN signatures. Those signatures work for SYN packets only (duh!).
  6. #
  7. # (C) Copyright 2000-2003 by Michal Zalewski <lcamtuf@coredump.cx>
  8. # (C) Copyright 2003 by Mike Frantzen <frantzen@w4g.org>
  9. #
  10. # Permission to use, copy, modify, and distribute this software for any
  11. # purpose with or without fee is hereby granted, provided that the above
  12. # copyright notice and this permission notice appear in all copies.
  13. #
  14. # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  15. # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  16. # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  17. # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  18. # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  19. # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  20. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  21. #
  22. #
  23. # This fingerprint database is adapted from Michal Zalewski's p0f passive
  24. # operating system package. The last database sync was from a Nov 3 2003
  25. # p0f.fp.
  26. #
  27. #
  28. # Each line in this file specifies a single fingerprint. Please read the
  29. # information below carefully before attempting to append any signatures
  30. # reported as UNKNOWN to this file to avoid mistakes.
  31. #
  32. # We use the following set metrics for fingerprinting:
  33. #
  34. # - Window size (WSS) - a highly OS dependent setting used for TCP/IP
  35. # performance control (max. amount of data to be sent without ACK).
  36. # Some systems use a fixed value for initial packets. On other
  37. # systems, it is a multiple of MSS or MTU (MSS+40). In some rare
  38. # cases, the value is just arbitrary.
  39. #
  40. # NEW SIGNATURE: if p0f reported a special value of 'Snn', the number
  41. # appears to be a multiple of MSS (MSS*nn); a special value of 'Tnn'
  42. # means it is a multiple of MTU ((MSS+40)*nn). Unless you notice the
  43. # value of nn is not fixed (unlikely), just copy the Snn or Tnn token
  44. # literally. If you know this device has a simple stack and a fixed
  45. # MTU, you can however multiply S value by MSS, or T value by MSS+40,
  46. # and put it instead of Snn or Tnn.
  47. #
  48. # If WSS otherwise looks like a fixed value (for example a multiple
  49. # of two), or if you can confirm the value is fixed, please quote
  50. # it literally. If there's no apparent pattern in WSS chosen, you
  51. # should consider wildcarding this value.
  52. #
  53. # - Overall packet size - a function of all IP and TCP options and bugs.
  54. #
  55. # NEW SIGNATURE: Copy this value literally.
  56. #
  57. # - Initial TTL - We check the actual TTL of a received packet. It can't
  58. # be higher than the initial TTL, and also shouldn't be dramatically
  59. # lower (maximum distance is defined as 40 hops).
  60. #
  61. # NEW SIGNATURE: *Never* copy TTL from a p0f-reported signature literally.
  62. # You need to determine the initial TTL. The best way to do it is to
  63. # check the documentation for a remote system, or check its settings.
  64. # A fairly good method is to simply round the observed TTL up to
  65. # 32, 64, 128, or 255, but it should be noted that some obscure devices
  66. # might not use round TTLs (in particular, some shoddy appliances use
  67. # "original" initial TTL settings). If not sure, you can see how many
  68. # hops you're away from the remote party with traceroute or mtr.
  69. #
  70. # - Don't fragment flag (DF) - some modern OSes set this to implement PMTU
  71. # discovery. Others do not bother.
  72. #
  73. # NEW SIGNATURE: Copy this value literally.
  74. #
  75. # - Maximum segment size (MSS) - this setting is usually link-dependent. P0f
  76. # uses it to determine link type of the remote host.
  77. #
  78. # NEW SIGNATURE: Always wildcard this value, except for rare cases when
  79. # you have an appliance with a fixed value, know the system supports only
  80. # a very limited number of network interface types, or know the system
  81. # is using a value it pulled out of nowhere. Specific unique MSS
  82. # can be used to tell Google crawlbots from the rest of the population.
  83. #
  84. # - Window scaling (WSCALE) - this feature is used to scale WSS.
  85. # It extends the size of a TCP/IP window to 32 bits. Some modern
  86. # systems implement this feature.
  87. #
  88. # NEW SIGNATURE: Observe several signatures. Initial WSCALE is often set
  89. # to zero or other low value. There's usually no need to wildcard this
  90. # parameter.
  91. #
  92. # - Timestamp - some systems that implement timestamps set them to
  93. # zero in the initial SYN. This case is detected and handled appropriately.
  94. #
  95. # - Selective ACK permitted - a flag set by systems that implement
  96. # selective ACK functionality.
  97. #
  98. # - The sequence of TCP all options (MSS, window scaling, selective ACK
  99. # permitted, timestamp, NOP). Other than the options previously
  100. # discussed, p0f also checks for timestamp option (a silly
  101. # extension to broadcast your uptime ;-), NOP options (used for
  102. # header padding) and sackOK option (selective ACK feature).
  103. #
  104. # NEW SIGNATURE: Copy the sequence literally.
  105. #
  106. # To wildcard any value (except for initial TTL or TCP options), replace
  107. # it with '*'. You can also use a modulo operator to match any values
  108. # that divide by nnn - '%nnn'.
  109. #
  110. # Fingerprint entry format:
  111. #
  112. # wwww:ttt:D:ss:OOO...:OS:Version:Subtype:Details
  113. #
  114. # wwww - window size (can be *, %nnn, Snn or Tnn). The special values
  115. # "S" and "T" which are a multiple of MSS or a multiple of MTU
  116. # respectively.
  117. # ttt - initial TTL
  118. # D - don't fragment bit (0 - not set, 1 - set)
  119. # ss - overall SYN packet size
  120. # OOO - option value and order specification (see below)
  121. # OS - OS genre (Linux, Solaris, Windows)
  122. # Version - OS Version (2.0.27 on x86, etc)
  123. # Subtype - OS subtype or patchlevel (SP3, lo0)
  124. # details - Generic OS details
  125. #
  126. # If OS genre starts with '*', p0f will not show distance, link type
  127. # and timestamp data. It is useful for userland TCP/IP stacks of
  128. # network scanners and so on, where many settings are randomized or
  129. # bogus.
  130. #
  131. # If OS genre starts with @, it denotes an approximate hit for a group
  132. # of operating systems (signature reporting still enabled in this case).
  133. # Use this feature at the end of this file to catch cases for which
  134. # you don't have a precise match, but can tell it's Windows or FreeBSD
  135. # or whatnot by looking at, say, flag layout alone.
  136. #
  137. # Option block description is a list of comma or space separated
  138. # options in the order they appear in the packet:
  139. #
  140. # N - NOP option
  141. # Wnnn - window scaling option, value nnn (or * or %nnn)
  142. # Mnnn - maximum segment size option, value nnn (or * or %nnn)
  143. # S - selective ACK OK
  144. # T - timestamp
  145. # T0 - timestamp with a zero value
  146. #
  147. # To denote no TCP options, use a single '.'.
  148. #
  149. # Please report any additions to this file, or any inaccuracies or
  150. # problems spotted, to the maintainers: lcamtuf@coredump.cx,
  151. # frantzen@openbsd.org and bugs@openbsd.org with a tcpdump packet
  152. # capture of the relevant SYN packet(s)
  153. #
  154. # A test and submission page is available at
  155. # http://lcamtuf.coredump.cx/p0f-help/
  156. #
  157. #
  158. # WARNING WARNING WARNING
  159. # -----------------------
  160. #
  161. # Do not add a system X as OS Y just because NMAP says so. It is often
  162. # the case that X is a NAT firewall. While nmap is talking to the
  163. # device itself, p0f is fingerprinting the guy behind the firewall
  164. # instead.
  165. #
  166. # When in doubt, use common sense, don't add something that looks like
  167. # a completely different system as Linux or FreeBSD or LinkSys router.
  168. # Check DNS name, establish a connection to the remote host and look
  169. # at SYN+ACK - does it look similar?
  170. #
  171. # Some users tweak their TCP/IP settings - enable or disable RFC1323
  172. # functionality, enable or disable timestamps or selective ACK,
  173. # disable PMTU discovery, change MTU and so on. Always compare a new rule
  174. # to other fingerprints for this system, and verify the system isn't
  175. # "customized" before adding it. It is OK to add signature variants
  176. # caused by a commonly used software (personal firewalls, security
  177. # packages, etc), but it makes no sense to try to add every single
  178. # possible /proc/sys/net/ipv4 tweak on Linux or so.
  179. #
  180. # KEEP IN MIND: Some packet firewalls configured to normalize outgoing
  181. # traffic (OpenBSD pf with "scrub" enabled, for example) will, well,
  182. # normalize packets. Signatures will not correspond to the originating
  183. # system (and probably not quite to the firewall either).
  184. #
  185. # NOTE: Try to keep this file in some reasonable order, from most to
  186. # least likely systems. This will speed up operation. Also keep most
  187. # generic and broad rules near the end.
  188. #
  189. ##########################
  190. # Standard OS signatures #
  191. ##########################
  192. # ----------------- AIX ---------------------
  193. # AIX is first because its signatures are close to NetBSD, MacOS X and
  194. # Linux 2.0, but it uses a fairly rare MSSes, at least sometimes...
  195. # This is a shoddy hack, though.
  196. 45046:64:0:44:M*: AIX:4.3::AIX 4.3
  197. 16384:64:0:44:M512: AIX:4.3:2-3:AIX 4.3.2 and earlier
  198. 16384:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2
  199. 16384:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2
  200. 32768:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2
  201. 32768:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2
  202. 65535:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2
  203. 65535:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2
  204. 65535:64:0:64:M*,N,W1,N,N,T,N,N,S: AIX:5.3:ML1:AIX 5.3 ML1
  205. # ----------------- Linux -------------------
  206. # S1:64:0:44:M*:A: Linux:1.2::Linux 1.2.x (XXX quirks support)
  207. 512:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x
  208. 16384:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x
  209. # Endian snafu! Nelson says "ha-ha":
  210. 2:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac
  211. 64:64:0:44:M*: Linux:2.0:3x:Linux 2.0.3x (MkLinux) on Mac
  212. S4:64:1:60:M1360,S,T,N,W0: Linux:google::Linux (Google crawlbot)
  213. S2:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4 (big boy)
  214. S3:64:1:60:M*,S,T,N,W0: Linux:2.4:.18-21:Linux 2.4.18 and newer
  215. S4:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4/2.6 <= 2.6.7
  216. S4:64:1:60:M*,S,T,N,W0: Linux:2.6:.1-7:Linux 2.4/2.6 <= 2.6.7
  217. S4:64:1:60:M*,S,T,N,W5: Linux:2.6::Linux 2.6 (newer, 1)
  218. S4:64:1:60:M*,S,T,N,W6: Linux:2.6::Linux 2.6 (newer, 2)
  219. S4:64:1:60:M*,S,T,N,W7: Linux:2.6::Linux 2.6 (newer, 3)
  220. T4:64:1:60:M*,S,T,N,W7: Linux:2.6::Linux 2.6 (newer, 4)
  221. S10:64:1:60:M*,S,T,N,W4: Linux:3.0::Linux 3.0
  222. S3:64:1:60:M*,S,T,N,W1: Linux:2.5::Linux 2.5 (sometimes 2.4)
  223. S4:64:1:60:M*,S,T,N,W1: Linux:2.5-2.6::Linux 2.5/2.6
  224. S3:64:1:60:M*,S,T,N,W2: Linux:2.5::Linux 2.5 (sometimes 2.4)
  225. S4:64:1:60:M*,S,T,N,W2: Linux:2.5::Linux 2.5 (sometimes 2.4)
  226. S20:64:1:60:M*,S,T,N,W0: Linux:2.2:20-25:Linux 2.2.20 and newer
  227. S22:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2
  228. S11:64:1:60:M*,S,T,N,W0: Linux:2.2::Linux 2.2
  229. # Popular cluster config scripts disable timestamps and
  230. # selective ACK:
  231. S4:64:1:48:M1460,N,W0: Linux:2.4:cluster:Linux 2.4 in cluster
  232. # This needs to be investigated. On some systems, WSS
  233. # is selected as a multiple of MTU instead of MSS. I got
  234. # many submissions for this for many late versions of 2.4:
  235. T4:64:1:60:M1412,S,T,N,W0: Linux:2.4::Linux 2.4 (late, uncommon)
  236. # This happens only over loopback, but let's make folks happy:
  237. 32767:64:1:60:M16396,S,T,N,W0: Linux:2.4:lo0:Linux 2.4 (local)
  238. S8:64:1:60:M3884,S,T,N,W0: Linux:2.2:lo0:Linux 2.2 (local)
  239. # Opera visitors:
  240. 16384:64:1:60:M*,S,T,N,W0: Linux:2.2:Opera:Linux 2.2 (Opera?)
  241. 32767:64:1:60:M*,S,T,N,W0: Linux:2.4:Opera:Linux 2.4 (Opera?)
  242. # Some fairly common mods:
  243. S4:64:1:52:M*,N,N,S,N,W0: Linux:2.4:ts:Linux 2.4 w/o timestamps
  244. S22:64:1:52:M*,N,N,S,N,W0: Linux:2.2:ts:Linux 2.2 w/o timestamps
  245. # ----------------- FreeBSD -----------------
  246. 16384:64:1:44:M*: FreeBSD:2.0-2.2::FreeBSD 2.0-4.2
  247. 16384:64:1:44:M*: FreeBSD:3.0-3.5::FreeBSD 2.0-4.2
  248. 16384:64:1:44:M*: FreeBSD:4.0-4.2::FreeBSD 2.0-4.2
  249. 16384:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4
  250. 1024:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4
  251. 57344:64:1:44:M*: FreeBSD:4.6-4.8:noRFC1323:FreeBSD 4.6-4.8 (no RFC1323)
  252. 57344:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.6-4.9::FreeBSD 4.6-4.9
  253. 32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.11::FreeBSD 4.8-5.1 (or MacOS X)
  254. 32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.8-5.1 (or MacOS X)
  255. 65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.11::FreeBSD 4.8-5.2 (or MacOS X)
  256. 65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.8-5.2 (or MacOS X)
  257. 65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-4.11::FreeBSD 4.7-5.2
  258. 65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.7-5.2
  259. # XXX need quirks support
  260. # 65535:64:1:60:M*,N,W0,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (1)
  261. # 65535:64:1:60:M*,N,W1,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (2)
  262. # 65535:64:1:60:M*,N,W2,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (3)
  263. # 65535:64:1:44:M*:Z:FreeBSD:5.2::FreeBSD 5.2 (no RFC1323)
  264. # 16384:64:1:60:M*,N,N,N,N,N,N,T:FreeBSD:4.4:noTS:FreeBSD 4.4 (w/o timestamps)
  265. # ----------------- NetBSD ------------------
  266. 16384:64:0:60:M*,N,W0,N,N,T: NetBSD:1.3::NetBSD 1.3
  267. 65535:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6:opera:NetBSD 1.6 (Opera)
  268. 16384:64:0:60:M*,N,W0,N,N,T0: NetBSD:1.6::NetBSD 1.6
  269. 16384:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6:df:NetBSD 1.6 (DF)
  270. 65535:64:1:60:M*,N,W1,N,N,T0: NetBSD:1.6::NetBSD 1.6W-current (DF)
  271. 65535:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6::NetBSD 1.6X (DF)
  272. 32768:64:1:60:M*,N,W0,N,N,T0: NetBSD:1.6:randomization:NetBSD 1.6ZH-current (w/ ip_id randomization)
  273. # ----------------- OpenBSD -----------------
  274. 16384:64:0:60:M*,N,W0,N,N,T: OpenBSD:2.6::NetBSD 1.3 (or OpenBSD 2.6)
  275. 16384:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.8::OpenBSD 3.0-4.8
  276. 16384:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.8:no-df:OpenBSD 3.0-4.8 (scrub no-df)
  277. 57344:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-4.0::OpenBSD 3.3-4.0
  278. 57344:64:0:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.3-4.0:no-df:OpenBSD 3.3-4.0 (scrub no-df)
  279. 65535:64:1:64:M*,N,N,S,N,W0,N,N,T: OpenBSD:3.0-4.0:opera:OpenBSD 3.0-4.0 (Opera)
  280. 16384:64:1:64:M*,N,N,S,N,W3,N,N,T: OpenBSD:4.9::OpenBSD 4.9
  281. 16384:64:0:64:M*,N,N,S,N,W3,N,N,T: OpenBSD:4.9:no-df:OpenBSD 4.9 (scrub no-df)
  282. 16384:64:1:64:M*,N,N,S,N,W6,N,N,T: OpenBSD:6.1::OpenBSD 6.1
  283. 16384:64:0:64:M*,N,N,S,N,W6,N,N,T: OpenBSD:6.1:no-df:OpenBSD 6.1 (scrub no-df)
  284. # ----------------- Solaris -----------------
  285. S17:64:1:64:N,W3,N,N,T0,N,N,S,M*: Solaris:8:RFC1323:Solaris 8 RFC1323
  286. S17:64:1:48:N,N,S,M*: Solaris:8::Solaris 8
  287. S17:255:1:44:M*: Solaris:2.5-2.7::Solaris 2.5 to 7
  288. S6:255:1:44:M*: Solaris:2.6-2.7::Solaris 2.6 to 7
  289. S23:255:1:44:M*: Solaris:2.5:1:Solaris 2.5.1
  290. S34:64:1:48:M*,N,N,S: Solaris:2.9::Solaris 9
  291. S44:255:1:44:M*: Solaris:2.7::Solaris 7
  292. 4096:64:0:44:M1460: SunOS:4.1::SunOS 4.1.x
  293. S34:64:1:52:M*,N,W0,N,N,S: Solaris:10:beta:Solaris 10 (beta)
  294. 32850:64:1:64:M*,N,N,T,N,W1,N,N,S: Solaris:10::Solaris 10 1203
  295. # ----------------- IRIX --------------------
  296. 49152:64:0:44:M*: IRIX:6.4::IRIX 6.4
  297. 61440:64:0:44:M*: IRIX:6.2-6.5::IRIX 6.2-6.5
  298. 49152:64:0:52:M*,N,W2,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323)
  299. 49152:64:0:52:M*,N,W3,N,N,S: IRIX:6.5:RFC1323:IRIX 6.5 (RFC1323)
  300. 61440:64:0:48:M*,N,N,S: IRIX:6.5:12-21:IRIX 6.5.12 - 6.5.21
  301. 49152:64:0:48:M*,N,N,S: IRIX:6.5:15-21:IRIX 6.5.15 - 6.5.21
  302. 49152:60:0:64:M*,N,W2,N,N,T,N,N,S: IRIX:6.5:IP27:IRIX 6.5 IP27
  303. # ----------------- Tru64 -------------------
  304. 32768:64:1:48:M*,N,W0: Tru64:4.0::Tru64 4.0 (or OS/2 Warp 4)
  305. 32768:64:0:48:M*,N,W0: Tru64:5.0::Tru64 5.0
  306. 8192:64:0:44:M1460: Tru64:5.1:noRFC1323:Tru64 6.1 (no RFC1323) (or QNX 6)
  307. 61440:64:0:48:M*,N,W0: Tru64:5.1a:JP4:Tru64 v5.1a JP4 (or OpenVMS 7.x on Compaq 5.x stack)
  308. # ----------------- OpenVMS -----------------
  309. 6144:64:1:60:M*,N,W0,N,N,T: OpenVMS:7.2::OpenVMS 7.2 (Multinet 4.4 stack)
  310. # ----------------- MacOS -------------------
  311. # XXX Need EOL tcp opt support
  312. # S2:255:1:48:M*,W0,E:.:MacOS:8.6 classic
  313. # XXX some of these use EOL too
  314. 16616:255:1:48:M*,W0: MacOS:7.3-7.6:OTTCP:MacOS 7.3-8.6 (OTTCP)
  315. 16616:255:1:48:M*,W0: MacOS:8.0-8.6:OTTCP:MacOS 7.3-8.6 (OTTCP)
  316. 16616:255:1:48:M*,N,N,N: MacOS:8.1-8.6:OTTCP:MacOS 8.1-8.6 (OTTCP)
  317. 32768:255:1:48:M*,W0,N: MacOS:9.0-9.2::MacOS 9.0-9.2
  318. 65535:255:1:48:M*,N,N,N,N: MacOS:9.1::MacOS 9.1 (OT 2.7.4)
  319. # ----------------- Windows -----------------
  320. # Windows TCP/IP stack is a mess. For most recent XP, 2000 and
  321. # even 98, the patchlevel, not the actual OS version, is more
  322. # relevant to the signature. They share the same code, so it would
  323. # seem. Luckily for us, almost all Windows 9x boxes have an
  324. # awkward MSS of 536, which I use to tell one from another
  325. # in most difficult cases.
  326. 8192:32:1:44:M*: Windows:3.11::Windows 3.11 (Tucows)
  327. S44:64:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:95::Windows 95
  328. 8192:128:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:95:b:Windows 95b
  329. # There were so many tweaking tools and so many stack versions for
  330. # Windows 98 it is no longer possible to tell them from each other
  331. # without some very serious research. Until then, there's an insane
  332. # number of signatures, for your amusement:
  333. S44:32:1:48:M*,N,N,S: Windows:98:lowTTL:Windows 98 (low TTL)
  334. 8192:32:1:48:M*,N,N,S: Windows:98:lowTTL:Windows 98 (low TTL)
  335. %8192:64:1:48:M536,N,N,S: Windows:98::Windows 98
  336. %8192:128:1:48:M536,N,N,S: Windows:98::Windows 98
  337. S4:64:1:48:M*,N,N,S: Windows:98::Windows 98
  338. S6:64:1:48:M*,N,N,S: Windows:98::Windows 98
  339. S12:64:1:48:M*,N,N,S: Windows:98::Windows 98
  340. T30:64:1:64:M1460,N,W0,N,N,T0,N,N,S: Windows:98::Windows 98
  341. 32767:64:1:48:M*,N,N,S: Windows:98::Windows 98
  342. 37300:64:1:48:M*,N,N,S: Windows:98::Windows 98
  343. 46080:64:1:52:M*,N,W3,N,N,S: Windows:98:RFC1323:Windows 98 (RFC1323)
  344. 65535:64:1:44:M*: Windows:98:noSack:Windows 98 (no sack)
  345. S16:128:1:48:M*,N,N,S: Windows:98::Windows 98
  346. S16:128:1:64:M*,N,W0,N,N,T0,N,N,S: Windows:98::Windows 98
  347. S26:128:1:48:M*,N,N,S: Windows:98::Windows 98
  348. T30:128:1:48:M*,N,N,S: Windows:98::Windows 98
  349. 32767:128:1:52:M*,N,W0,N,N,S: Windows:98::Windows 98
  350. 60352:128:1:48:M*,N,N,S: Windows:98::Windows 98
  351. 60352:128:1:64:M*,N,W2,N,N,T0,N,N,S: Windows:98::Windows 98
  352. # What's with 1414 on NT?
  353. T31:128:1:44:M1414: Windows:NT:4.0:Windows NT 4.0 SP6a
  354. 64512:128:1:44:M1414: Windows:NT:4.0:Windows NT 4.0 SP6a
  355. 8192:128:1:44:M*: Windows:NT:4.0:Windows NT 4.0 (older)
  356. # Windows XP and 2000. Most of the signatures that were
  357. # either dubious or non-specific (no service pack data)
  358. # were deleted and replaced with generics at the end.
  359. 65535:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP1
  360. 65535:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP1
  361. %8192:128:1:48:M*,N,N,S: Windows:2000:SP2+:Windows 2000 SP2, XP SP1 (seldom 98 4.10.2222)
  362. %8192:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP2, XP SP1 (seldom 98 4.10.2222)
  363. S20:128:1:48:M*,N,N,S: Windows:2000::Windows 2000/XP SP3
  364. S20:128:1:48:M*,N,N,S: Windows:XP:SP3:Windows 2000/XP SP3
  365. S45:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4, XP SP 1
  366. S45:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows 2000 SP4, XP SP 1
  367. 40320:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows 2000 SP4
  368. S6:128:1:48:M*,N,N,S: Windows:2000:SP2:Windows XP, 2000 SP2+
  369. S6:128:1:48:M*,N,N,S: Windows:XP::Windows XP, 2000 SP2+
  370. S12:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows XP SP1
  371. S44:128:1:48:M*,N,N,S: Windows:2000:SP3:Windows Pro SP1, 2000 SP3
  372. S44:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows Pro SP1, 2000 SP3
  373. 64512:128:1:48:M*,N,N,S: Windows:2000:SP3:Windows SP1, 2000 SP3
  374. 64512:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows SP1, 2000 SP3
  375. 32767:128:1:48:M*,N,N,S: Windows:2000:SP4:Windows SP1, 2000 SP4
  376. 32767:128:1:48:M*,N,N,S: Windows:XP:SP1:Windows SP1, 2000 SP4
  377. 8192:128:1:52:M*,N,W2,N,N,S: Windows:Vista::Windows Vista/7
  378. # Odds, ends, mods:
  379. S52:128:1:48:M1260,N,N,S: Windows:2000:cisco:Windows XP/2000 via Cisco
  380. S52:128:1:48:M1260,N,N,S: Windows:XP:cisco:Windows XP/2000 via Cisco
  381. 65520:128:1:48:M*,N,N,S: Windows:XP::Windows XP bare-bone
  382. 16384:128:1:52:M536,N,W0,N,N,S: Windows:2000:ZoneAlarm:Windows 2000 w/ZoneAlarm?
  383. 2048:255:0:40:.: Windows:.NET::Windows .NET Enterprise Server
  384. 44620:64:0:48:M*,N,N,S: Windows:ME::Windows ME no SP (?)
  385. S6:255:1:48:M536,N,N,S: Windows:95:winsock2:Windows 95 winsock 2
  386. 32768:32:1:52:M1460,N,W0,N,N,S: Windows:2003:AS:Windows 2003 AS
  387. # No need to be more specific, it passes:
  388. # *:128:1:48:M*,N,N,S:U:-Windows:XP/2000 while downloading (leak!) XXX quirk
  389. # there is an equiv similar generic sig w/o the quirk
  390. # ----------------- HP/UX -------------------
  391. 32768:64:1:44:M*: HP-UX:B.10.20::HP-UX B.10.20
  392. 32768:64:0:48:M*,W0,N: HP-UX:11.0::HP-UX 11.0
  393. 32768:64:1:48:M*,W0,N: HP-UX:11.10::HP-UX 11.0 or 11.11
  394. 32768:64:1:48:M*,W0,N: HP-UX:11.11::HP-UX 11.0 or 11.11
  395. # Whoa. Hardcore WSS.
  396. 0:64:0:48:M*,W0,N: HP-UX:B.11.00:A:HP-UX B.11.00 A (RFC1323)
  397. # ----------------- RiscOS ------------------
  398. # We don't yet support the ?12 TCP option
  399. #16384:64:1:68:M1460,N,W0,N,N,T,N,N,?12: RISCOS:3.70-4.36::RISC OS 3.70-4.36
  400. 12288:32:0:44:M536: RISC OS:3.70:4.10:RISC OS 3.70 inet 4.10
  401. # XXX quirk
  402. # 4096:64:1:56:M1460,N,N,T:T: RISC OS:3.70:freenet:RISC OS 3.70 freenet 2.00
  403. # ----------------- BSD/OS ------------------
  404. # Once again, power of two WSS is also shared by MacOS X with DF set
  405. 8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:3.1::BSD/OS 3.1-4.3 (or MacOS X 10.2 w/DF)
  406. 8192:64:1:60:M1460,N,W0,N,N,T: BSD/OS:4.0-4.3::BSD/OS 3.1-4.3 (or MacOS X 10.2)
  407. # ---------------- NewtonOS -----------------
  408. 4096:64:0:44:M1420: NewtonOS:2.1::NewtonOS 2.1
  409. # ---------------- NeXTSTEP -----------------
  410. S4:64:0:44:M1024: NeXTSTEP:3.3::NeXTSTEP 3.3
  411. S8:64:0:44:M512: NeXTSTEP:3.3::NeXTSTEP 3.3
  412. # ------------------ BeOS -------------------
  413. 1024:255:0:48:M*,N,W0: BeOS:5.0-5.1::BeOS 5.0-5.1
  414. 12288:255:0:44:M1402: BeOS:5.0::BeOS 5.0.x
  415. # ------------------ OS/400 -----------------
  416. 8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR4::OS/400 VR4/R5
  417. 8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR5::OS/400 VR4/R5
  418. 4096:64:1:60:M1440,N,W0,N,N,T: OS/400:V4R5:CF67032:OS/400 V4R5 + CF67032
  419. # XXX quirk
  420. # 28672:64:0:44:M1460:A:OS/390:?
  421. # ------------------ ULTRIX -----------------
  422. 16384:64:0:40:.: ULTRIX:4.5::ULTRIX 4.5
  423. # ------------------- QNX -------------------
  424. S16:64:0:44:M512: QNX:::QNX demodisk
  425. # ------------------ Novell -----------------
  426. 16384:128:1:44:M1460: Novell:NetWare:5.0:Novel Netware 5.0
  427. 6144:128:1:44:M1460: Novell:IntranetWare:4.11:Novell IntranetWare 4.11
  428. 6144:128:1:44:M1368: Novell:BorderManager::Novell BorderManager ?
  429. 6144:128:1:52:M*,W0,N,S,N,N: Novell:Netware:6:Novell Netware 6 SP3
  430. # ----------------- SCO ------------------
  431. S3:64:1:60:M1460,N,W0,N,N,T: SCO:UnixWare:7.1:SCO UnixWare 7.1
  432. S17:64:1:60:M1380,N,W0,N,N,T: SCO:UnixWare:7.1:SCO UnixWare 7.1.3 MP3
  433. S23:64:1:44:M1380: SCO:OpenServer:5.0:SCO OpenServer 5.0
  434. # ------------------- DOS -------------------
  435. 2048:255:0:44:M536: DOS:WATTCP:1.05:DOS Arachne via WATTCP/1.05
  436. T2:255:0:44:M984: DOS:WATTCP:1.05Arachne:Arachne via WATTCP/1.05 (eepro)
  437. # ------------------ OS/2 -------------------
  438. S56:64:0:44:M512: OS/2:4::OS/2 4
  439. 28672:64:0:44:M1460: OS/2:4::OS/2 Warp 4.0
  440. # ----------------- TOPS-20 -----------------
  441. # Another hardcore MSS, one of the ACK leakers hunted down.
  442. # XXX QUIRK 0:64:0:44:M1460:A:TOPS-20:version 7
  443. 0:64:0:44:M1460: TOPS-20:7::TOPS-20 version 7
  444. # ----------------- FreeMiNT ----------------
  445. S44:255:0:44:M536: FreeMiNT:1:16A:FreeMiNT 1 patch 16A (Atari)
  446. # ------------------ AMIGA ------------------
  447. # XXX TCP option 12
  448. # S32:64:1:56:M*,N,N,S,N,N,?12:.:AMIGA:3.9 BB2 with Miami stack
  449. # ------------------ Plan9 ------------------
  450. 65535:255:0:48:M1460,W0,N: Plan9:4::Plan9 edition 4
  451. # ----------------- AMIGAOS -----------------
  452. 16384:64:1:48:M1560,N,N,S: AMIGAOS:3.9::AMIGAOS 3.9 BB2 MiamiDX
  453. ###########################################
  454. # Appliance / embedded / other signatures #
  455. ###########################################
  456. # ---------- Firewalls / routers ------------
  457. S12:64:1:44:M1460: @Checkpoint:::Checkpoint (unknown 1)
  458. S12:64:1:48:N,N,S,M1460: @Checkpoint:::Checkpoint (unknown 2)
  459. 4096:32:0:44:M1460: ExtremeWare:4.x::ExtremeWare 4.x
  460. # XXX TCP option 12
  461. # S32:64:0:68:M512,N,W0,N,N,T,N,N,?12:.:Nokia:IPSO w/Checkpoint NG FP3
  462. # S16:64:0:68:M1024,N,W0,N,N,T,N,N,?12:.:Nokia:IPSO 3.7 build 026
  463. S4:64:1:60:W0,N,S,T,M1460: FortiNet:FortiGate:50:FortiNet FortiGate 50
  464. 8192:64:1:44:M1460: Eagle:::Eagle Secure Gateway
  465. S52:128:1:48:M1260,N,N,N,N: LinkSys:WRV54G::LinkSys WRV54G VPN router
  466. # ------- Switches and other stuff ----------
  467. 4128:255:0:44:M*: Cisco:::Cisco Catalyst 3500, 7500 etc
  468. S8:255:0:44:M*: Cisco:12008::Cisco 12008
  469. 60352:128:1:64:M1460,N,W2,N,N,T,N,N,S: Alteon:ACEswitch::Alteon ACEswitch
  470. 64512:128:1:44:M1370: Nortel:Contivity Client::Nortel Conectivity Client
  471. # ---------- Caches and whatnots ------------
  472. S4:64:1:52:M1460,N,N,S,N,W0: AOL:web cache::AOL web cache
  473. 32850:64:1:64:N,W1,N,N,T,N,N,S,M*: NetApp:5.x::NetApp Data OnTap 5.x
  474. 16384:64:1:64:M1460,N,N,S,N,W0,N: NetApp:5.3:1:NetApp 5.3.1
  475. 65535:64:0:64:M1460,N,N,S,N,W*,N,N,T: NetApp:5.3-5.5::NetApp 5.3-5.5
  476. 65535:64:0:60:M1460,N,W0,N,N,T: NetApp:CacheFlow::NetApp CacheFlow
  477. 8192:64:1:64:M1460,N,N,S,N,W0,N,N,T: NetApp:5.2:1:NetApp NetCache 5.2.1
  478. 20480:64:1:64:M1460,N,N,S,N,W0,N,N,T: NetApp:4.1::NetApp NetCache4.1
  479. 65535:64:0:60:M1460,N,W0,N,N,T: CacheFlow:4.1::CacheFlow CacheOS 4.1
  480. 8192:64:0:60:M1380,N,N,N,N,N,N,T: CacheFlow:1.1::CacheFlow CacheOS 1.1
  481. S4:64:0:48:M1460,N,N,S: Cisco:Content Engine::Cisco Content Engine
  482. 27085:128:0:40:.: Dell:PowerApp cache::Dell PowerApp (Linux-based)
  483. 65535:255:1:48:N,W1,M1460: Inktomi:crawler::Inktomi crawler
  484. S1:255:1:60:M1460,S,T,N,W0: LookSmart:ZyBorg::LookSmart ZyBorg
  485. 16384:255:0:40:.: Proxyblocker:::Proxyblocker (what's this?)
  486. 65535:255:0:48:M*,N,N,S: Redline:::Redline T|X 2200
  487. 32696:128:0:40:M1460: Spirent:Avalanche::Spirent Web Avalanche HTTP benchmarking engine
  488. # ----------- Embedded systems --------------
  489. S9:255:0:44:M536: PalmOS:Tungsten:C:PalmOS Tungsten C
  490. S5:255:0:44:M536: PalmOS:3::PalmOS 3/4
  491. S5:255:0:44:M536: PalmOS:4::PalmOS 3/4
  492. S4:255:0:44:M536: PalmOS:3:5:PalmOS 3.5
  493. 2948:255:0:44:M536: PalmOS:3:5:PalmOS 3.5.3 (Handera)
  494. S29:255:0:44:M536: PalmOS:5::PalmOS 5.0
  495. 16384:255:0:44:M1398: PalmOS:5.2:Clie:PalmOS 5.2 (Clie)
  496. S14:255:0:44:M1350: PalmOS:5.2:Treo:PalmOS 5.2.1 (Treo)
  497. S23:64:1:64:N,W1,N,N,T,N,N,S,M1460: SymbianOS:7::SymbianOS 7
  498. 8192:255:0:44:M1460: SymbianOS:6048::Symbian OS 6048 (Nokia 7650?)
  499. 8192:255:0:44:M536: SymbianOS:9210::Symbian OS (Nokia 9210?)
  500. S22:64:1:56:M1460,T,S: SymbianOS:P800::Symbian OS ? (SE P800?)
  501. S36:64:1:56:M1360,T,S: SymbianOS:6600::Symbian OS 60xx (Nokia 6600?)
  502. # Perhaps S4?
  503. 5840:64:1:60:M1452,S,T,N,W1: Zaurus:3.10::Zaurus 3.10
  504. 32768:128:1:64:M1460,N,W0,N,N,T0,N,N,S: PocketPC:2002::PocketPC 2002
  505. S1:255:0:44:M346: Contiki:1.1:rc0:Contiki 1.1-rc0
  506. 4096:128:0:44:M1460: Sega:Dreamcast:3.0:Sega Dreamcast Dreamkey 3.0
  507. T5:64:0:44:M536: Sega:Dreamcast:HKT-3020:Sega Dreamcast HKT-3020 (browser disc 51027)
  508. S22:64:1:44:M1460: Sony:PS2::Sony Playstation 2 (SOCOM?)
  509. S12:64:0:44:M1452: AXIS:5600:v5.64:AXIS Printer Server 5600 v5.64
  510. 3100:32:1:44:M1460: Windows:CE:2.0:Windows CE 2.0
  511. ####################
  512. # Fancy signatures #
  513. ####################
  514. 1024:64:0:40:.: *NMAP:syn scan:1:NMAP syn scan (1)
  515. 2048:64:0:40:.: *NMAP:syn scan:2:NMAP syn scan (2)
  516. 3072:64:0:40:.: *NMAP:syn scan:3:NMAP syn scan (3)
  517. 4096:64:0:40:.: *NMAP:syn scan:4:NMAP syn scan (4)
  518. # Requires quirks support
  519. # 1024:64:0:40:.:A:*NMAP:TCP sweep probe (1)
  520. # 2048:64:0:40:.:A:*NMAP:TCP sweep probe (2)
  521. # 3072:64:0:40:.:A:*NMAP:TCP sweep probe (3)
  522. # 4096:64:0:40:.:A:*NMAP:TCP sweep probe (4)
  523. 1024:64:0:60:W10,N,M265,T: *NMAP:OS:1:NMAP OS detection probe (1)
  524. 2048:64:0:60:W10,N,M265,T: *NMAP:OS:2:NMAP OS detection probe (2)
  525. 3072:64:0:60:W10,N,M265,T: *NMAP:OS:3:NMAP OS detection probe (3)
  526. 4096:64:0:60:W10,N,M265,T: *NMAP:OS:4:NMAP OS detection probe (4)
  527. 32767:64:0:40:.: *NAST:::NASTsyn scan
  528. # Requires quirks support
  529. # 12345:255:0:40:.:A:-p0f:sendsyn utility
  530. #####################################
  531. # Generic signatures - just in case #
  532. #####################################
  533. #*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:4.0-4.9::FreeBSD 4.x/5.x
  534. #*:64:1:60:M*,N,W*,N,N,T: @FreeBSD:5.0-5.1::FreeBSD 4.x/5.x
  535. *:128:1:52:M*,N,W0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323 no tstamp)
  536. *:128:1:52:M*,N,W0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323 no tstamp)
  537. *:128:1:52:M*,N,W*,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323 no tstamp)
  538. *:128:1:52:M*,N,W*,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323 no tstamp)
  539. *:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP/2000 (RFC1323)
  540. *:128:1:64:M*,N,W0,N,N,T0,N,N,S: @Windows:2000:RFC1323:Windows XP/2000 (RFC1323)
  541. *:128:1:64:M*,N,W*,N,N,T0,N,N,S: @Windows:XP:RFC1323:Windows XP (RFC1323, w+)
  542. *:128:1:48:M536,N,N,S: @Windows:98::Windows 98
  543. *:128:1:48:M*,N,N,S: @Windows:XP::Windows XP/2000
  544. *:128:1:48:M*,N,N,S: @Windows:2000::Windows XP/2000