书名诸神之眼NMAP 学习笔记

nmap 伪装技术

  1. 数据包分段

    发送的数据包将原理的数据包分成几个部分,防火墙在对数据包进行检查时候会更加困难
    注意:一些老的主机会老的系统可能会死机蓝屏

    1
    nmap -f  [目标]

    在这里插入图片描述

  2. 指定使用的MTU
    最大传输单位(MTU),最大的数据包大小
    一般来说,以太网的MTU的默认是1500bytes ,如果大于这个数就被分片
    用参数--mtu指定大小

1
nmap --mtu [指定的大小]  [目标]
列`nmap --mtu 16 192.168.1.1` ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200601152500955.png)
  1. 诱饵主机隐藏扫描
    就是我伪造多个主机,然后里面就我真实的我,目标就不好判断那个是真实的攻击端了
    在初始ping扫描(ICMP,SYN,ACK)和-O都可以用这个方法
    1. 指端伪造的ip
    
1
nmap -D [伪造的ip],[伪造的ip],[伪造的ip]。。。  [目标]
2. 用nmap随机生成伪造源地址
1
nmap -D RND [伪造源地址数量]   [目标]
  1. 源端口欺骗
    如果本地端口有限制,就可以利用这个端口进行扫描
    -g--source-port这个两个参数其实是一样的

格式

1
nmap -g [伪造的端口]  [目标]

例如

1
nmap -g 53 192.168.1.1
  1. 发送报文时加随机数据
    nmap发送的数据包只有包头,内容是空的,
    可以使用这个参数--data-length 进行修改随机内容
    格式
1
nmap --data-length [要添加的随机数据]  [目标]
例如
1
nmap --data-length 50  192.168.1.1
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200601155312478.png)
  1. TTL设置
    ttl值Windows 是128(65——128)
    Linux 和 Unix = 64 (1-64) Unix = 255
    格式
1
nmap --ttl [tti的值] [目标]
例如
1
nmap --ttl 50 192.168.1.1
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200601160142850.png)
  1. MAC地址欺骗
    格式
1
nmap  --spoof-mac [欺骗的MAC地址] [目标]
如果欺骗的MAC地址是0 nmap会选择一个全部随机的MAC地址 如果欺骗的MAC地址是小于12的十六进制的数字,nmap会随机填充后面的6个字节 nmap会通过查询nmap-mac-prefixes查询厂商的名称(区分大小写) 例如
1
nmap  --spoof-mac 0 192.168.43.1
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200601192954456.png)

TCP完连接(Connect)扫描的检查

Nmap向一个开放的端口发起了连接请求,并且完成了三次握手,之后结束了这次连接。这种扫描很容易被检测到,如果没有开放目标会返回一个RST,这样断开会产生大量的错误消息,而这些记录会被记录下来
例如

1
nmap  -sT [目标]

在这里插入图片描述
出现上面的情况可能就说明是有人在扫描你
如果有入侵检测设备就会报警
查看最多发的请求
在这里插入图片描述

nmap扫描结果保存

  1. txt文件保存参数-oN
    格式
1
nmap -oN [*.txt]  [目标]
  1. XML格式保存参数-oX
    格式
1
nmap [*,xml] [目标]
  1. grep格式保存参数`-oG
    格式
1
nmap -oG [*.gerp]  [目标]

NSE的基础部分

  1. NES的脚本的运行,
    现在使用NSE脚本进行测试一台服务器添加选项-sC
    例如
1
nmap -sV -sC -O scanme.Nmap.org
  1. NMSE中的脚本的分类
    在这里插入图片描述

  2. NSE脚本的选择
    脚本的位置在/usr/share/nmap/scripts文件夹里面
    用使用脚本--script [脚本的文件名或者是路径文件名] 运行脚本他也支持表达式

    1.使用nmap来枚举出目标web服务器的支持的HTTP方法

1
nmap -p 80 --script http-methods  192.168.30.34 
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200602092801293.png) 可以看见目标支持的服务有GET HEAD POST OPTIONS **2.或者也可以使用种类的名字来调用一个分类中的全部脚本** 1. 使用一个safe类型的全部脚本进行扫描
1
nmap --script safe 192.168.30.34  
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200602093309230.png) 2. 使用多个脚本进行扫描safe类型和discovery类型的全部脚本进行扫描 例如
1
nmap --script safe,discovery 192.168.30.34
**3.-sC参数** -sC参数它是--scriptDefault的缩写。也就是使用default分类下的脚本对目标进行扫描。 4.有可以指定一个位置进行扫描 例如
1
nmap  -p 80  --script /usr/share/nmap/scripts/http-methods.nse 192.168.30.34
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200602094727692.png) 和上面的`nmap -p 80 --script http-methods 192.168.30.34 `扫描是一样的

4.也可以使用表达式
使用表达式or,and和not
1. not例
例如想使用除了exploit分类以外的所有脚本对目标进行检测,命令如下

    
1
nmap -sV --script "not exploit"  192.168.30.34 
2. or例 如果想使用除了intrusive、dos、exploit分类以外的所有脚本对目标进行检测,命令如下
1
nmap  -sV  --script "not (intrusive or dos or exploit)"  192.168.30.34 
3. and例 如果只使用broadcast和discovery分类的脚本对目标进行检测,命令如下
1
nmap  -sV --script "broadcast and discovery"  192.168.30.34 
4. 也可以使用*和表达式进行结合 *是代表所有的意思 例如希望对一个FTP服务器进行审计,但是不希望使用intrusive分类中的脚本,就可以使用如下命令
1
nmap --script "ftp-* and not(intrusive)"  192.168.30.34 

了解脚本的原理

  1. 如果不仅仅想利用Nmap脚本的强大实力,还想进一步了解脚本的原理,可以使用--script-trace参数**
    例如
1
nmap  -p 80  --script http-methods 192.168.30.34   --script-trace
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200602102532955.png) **1.2也可以使用-d[1到9]输出更详细详细,数字大,输出就越详细 例如**
1
nmap  -p 80  --script http-methods 192.168.30.34   --script-trace -d3
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200602103054894.png)
  1. 使用–packet-trace选项可以查看所有发送和收到的数据包**
    例如
1
nmap  -p 80  --script http-methods 192.168.30.34   --packet-trace
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200602103720510.png)

NSE常见脚本的应用

nmap只能进行简单系统检查和服务检查,而NSE实现了大量的高级功能,

  1. 信息收集类脚本
    基于http-methods脚本的审计目的,web服务器支持的http的方法
    1. GET:请求指定的页面信息,并返回实体主体
    2. HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。
    3. POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
    4. PUT:从客户端向服务器传送的数据取代指定文档的内容。
    5. DELETE:请求服务器删除指定的页面。
    6. OPTIONS:允许客户端查看服务器的性能。TRACE:回显服务器收到的请求,主要用于测试或诊断。
    例如
1
nmap  -p 80  --script http-methods 192.168.30.34 
  1. 高级主机发现类脚本
    1. 脚本broadcast-ping.NSE
      这个broadcast-ping这个脚本是发现本地的活跃的主机,其实nmap也能实现,nmap是向每个ip发单播探针数据包来实现的
      broadcast-ping.nse脚本不同的是他是向本地网络中所有的IP地址发送广播包。
    2. 脚本targets-sniffer
      targets-sniffer脚本发现本地网络中的所有主机
      脚本targets-sniffer的审计方法十分特殊,它会对你所在的网络进行嗅探,发现网络中的所有主机。这个脚本需要特权模式,也可以使用-e来执行网络监听的网卡设备,这个不需要指定目标他会检查本地的ip,例如你所在的网络IP地址为192.168.0.0/24
      例如
    
1
nmap --script targets-sniffer  -e eth0
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200602112405671.png)
  1. 密码审计类脚本
    1. 脚本mysql-brute.NSE
      在Nmap中有两个数据文件,一个文件中包含一些常见的用户名,另一个文件中包含有一些常见的密码
      例如
    
1
nmap -p 3306  --script mysql-brute  192.168.30.39 
也可以加`--packet-trace`发送和收到的数据包 2. 脚本smtp-brute.NSE 这个脚本可以支持对SMTP密码的暴力穷解,它支持LOGIN、PLAIN、CRAM-MD5、DIGEST-MD5和NTLM四种登录方式。 默认情况下,smtp-brute.NSE使用`/usr/share/nmap/nselib/data/usernames.lst`文件中的各项作为用户名,`/usr/share/nmap/nselib/data/passwords.lst`文件中的各项作为密码。 例如
1
nmap -p  25  --script   smtp-brute 192.168.30.39 
如果想指定字典文件可以用下面的命令 `--script-args `是用来指定参数的
1
Nmap -p 25 --script smtp-brute --script-args userdb=用户字典, passdb=密码字典  192.168.30.39 
**2.1用户模式 这种模式先取一个用户名,然后使用所有的密码与其配对,所有组合都结束后,再开始下一个用户名** 例如 `--script-args `是用来指定参数的
1
nmap --script smtp-brute --script-args brute.mode=指定的用户名  192.168.30.39 
**2.2密码模式 这种模式先取一个密码,然后使用所有的用户名与其配对,当所有组合都结束后,再开始下一个密码** 例如
1
nmap --script smtp-brute --script-args brute.mode=指定的密码  192.168.30.39 
2.3文件格式取用户密码 这种模式与前两种不同,creds中所有的用户名和密码都写在同一个文件中,格式类似于admin/123456这种形式,Nmap会读取其中的每一行,然后访问服务器进行匹配 例如
1
Nmap --script smtp-brute --script-args brute.mode=creds,brute.credfile=文件名   192.168.30.39 
  1. 漏洞扫描类脚本

    1. 脚本http-slowloris.NSE
      http-slowloris.NSE脚本查看目标是否存在预防slowloris的 DoS攻击
      Slowloris是在2009年Web安全专家RSnake提出的一种攻击方法,其原理是以极低的速度向服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限,导致拒绝服务
      例如
      --max-parallelism这些选项控制用于主机组的探测报文数量

      1
      nmap -p 80 --script http-slowloris  --max-parallelism 300 192.168.30.39 

      这个方法是直接去打目标系统
      1.1http-slowloris.NSE脚本扩展http-slowloris.send_interval参数
      http-slowloris.send_interval参数可以指定发送http header datas的间隔,默认值为100
      --script-args 是用来指定参数的
      --max-parallelism这些选项控制用于主机组的探测报文数量
      例如

    
1
Nmap -p 80 --script http-slowloris --script-args http-slowloris.send_interval=200 --max-parallelism 300   192.168.30.39 
**1.2http-slowloris.NSE脚本扩展http-slowloris.timelimit参数** 攻击时间,默认是30分钟 `--script-args `是用来指定参数的 15m就是15分钟
1
nmap -p 80 --script http-slowloris --script-args http-slowloris.timelimit=15m  192.168.30.39 
**1.3http-slowloris.NSE脚本扩展http-slowloris.runforever参数** 这个参数是对目标系统进行一直DoS攻击 `--script-args `是用来指定参数的
1
Nmap -p 80 --script http-slowloris --script-args http-slowloris.runforever 192.168.30.39 
还有一个名为http-slowloris-check.NSE的脚本也是用来发送slowloris的,都是他只会发送2个请求 例如
1
nmap -p 80 --script http-slowloris-check 192.168.30.39 
2. POODLE漏洞扫描ssl-poodle脚本 POODLE漏洞(亦即CVE-2014-3566)最早是由谷歌团队发现的,可以攻击者可以盗取,已经使用了的SSL3.0数据进行解密 需要攻击者完全控制网络的流量,比如ARP欺骗,钓鱼wifi等等 名为ssl-poodle的脚本来检查POODLE漏洞 `--version-all`相当于`--version-intensity 9` 扫描强度
1
nmap -sV --version-all --script ssl-poodle -p 443 192.168.30.39