书名诸神之眼NMAP 学习笔记 nmap 伪装技术
数据包分段
发送的数据包将原理的数据包分成几个部分,防火墙在对数据包进行检查时候会更加困难 注意:一些老的主机会老的系统可能会死机蓝屏
指定使用的MTU 最大传输单位(MTU),最大的数据包大小 一般来说,以太网的MTU的默认是1500bytes ,如果大于这个数就被分片 用参数--mtu指定大小
列`nmap --mtu 16 192.168.1.1`

诱饵主机隐藏扫描 就是我伪造多个主机,然后里面就我真实的我,目标就不好判断那个是真实的攻击端了 在初始ping扫描(ICMP,SYN,ACK)和-O都可以用这个方法
指端伪造的ip
1 nmap -D [伪造的ip],[伪造的ip],[伪造的ip]。。。 [目标]
2. 用nmap随机生成伪造源地址
1 nmap -D RND [伪造源地址数量] [目标]
源端口欺骗 如果本地端口有限制,就可以利用这个端口进行扫描-g和--source-port这个两个参数其实是一样的
格式
例如
发送报文时加随机数据 nmap发送的数据包只有包头,内容是空的, 可以使用这个参数--data-length 进行修改随机内容 格式
1 nmap --data-length [要添加的随机数据] [目标]
例如
1 nmap --data-length 50 192.168.1.1

TTL设置 ttl值Windows 是128(65——128) Linux 和 Unix = 64 (1-64) Unix = 255 格式
例如
1 nmap --ttl 50 192.168.1.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

TCP完连接(Connect)扫描的检查 Nmap向一个开放的端口发起了连接请求,并且完成了三次握手,之后结束了这次连接。这种扫描很容易被检测到,如果没有开放目标会返回一个RST,这样断开会产生大量的错误消息,而这些记录会被记录下来 例如
出现上面的情况可能就说明是有人在扫描你 如果有入侵检测设备就会报警 查看最多发的请求
nmap扫描结果保存
txt文件保存参数-oN 格式
XML格式保存参数-oX 格式
grep格式保存参数`-oG 格式
NSE的基础部分
NES的脚本的运行, 现在使用NSE脚本进行测试一台服务器添加选项-sC 例如
1 nmap -sV -sC -O scanme.Nmap.org
NMSE中的脚本的分类
NSE脚本的选择 脚本的位置在/usr/share/nmap/scripts文件夹里面 用使用脚本--script [脚本的文件名或者是路径文件名] 运行脚本他也支持表达式 列 1.使用nmap来枚举出目标web服务器的支持的HTTP方法
1 nmap -p 80 --script http-methods 192.168.30.34

可以看见目标支持的服务有GET HEAD POST OPTIONS
**2.或者也可以使用种类的名字来调用一个分类中的全部脚本**
1. 使用一个safe类型的全部脚本进行扫描
1 nmap --script safe 192.168.30.34

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

和上面的`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
了解脚本的原理
如果不仅仅想利用Nmap脚本的强大实力,还想进一步了解脚本的原理,可以使用--script-trace参数** 例如
1 nmap -p 80 --script http-methods 192.168.30.34 --script-trace

**1.2也可以使用-d[1到9]输出更详细详细,数字大,输出就越详细
例如**
1 nmap -p 80 --script http-methods 192.168.30.34 --script-trace -d3

使用–packet-trace选项可以查看所有发送和收到的数据包** 例如
1 nmap -p 80 --script http-methods 192.168.30.34 --packet-trace

NSE常见脚本的应用 nmap只能进行简单系统检查和服务检查,而NSE实现了大量的高级功能,
信息收集类脚本 基于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
高级主机发现类脚本
脚本broadcast-ping.NSE 这个broadcast-ping这个脚本是发现本地的活跃的主机,其实nmap也能实现,nmap是向每个ip发单播探针数据包来实现的 broadcast-ping.nse脚本不同的是他是向本地网络中所有的IP地址发送广播包。
脚本targets-sniffertargets-sniffer脚本发现本地网络中的所有主机 脚本targets-sniffer的审计方法十分特殊,它会对你所在的网络进行嗅探,发现网络中的所有主机。这个脚本需要特权模式,也可以使用-e来执行网络监听的网卡设备,这个不需要指定目标他会检查本地的ip,例如你所在的网络IP地址为192.168.0.0/24 例如
1 nmap --script targets-sniffer -e eth0

密码审计类脚本
脚本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
漏洞扫描类脚本
脚本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=15 m 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