侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130555 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

nmap学习小记

2023-05-20 星期六 / 0 评论 / 0 点赞 / 16 阅读 / 19563 字

萝卜糊了学习小记,转载请注明出处!!其实不是第一天看nmap,但是最近才看出来写赶脚 - - =。=几天的学习,整理的一些东西。。1.Nmap包含四项基本功能:主机发现(Host Discovery)

.

萝卜糊了学习小记,转载请注明出处!! 

其实不是第一天看nmap,但是最近才看出来写赶脚 - - =。=

几天的学习,整理的一些东西。。


1.Nmap包含四项基本功能:

  1. 主机发现(Host Discovery)

  2. 端口扫描(Port Scanning)

  3. 版本侦测(Version Detection)

  4. 操作系统侦测(Operating System Detection)


1.主机发现(Host Discovery)

-sP        进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作               系统探测):

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

-sn         Ping Scan 只进行主机发现,不进行端口扫描。

-PE/PP/PM         使用ICMP echo, timestamp, and netmask 请求包发现主机。

-PO[protocollist]   使用IP协议包探测对方主机是否开启。  

-PU        使用UDP ping探测主机:

-PN        不进行ping扫描



关于主机发现,其实基本的命令大家都知道。我在这里主要记录的是最近使用虚拟机,网卡设置成NAT 时候的特殊情况! 


基本情况是主这样的:

PC在192.168.1.0/24的网段,虚拟机网卡设置为NAT,网段在10.10.10.0/24

通常情况使用 

nmap -sP 192.168.1.0/24 在内网中即可发现存活的主机

but

此时出现了这样的问题:

矮油? 喵的256个IP 全是存活的? 这尼玛阔能吗!!!

随便ping个不存在的ip试试


root@bt:~# ping 192.168.1.250

PING 192.168.1.250 (192.168.1.250) 56(84) bytes of data.

From 192.168.1.125 icmp_seq=3 Destination Host Unreachable

From 192.168.1.125 icmp_seq=6 Destination Host Unreachable

From 192.168.1.125 icmp_seq=9 Destination Host Unreachable


root@bt:~# ping 192.168.1.252

PING 192.168.1.252 (192.168.1.252) 56(84) bytes of data.

64 bytes from 192.168.1.252: icmp_seq=1 ttl=128 time=1.18 ms

64 bytes from 192.168.1.252: icmp_seq=2 ttl=128 time=1.24 ms

64 bytes from 192.168.1.252: icmp_seq=3 ttl=128 time=1.17 ms


嗯? 192.168.1.250返回的是unreachable 实际是不通的,并且实际上却是没有这台PC 192.16831.252是通的。那么结论应该就出来了,NMAP -sP 实际上是只管发出去的ping包么?!! 只要能发出去,就算存活么。。。。。  好吧,于是,

NMAP -PE -sn 192.168.1.0/24 


root@bt:~# nmap -PE -sn 192.168.1.0/24


Starting Nmap 6.25 ( http://nmap.org ) at 2014-07-02 23:08 EDT

Nmap scan report for localhost (192.168.1.1)

Host is up (0.0018s latency).

.

.

.

.

Nmap scan report for localhost (192.168.1.252)

Host is up (0.0022s latency).

Nmap done: 256 IP addresses (17 hosts up) scanned in 1.25 seconds


OK 这次结果正确了。。。。。 


关于unreachable的原因:

一般情况下路由表在没有某网段条目,且不设置默认路由ping时,会提示unreachable

应该是网卡使用NAT 的原因,此时相当于电脑就是一台路由器,但是不同的是,并没有本地网卡的接口 = 。 =   。。。VMware做了nat转换,但是查看路由表的时候却查不到本机真实的网段

     Gateway         Genmask         Flags Metric Ref    Use Iface

default         localhost       0.0.0.0         UG    0      0        0 eth0

10.10.10.0      *               255.255.255.0   U     0      0        0 eth0

而且手动添加默认路由也会提示网络部可达

  

root@debian:~# route add default gw 192.168.1.125

SIOCADDRT: 网络不可达


扫VMware网段的话两次命令的结果就是一致的了

nmap -sP 10.10.10.0/24

nmap -PE 10.10.10.0/24

nmap -PO 10.10.10.0/24

如果用桥接的话,应该不会有这样的问题。。

由此看来 -sP 并不会像-PE、-PO那样严谨,收到ICMP ECHO replay后才会判断为存活.





2.端口扫描(Port Scanning)

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

-sS/sT/sA/sW/sM    指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。 

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

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

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

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

-p <port ranges>:   扫描指定的端口    

实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)    

-F:    快速模式,仅扫描TOP 100的端口    

-r:     不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。    

--top-ports <number>:    扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)  

 --port-ratio <ratio>:     扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。



3.版本侦测(Version Detection)

-sV指定让Nmap进行版本侦测  

--version-intensity <level>指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。  

  

--version-light: 指定使用轻量侦测方式 (intensity 2)  

  

--version-all尝试使用所有的probes进行侦测 (intensity 9)  

  

--version-trace: 显示出详细的版本侦测过程信息。  



4.操作系统侦测(Operating System Detection)

-O/-A      探测目标主机的操作系统


5.防火墙/IDS躲避和哄骗



http://nmap.org/man/zh/man-bypass-firewalls-ids.html

这是nmap官方给出的文档


-f (报文分段); --mtu (使用指定的MTU)

  • -f选项要求扫描时(包挺ping扫描)使用 小的IP包分段。其思路是将TCP头分段在几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难。必须小心使用这个选项,有些系 统在处理这些小包时存在问题,例如旧的网络嗅探器Sniffit在接收 到第一个分段时会立刻出现分段错误。该选项使用一次,Nmap在IP 头后将包分成8个字节或更小。因此,一个20字节的TCP头会被分成3个 包,其中2个包分别有TCP头的8个字节,另1个包有TCP头的剩下4个字 节。当然,每个包都有一个IP头。再次使用-f可使用 16字节的分段(减少分段数量)。使用--mtu选项可 以自定义偏移的大小,使用时不需要-f,偏移量必须 是8的倍数。包过滤器和防火墙对所有的IP分段排队,如Linux核心中的 CONFIG-IP-ALWAYS-DEFRAG配置项,分段包不会直接使用。一些网络无法 承受这样所带来的性能冲击,会将这个配置禁止。其它禁止的原因有分段 包会通过不同的路由进入网络。一些源系统在内核中对发送的报文进行 分段,使用iptables连接跟踪模块的Linux就是一个例子。当使用类似Ethereal 的嗅探器时,扫描必须保证发送的报文要分段。如果主机操作系统会产 生问题,尝试使用--send-eth选项以避开IP层而直接 发送原始的以太网帧

-D <decoy1 [,decoy2][,ME],...> (使用诱饵隐蔽扫描)

  • 为使诱饵扫描起作用,需要使远程主机认为是诱饵在扫描目标网络。 IDS可能会报个某个IP的5-10个端口扫描,但并不知道哪个IP在扫描以及 哪些不是诱饵。但这种方式可以通过路由跟踪、响应丢弃以及其它主动 机制在解决。这是一种常用的隐藏自身IP地址的有效技术。

    使用逗号分隔每个诱饵主机,也可用自己的真实IP作为诱饵,这时可使用 ME选项说明。如果在第6个位置或 更后的位置使用ME选项,一些常用 端口扫描检测器(如Solar Designer's excellent scanlogd)就不会报告 这个真实IP。如果不使用ME选项,Nmap 将真实IP放在一个随机的位置

    注意,作为诱饵的主机须在工作状态,否则会导致目标主机的SYN洪水***。 如果在网络中只有一个主机在工作,那就很容易确定哪个主机在扫描。也可 使用IP地址代替主机名(被诱骗的网络就不可能在名字服务器日志中发现)。

    诱饵可用在初始的ping扫描(ICMP、SYN、ACK等)阶段或真正的端口扫描 阶段。诱饵也可以用于远程操作系统检测(-O)。在进行版 本检测或TCP连接扫描时,诱饵无效。

    使用过多的诱饵没有任何价值,反而导致扫描变慢并且结果不准确。 此外,一些ISP会过滤哄骗的报文,但很多对欺骗IP包没有任何限制。

-S <IP_Address> (源地址哄骗)

  • 在某些情况下,Nmap可能无法确定你的源地址(如果这样,Nmap会给出 提示)。此时,使用-S选项并说明所需发送包的接口IP地址。

    这个标志的另一个用处是哄骗性的扫描,使得目标认为是另 一个地址在进行扫描。可以想象某一个竞争对手在不断扫描某个公司! -e选项常在这种情况下使用,也可采用-P0选项。

-e <interface> (使用指定的接口)

  • 告诉Nmap使用哪个接口发送和接收报文,Nmap可以进行自动检测, 如果检测不出会给出提示。

--source-port <portnumber>; -g <portnumber> (源端口哄骗)

  • 仅依赖于源端口号就信任数据流是一种常见的错误配置,这个问题非常 好理解。例如一个管理员部署了一个新的防火墙,但招来了很多用户的不满,因为 他们的应用停止工作了。可能是由于外部的UDP DNS服务器响应无法进入网络,而导致 DNS的崩溃。FTP是另一个常见的例子,在FTP传输时,远程服务器尝试和内部用 建立连接以传输数据。

    对这些问题有安全解决方案,通常是应用级代理或协议分析防火墙模块。 但也存在一些不安全的方案。注意到DNS响应来自于53端口,FTP连接 来自于20端口,很多管理员会掉入一个陷阱,即允许来自于这些端口的数据进入 网络。他们认为这些端口里不会有值得注意的***和漏洞利用。此外,管理员 或许认为这是一个短期的措施,直至他们采取更安全的方案。但他们忽视了安全的 升级。

    不仅仅是工作量过多的网络管理员掉入这种陷阱,很多产品本身也会有这类 不安全的隐患,甚至是微软的产品。Windows 2000和Windows XP中包含的IPsec过滤 器也包含了一些隐含规则,允许所有来自88端口(Kerberos)的TCP和UDP数据流。另 一个常见的例子是Zone Alarm个人防火墙到2.1.25版本仍然允许源端口53(DNS)或 67(DHCP)的UDP包进入。

    Nmap提供了-g--source-port选项(它们是 等价的),用于利用上述弱点。只需要提供一个端口号,Nmap就可以从这些 端口发送数据。为使特定的操作系统正常工作,Nmap必须使用不同的端口号。 DNS请求会忽略--source-port选项,这是因为Nmap依靠系 统库来处理。大部分TCP扫描,包括SYN扫描,可以完全支持这些选项,UDP扫 描同样如此。

--data-length <number> (发送报文时 附加随机数据)

  • 正常情况下,Nmap发送最少的报文,只含一个包头。因此TCP包通常 是40字节,ICMP ECHO请求只有28字节。这个选项告诉Nmap在发送的报文上 附加指定数量的随机字节。操作系统检测(-O)包不受影响, 但大部分ping和端口扫描包受影响,这会使处理变慢,但对扫描的影响较小。

--ttl <value> (设置IP time-to-live域)

  • 设置IPv4报文的time-to-live域为指定的值。

--randomize-hosts (对目标主机的顺序随机排列)

  • 告诉Nmap在扫描主机前对每个组中的主机随机排列,最多可达 8096个主机。这会使得扫描针对不同的网络监控系统来说变得不是很 明显,特别是配合值较小的时间选项时更有效。如果需要对一个较大 的组进行随机排列,需要增大nmap.h文件中 PING-GROUP-SZ的值,并重新编译。另一种方法是使用列表扫描 (-sL -n -oN <filename>),产生目标IP的列表, 使用Perl脚本进行随机化,然后使用-iL提供给Nmap。

--spoof-mac <mac address,prefix,or vendor name> (MAC地址哄骗)

  • 要求Nmap在发送原以太网帧时使用指定的MAC地址,这个选项隐含了 --send-eth选项,以保证Nmap真正发送以太网包。MAC地址有几 种格式。如果简单地使用字符串0,Nmap选择一个完全随机的MAC 地址。如果给定的字符品是一个16进制偶数(使用:分隔),Nmap将使用这个MAC地址。 如果是小于12的16进制数字,Nmap会随机填充剩下的6个字节。如果参数不是0或16进 制字符串,Nmap将通过nmap-mac-prefixes查找 厂商的名称(大小写区分),如果找到匹配,Nmap将使用厂商的OUI(3字节前缀),然后 随机填充剩余的3个节字。正确的--spoof-mac参数有, Apple, 001:02:03:04:05:06, deadbeefcafe0020F2, 和Cisco.


.

广告 广告

评论区