Nmap Scripting是Nmap最好的功能之一。Nmap的脚本对渗透测试者是非常有用的,因为他们可以节省很多的时间与操作。在写这篇文章时,Nmap Scripting引擎已经超过了400个脚本,并且你也可以构造你自己的脚本,而且每个人都可以构造脚本,提交到脚本引擎中来帮助社区中的渗透测试人员。

Nmap Scripting

Nmap Scripting是Nmap最好的功能之一。Nmap的脚本对渗透测试者是非常有用的,因为他们可以节省很多的时间与操作。在写这篇文章时,Nmap Scripting引擎已经超过了400个脚本,并且你也可以构造你自己的脚本,而且每个人都可以构造脚本,提交到脚本引擎中来帮助社区中的渗透测试人员。 Nmap脚本实现许多不同的功能,从漏洞扫描到利用,从恶意软件检测到暴力破解,无所不包。在这小节中,我们将讨论一些好用的Nmap脚本和他们的用法:

smb-check-vulns

这是一个用于检测以下漏洞的重要脚本:

1.MS08-067 Windows vulnerability that can be exploited 2.Conficker malware on the target machine 3.Denial of service vulnerability of Windows 2000 4.MS06-025 Windows vulnerability 5.MS07-029 Windows vulnerability

它可以非常容易的在目标机器发现以上漏洞,并且你可以通过Metasploit很容易的利用这些漏洞。

Http-enum

如果你想在web server中枚举出web站点的目录,这个Nmap脚本可以帮你很好的达到这个目的。http-enum脚本也可以发现打开的端口和每个端口软件的版本。

samba-vuln-cve-2012-1182

这个脚本可以用于查看目标机器是否存在Samba堆溢出CVE-2012-1187。

smtp-strangeport

许多机构在运行SMTP服务时,考虑到安全的因素,没有使用默认端口。Smtp-strangeport是一个可以判断SMTP是否运行在默认端口的脚本

http-php-version

顾名思义,这个脚本可以从web server获得PHP版本信息。这个软件版本信息对于渗透测试人员发现漏洞很重要,所以这个脚本对于web应用程序渗透测试非常有帮助。

Nmap脚本引擎包含很多你实际中遇到的软件平台的测试脚本。例如:如果你想对一个基于WordPress的web站点进行渗透测试,那么你可以使用以下Nmap脚本。

1.http-wordpress-plugins 2.http-wordpress-enum 3.http-wordpress-brute

dns-blacklist

这是我所见过的用户发现IP地址黑名单的最好的脚本。你需要做的只是提供IP地址,然后脚本会检查DNS反垃圾邮件和代理黑名单

PORT命令起作用,可以制造是别人进行端口扫描,扫描任何FTP服务器所能访问的主机,绕过防火墙和端口过滤器,但还是存在一些危险的,如果对方登陆到了你的这个匿名FTP服务器上,从日志查找到相应的匿名FTP连接,从而知道你的IP地址,这样就直接暴露了。

nmap -sI 空闲扫描,主要是欺骗端口扫描的源地址。

nmap -f 可以把TCP头分片的IP报文进行一些隐蔽的扫描。不完整的TCP报文不被防火墙阻塞也不被IDS检测到。

nmap-D

选择几台肉鸡,并使用-D标志在命令行中指定它们。namp通过诱骗的IP地址来进行欺骗式端口扫描,而系统管理员可以同时看到不同的端口扫描,而只有一个是真实的,很好的保护了自己。

os指纹识别

这个是nmap最有用的功能之一,就是可以鉴别远程主机。通过简单的执行网络扫描,nmap通常可以告诉你远程主机所运行的OS,甚至详细到版本号。当你指定-Q标志时,nmap将用几种不同的技术从主机返回IP报文中寻找这些鉴别信息。通过发送特别设计的TCP和UDP头,nmap可以得到远程主机对TCP/IP协议栈的处理方法。它将分析结果与保存在文件中的已知特征信息进行比较。

OS鉴别选项也可以让nmap对TCP报文进行分析以决定另外一些信息,如系统的启动时间,TCP序列号,预测的序列号使我们更容易截获报文并猜测序列号从而伪造TCP连接。

nmap命令使用详细解释

-P0 -PT -PS -PU -PE -PP -PM -PB 当nmap进行某种类型的端口或协议扫描时,通常都会尝试先ping 主机,这种尝试可使nmap不会浪费时间在那些未开机的主机上,但是许多主机与防火墙会阻塞ICMP报文,我们希望能通过控制使用。

-P0 告诉nmap不ping 主机,只进行扫描

-PT 告诉nmap使用TCP的ping

-PS 发送SYN报文。

-PU 发送一个udp ping

-PE 强制执行直接的ICMP ping

-PB 这是默认类型,可以使用ICMP ping 也可以使用TCP ping .

-6 该标志允许IPv6支持

-v -d 使用-v选项可得到更详细的输出,而-d选项则增加调试输出。

-oN 按照人们阅读的格式记录屏幕上的输出,如果是在扫描多台机器,则该选项很有用。

-oX 以xml格式向指定的文件记录信息

-oG 以一种易于检索的格式记录信息,即每台主机都以单独的行来记录所有的端口和0s信息。

-oA 使用为基本文件名,以普通格式(-oN)、XML格式(-oX)和易于检索的格式(-oG)jilu xinxi

-oM 把输出格式化为机器可阅读的文件

-oS 把输出进行傻瓜型排版

--resume如果你取消了扫描,但生成了供人或者供机器阅读的文件,那么可以把该文件提供给nmap继续让它扫描。

-iR-iL可以不在命令行中指定目标主机,而是使用-iR选项随即产生待扫描的主机,或者使用-iL选项从一个包含主机名或IP地址列表的文件中读取目标主机,这些主机名或IP地址使用空格、制表符或换行隔开。

-F nmap只扫描在nmap内建的服务文件中已知的端口,如果不指定该选项,nmap将扫描端口1-1024及包含在nmap-services文件中的所有其他端口。如果用-sO选项扫描协议,nmap将用它内建的协议文件(nmap-protocols文件)而不是默认地扫描所有256个协议。

-A nmap使用所有的高级扫描选项

-p 参数可以是一个单独的端口、一个用逗号隔开的端口列表、一个使用“-”表示的端口范围或者上述格式的任意组合。如果没有指定该选项,nmap将对包含前1024个端口的所有端口进行一次快速扫描。

-e在多穴主机中,可以指定你用来进行网络通信的网络接口。

-g可以选择一个源端口,从该端口执行所有的扫描。

--ttlnmap其发送的任何报文在到中间路由器的跳后会失效。

--packet-trace 可以显示扫描期间nmap发送和接收的各个报文的详细列表,这对调试非常有用。要与-o选项之一联合使用,需要根权限,以将所有的数据记录到文件。

--scanflags可以使用这个选项手工的指定欲在扫描报文中设置的TCP标志。也可以指定TCP标志的OOred值的整数形式,或者标志的字符串表示形式。

以上介绍的就是nmap在windows下和unix中的命令介绍。

nmap -sS -A --script=smb-check-vulns -P0 192.168.1.40

nmap -sS -A --script=smb-check-vulns --script-args=unsafe=1 -P0 192.168.1.40

nmap -PN -T4 -p139,445 -n -v --script smb-check-vulns,smb-os-discovery --script-args=unsafe=1 -P0 192.168.1.40