如何在Linux上使用Nmap安全扫描工具
nmap(Network Mapper)是一款开放源代码的网络探测和安全审核工具。它用于快速扫描一个网络和一台主机开放的端口,还能使用TCP/IP协议栈特征探测远程主机的操作系统类型。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。Nmap最初是用于unix系统的命令行应用程序。在2000年的时候,这个应用程序有了windows版本,可以直接安装使用。
Nmap命令的格式为:
Nmap [ 扫描类型 ... ] [ 通用选项 ] { 扫描目标说明 }
下面对Nmap命令的参数按分类进行说明:
1. 扫描类型
-sT TCP connect()扫描,这是最基本的TCP扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sS TCP同步扫描(TCP SYN),因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。
-sF,-sX,-sN 秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC 793第64页)。
-sP ping扫描,用ping方式检查网络上哪些主机正在运行。当主机阻塞ICMP echo请求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-sU 如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用此选项。
-sA ACK扫描,这项高级的扫描方法通常可以用来穿过防火墙。
-sW 滑动窗口扫描,非常类似于ACK的扫描。
-sR RPC扫描,和其它不同的端口扫描方法结合使用。
-b FTP反弹攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描。
2. 通用选项
-P0 在扫描之前,不ping主机。
-PT 扫描之前,使用TCP ping确定哪些主机正在运行。
-PS 对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。
-PI 设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。
-PB 这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-O 这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,也就是操作系统类型。
-I 打开nmap的反向标志扫描功能。
-f 使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。
-v 冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-S IP 在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况使用这个选项给出你的IP地址。
-g port 设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。
-oN 把扫描结果重定向到一个可读的文件logfilename中。
-oS 扫描结果输出到标准输出。
--host_timeout 设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。
--max_rtt_timeout 设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。
--min_rtt_timeout 设置nmap对每次探测至少等待你指定的时间,以毫秒为单位。
-M count 置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。
3. 扫描目标
目标地址 可以为IP地址,CIRD地址等。如192.168.1.2,222.247.54.5/24
-iL filename 从filename文件中读取扫描的目标。
-iR 让nmap自己随机挑选主机进行扫描。
-p 端口 这个选项让你选择要进行扫描的端口号的范围。如:-p 20-30,139,60000。
-exclude 排除指定主机。
-excludefile 排除指定文件中的主机。
举例:
nmap -v nmap -sS -O 192.168.1.23/24
nmap -sX -p 22,53,110,143,4564 128.210.*.1-127
nmap -v --randomize_hosts -p 80 *.*.2.3-5
nmap扫描工具的使用二 网络探测
Nmap的6种端口状态:
Open:开放状态
Closed:关闭状态
Filtered: 过滤状态(可能被过滤,可能网络阻塞)
Unfiltered:未被过滤状态(可以访问,但未知端口处于开放还是关闭状态)
Open|Filtered:开放还是过滤的
Closed|Filtered:不能确定端口事关闭还是被过滤的
-T 时序选项
-p|-F|-r 常用扫描方式
-sS TCP SYN扫描:(需要root权限)
-sT TCP连接扫描:完整三次握手,最基础最稳定的扫描方式
-sU UDP扫描(速度非常慢,一般用-p指定端口范围以节约时间)
-sN/sF/sX 隐蔽扫描
-sA TCP ACK扫描
-sW TCP窗口扫描
-sM TCP Maimon扫描
–scanflags 自定义TCP扫描
-sI 空闲扫描
-sO IP协议扫描
-b * FTP Bounce扫描
时序选项:
-T0(偏执的):非常慢的扫描,用于IDS逃避
-T1(鬼祟的):缓慢的扫描,用于IDS逃避
-T2(文雅的):降低速度以降低对带宽的消耗,一般不同
-T3(普通的):默认,根据目标的反应自动调整时间
-T4(野蛮的):快速扫描,常用,需要在很好的网络环境下进行扫描,请求可能会淹没目标
-T5(疯狂的):极速扫描,以牺牲准确度来提升扫描速度
例子:
(1)指定端口扫描:
nmap -p 80 192.168.20.16
如图,直接输入nmap -p 80 192.168.20.16的时候提示Host seems down。我们可以通过ping命令来确定网络的连通性,此处使用的命令是ping 192.168.20.16,发现可以ping通,即网络是通的, 使用Ctrl+z停止执行ping命令。 再使用nmap -p 80 192.168.20.16命令的时候就可以出现正确的结果了。
ping 192.168.20.16(使用Ctrl+z停止执行ping命令)
nmap -p 80-1000 192.168.20.16
(2)TCP SYN扫描:
ping 192.168.20.16(使用Ctrl+z停止执行ping命令)
nmap -sS 192.168.20.16
又称为半开放(需要root权限),常见扫描方式,扫描速度较快,由于未进行TCP连接,比较隐蔽,很难背防火墙或管理员发现
(3)隐蔽扫描
ping 192.168.20.16(使用Ctrl+z停止执行ping命令)
nmap -sN 192.168.20.16
-sN是Null扫描
ping 192.168.20.16(使用Ctrl+z停止执行ping命令)
nmap -sF 192.168.20.16
-sF是Fin扫描(发送FIN包)
ping 192.168.20.16(使用Ctrl+z停止执行ping命令)
nmap -sX 192.168.20.16
-sX是Xmas扫描(将数据包的FIN/PSH/URG都标记为1)
(4)TCP ACK扫描
ping 192.168.20.16(使用Ctrl+z停止执行ping命令)
nmap -sA 192.168.20.16
致命缺点:无法确定端口是否开放还是被过滤
FTP漏洞原理及利用 - 系统安全漏洞
文件传输协议(英文:File Transfer Protocol,缩写:FTP)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。FTP使用21号端口。
用户分类:1、Real用户 2、Administrator 3、匿名用户
FTP文件传输格式:1、ASCII 2、二进制格式
由于FTP没有禁止匿名用户,所以可以直接使用Anonymous用户直接登录FTP服务器。下面演示使用nc连接FTP。
1、使用nmap检查21端口,及扫描漏洞
2、使用匿名用户登录
vsftpd-2.3.4 手工触发漏洞:当进行FTP认证时,如果用户名USER中包含:),那么直接就触发监听6200端口的连接的shell。
1、使用nmap扫描FTP后门漏洞
2、使用nc触发vsftpd-2.3.4后面漏洞
另外打开一个终端利用该漏洞
1、修改配置文件,禁止匿名用户登录。
linux下修改/etc/vs:
anonymous_enable=NO
2、对特定漏洞进行打补丁,或者设置防火墙禁止连接后门端口。
查看medusa支持的破解模块
使用medusa暴力破解FTP
FTP协议中用于用户认证的过程中,客户端与服务器端是通过明文进行交互信息。验证FTP登录过程中明文传输用户名和密码。
1、利用arpspoof进行ARP嗅探,然后利用Wireshark进行流量嗅探。
利用metasploit创建反弹shell上传到FTP服务器。也可以利用setookit快速生成反弹shell。参考文章《 Metasploit实战:FTP漏洞利用 》
端口扫描原理及工具 - 安全工具篇
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部端口,不可见。例如计算机中的80端口、21端口、23端口等。
一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
因此,一个开放的端口代表一个提供的服务,不同的服务具有不同的端口号, 因此要对服务进行测试,首先要确定是否开放对应端口号 。
TCP端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。
1、周知端口
周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。
2、动态端口
动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。
3、注册端口
端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户安装的程序。
1、使用Nmap工具查找ip的tcp端口
-O :获取操作系统版本信息
2、使用Nmap工具查找udp端口
-sU :表示udp scan , udp端口扫描
-Pn :不对目标进行ping探测(不判断主机是否在线)(直接扫描端口)
对于udp端口扫描比较慢,扫描完6万多个端口需要20分钟左右
3、使用Nmap工具获取端口Banner
只会返回有Banner信息的,没有则不会返回。
4、使用Nmap嗅探服务版本信息
如果没有返回banner信息的,也可以使用该方法尝试嗅探服务版本信息。
5、利用nmap对目标进行完整测试
在针对内容测试时,有授权的情况下,可以利用nmap对目标进行完整测试
0条大神的评论