赞
踩
根据nmap.org官网对主机发现的描述,可总结为如下描述。
网络探测任务的最初几个步骤之一就是把一组IP范围(有时该范围是巨大的)缩小为 一列活动的或者您感兴趣的主机,一个外部入侵测试人员可能绞尽脑汁用各种方法试图突破防火墙的封锁。
主机发现有时候也叫做ping扫描,但却不仅限于用ping工具发送简单的ICMP回声请求报文,就比如,我们可以跳过ping扫描或者使用多个端口把TCP SYN/ACK,UDP和ICMP任意组合起来进行扫描,这些探测的目的是获得响应以显示某个IP地址是否是活动的(正在被某主机或者网络设备使用)。主机发现能够找到零星分布于IP地址海洋上的那些机器。
扫描局域网时,像Nmap,默认情况下它就发送一个TCP ACK报文到80端口和一个ICMP回声请求到每台目标机器,一般来说这样就足够了,但是如果要进行安全审核,则需要更加的细致全面的探测。
官网:https://nmap.org/
安装:
手册:https://nmap.org/book/install.html
这里带大家一起装一下
先说一下,Nmap 曾经是一个仅限 Unix 的工具,而 Windows 版本是2000年发布,最终成为第二大流行的 Nmap 平台(仅次于 Linux)。
Windows 端口并不像 Unix 那样高效,它有着如下一些限制。
Windows版
下载界面:https://nmap.org/download.html
点击这里下载自安装版的可执行文件,至于为什么使用自安装版,当然是因为它最方便安装,还提供了安装 Zenmap GUI 和其他工具的选项。
而像什么利用命令行Zip二进制文件,从源代码编译的方式都是可以的,看个人选择。
运行可执行文件,点击I Agree
这些我个人就全给它装了
中间弹出来的这个,点击I Agree
这里打开cmd,输入nmap -version,查看一下是否安装成功
Nmap版本7.91 (https://nmap.org)
平台:i686-pc-windows-windows
编译使用:nmap-liblua-5.3.5 openssl-1.1.1h nmap-libssh2-1.9.0 nmap-libz-1.2.11 nmap-libpcre-7.6 Npcap-1.00 nmap-libdnet-1.12 ipv6
没有编译:可用的nsock引擎:iocp poll选择
打开Zenmap也是成功可用的
Ubuntu版
简单明了,一句命令搞定
apt-get install nmap
namp -h,查看一下安装情况
它简单地列出指定网络的每个主机,而不向目标主机发送任何数据包。列表扫描是一项很好的健全性检查,可确保您的目标拥有正确的 IP 地址。
它可以快速执行,在不受限制性防火墙阻碍的快速网络上每秒扫描数千个端口。它也相对不显眼和隐蔽,因为它永远不会完成 TCP 连接。这种技术通常称为半开扫描,因为您不会打开完整的 TCP 连接。
大致过程为这样,如果多次重传后均未收到响应,则将该端口标记为已过滤。如果收到 ICMP 不可达错误(类型 3,代码 0、1、2、3、9、10 或 13),端口也会被标记为已过滤。如果在响应中接收到 SYN 数据包(没有 ACK 标志),则该端口被视为打开。
它用于映射防火墙规则集,确定它们是否有状态以及过滤哪些端口。ACK 扫描探测数据包仅设置了 ACK 标志,当扫描未过滤的系统时,打开和关闭的端口都将返回一个RST包,然后Nmap将它们标记为未过滤的,这意味着它们可以被ACK包访问,但它们是打开还是关闭是不确定的。而没有响应的端口,或者发送特定的ICMP错误消息(类型3,代码0、1、2、3、9、10或13),被标记为过滤。
DNS、SNMP 和 DHCP(端口 53、161/162 和 67/68)被广泛部署为UDP协议,由于 UDP 扫描通常比 TCP 慢且难度更大,因此一些安全审核员会忽略这些端口,但这是一个错误的做法,因为可利用的 UDP 服务非常普遍,攻击者当然不会忽略整个协议。
它可以与 TCP 扫描类型(例如 SYN 扫描 ( -sS))结合使用,以在同一运行期间检查两种协议。
UDP 扫描的工作原理是向每个目标端口发送一个 UDP 数据包。如果返回 ICMP 端口不可达错误(类型 3,代码 3),则端口为关闭,其他 ICMP 不可达错误(类型 3,代码 0、1、2、9、10 或 13)将端口标记为filtered,有时候,服务将响应一个UDP包,证明它是开放的。如果在重新发送后没有收到响应,端口被标记为打开或者被过滤。这意味着端口可能是开放的,或者数据包过滤器阻止了通信。
版本检测(-sV) 可用于帮助区分真正开放的端口和过滤的端口。
这种方法和许多端口扫描方法联合使用。它对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图 确定它们是否RPC端口,如果是, 是什么程序和版本号。-sR作为版本扫描(-sV)的一部分自动打开,由于版本探测包括它并且全面得多,-sR很少被需要。
打印出对ping扫描做出响应的主机,不做进一步测试
ping探测扫描主机, 不进行端口扫描
ICMP 不可达错误 类型3及代码如下
Nmap识别的六个端口状态
nmap -T4 -A <Target>
-T<0-5>:设置时序模板(越高越快)
-A:启用操作系统检测、版本检测、脚本扫描和traceroute
nmap -sV <Target>
版本检测是用来扫描目标主机和端口上运行的软件的版本
nmap -O <Target>
示例
nmap -v -iR 100000 -P0 -p 80
这段主要意思是随机选择100000台主机扫描是否运行Web服务器(80端口)。由起始阶段发送探测报文来确定主机是否工作非常浪费时间,而且只需探测主机的一个端口,因此使用-P0禁止主机列表。
-v:增加详细级别(使用 -vv 或更多以获得更大的效果)
-iR :选择随机目标
-P0:将所有主机视为在线,跳过主机发现
-p:扫描指定端口
host -l company.com | cut -d -f 4 | nmap -v -iL -
host 命令是常用的分析域名查询工具,是一个 DNS 查找实用程序,用于查找域名的 IP 地址。
host -l 列出一个域中的所有主机
cut 命令在Linux和Unix中的作用是从文件中的每一行中截取出一些部分,并输出到标准输出中。
-f : 提取指定的字段,cut 命令使用 Tab 作为默认的分隔符。
-d : Tab 是默认的分隔符,使用这一选项可以指定自己的分隔符。
语法: cut -d ‘分隔字符’ [-cf] n
-d 后面指定分隔符,单引号引起来,必须是单个字符
-f 指定第几段,可以跟多个数字,用逗号隔开 -f 1 就是截取第一段。
-c 后面只有一个数字,表示截取第几个字符
nmap中
-v:增加详细级别
-iL :从主机/网络列表输入
输出
grepable 输出的 -oG如果使用 - 选项会将其发送到 STDOUT,而不是发送到文件。
利用操作系统检测扫描
sudo nmap -O -oG - 192.168.70.1
IPID Seq 字段是来自标准输出的 IP 序列生成字段,它将告诉主机如何生成 IPID,包括增量、随机、随机正增量等。此值将有助于确定主机对某些类型的攻击和信息收集策略的脆弱程度。
Seq Index 字段是预测下一个 TCP 序列号的难度等级。在正常输出中,我们有一些关键术语来帮助读取这个数字,但基本思想是数字越大,猜测 TCP 标头中的下一个 TCP 序列号就越困难。
Seq < 10 - Trivial Joke 极简单
11 < Seq < 80 - Easy 简单
81 < Seq < 3000 - Medium Difficulty 中等难度
3001 < Seq < 5000 - Formidable 强大
5001 < Seq < 10000 - Worthy challenge 值得挑战
10001 < Seq - “Good Luck!” 祝你好运喽
nmap 192.168.70.1 -oG - | awk '/open/{print $2}'
我们使用 -oG - 将 grepable 输出发送到 STDOUT,然后将其通过管道传输到 awk。awk 命令正在运行这个简单的脚本,其中 /open/ 匹配测试打开(与“grep 打开”相同),并打印第二个字段,以空格分隔输出。
利用 ping 扫描
sudo nmap -oG - -sP 192.168.70.1/24
ping 扫描,我们可以看到基本格式是相同的,仍然是制表符 (\t) 分隔的条目
masscan:海量 IP 端口扫描器。
这是一个 Internet 规模的端口扫描器。它可以在 5 分钟内扫描整个 Internet,从一台机器每秒传输 1000 万个数据包。
项目地址:https://github.com/robertdavidgraham/masscan
安装:
这里安装在Debian/Ubuntu 上的方法如下
sudo apt-get --assume-yes install git make gcc
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
sudo make install
该工具兼容Nmap的参数
安装过程
masscan --ports 1-10000 192.168.70.1 --adapter-ip 192.168.70.144
示例
扫描192.168.70.0子网
扫描两个子网上的端口 80 和范围 8000 到 8100,或总共 102 个端口
masscan -p80,8000-8100 192.168.70.0/24
获取Banner
masscan 10.0.0.0/8 -p80 --banners --source-ip x.x.x.x
扫描10.x.x.x网段80端口的开放信息,并且获取banner信息。–source-ip 是指定源IP,这个ip必须指定独立有效的IP地址。
设置扫描时忽略一些网段
masscan 0.0.0.0/0 -p0-65535 --excludefile exclude.txt
输出到指定文件中
masscan 0.0.0.0/0 -p0-65535 -oX scanRes.xml
设置扫描速度
masscan 0.0.0.0/0 -p0-65535 --max-rate 100000
扫描器使用的默认的速率是100包/秒,这条命令将以每秒10万包的速率进行扫描。
nbtscan是一款用于扫描Windows网络上NetBIOS名字信息的程序,它可以取到PC的真实IP地址和MAC地址。
这个工具在Kail Linux 已经安装好了
$ whereis nbtscan
nbtscan: /usr/bin/nbtscan /usr/share/man/man1/nbtscan.1.gz
$nbtscan
....
nbtscan [-v] [-d] [-e] [-l] [-t timeout] [-b bandwidth] [-r] [-q] [-s separator]
....
nbtscan 示例
$ nbtscan -v -s : 192.168.1.0/24
以:分割显示结果
$ nbtscan -r 192.168.70.0/24
扫描整个c段
$ nbtscan 192.168.1.25-137
扫描一个范围
$ nbtscan -f <File>
以文件读取扫描范围
高级用法
$ nbtscan -v -s : 192.168.1.0/24
Scans C-class network. Prints results in script-friendly
format using colon as field separator.
Produces output like that:
192.168.0.1:NT_SERVER:00U
192.168.0.1:MY_DOMAIN:00G
192.168.0.1:ADMINISTRATOR:03U
192.168.0.2:OTHER_BOX:00U
...
$ nbtscan -v -s : 192.168.1.0/24 | awk '{print $1}' | uniq
192.168.0.1
...
uniq 命令用于检查及删除文本文件中重复出现的行列
awk 是一种处理文本文件的语言
awk ‘{[pattern] action}’ {filenames} # 行匹配语句 awk ’ ’ 只能用单引号
hping3主要是测试防火墙的拦截规则,对网络设备进行测试
常用模式
$ hping3 --scan 1-30,70-90 -S 192.168.70.1
-S 设置syn标志
SYN方式扫描主机端口
可以看到,目标主机回复了:S…A,代表了SYN/ACK
$ hping3 -S -a 114.114.114.114 -p 53 114.114.114.114 -c 5
-a 欺骗源地址
-p 目的端口
-c 包的数量
测试防火墙对ICMP包的反应,是否支持traceroute,是否开放某个端口、对防火墙进行拒绝服务攻击(DoS attack)。例如,以LandAttack方式测试目标防火墙(Land Attack是将发送源地址设置为与目标地址相同,诱使目标机与自己不停地建立连接)。
DRDDOS
$ hping3 --udp -a 114.114.114.114 -p 53 114.114.114.114 -c 5
基于UDP的DOS
参考
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。