/中文/
/英文/
/简体中文/
/英文/
//
/中文/
/简体中文/
/简体中文/
/简体中文/
/中文/
Nmap是一款开放源代码的网络探测和安全审核的工具(网络的端口扫描工具)。它的设计目标是快速地扫描大型网络,当然用它扫描单个主机也没有问题。Nmap以新颖的方式使用原始IP报文来发现网络上有哪些主机,那些主机提供什么服务(应用程序名和版本),那些服务运行在什么操作系统(包括版本信息), 它们使用什么类型的报文过滤器/防火墙,以及一堆其它功能。虽然Nmap通常用于安全审核,许多系统管理员和网络管理员也用它来做一些日常的工作,比如查看整个网络的信息,管理服务升级计划,以及监视主机和服务的运行。
Nmap是一款针对大型网络的端口扫描工具,尽管它也适用于单机扫描。在不同情况下,你可能需要隐藏扫描、越过防火墙扫描或者使用不同的协议进行扫描,比如:UDP、TCP、ICMP 等。它支持:Vanilla TCP connect 扫描、TCP SYN(半开式)扫描、TCP FIN、Xmas、或NULL(隐藏)扫描、TCP ftp代理(跳板)扫描、SYN/FIN IP 碎片扫描(穿越部分数据包过滤器)、TCP ACK和窗口扫描、UDP监听ICMP端口无法送达扫描、ICMP扫描(狂ping)、TCP Ping扫描、直接RPC扫描(无端口映射)、TCP/IP指纹识别远程操作系统,以及相反身份认证扫描等。Namp同时支持性能和可靠性统计,例如:动态延时计算,数据包超时和转发,并行端口扫描,通过并行ping侦测下层主机。
Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。“所感兴趣的端口表格”是其中的关键。那张表列出端口号,协议,服务名称和状态。状态可能是 open(开放的),filtered(被过滤的), closed(关闭的),或者unfiltered(未被过滤的)。 Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。 filtered(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知 它是 open(开放的) 还是 closed(关闭的)。 closed(关闭的) 端口没有应用程序在它上面监听,但是他们随时可能开放。 当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是 unfiltered(未被过滤的) 如果Nmap报告状态组合 open|filtered 和 closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。 当要求进行版本探测时,端口表也可以包含软件的版本信息。当要求进行IP协议扫描时 (-sO),Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。
1) 获取远程主机的端口信息和识别主机操作系统(Get info about remote host ports and OS detection)nmap -sS -P0 -sV -O <target>
< target > 可以是独立IP, 一个主机名 或一个子网
-sS TCP SYN扫描(也叫半开或隐蔽扫描)
-P0 选项允许你关闭ICMP ping
-sV 选项启用版本检测
-O 表示试图识别远程操作系统
其它选项:
-A 选项启用OS指纹和版本检测
-v 使用两次-v查看细节信息
nmap -sS -P0 -A -v < target >
2) 获取开放指定端口的服务器列表(Get list of servers with a specific port open)
nmap -sT -p 80 -oG – 192.168.1.* | grep open
改变-p的参数可指定端口,查看nmap主页寻找指定地址范围的不同方式。
3) 获取网络中所有存活的主机:Find all active IP addresses in a network
nmap -sP 192.168.0.*
还有许多其它的选项,这个只是一个简单的例子。
另一个选项:
nmap -sP 192.168.0.0/24
针对特定子网
4) ping一个范围内的IP地址(Ping a range of IP addresses)
nmap -sP 192.168.1.100-254
namp接受多种类型的地址符号,多个目录/范围等。
5)寻找一个给定子网中未使用的ip(Find unused IPs on a given subnet)
nmap -T4 -sP 192.168.2.0/24 && egrep “00:00:00:00:00:00″ /proc/net/arp
6) 扫描本地网络中的conficker病毒(Scan for the Conficker virus on your LAN ect.)
nmap -PN -T4 -p139,445 -n -v –script=smb-check-vulns –script-args safe=1 192.168.0.1-254
可以把192.168.0.1-256替换成你想要检测的地址。
7) 扫描网络中的非法接入点(Scan Network for Rogue APs.)
nmap -A -p1-85,113,443,8080-8100 -T4 –min-hostgroup 50 –max-rtt-timeout 2000 –initial-rtt-timeout 300 –max-retries 3 –host-timeout 20m –max-scan-delay 1000 -oA wapscan 10.0.0.0/8
我使用这个在非常巨大的网络中成功找出多个非法接入点。
8) 在扫描时使用诱骗技术避免引起管理员的注意(Use a decoy while scanning ports to avoid getting caught by the sys admin)
sudo nmap -sS 192.168.0.10 -D 192.168.0.2
扫描目标设备/计算机(192.168.0.10)的开放端口并设置一个诱骗地址(192.168.0.2),在目标的安全日志中将会显示诱骗地址而不是你的IP地址。诱骗地址必须是存活的,检查目标主机的安全日志( /var/log/)确定它是否工作。
9) 列出一个子网中的DNS反向记录(List of reverse DNS records for a subnet)
nmap -R -sL 209.85.229.99/27 | awk ‘{if($3==”not”)print”(“$2″) no PTR”;else print$3″ is “$2}’ | grep ‘(‘
这个命令是使用nmap字在子网中查询DNS反向信息。它会生成子网中的ip地址列表和相应的PTR纪录。你可以在CDIR符号中输入子网 (i.e. /24 for a Class C),如果你需要查询一个特定的DNS服务器,你可以在-sL后边添加“–dns-servers x.x.x.x”,一些安装版的namp可能需要sudo,我也希望awk是大多数发行版的标准。
10) 你的网络中有多少Linux和Windows设备?(How Many Linux And Windows Devices Are On Your Network?)
sudo nmap -F -O 192.168.0.1-255 | grep “Running: ” > /tmp/os; echo “$(cat /tmp/os | grep Linux | wc -l) Linux device(s)”; echo “$(cat /tmp/os | grep Windows | wc -l) Window(s) devices”
除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。