nmap服务识别指纹自制细节

作者:破符

指纹保存路径及文件

Nmap服务指纹存放文件名为nmap-service-probe,其文件存放路径为nmap环境根目录下,linux下多为:/usr/share/nmap/nmap-service-probe。

指纹文件编辑格式

Exclude命令: 指定排除扫描的端口,此命令只能使用一次,并应处于指纹文件的顶端。

​ 命令格式:Exculd [端口/T:端口/U:端口] , [端口/T:端口/U:端口],[. . .]

​ 命令样例:Exclude 53,T:9100,U:30000-40000

Probe命令: 指定发送探测服务的字符串或数据(每条指纹扫描的起始部分)

​ 命令格式:Probe [TCP/UDP] [扫描名_英文] [q|数据|] (注:数据前后需加以 ‘q|’ 和 ‘|’ )

​ 命令样例:Probe TCP GetRequest q|GET / HTTP/1.0\r\n\r\n|

match命令:对Probe指令发送数据的响应数据做处理

​ 命令格式:match [服务名] [m/正则/] [处理字段] [处理字段] (注:正则前后需加以 ‘m/’ 和 ‘/’,其中 '/'可被其他能够实现前后闭合的字符替换 )

​ 命令样例:match ftp m/^220.*Welcome to .Pure-?FTPd (\d\S+\s)/ p/Pure-FTPd/ v/$1/ cpe:/a:pureftpd:pure-ftpd:$1/

​ 命令中处理字段同正则表达式相同,需要在其前后添加可闭合的字符,有多种分类:

​ ‘p/[名字]/’ :包括供应商和通常的服务名称

​ ‘v/[版本号]/’:应用程序版本“数字”,其中可能包括非数字字符甚至多个单词。

​ ‘i/[信息]/’:其他进一步的信息,可以立即获得,并可能有用

​ ‘h/[主机名]/’: 服务提供的主机名

​ ‘o/[操作系统]/’: 运行服务的操作系统

​ ‘d/[设备类型]/’:运行服务的设备类型

​ ‘cpe:/[通用平台枚举]/a’:不仅能够识别服务(名称),还能够识别操作系统(名称)和硬件平台(名称)

​ 辅助函数:

​ $P(x):过滤不可打印的字符 (其中x为正则表达式匹配出的数据)

​ $SUBST([],[“ ”],[“ ”]):在打印之前在匹配项中进行替换(参数一:正则匹配项,参数二:查找项,参数三:替换项,其中参数二、三需” “囊括)

​ $I([],[“”]):从捕获的字节中解压缩无符号整数(参数一:正则匹配项,参数二:“<” 或">"指定小端序或大端序)

softmatch命令:与match命令相似,不存在正则匹配信息处理

​ 命令格式:softmatch [服务名] [正则表达式]

​ 命令样例:softmatch ftp m/^220 [-.\w ]+ftp.*\r\n$/i

ports命令:指定一个Probe命令的的识别端口

​ 命令格式:ports [端口],[端口]

​ 命令样例:ports 111,4045,32750-32810,38978

sslports命令:同ports命令用法相同,区别在于指定端口服务经过SSL包装

​ 命令格式:sslports [端口] [端口]

​ 命令样例:sslports 443

totalwaitms命令:指定服务默认超时时间

​ 命令格式:totalwaitms [毫秒]

​ 命令样例:totalwaitms 6000

tcpwrappedms命令:仅用于空包探测,服务在此超时前断开连接,标记为tcpwrapped,否则一切照常进行

​ 命令格式:tcpwrappedms [毫秒]

​ 命令样例:tcpwrappedms 3000

rarity命令:指定指纹的少见等级,越少见等级越高,等级越高用到的可能性越小,nmap使用时需指定服务扫描强度

​ 命令格式:rarity [等级]

​ 命令样例:rarity 6

fallback命令:当前probe指令无法匹配的命令进行回退操作,匹配回退的probe扫描

​ 命令格式:fallback [probe扫描]

​ 命令样例:fallback GetRequest

Nmap服务指纹编辑要点调研简述

​ 文件运行:必须包含probe命令和match命令

你可能感兴趣的:(正则表达式)