前言,这本书比我想象中的简单,但是一天就看了三百多页,因为真的没有什么很精彩的内容,所以前面四章就总结成这一篇的内容了,再者,真的一个nmap几乎秒了其他所有工具,所以直接介绍nmap,netcat就是附带了。


1.主机存活扫描

2.端口扫描

3.指纹识别


主要工具:Nmap

首先介绍万能的nmap基本参数。

用法:nmap的[扫描类型(S)] [选项] {目标说明}

主机发现:

:列表扫描 - 简单列表的目标进行扫描

:ping扫描 - 禁用端口扫描

:把所有主机在线 - 跳过主机发现

:TCP SYN / ACK,UDP或SCTP发现给定的端口

:ICMP回声,时间戳和网络掩码请求,发现探头

协议列表]:IP协议Ping

:决不做DNS解析/始终解析[默认:有时]

服务器<SERV1 [,serv2上],...>:指定自定义DNS服务器

:使用操作系统的DNS解析器

:跟踪跳路径每个主机

SCAN方法:

:TCP SYN /TCP全连接()/ ACK /窗/迈蒙扫描

:UDP扫描

:TCP空,FIN,以及Xmas扫描

标志>:自定义TCP扫描标志

僵尸主机[:probeport]>:空闲扫描

:SCTP INIT / COOKIE-ECHO扫描

:IP协议扫描

中继主机>:FTP反弹扫描

端口规范和扫描顺序:

端口范围>:仅扫描指定的端口

例如:-p22; -p1-65535; -p U:53111137,电话:21-25,80,139,8080,S:9

:快速模式 - 扫描比默认的扫描较少的端口

:连续扫描端口 - 不随机

端口<编号>:扫描<编号>最常见的端口

比率<比率>:端口扫描比更常见的<比率>

服务/版本检测:

:探索开放的端口,确定服务/版本信息

强度<级别>:设定从0(亮)到9(尝试所有探头)

光:限制为最有可能的探头(强度2)

全:尝试每一个探头(强度9)

追踪:显示详细的版本扫描活动(调试)

SCRIPT SCAN:

:相当于--script =默认

脚本>:<Lua脚本>是一个逗号分隔列表

目录,脚本文件或脚本类别

的参数 = <N1 = V1,[N2 = V2,...]>:提供参数的脚本

文件=文件名:在文件中提供NSE脚本的args

追踪:显示发送和接收的所有数据

数据库更新:更新脚本数据库。

脚本>:关于脚本显示帮助。

脚本>是一个逗号分隔的脚本文件或列表

脚本类别。

OS检测:

:启用操作系统检测

限制:限制OS检测到有希望的目标

猜测:猜猜OS更积极

时序和性能:

选择内搭<时间>是在几秒钟内,或追加'MS'(毫秒)

的“(秒),”M“(分),或'H'(小时)的值(例如,30分钟)。

:设置时序模板(更高更快)

主机组/ MAX-主机组<大小>:并行主机扫描组大小

,并行/ MAX-并行<numprobes>:并行的探讨

超时/ MAX-RTT超时/初始RTT超时<时间>:指定

探索往返时间。

重试<尝试>:大写的端口扫描探测重发数。

超时<时间>:在此之后漫长放弃目标

延迟/ - 最大扫描延迟<时间>:调整探头之间的延迟

率<编号>:发送数据包没有<编号>每秒慢

率<编号>:每秒速度不发送数据包比<编号>

防火墙/ IDS躲避和欺骗:

值>:分片报文(可选择的w /给出MTU)

,decoy2 [,ME],...>:披风带有诱饵扫描

地址>:欺骗源地址

:使用指定接口

源端口<端口编号>:使用特定端口号

,[URL2] ...>:通过HTTP连接继电器/ SOCKS4代理

长度<编号>:追加随机数据发送的数据包

选项<选项>:指定IP选项的包发送

值>:设置IP时间到现场直播

地址/前缀/供应商名称>:欺骗你的MAC地址

:用一个假的TCP / UDP / SCTP校验和发送的数据包

输出:

  -on / -oX / -Os / -oG <文件>:正常,XML输出扫描,S | <RIPT kIddi3,

和的grepable格式,分别以给定文件名。

基本名>:输出三大格式一次

:增加冗余级别(使用-vv或更多更好的效果)

:提高调试级别(使用-dd或更多更好的效果)

:显示端口处于特定状态的原因

:只显示打开(或可能打开)端口

追踪:显示发送和接收的所有数据包

:打印主机接口和路线(调试)

错误:记录错误/警告正常格式输出文件

输出:追加到而不是撞指定输出文件

文件名>:恢复中止扫描

  --stylesheet <路径/ URL>:XSL样式表来转换XML输出至HTML

:从Nmap.Org参考样式表更便携XML

样式表:防止关联的XSL样式表W / XML输出

MISC:

:启用IPv6的扫描

:启用操作系统检测,检测版本,脚本扫描,和traceroute

目录>:指定自定义的Nmap数据文件位置

发送-IP:发送使用原始的以太网帧或IP数据包

:假设该用户是完全特权

:假设用户缺乏原始套接字权限

:打印版本号

:打印此帮助摘要页面。

示例:

  NMAP -v -A scanme.nmap.org

  NMAP -v -sn 192.168.0.0/16 10.0.0.0/8

  NMAP -v -ir 10000 -Pn -p 80

一:主机存活

首先确定主机存活,最简单的当然就是ping了,但是由于防火墙或者其他过滤机制就不能简单的通过ping来确定主机的存活了,也就有了各种方法,各种工具。

nmap识别 mysql nmap network scanning_人工智能

而怎样确定主机是否存活也就基于上面这个OSI七层模型了,书中主要也就是针对234层扫描,一到七层协议依次是,物理层,数据链路层,网络层,传输层,回话层,表示层,应用层,像对应的意思是,硬件(电子器件),物理地址(如MAC地址,存在ARP等协议),逻辑IP地址(IPv4,IPv6等),服务端的传输协议(TCP,UDP),在上面就不是很重要了,反正书中也没怎么提。

再就是每层的优缺点了。

第2层发现用ARP的缺点如下:

优点:

非常快

高度可靠

缺点:

无法找到远程系统(非路由协议)

第3层的发现与ICMP的缺点如下:

优点:

可以发现远程系统(路由协议)

还是比较快

缺点:

比ARP发现慢

通常是由防火墙过滤

第4层的发现与TCP的缺点如下:

优点:

可以发现远程系统(路由协议)

更可靠的比ICMP(过滤器是不太常见的或有选择地实施)

缺点:

状态防火墙的过滤器可产生不可靠的结果

彻底的发现可能耗时

Arp发现最简单的命令当然就是arp了。

root@End:~# arp

Address                  HWtype  HWaddress           Flags Mask            Iface

192.168.148.254          ether   00:50:56:fb:89:70   C                     eth0

192.168.148.1            ether   00:50:56:c0:00:08   C                     eth0

192.168.148.2            ether   00:50:56:ef:21:57   C                     eth0


然后就是nmap 。

root@KaliLinux:~# nmap 172.16.36.136  –sn

root@KaliLinux:~# nmap 172.16.36.0-255  –sn

root@KaliLinux:~# nmap -iL iplist.txt –sn

  -sn:ping扫描 - 禁用端口扫描,如果在局域网,你会发现被扫的主机还会返回目标主机的mac地址。

-iL<输入的文件>:从输入的主机/网络的列表,你可以等个***在arp一下就有复制很多IP地址让你扫着玩了。

而UDP,TCP四层协议扫描,其中TCP三次握手得说明一下,TCP三次握手的意思就是主机A通过TCP协议连接主机B,先发个SYN包给B,B收到后返回个ACK包,A响应后再回个ACK包建立连接,也就可以完全的相互通信了,所以nmap有个很有意思的参数就是sS,意思是在主机B响应发的SYN包后不发起第三次握手,那么TCP三次握手就不会完成就不是完整的TCP连接,那么就不会被主机B记录,也就是比较安全的扫描方式。

root@KaliLinux:~#  nmap 172.16.36.135 -PU53 –sn

root@KaliLinux:~#  nmap -iL iplist.txt -sn -PU53

-PU表示使用UDP协议,-PU53当然就是扫描UDP53端口了。

nmap 172.16.36.135 -PA80 –sn

-PA ACK模式,如最前面的nmap参数,nmap有很多的扫描方式

-sN / SF / SX 

-sS / ST / SA / SW / SM

笔者常用-sS  –sF –sA 如果你发现某种扫描技术不能很好的出结果就换着来吧,总能把要被扫的主机扫出来

二:端口扫描

root@KaliLinux:~# nmap 172.16.36.0-255 -sU -p 53 

-sU扫描,其实应用于UDP的服务不多,多数都是TCP。

root@KaliLinux:~# nmap -iL iplist.txt -sU -p 123

root@KaliLinux:~# nmap -sS 172.16.36.135 -p 80

root@KaliLinux:~# nmap -sS 172.16.36.135 -p 21,80,443

Starting Nmap 6.25 ( http://nmap.org ) at 2013-12-17 21:46 EST

Nmap scan report for 172.16.36.135

Host is up (0.00038s latency).

Not shown: 977 closed ports

PORT     STATE SERVICE

21/tcp   open  ftp

22/tcp   open  ssh

23/tcp   open  telnet

25/tcp   open  smtp

53/tcp   open  domain

80/tcp   open  http

111/tcp  open  rpcbind

139/tcp  open  netbios-ssn

445/tcp  open  microsoft-ds

512/tcp  open  exec

513/tcp  open  login

514/tcp  open  shell

1099/tcp open  rmiregistry

1524/tcp open  ingreslock

2049/tcp open  nfs

2121/tcp open  ccproxy-ftp

3306/tcp open  mysql

root@KaliLinux:~# nmap -sS 172.16.36.135 -p 0-65535 

系统一共有65535个可用端口,如果你想更仔细的发现一些端口的话可以把端口范围设置为0到65535,这样可能会发现有意思的服务。

5900/tcp  open  vnc

6000/tcp  open  X11

6667/tcp  open  irc

6697/tcp  open  unknown

8009/tcp  open  ajp13

root@KaliLinux:~# nmap -sS -iL iplist.txt -p 80

-sSTCP握手,所以不会被目标主机记录,比较安全,因为有些目标主机可能会根据***者的一些扫描方式而触动一些防火墙规则而IP被列入黑名单,所以sS的扫描方式就要安全的多了。

三:指纹识别

指纹识别当然就是为了识别特点端口运行的服务及其版本,大多数服务会自己的标识,在你连接后就会在响应包里包含,其中的一些细节当然不用我们操心,交给nmap就够了。

这里有个小工具短小精悍netcat。

-c shell命令为`-e';使用/ bin / sh的,以执行[危险!!]

-e文件名程序Exec之后连接[危险!]

-b允许广播

-g网关源路由跳点[S],多达8个

-G NUM源路由指针:4,8,12,...

-h这个克鲁夫特

找来线-i秒延迟间隔,端口扫描

套接字设置keepalive选项

-l监听模式,用于入站所连接

-n纯数字IP地址,DNS不

交通-o文件的十六进制转储

-p port本地端口号

-r随机本地和远程端口

EOF后退出的标准输入和秒的延迟-q秒

-s地址本地源地址

-T TOS设置服务类型

-t回答TELNET协商

-u UDP模式

-v详细[使用两次,更详细]

-w秒超时连接和最终净读取

-z零I / O模式[用于扫描

用于识别某个服务可以使用如下命令

root@End:~# netcat  -vn 172.16.36.135 22 

SSH-2.0-OpenSSH_4.3

root@End:~# netcat –vn 172.16.36.135 3306

4

5.0.77C

        )X]MH_(Fi]tQy,md,Ks'

root@End:~# netcat –vn 172.16.36.135 21

220 ProFTPD 1.3.2e Server (ProFTPD) 


返回结果极其的快,你甚至可以用一个脚本去执行一些你想要的结果如:

root@End:~# for x in $(seq 1 100);do nc -nvz 64.6.255.13 $x ;done

而nmap当然就更简单了

root@KaliLinux:~# nmap -sT 172.16.36.135 -p 22 --script=banner

root@KaliLinux:~# nmap -sV 172.16.36.135 

root@KaliLinux:~# nmap -sT 172.16.36.135 –O

-O  用于识别目标机器系统。

-sV  用于识别已开放端口的服务及其版本。

 

总结而言,本书前面一大部分就是在扯淡,会用nmap基本就够了,所以其他工具就不写了,写了也是滥竽充数。


而扫描的重点在于先确定主机是否存活或者找出其ip地址甚至mac地址,在这个基础上在确定所开的服务,比如ftp,ssh,vnc,MySQL之类大家比较关心的服务,在此基础上就得想到底是什么版本有没有漏洞,如果有的话最好没有的话可能就只能暴力破解或者通过社工去解决了。