端口扫描工具nmap

摘要:
Nmap是使用最广泛的外国端口扫描工具之一。Nmap可以在tcp消息中为端口扫描执行一些秘密操作。有时,nmap会告诉我们端口已过滤,这意味着防火墙或端口过滤器会干扰nmap,使其无法准确确定端口是打开还是关闭。有些防火墙只能过滤掉传入的连接。Nmap-D选择多个肉鸡,并使用-D标志在命令行上指定它们。通过简单地执行网络扫描,nmap通常可以告诉您远程主机正在运行的操作系统,甚至是版本号。
nmap 使用介绍
nmap是目前为止最广为使用的国外端口扫描工具之一。我们可以从[url]http://www.insecure.org/[/url]进行下载,可以很容易的安装到Windows和unix操作系统中,包括mac os x(通过configure、make 、make install等命令)也可以直接从http://www.insecure.org/下载windows二进制(包括所需要的winpcap)也可以从http://www.nmapwin.org/获得nmap的图形windows。
扫描主机
$ nmap -sT 192.168.1.18
Starting nmap 3.48([url]http://www.insecure.org/nmap/[/url])at 2007-10-10 18:13 EDT
Interesting ports on gamebase(192.168.1.18)
port                  state                serverice
22/tcp              open                ssh
111/tcp            open                sunrpc
 ..........
$ nmap -sR 192.168.1.18
Startingnmap 3.48([url]http://www.insecure.org/nmap/[/url])at 2007-10-10 18:13 EDT
Interesting ports on gamebase(192.168.1.18)
port                  state                serverice
22/tcp              open                ssh
111/tcp            open                sunrpc
 ..........
我们可以使用ping扫描的方法(-sP),与fping的工作方式比较相似,它发送icmp回送请求到指定范围的ip地址并等待响应。现在很多主机在扫描的时候都做了处理,阻塞icmp请求,这种情况下。nmap将尝试与主机的端口80进行连接,如果可以接收到响应(可以是syn/ack,也可以是rst),那么证明主机正在运行,反之,则无法判断主机是否开机或者是否在网络上互连。
扫描tcp端口
这里-sR是怎样在打开的端口上利用RPC命令来判断它们是否运行了RPC服务。
nmap可以在进行端口扫描的tcp报文来做一些秘密的事情。首先,要有一个SYN扫描(-sS),它只做建立TCP连接的前面一些工作,只发送一个设置SYN标志的TCP报文,一个RESET报文,那么nmap假设这个端口是关闭的,那么就不做任何事情了。如果接收到一个响应,它并不象正常的连接一样对这个报文进行确认,而是发送一个RET报文,TCP的三次握手还没有完成,许多服务将不会记录这次连接。
有的时候,nmap会告诉我们端口被过滤,这意味着有防火墙或端口过滤器干扰了nmap,使其不能准确的判断端口是打开还是关闭的,有的防火墙只能过滤掉进入的连接。
扫描协议
如果试图访问另一端无程序使用的UDP端口,主机将发回一个icmp“端口不可达”的提示消息,IP协议也是一样。每个传输层的IP协议都有一个相关联的编号,使用最多的是ICMP(1)、TCP(6)和UDP(17)。所有的IP报文都有一个“协议”域用于指出其中的传输层报文头所使用的协议。如果我们发送一个没有传输层报文头的原始IP报文并把其协议域编号为130[该编号是指类似IPSEC协议的被称为安全报文外壳或SPS协议],就可以判断这个协议是否在主机上实现了。如果我们得到的是ICMP协议不可达的消息,意味着该协议没有被实现,否则就是已经实现了,用法为-sO.
隐蔽扫描行为
nmap给出了几个不同的扫描选项,其中一些可以配套着隐藏扫描行为,使得不被系统日志、防火墙和IDS检测到。提供了一些随机的和欺骗的特性。具体例子如下:
FTP反弹,在设计上,FTP自身存在一个很大的漏洞,当使用FTP客户机连接到FTP服务器时,你的客户机在TCP端口21上与FTP服务器对话,这个TCP连接称为控制连接。FTP服务器现在需要另一条与客户机连接,该连接称为数据连接,在这条连接上将传送实际的文件数据,客户机将开始监听另一个TCP端口上从服务器发挥的数据连接,接下来执行一个PORT命令到服务器,告诉它建立一条数据连接到客户机的IP地址和一个新打开的端口,这种操作方法称为主动传输。许多客户机使用网络地址转换或通过防火墙与外界连接,所以主动传输FTP就不能正常工作,因为由服务器建立的客户机的连接通常不允许通过。
被动传输是大多数FTP客户机和服务器所使用的方法,因为客户机既建立控制连接又建立数据连接,这样可以通过防火墙或NAT了。
FTP的PORT命令,用来告诉FTP连接的服务器,使得与刚刚打开的用于数据连接的端口之间建立一个连接。由于我们不仅指定端口而且指定连接所用的IP地址,所以客户端也可以通过PORT命令让服务器连接到任何地方。所以我们一样可以让nmap用这个方法进行防火墙穿透。nmap做的所有工作是与一台服务器建立一个主动模式的FTP连接,并发送一个包含它试图扫描的主机IP地址和端口号的PORT命令。
nmap -b aaa@ftp.target.com -p 6000 192.168.1.226
nmap 与ftp服务器的对话的例子:
server:220  target ftp server version 4 ready
client:user  anonymous
server: 331 Guest login ok ,send e-mail as password
client:pass 
server :230 login successful
client:PORT 192,168,1.226,23,112
server:200 PORT command successful
client:LIST
server:150 Opening ASCII connection for '/bin/ls'
server:226 Transfer complete
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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息easyui中的combobox小知识点~~下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Tomcat多实例集群架构 安全优化和性能优化

Tomcat多实例 复制tomcat目录 #将tar解压出来的tomcat复制出两个实例来cp -a /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat1 cp -a /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat2 修改多实例配置文件 #创建多实例的网页根...

面试官一上来就问我Chrome底层原理和HTTP协议(万字长文)

此文转载自:https://blog.csdn.net/qq_36232611/article/details/110367883 已发布到 程序员小灰 公号 前言有人说,如果你懂得浏览器的工作原理,你就能解决80%的前端难题。 是的,了解浏览器的工作原理,有助于你的工作;而了解TCP/IP 、HTTP等网络协议,更是对你未来的职业发展大有裨益。 下面,...

Socket编程 (一)

<<Linux 网络编程>>摘要           注意: 其中的大部分成员是网络字节序(大端字节序); 编程: 服务器先要做的事情: socket() 初始化Socket bind() 绑定本地端口 listen() 监听端口 accept() 响应客户端请求 一个例子   客户端(Windows 系统, Java...

从输入url到显示页面,都经历了什么?

我们在打开浏览器访问一个网站时 究竟都发生了什么 第一步:我们会在浏览器地址栏中输入一个url 第二步:浏览器会先查看浏览器缓存系统缓存 -> 路由器缓存 如果缓存中存有先前访问过的数据,则会直接显示在屏幕中;没有的话,则进行第三步操作 第三步:在发送http请求前,需要域名解析(DNS解析)【DNS域名系统】[可以将域名和IP地址相互映射的...

java Socket用法详解(转)

在客户/服务器通信模式中, 客户端需要主动创建与服务器连接的 Socket(套接字), 服务器端收到了客户端的连接请求, 也会创建与客户连接的 Socket. Socket可看做是通信连接两端的收发器, 服务器与客户端都通过 Socket 来收发数据. 这篇文章首先介绍Socket类的各个构造方法, 以及成员方法的用法, 接着介绍 Socket的一些选项的...

Python 启动 FastAPI 报错 Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试

启动FastAPI后端项目,发现报错:Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试 百度改问题时,发现Dajango项目也会出现同样的错误,简而言之,出现这个问题就是启动后端的端口被占用了打开cmd,输入下面代码,查看是什么应用占了端口 C:Userslqq>netstat -ano|findst...