Nmap工具参数介绍

本文曾经在社团公众号发表过,是笔者的文章的一些老梗了。

这周时间确实过于仓促,时间不是太够用于写一些高质量文章。

作为弥补这次的粗糙,也为巩固笔者的基础指示,下周的博客会写一些关于PWN的文章,这次就简单带大家看看Nmap工具的参数介绍。


2018/3/7

Nmap的简单使用

Nmap主要用来扫描端口和网络状态的。关于Nmap有不少电子书,使用手册,其功能强大,使用之广。本文简单写了一些怎么使用。

实验环境:pc的ip:10.165.216.196,子网掩码255.255.192.0

虚拟机:

Kali linux的ip:10.165.219.201

Windows 2003:10.165.219.241

-vv 现实详细的扫描过程,加了这个参数,扫描会写得很详细。-v和-vv显示的详细程度不同

注意:Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.但是它需要root/administrator权限

Tcp SYN Scan (sS) 这是一个基本的扫描方式,它被称为半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势

扫描单一的一个主机:nmap 10.165.219.241

扫描整个子网:nmap 10.165.219.241/24

上面的结果,扫描了在/24的子网里(没有包含pc)有两个存活,扫了win2003的端口,但是201ip的没有开端口

扫描多个目标,命令如下:nmap 10.165.219.20110.165.219.241

扫描一个范围内的目标:nmap10.165.219.201-10.165.219.241

我感觉这个命令是错的

如果你有一个ip地址列表,将这个保存为一个txt文件,和namp在同一目录下,扫描这个txt内的所有主机,命令如下:

代码如下:

#nmap -iL target.txt

这个没试

扫描特定主机上的80,21,23端口,命令如下

代码如下:(图示ip来自网络)

#nmap-p80,21,23192.168.1.1

这个参数有利于作为针对攻击

参数-sS就是tcp syn的半开放扫描

之前没写扫描类型的就是默认着这种参数

TCP同步扫描(TCPSYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上有我们的操作系统内核自动完成的。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包

Tcp connect() scan(sT)如果不选择SYN扫描,TCP connect()扫描就是默认的扫描模式.不同于Tcp SYN扫描,Tcpconnect()扫描需要完成三次握手,并且要求调用系统的connect().Tcpconnect()扫描技术只适用于找出TCP和UDP端口.

参数:-sT

Udp scan(sU)顾名思义,这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的.

参数:-sU

Udp的端口。Nmap默认扫描差不多1000以内的,这个可以自己百度设置扫描数量

PING扫描不同于其它的扫描方式,因为它只用于找出主机是否是存在在网络中的.它不是用来发现是否开放端口的.PING扫描需要ROOT权限,如果用户没有ROOT权限,PING扫描将会使用connect()调用.

参数:-sP

这个参数不是用来发现端口的,有人把它叫做ping扫射。

举例的话,nmap -sP 172.16.15.0/24

只是用来看是否存活

nmap -sP 192.168.1.100-254

扫描制定范围内的ip是否存活

版本检测(sV)

版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCPSYN扫描开放了哪些端口.

参数:-sV

 

 

apache和php版本确实正确

Idlescan是一种先进的扫描技术,它不是用你真实的主机Ip发送数据包,而是使用另外一个目标网络的主机发送数据包.

代码如下:

#nmap-sL192.168.1.6192.168.1.1

Idlescan是一种理想的匿名扫描技术,通过目标网络中的192.168.1.6向主机192.168.1.1发送数据,来获取192.168.1.1开放的端口

有需要其它的扫描技术,如FTPbounce(FTP反弹),fragmentationscan(碎片扫描),IPprotocolscan(IP协议扫描),以上讨论的是几种最主要的扫描方式.

笔者实验如下:

感觉比较失败的扫描命令

Nmap的OS检测(O)

Nmap最重要的特点之一是能够远程检测操作系统和软件,Nmap的OS检测技术在渗透测试中用来了解远程主机的操作系统和软件是非常有用的,通过获取的信息你可以知道已知的漏洞。Nmap有一个名为的nmap-OS-DB数据库,该数据库包含超过2600操作系统的信息。Nmap把TCP和UDP数据包发送到目标机器上,然后检查结果和数据库对照。

Nmap的首次发现开放的端口,然后发送数据包发现远程操作系统。操作系统检测参数是O(大写O)

从上图可以看到os的扫描,win2003

FINscan(sF)

有时候TcpSYN扫描不是最佳的扫描模式,因为有防火墙的存在.目标主机有时候可能有IDS和IPS系统的存在,防火墙会阻止掉SYN数据包。发送一个设置了FIN标志的数据包并不需要完成TCP的握手.

FIN扫描也不会在目标主机上创建日志(FIN扫描的优势之一).个类型的扫描都是具有差异性的,FIN扫描发送的包只包含FIN标识,NULL扫描不发送数据包上的任何字节,XMAS扫描发送FIN、PSH和URG标识的数据包.

参数:-sF

-sF-sX-sN秘密FIN数据包扫描、圣诞树(XmasTree)、空(Null)扫描模式:即使SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视,而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC793第64页)。FIN扫描使用暴露的FIN数据包来探测,而圣诞树扫描打开数据包的FIN、URG和PUSH标志。不幸的是,微软决定完全忽略这个标准,另起炉灶。所以这种扫描方式对Windows95/NT无效。不过,从另外的角度讲,可以使用这种方式来分别两种不同的平台。如果使用这种扫描方式可以发现打开的端口,你就可以确定目标注意运行的不是Windows系统。如果使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的,而使用SYN扫描显示有打开的端口,你可以确定目标主机可能运行的是Windwos系统。现在这种方式没有什么太大的用处,因为nmap有内嵌的操作系统检测功能。还有其它几个系统使用和windows同样的处理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在应该抛弃数据包时,以上这些系统都会从打开的端口发出复位数据包。 

 

Nmap的操作系统指纹识别技术:

设备类型(路由器,工作组等)运行(运行的操作系统)操作系统的详细信息(操作系统的名称和版本)网络距离(目标和攻击者之间的距离跳)

如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。

代码如下:

#nmap-O-PN192.168.1.1/24

以上命令告诉发信主机远程主机是存活在网络上的,所以没有必要发送ping请求,使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现.

Nmap的操作系统检测的基础是有开放和关闭的端口,如果OSscan无法检测到至少一个开放或者关闭的端口,会返回以下错误:

代码如下:

Warning:OSScanresultsmaybeunreliablebecausewecouldnotfindatleast1openand1closedport

OSScan的结果是不可靠的,因为没有发现至少一个开放或者关闭的端口

这种情况是非常不理想的,应该是远程主机做了针对操作系统检测的防范。

同时启用操作系统指纹识别和版本检测

参数:-A

看起来写得很详细,netbios名字,os,tcp端口,系统开启时间,计算机名

-sA

ACK扫描:这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下,这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序,只是阻塞进入的SYN包。这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。注意,nmap通常不输出unfiltered的端口,所以在输出中通常不显示所有被探测的端口。显然,这种扫描方式不能找出处于打开状态的端口。

Unfiltered就是   未被过滤  的意思

-sW

对滑动窗口的扫描:这项高级扫描技术非常类似于ACK扫描,除了它有时可以检测到处于打开状态的端口,因为滑动窗口的大小是不规则的,有些操作系统可以报告其大小。这些系统至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64UNIX、DG/UX、OpenVMS、DigitalUNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS4.x、Ultrix、VAX、VXWORKS。从nmap-hackers邮件3列表的文档中可以得到完整的列表。

-sR

RPC扫描。这种方法和nmap的其它不同的端口扫描方法结合使用。选择所有处于打开状态的端口向它们发出SunRPC程序的NULL命令,以确定它们是否是RPC端口,如果是,就确定是哪种软件及其版本号。因此你能够获得防火墙的一些信息。诱饵扫描现在还不能和RPC扫描结合使用。

-P0

在扫描之前,不必ping主机。有些网络的防火墙不允许ICMPecho请求穿过,使用这个选项可以对这些网络进行扫描。microsoft.com就是一个例子,因此在扫描这个站点时,你应该一直使用-P0或者-PT80选项。

-PT

扫描之前,使用TCPping确定哪些主机正在运行。nmap不是通过发送ICMPecho请求包然后等待响应来实现这种功能,而是向目标网络(或者单一主机)发出TCPACK包然后等待回应。如果主机正在运行就会返回RST包。只有在目标网络/主机阻塞了ping包,而仍旧允许你对其进行扫描时,这个选项才有效。对于非root用户,我们使用connect()系统调用来实现这项功能。使用-PT来设定目标端口。默认的端口号是80,因为这个端口通常不会被过滤。

-PS

对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)。

-PI

设置这个选项,让nmap使用真正的ping(ICMPecho请求)来扫描目标主机是否正在运行。使用这个选项让nmap发现正在运行的主机的同时,nmap也会对你的直接子网广播地址进行观察。直接子网广播地址一些外部可达的IP地址,把外部的包转换为一个内向的IP广播包,向一个计算机子网发送。这些IP广播包应该删除,因为会造成拒绝服务攻击(例如smurf)。

-D

这个参数好像可以伪造地址,可配合其他参数使用

RPC鉴别: nmap -sS -sR192.168.0.1 Linux上的portmap就是一个简单的RPC服

务,监听端口为111(默认)

笔者目前不太懂这个,但是实验图片如下图:

里面有一个WARNING,alias是  别名化 的意思。按照英文的字面意思,是说-sV这个参数已经代替了-sR了。

在某段子网上查找未占用的 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

在局域网上扫找 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

replace 192.168.0.1-256 with the IP’s you want to check.

扫描网络上的恶意接入点 rogue APs.

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

I’ve used this scan to successfully find many rogue APs on a very,

very large network.

使用诱饵扫描方法来扫描主机端口

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

Scan for open ports on the target device/computer (192.168.0.10) while

setting up a decoy address (192.168.0.2). This will show the decoy ip

address instead of your ip in targets security logs. Decoy address

needs to be alive. Check the targets security log at /var/log/secure

to make sure it worked.

为一个子网列出反向 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 '('

显示网络上共有多少台 Linux 及 Win 设备?

How Many Linux And Windows Devices Are On Your Network?

sudo nmap -F -O 192.168.1.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"

 


猜你喜欢

转载自blog.csdn.net/cried_cat/article/details/80205039