安全测试12--使用nmap工具识别系统指纹信息
首先先发现活跃主机(在之前的文章中写过) nmap -sP 192.168.2.1/24
进行系统指纹识别
这里虽然没有识别出来系统类型,但是看到端口62078的监听服务是iphon-sync,所以可以推出这个系统应该是ios。这个端口是iphon中默认的wifi同步服务端口,但可能从未使用过此端口,所以可以将它关闭。
可以看出,工具推测此台电脑最有可能是windows 10操作系统。
指纹识别工具p0f
p0f是一款被动指纹识别工具,通过分析目标主机的数据包对主机上的操作系统进行识别,即便装有性能良好的防火墙也没有用。
官方提供的功能描述:
- 高度可扩展且极快地识别vanilla TCP连接的两个端点上的操作系统和软件 - 特别是在Nmap探测器被阻塞,速度太慢,不可靠或简单地引发警报的设置中。
- 测量系统正常运行时间和网络连接,距离(包括NAT或数据包过滤器后面的拓扑),用户语言首选项等。
- 自动检测连接共享/ NAT,负载平衡和应用程序级代理设置。
- 检测伪造声明性语句的客户端和服务器,例如X-Mailer或User-Agent。
选项列表:p0f [options] ['filter rule']
-i interface | 在指定的网络接口上侦听 |
-r 文件 | 从给定文件读取离线pcap数据 |
-p | 侦听界面置于混杂模式 |
-L | 列出所有可用的接口 |
-f 文件 |
列出所有可用的接口 |
-o 文件 | 将信息写入指定的日志文件 |
-s 名称 | 在命名的unix套接字上回答API查询 |
-u 用户 |
切换到指定的无特权帐户和chroot |
-d-fork |
切换到指定的无特权帐户和chroot |
-S 限制 | 并行API连接数限制(20) |
实例:首先使用wireshark抓包生成test.pcap
然后 p0f -r 下载/test.pcap -o p0f-result.log 进行分析
###截取的部分内容 .-[ 192.168.2.122/59278 -> 106.120.159.126/443 (syn) ]- | | client = 192.168.2.122/59278 //客户端地址 | os = Linux 3.11 and newer //系统 | dist = 0 //矢量距离 | params = none | raw_sig = 4:64+0:0:1460:mss*20,7:mss,sok,ts,nop,ws:df,id+:0 | `---- .-[ 192.168.2.122/59278 -> 106.120.159.126/443 (mtu) ]- | | client = 192.168.2.122/59278 | link = Ethernet or modem //接口类型 | raw_mtu = 1500 //最大包长度 | `---- ### 其中并不全 ### 有时还有 app= 表示应用 lang= 表示语言类型
服务指纹识别
这里识别的服务指纹信息包括服务的端口、服务名和版本
nmap中的nmap-services记录了大约2200个知名服务端口的数据库,nmap将尽力去发现这些。但是并不能保证发现全部的服务,比如更改了服务端口就可能发现不了服务的正确端口了。
选项列表:
-sV 版本检测 --allports 扫描全部端口 --version-intensity 设置版本扫描强度,0到9之间,越大强度和可能性越高,但是速率也会越小,因此默认为7,当然也可以使用这个来更改 --version-light 轻量版的扫描,也就相当于把扫描强度设为2 --version-all 尝试所有探针,也就相当于吧扫描强度设为9 --version-trace 跟踪扫描过程,不光显示最终结果,也显示调试过程的信息 实例: nmap -sV 192.168.2.100
可以看到打开的端口,服务类型和服务版本
服务枚举工具Amap
被形容为下一代扫描工具,主要用于识别运行在某一些指定端口上的应用程序。
通常的使用方法 amap -bq ip port 例:amap -bq 192.168.2.100 1-1080
语法:amap [-A | -B | -P | -W] [-1buSRHUdqv] [[ - m] -o <file>] [-D <file>] [-t / -T sec] [-c cons] [-C retries] [-p proto] [-i <file>] [目标端口[端口] ] ...]
模式:
-A地图应用程序:发送触发器并分析响应(默认)
-B只需抓取横幅,不发送触发器
-P无横幅或应用程序内容 - 是(完全连接)端口扫描程序
选项:
-1仅发送触发到端口,直到第一次识别。Speeeeed!
-6使用IPv6而不是IPv4
-b打印响应的ascii标志
-i FILE Nmap机器可读输出文件从-u 读取端口
命令行上指定的端口是UDP(默认为TCP)
-R不要识别RPC服务
-H不要发送标记为可能有害的应用程序触发器
-U不要转储无法识别的响应(更好地用于脚本)
-d转储所有响应
-v详细模式,使用两次(或更多!)进行调试(不推荐-
q不报告关闭的端口,也不要将它们打印为unidentified
-o FILE [-m]将输出写入文件FILE,-m创建机器可读输出
-c CONS要进行的并行连接数量(默认为32,最大256)
-C RETRIES连接超时时重新连接的次数(请参阅-T)(默认值为3)
-T SEC连接尝试时连接超时(以秒为单位)(默认值为5)
-t SEC响应等待超时(以秒为单位)(默认值为5)
-p PROTO仅发送此协议的触发器(例如ftp)
目标端口要扫描的目标地址和端口(除-i之外)
amap是用于识别目标端口上的应用程序协议的工具。
注意:此版本未使用SSL支持进行编译!
用法提示:建议使用选项“-bqv”,为快速/紧急检查添加“-1”。实例:amap -bq 192.168.2.100 1-1080
有点多,所以截取了有特征的一部分
![]()
可以看到,有些端口可以链接,有些不可以,有些可以分析出什么服务在监听端口,比如图中的http, apache , IIS
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步