无拘无束的猪

一只无拘无束会飞的猪
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

网络扫描

Posted on 2015-05-12 09:17  无拘无束的猪  阅读(503)  评论(0编辑  收藏  举报

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指纹识别远程操作系统,以及相反身份认证扫描等。Nmap同时支持性能和可靠性统计,例如:动态延时计算,数据包超时和转发,并行端口扫描,通过并行ping侦测下层主机。该版本需要Winpcap V2.1 以上支持。
Namp是在免费软件基金会的GNU General Public License (GPL)下发布的,可免费下载.
入侵过程描述:
  首先要有一套完整的计划.在入侵系统之前,黑客必须先找到一台目标主机,并查出哪些端口在监听之后才能进行入侵.
  找出网络上的主机,测试哪些端口在监听,这些工作通常是由扫描来实现的.扫描网络是黑客进行入侵的第一步.通过使用扫描器(如Nmap)扫描网络,寻找存在漏洞的目标主机.一旦发现了有漏洞的目标,接下来就是对监听端口的扫描.Nmap通过使用TCP协议栈指纹准确地判断出被扫主机的操作系统类型.
  在目标机上,Nmap运行灵活.使用Nmap进行单机扫描或是整个网络的扫描很简单,只要将带有"/mask"的目标地址指定给Nmap即可.地址是"victim/24", 则目标是c类网络,地址是"victim/16", 则目标是B类网络.
  另外,Nmap允许你使用各类指定的网络地址,比如 192.168.7.*,是指192.168.7.0/24, 或 192.168.7.1,4,8-12,对所选子网下的主机进行扫描.
Ping扫描
Ping扫描也就是 Ping Sweeping
入侵者使用Nmap扫描整个网络寻找目标.通过使用" -sP"命令,进行ping扫描.缺省情况下,Nmap给每个扫描到的主机发送一个ICMP echo和一个TCP ACK, 主机对任何一种的响应都会被Nmap得到.
举例:扫描192.168.7.0网络:
# nmap -sP 192.168.7.0/24
Starting nmap V. 2.12 by Fyodor
Host (192.168.7.11) appears to be up.
Host (192.168.7.12) appears to be up.
Host (192.168.7.76) appears to be up.
Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 1 second
如果不发送ICMP echo请求,但要检查系统的可用性,这种扫描可能得不到一些站点的响应.在这种情况下,一个TCP"ping"就可用于扫描目标网络.
一个TCP"ping"将发送一个ACK到目标网络上的每个主机.网络上的主机如果在线,则会返回一个TCP RST响应.使用带有ping扫描的TCP ping选项,也就是"PT"选项可以对网络上指定端口进行扫描(本文例子中指的缺省端口是80(http)号端口),它将可能通过目标边界路由器甚至是防火墙.注意,被探测的主机上的目标端口无须打开,关键取决于是否在网络上.
# nmap -sP -PT80 192.168.7.0/24
TCP probe port is 80
Starting nmap V. 2.12 by Fyodor
Host (192.168.7.11) appears to be up.
Host (192.168.7.12) appears to be up.
Host (192.168.7.76) appears to be up.
Nmap run completed -- 256 IP addresses (3 hosts up) scanned in 1 second
当潜在入侵者发现了在目标网络上运行的主机,下一步是进行端口扫描.
Nmap支持不同类别的端口扫描TCP连接, TCP SYN, Stealth FIN, Xmas Tree,Null和UDP扫描.
端口扫描
Port Scanning
一个攻击者使用TCP连接扫描很容易被发现,因为Nmap将使用connect()系统调用打开目标机上相关端口的连接,并完成三次TCP握手.黑客登录到主机将显示开放的端口.一个tcp连接扫描使用"-sT"命令如下.
# nmap -sT 192.168.7.12
Starting nmap V. 2.12 by Fyodor
Interesting ports on (192.168.7.12):
Port State Protocol Service
7 open tcp echo
9 open tcp discard
13 open tcp daytime
19 open tcp chargen
21 open tcp ftp
...
Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds
隐蔽扫描
Stealth Scanning
如果一个攻击者不愿在扫描时使其信息被记录在目标系统日志上,TCP SYN扫描可帮你的忙,它很少会在目标机上留下记录,三次握手的过程从来都不会完全实现.通过发送一个SYN包(是TCP协议中的第一个包)开始一次SYN的扫描.任何开放的端口都将有一个SYN|ACK响应.然而,攻击者发送一个RST替代ACK,连接中止.三次握手得不到实现,也就很少有站点能记录这样的探测.如果是关闭的端口,对最初的SYN信号的响应也会是RST,让NMAP知道该端口不在监听."-sS"命令将发送一个SYN扫描探测主机或网络:
# nmap -sS 192.168.7.7
Starting nmap V. 2.12 by Fyodor
Interesting ports on saturnlink.nac、net (192.168.7.7):
Port State Protocol Service
21 open tcp ftp
25 open tcp smtp
53 open tcp domain
80 open tcp http
...
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second
虽然SYN扫描可能不被注意,但他们仍会被一些入侵检测系统捕捉.Stealth FIN,Xmas树和Null scans可用于躲避包过滤和可检测进入受限制端口的SYN包.这三个扫描器对关闭的端口返回RST,对开放的端口将吸收包.一个 FIN "-sF"扫描将发送一个FIN包到每个端口.
然而Xmas扫描"-sX"打开FIN, URG和PUSH的标志位,一个Null scans "-sN"关闭所有的标志位.因为微软不支持TCP标准,所以FIN, Xmas Tree和Null scans在非微软公司的操作系统下才有效.
 
linux下的NMap

NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工 具包,其基本功能有三个,一是探测一组主机是否在线;其次是扫描主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操 作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。 
  进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):

nmap -sP 192.168.1.0/24

仅列出指定网络上的每台主机,不发送任何报文到目标主机:

nmap -sL 192.168.1.0/24

探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):

nmap -PS 192.168.1.234

使用UDP ping探测主机:

nmap -PU 192.168.1.0/24

使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:

nmap -sS 192.168.1.0/24

当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:

nmap -sT 192.168.1.0/24

UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:

nmap -sU 192.168.1.0/24

确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):

nmap -sO 192.168.1.19

探测目标主机的操作系统:

nmap -O 192.168.1.19

nmap -A 192.168.1.19

另外,nmap官方文档中的例子:

nmap -v scanme.nmap.org

这个选项扫描主机scanme.nmap.org中 所有的保留TCP端口。选项-v启用细节模式。

nmap -sS -O scanme.nmap.org/24

进行秘密SYN扫描,对象为主机Saznme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。

nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127

进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。

nmap -v -iR 100000 -P0 -p 80

随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段 发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因 此使用-P0禁止对主机列表。

nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20

扫描4096个IP地址,查找Web服务器(不ping),将结果以Grep和XML格式保存。

host -l company.com | cut -d -f 4 | nmap -v -iL -

进行DNS区域传输,以发现company.com中的主机,然后将IP地址提供给 Nmap。上述命令用于GNU nux -- 其它系统进行区域传输时有不同的命令。

其他选项:

-p <port ranges> (只扫描指定的端口)

单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口又扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。

-F (快速 (有限的端口) 扫描)