admin 管理员组

文章数量: 887017

安全测试 - Nmap扫描

安全测试课堂笔记

引入:

信息采集 ——- 扫描

主机扫描

端口扫描

域名扫描

URL扫描

PATH扫描

socket 网络套接字 bind 绑定 ip address: port 192.168.30.62:80

扫描 嗅探

python + sokcet + 循环 + 多线程 进行扫描

扫描工具

一、Nmap简介:

Namp是一款开源免费的网络发现(Network Discovery)和安全审计(Security)工具

软件名字Nmap是Network Mapper的简称

Nmap最初是由Fyodor在1997年开始创建的,随后在开源社区的志愿者参与下,该工具逐渐成为最流行安全必备工具之一

黑客入侵大体可以分为3个过程:

​ 信息收集、弱点分析、执行入侵

Namp既可以用于黑客前期收集主机信息,也可以用于管理员了解网络情况,甚至还可以弱点扫描

总体而言,Namp提供这几种功能:主机发现,端口扫描,操作系统识别,服务识别,脚本扫描

二、Nmap基本使用

Nmap命令使用

Nmap命令格式

Namp [Scan Types] [options] {target specification}

 
  1. Namp 主机发现参数 端口扫描参数 其他参数 目标主机/网段
  2. 例如:
  3. Nmap -PS80 -sS -sV -v 1.1.1.0/24
  4. 主机发现参数使用-PS参数
  5. 端口扫描参数用-sS参数
  6. 另外使用-sV参数探测服务版本
  7. -v开启可视模式
  8. 目标网段为1.1.1.0/24

报错解决:

如果运行报错,可以先安装一下依赖软件包

扫描一个网段

 
  1. nmap -sn 192.168.30.0/24

扫描指定的主机

 
  1. nmap -sn 192.168.30.10-60 192.168.30.62 192.168.30.170

三、基本原理

1、主机发现

主机发现是为了发现网段内的活跃主机(活跃主机是指这台主机是运行状态)

这是黑客扫描第一步。主机发现原理如表:

扫描方式发送报文活跃响应不活跃响应被过滤响应备注
ARP扫描ARP请求报文ARP响应报文超时不会被过滤精准
ICMP扫描ICMP Type=8 Code=0 Type=13 Code=0 Type=17 Code=0ICMP Type=0 Cody=0 Type=14 Code=0 Type=18 Code=0超时超时可能会被防火墙过滤
端口扫描TCP synTCP syn+ack超时超时或 ICMP Type=3 Code=3或13可能会被过滤

由此可以看出来:

ARP扫描:是最精准的扫描方式,并不会被过滤,因此会被强制使用。

ICMP扫描:是最常见的扫描方式,和ping命令原理一致,但现在很多防火墙和IPS设备会禁用ICMP扫描,使得ICMP主机发现失败

端口扫描:是另一种发现主机的方式,准确且不容易被防火墙过滤,这种方式经常被使用

ARP 属于OSI参考模型数据链路层

​ 将IP地址解析为MAC地址 , MAC地址计算机网络上物理地址或硬件地址(出厂烧录进去)。

2、端口扫描技术

端口扫描可以分为TCP端口扫描和UDP端口扫描

由于TCP能够提供更多的协议字段,因此TCP端口扫描更精准,如今的端口扫描技术主要是指TCP端口扫描

在TCP端口扫描技术中,探测报文组合不同flags位,不同的flags在端口开放、端口关闭、防火墙过滤时的响应是不一样的

通过区分不同的响应来探测端口的状态,具体如下所示 (tcp flags有syn、ack、rst、fin、psh、urg共6种位置)

扫描方式TCP Flag开放时响应关闭时响应过滤时响应特征
-sT TCP全连接扫描报文1:syn 报文2:ackSyn+ack 完成3次握手Rst+ack一般不会被过滤精准、费时,可能会被日志记录
-sS TCP半连接扫描SynSyn+ackRst+ackICMP type=3 Code=3、13 或超时精准、快速,无日志记录,最常见且默认的扫描方式
-sA TCP ack扫描AckRstRst不准确,只能判断是否加防火墙filtered或 unfiltered
-sW TCP window扫描AckRst,window不为0Rst,window为0不准确,有的情况下window都为0
#NAME?Fin+ack未收到rstRst不准确
#NAME?无位置无响应RstICMP Type=3 Code=3或13 或超时无响应不准确,只能判断 closed和open
#NAME?Fin无响应Rst
#NAME?Fin+psh+urg无响应Rst
-sU UDP端口扫描不相关有UDP响应或无响应ICMP Type=3 Code=3ICMP Type=3 Code=1,29,10,13不准确,只能判断 closed和open

由此可以看出,最常用的扫描方式是-sS扫描,快速、精准,且无日志

-sT方式最精准,但有日志记录

-sA/-sW能够识别是否有防火墙,对于识别windows防火墙非常有效

3、常用端口

端口服务描述
20/TCP,UDPFTP [Default Data]文件传输协议 - 默认数据端口
21/TCP,UDPFTP [Control]文件传输协议 - 控制端口
22/TCP,UDPSSHSSH(Secure Shell) - 远程登录协议,用于安全登录文件传输(SCP,SFTP)及端口重新定向
23/TCP,UDPTelnetTelnet终端仿真协议 - 未加密文本通信
25/TCP,UDPSMTPSMTP(简单邮件传输协议) - 用于邮件服务器间的电子邮件传递
43/TCPWHOISWHOIS协议
53/TCP,UDPDNSDNS(域名服务系统)
67/UDPBOOTPsBOOTP(BootStrap协议)服务;同时用于动态主机设置协议
68/UDPBOOTPcBOOTP客户端;同时用于动态主机设定协议
69/UDPTFTP小型文件传输协议(小型文件传输协议)
80/TCPHttp超文本传输协议(超文本传输协议)- 用于传输网页
110/TCPPOP3邮局协议,“邮局协议”,第3版 - 用于接收电子邮件
113/TCPWindows验证服务Ident - 旧的服务器身份识别系统,仍然被IRC服务器用来认证它的用户
123/UDPNTPNTP(Network Time Protocol) - 用于时间同步
137/TCP,UDPNetBIOS Name ServiceNetBIOS NetBIOS 名称服务
138/TCP,UDPNetBIOS Datagram ServiceNetBIOS NetBIOS 数据报文服务
139/TCP,UDPNetBIOS Session ServiceNetBIOS NetBIOS 会话服务
143/TCP,UDPIMAP因特网信息访问协议(Internet信息访问协议 4) - 用于检索 电子邮件s
161/TCP,UDPSNMP简单网络管理协议 (简单网络管理协议)
179/TCPBgp边界网关协议 (边界网关协议)
194/TCPIRC(互联网中继聊天)
220/TCP,UDPIMAP3因特网信息访问协议,交互邮件访问协议第3版
389/TCP,UDPLDAP轻型目录访问协议 LDAP
443/TCPHttps超文本传输安全协议 - 超文本传输协议 over TLS/SSL(加密传输)
546/TCP,UDPDHCPv6客户端
547/TCP,UDPDHCPv6服务器
631/TCP,UDPCUPS互联网打印协议
636/TCP,UDPLDAPSLDAP over SSL(加密传输,也被称为LDAPS)
991/TCP,UDPNAS (Netnews Admin System)
1080/tcpSOCKSSOCKS代理
1194/udpOpenVPN
1433/tcp,udpSQL ServerMicrosoft SQL 数据库系统
1434/tcp,udpSQL Server monitorMicrosoft SQL 活动监视器
1521/tcpOracleOracle数据库 default listener, in future releases official port 2483
3306/tcp,udpMySQLMySQL数据库系统
3389/tcpRDP远程桌面协议(RDP)
5432/tcpPostgreSQLPostgreSQL database system

NAMP使用手册

0x00 主机发现

 
  1. -sL 仅仅是显示,扫描的IP数目,不会进行任何扫描
  2. -sn ping扫描,即主机发现
  3. -Pn 不检测主机存活
  4. -PS/PA/PU/PY[portlist] TCP SYN Ping/TCP ACK Ping/UDP Ping发现
  5. -PE/PP/PM 使用ICMPecho, timestamp and netmask请求包发现主机
  6. -PO[prococol list] 使用IP协议包探测对方主机是否开启
  7. -n/-R 不对IP进行域名反向解析/为所有的IP都进行域名的反响解析

0x01 扫描技巧

 
  1. -sS/sT/sA/sW/sM TCP SYN/TCP connect()/ACK/TCP窗口扫描/TCPMaimon扫描
  2. -sU UDP扫描
  3. -sN/sF/sX TCP Null,FIN,and Xmas扫描
  4. --scanflags 自定义TCP包中的flags
  5. -sI zombie host[:probeport] Idlescan
  6. -sY/sZ SCTP INIT/COOKIE-ECHO扫描
  7. -sO 使用IPprotocol扫描确定目标机支持的协议类型
  8. -b "FTP relay host" 使用FTPbounce scan

0x02 指定端口和扫描顺序

 
  1. -p 特定的端口-p80,443或者-p1-65535
  2. -p U:PORT 扫描udp的某个端口,-p U:53
  3. -F 快速扫描模式,比默认的扫描端口还少
  4. -r 不随机扫描端口,默认是随机扫描的
  5. --top-ports "number" 扫描开放概率最高的number个端口,出现的概率需要参考nmap-services文件,
  6. ubuntu中该文件位于/usr/share/nmap.nmap默认扫前1000个
  7. --port-ratio "ratio" 扫描指定频率以上的端口

0x03服务版本识别

 
  1. -sV 开放版本探测,可以直接使用-A同时打开操作系统探测和版本探测
  2. --version-intensity "level" 设置版本扫描强度,强度水平说明了应该使用哪些探测报文。
  3. 数值越高,服务越有可能被正确识别。默认是7
  4. --version-light 打开轻量级模式,为--version-intensity2的别名
  5. --version-all 尝试所有探测,为--version-intensity9的别名
  6. --version-trace 显示出详细的版本侦测过程信息

0x04 脚本扫描

 
  1. -sC 根据端口识别的服务,调用默认脚本
  2. --script="Lua scripts" 调用的脚本名
  3. --script-args=n1=v1,[n2=v2] 调用的脚本传递的参数
  4. --script-args-file=filename 使用文本传递参数
  5. --script-trace 显示所有发送和接收到的数据
  6. --script-updatedb 更新脚本的数据库
  7. --script-help="Lua script" 显示指定脚本的帮助
  8. nmap -sV --script=ssl-heartbleed target_ip 扫描心脏滴血漏洞
  9. nmap -p 6379 --script redis-info target_ip 扫描redis未授权访问漏
  10. nmap -p 27017 --script mongodb-info target_ip 扫描mongodb未授权访问
  11. nmap -p 21 --script ftp-anon.nse -v target_ip 扫描ftp匿名访问的漏洞
  12. nmap -p 21 --script ftp-brute.nse -v target_ip 对目标IP进行ftp弱口令
  13. nmap -p 22 --script ssh-brute.nse -v target_ip 对目标IP进行ssh口令爆破
  14. nmap -p445 –script smb-vuln-ms17-010 target_ip/mask 对目标网段进行永恒之蓝漏洞扫描

0x05 OS识别

 
  1. -O 启用操作系统检测,-A来同时启用操作系统检测和版本检测
  2. --osscan-limit 针对指定的目标进行操作系统检测(至少需确知该主机分别有一个open和closed的端口)
  3. --osscan-guess 推测操作系统检测结果,当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配,
  4. Nmap默认进行这种匹配

0x06 防火墙/IDS躲避和哄骗

 
  1. -f; --mtu value 指定使用分片、指定数据包的MTU.
  2. -D decoy1,decoy2,ME 使用诱饵隐蔽扫描
  3. -S IP-ADDRESS 源地址欺骗
  4. -e interface 使用指定的接口
  5. -g/ --source-port PROTNUM 使用指定源端口
  6. --proxies url1,[url2],... 使用HTTP或者SOCKS4的代理
  7. --data-length NUM 填充随机数据让数据包长度达到NUM
  8. --ip-options OPTIONS 使用指定的IP选项来发送数据包
  9. --ttl VALUE 设置IPtime-to-live域
  10. --spoof-mac ADDR/PREFIX/VEBDOR MAC地址伪装
  11. --badsum 使用错误的checksum来发送数据包

0x07 Nmap输出

 
  1. -oN 将标准输出直接写入指定的文件
  2. -oX 输出xml文件
  3. -oS 将所有的输出都改为大写
  4. -oG 输出便于通过bash或者perl处理的格式,非xml
  5. -oA BASENAME可将扫描结果以标准格式、XML格式和Grep格式一次性输出
  6. -v 提高输出信息的详细度
  7. -d level设置debug级别,最高是9
  8. --reason 显示端口处于带确认状态的原因
  9. --open 只输出端口状态为open的端口
  10. --packet-trace 显示所有发送或者接收到的数据包
  11. --iflist 显示路由信息和接口,便于调试
  12. --log-errors 把日志等级为errors/warings的日志输出
  13. --append-output 追加到指定的文件
  14. --resume FILENAME 恢复已停止的扫描
  15. --stylesheet PATH/URL 设置XSL样式表,转换XML输出
  16. --webxml 从namp得到XML的样式
  17. --no-sytlesheet 忽略XML声明的XSL样式表

0x08 其他nmap选项

 
  1. -6 开启IIPV6
  2. -A OS识别,版本探测,脚本扫描和traceroute
  3. --datedir DIRNAME 说明用户Nmap数据文件位置
  4. --send-eth / --send-ip 使用原以太网帧发送/在原IP层发送
  5. --privileged 假定用户具有全部权限
  6. --unprovoleged 假定用户不具有全部权限,创建原始套接字需要root权限
  7. -V 打印版本信息
  8. -h 输出帮助信息

0x09 nmap常用命令

 
  1. nmap -sV -sT -Pn --open -v 192.168.1.1 不使用ping对ip进行服务识别 使用tcp发包 返回端口开放的结果
  2. nmap -sT -Pn --open -v banner.nse 192.168.1.1 获取服务器的banner信息
  3. nmap -sP 192.168.0.0/24 判断哪些主机存活
  4. nmap -sT 192.168.0.3 开放了哪些端口
  5. nmap -sS 192.168.0.127 开放了哪些端口(隐蔽扫描)
  6. nmap -sU 192.168.0.127 开放了哪些端口(UDP)
  7. nmap -sS -O 192.168.0.127 操作系统识别
  8. nmap -sT -p 80 -oG – 192.168.1.* | grep open 列出开放了指定端口的主机列表
  9. nmap -sV -p 80 baidu 列出服务器类型(列出操作系统,开发端口,服务器类型,网站脚本类型等)
  10. -iL filename 从文件中读取待检测的目标,文件中的表示方法支持机名,ip,网段
  11. -iR hostnum 随机选取,进行扫描.如果-iR指定为0,则是无休止的扫描
  12. –exclude host1[, host2] 从扫描任务中需要排除的主机
  13. nmap --exclude 192.168.1.1 192.168.1.1-2 这个只扫描192.168.1.2这个IP–exculdefile exclude_file
  14. 排除文件中的IP,格式和-iL指定扫描文件的格式相同
  15. # 批量扫描
  16. nmap -sT -sV -O -P0 --open -n -oN result.txt -p80-89,8080-8099,8000-8009,7001-7009,9000-9099,21,443,
  17. 873,2601,2604,3128,4440,6082,6379,8888,3389,9200,11211,27017,28017,389,8443,4848,8649,995,9440,9871,
  18. 2222,2082,3311,18100,9956,1433,3306,1900,49705,50030,7778,5432,7080,5900,50070,5000,5560,10000 -iL
  19. ip.txt2 --open 只输出端口开放的结果 输出到result.txt文件
  20. nmap -sT -sV -p80-89,8080-8099,8000-8009,7001-7009,9000-9099,21,443,873,2601,2604,3128,4440,6082,6379,
  21. 8888,3389,9200,11211,27017,28017,389,8443,4848,8649,995,9440,9871,2222,2082,3311,18100,9956,1433,3306,
  22. 1900,49705,50030,7778,5432,7080,5900,50070,5000,5560,10000 --open --max-hostgroup10 --max-parallelism
  23. 10 --max-rtt-timeout 1000ms --host-timeout 800s --max-scan-delay 2000ms -iL ~/Desktop/ip.txt
  24. -oN ~/Desktop/result/result.txt

0x10 nmap api

nmap支持很多语言的扩展,本文简单介绍下python中如何使用nmap。

  • python-nmap
    • 安装:pip install python-nmap
    • 作用:利用python调用nmap接口,实现端口扫描。
    • 使用:
 
  1. >>> import nmap2
  2. >>> nm = nmap.PortScanner()
  3. >>> nm.scan('127.0.0.1', '22-443')
  4. >>> nmmand_line()

主机发现

1. 全面扫描/综合扫描
nmap -A 192.168.1.103

2. Ping扫描
nmap -sP 192.168.1.1/24

3. 免Ping扫描,穿透防火墙,避免被防火墙发现
nmap -P0 192.168.1.103

4. TCP SYN Ping 扫描
nmap -PS -v 192.168.1.103
nmap -PS80,10-100 -v 192.168.1.103 (针对防火墙丢弃RST包)

5. TCP ACK Ping 扫描
nmap -PA -v 192.168.1.103

6. UDP Ping 扫描
nmap -PU -v 192.168.1.103

7. ICMP Ping Types 扫描
nmap -PU -v 192.168.1.103    (ICMP ECHO)
nmap -PP -v 192.168.1.103    (ICMP 时间戳)
nmap -PM -v 192.168.1.103    (ICMP 地址掩码)

8. ARP Ping 扫描
nmap -PR -v 192.168.1.103

9. 列表 扫描
nmap -sL -v 192.168.1.103

10. 禁止方向域名解析
nmap -n -sL -v 192.168.1.103

11. 方向域名解析
nmap -R -sL -v 192.168.1.103

12. 使用系统域名解析系统
nmap --system-dns 192.168.1.2 192.168.1.103

13. 扫描IPV6地址
nmap -6 IPv6

14. 路由跟踪
nmap --traceroute -v www.sunbridgegroup

15. SCTP INIT Ping 扫描
nmap -PY -v 192.168.1.103

端口扫描

1. 时序扫描
nmap -T(0-5) 192.168.1.103

2. 常用扫描方式
nmap -p 80 192.168.1.103
nmap -p 80-100 192.168.1.103
nmap -p T:80,U:445 192.168.1.103
nmap -F 192.168.1.1.103    (快速扫描)
nmap --top-ports 100 192.168.1.103    (扫描最有用的前100个端口)

3. TCP SYN 扫描 (高效的扫描方式)
nmap -sS -v 192.168.1.103

4. TCP 连接扫描
nmap -sT -v 192.168.1.103

5. UDP 连接扫描
nmap -sU -p 80-100 192.168.1.103

6. 隐蔽扫描
nmap -sN 61.241.194.153(NULL扫描)
nmap -sF 61.241.194.153(FIN扫描)
nmap -sX 61.241.194.153(Xmas扫描)

7. TCP ACK 扫描
nmap -sA 192.168.1.103

8. TCP 窗口扫描
nmap -sW -v -F  192.168.1.103

9. TCP Maimon 扫描
nmap -sM -T4  192.168.1.103

10. 自定义 扫描
nmap -sT --scanflags SYNURG 192.168.1.103

11. 空闲 扫描( 隐藏IP )
nmap -sI www.0day.co:80 192.168.1.103

12. IP协议 扫描
nmap -sO -T4 192.168.1.103

13. FTP Bounce 扫描
(已经不被支持)

指纹识别与探测

1. 版本探测
nmap -sV 192.168.1.103
nmap -sV -A 192.168.1.103

2. 全端口版本探测
nmap -sV --allports 192.168.1.103

3. 设置扫描强度
nmap -sV --version-intensity (0-9) 192.168.1.103

4. 轻量级扫描
nmap -sV --version-light 2 192.168.1.103

5. 重量级扫描
nmap -sV --version-all 192.168.1.103

6. 获取详细版本信息
nmap -sV --version-trace 192.168.1.103

7. RPC扫描
nmap -sS -sR 192.168.1.103

8. 对指定的目标进行操作系统监测
nmap -O --osscan-limit 192.168.1.103

9. 推测系统并识别
nmap -O --osscan-guess 192.168.1.103

伺机而动

1. 调整并行扫描组的大小
nmap --min-hostgroup 30 192.168.1.110/24
nmap --max-hostgroup 30 902 192.168.1.104

2. 调整探测报文的并行度
nmap --min-parallelism 100 192.168.1.104
nmap --max-parallelism 100 192.168.1.104

3. 调整探测报文超时
nmap --initial-rtt-timeout 100ms 192.168.1.104
nmap --max-rtt-timeout 100ms 192.168.1.104
nmap --min-rtt-timeout 100ms 192.168.1.104

4. 放弃缓慢的目标主机
nmap --host-timeout 1800000ms 192.168.1.104

5. 调整报文适合时间间隔
nmap --scan-delay 1s 192.168.1.104
nmap --max-scan-delay 1s 192.168.1.104

防火墙/IDS逃逸

1. 报文分段
nmap -f -v 61.241.194.153

2. 指定偏移大小
nmap --mtu 16 192.168.1.104

3. IP欺骗
nmap -D RND:11 192.168.1.104
nmap -D 192.168.1.104,192.168.1.103,192.168.1.101 192.168.1.104

4. 源地址欺骗
nmap -sI www.0day:80 192.168.1.104

5. 源端口欺骗
nmap --source-port 902 192.168.1.104

6. 指定发包长度
nmap --data-length 30 192.168.1.104

7. 目标主机随机排序
nmap --randomize-hosts 192.168.1.104

8. MAX地址欺骗
nmap -sT -Pn --spoof-mac 0 192.168.1.104

信息收集

1. IP信息收集
nmap --script ip-geolocation-* www.pcos

2. WHOIS 查询
nmap --script whois-domain www.pcos
nmap --script whois-domain --script-args whois.whodb=nofollow www.ithome
nmap -sn --script whois-domain -v -iL host.txt

3. 搜索邮件信息(新版可能没有这个模块)
nmap --script http-email-harvest www.pcos

4. IP反查
nmap -sn --script hostmap-ip2hosts www.pcos

5. DNS信息收集
nmap --script dns-brute www.pcos
nmap --script dns-brute dns-brute.threads=10 www.pcos
nmap --script dns-brute dns-brute.threads=10,dns-brute.hostlis www.pcos

6. 检索系统信息
nmap -p 445 445 192.168.1.104 --script membase-http-info

7. 后台打印机服务漏洞
nmap --script smb-security-mode.nse -p 445 119.29.155.45

8. 系统漏洞扫描
nmap --script smb-check-vulns.nse -p 445 119.29.155.45

9.扫描Web漏洞
nmap -p80 --script http-stored-xss.nse/http-sql-injection.nse 119.29.155.45

10. 通过 Snmp 列举 Windows 服务/账户
nmap -sU -p 161 --script=snmp-win32-services 192.168.1.104
nmap -sU -f -p 161 --script=snmp-win32-users 192.168.1.110

11. 枚举 DNS 服务器的主机名
nmap --script dns-brute --script-args dns-brute.domain=baidu

12. HTTP信息收集
nmap -sV -p 80 www.0day (HTTP版本探测)
nmap -p 80 --script=http-headers www.pcos (HTTP信息头探测)
nmap -p 80 --script=http-sitemap-generator www.pcos (爬行Web目录结构)

13. 枚举SSL密钥
nmap -p 443 --script=ssl-enum-ciphers www.baidu

14. SSH服务密钥信息探测
map -p 22 --script ssh-hostkey --script-args ssh_hostkey=full 127.0.0.1

数据库渗透测试

1. Mysql列举数据库
nmap -p3306 --script=mysql-databases --script-args mysqluser=root,mysqlpass 192.168.1.101

2. 列举 MySQL 变量
nmap -p3306 --script=mysql-variables 192.168.1.3
nmap -sV --script=mysql-variables 192.168.1.3 (无法确定端口的情况下)

3. 检查 MySQL 密码
nmap -p3306 --script=mysql-empty-password 192.168.1.3
nmap -sV -F -T4 --script=mysql-empty-password 192.168.1.3

4. 审计 MySQL 密码
nmap --script=mysql-brute 192.168.1.101
nmap -p3306 --script=mysql-brute userdb=/root/passdb.txt passdb=/root/pass.txt 192.168.1.101 (指定字典)

5. 审计 MySQL 安全配置
nmap -p3306 --script mysql-audit --script-args "mysql-audit.username='root',mysql-audit.password='123',mysql-audit.filename='nselib/data/mysql-cis.audit'" 192.168.1.104

6. 审计 Oracle 密码
nmap --script=oracle-brute -p 1521 --script-args oracle-brute.sid=test 192.168.1.121
nmap --script=oracle-brute -p 1521 --script-args oracle-brute.sid=test --script-args userdb=/tmp/usernames.txt,passdb=/tmp/password.txt 192.168.1.105

7. 审计 msSQL密码
nmap -p 1433 --script ms-sql-brute --script-args userdb=name.txt,passdb=pass.txt 192.168.1.104

8. 检查 msSQL空密码
nmap -p 1433 --script ms-sql-empty-password 192.168.1.104

9. 读取 msSQL 数据
nmap -p 1433 --script ms-sql-tables --script-args mssql.username=sa,mssql.Password=sa 192.168.1.101

10. 读取 msSQL 执行系统命令
nmap -p 1433 --script ms-sql-xp-cmdshell --script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd="ipconfig" 192.168.1.101

11. 审计 PgSQL 密码
nmap -p 5432 --script pgsql-brute 192.168.1.101

渗透测试

1. 审计 HTTP 身份验证
nmap --script=http-brute -p 80 www.pcos

2. 审计 FTP 服务器
nmap --script ftp-brute -p 21 192.168.1.101
nmap --script ftp-brute --script-args userdb=user.txt,passdb=pass.txt -p 21 192.168.1.101
nmap --script=ftp-anon 192.168.1.101

3. 审计 Wordpress 程序
nmap -p80 --script http-wordpress-brute 192.168.1.110
nmap -p80 --script http-wordpress-brute --script-args userdb=user.txt,passdb=passwd.txt 192.168.1.110
nmap -p80 --script http-wordpress-brute --script-args http-wordpress-brute.threads=10 192.168.1.110

4. 审计 Joomla 程序
nmap -p80 --script http-joomla-brute 192.168.1.110
nmap -p80 --script http-joomla-brute --script-args uesrdb=user.txt,passdb=passwd.txt 192.168.1.110
nmap -p80 --script http-joomla-brute --script-args uesrdb=user.txt,passdb=passwd.txt,http-joomla-brute.threads=5 192.168.1.110

5. 审计 邮件服务器 
nmap -p110 --script=pop3-brute 192.168.1.110

6. 审计 SMB 口令
nmap --script smb-brute.nse -p 445 192.168.1.110
nmap --script smb-brute.nse --script-args passdb=pass.txt -p 445 192.168.1.110

7. 审计 VNC 服务
nmap --script vnc-brute -p 5900 192.168.1.110

8. 审计 SMTP 服务器
nmap -p 25 --script smtp-brute 192.168.1.110
nmap -p 25 --script=smtp-enum-users.nse smith.jack (枚举远程系统所有用户)

9. 检测 Stuxnet 蠕虫
nmap --script stuxnet-detect -p 445 192.168.1.110

10. SNMP 服务安全审计
nmap -sU -p 161 --script=snmp-netstat 192.168.1.101 (获取目标主机网络连接状态)
nmap -sU -p 161 --script=snmp-processes 192.168.1.110 (枚举目标主机的系统进程)
nmap -sU -p 161 --script=snmp-win32-services 192.168.1.110 (获得windows服务器的服务)
nmap -sU -p 161 --script snmp-brute 192.168.1.110

Zenmap

1. Intense scan (详细扫描)
nmap -T4 -A -v 192.168.1.101

2. Intense scan plus UDP (UDP扫描经典使用)
nmap -sS -sU -T4 -A -v 192.168.1.101

3. Intense scan, all TCP ports (TCP扫描)
nmap -p 1-65535 -T4 -A -v 192.168.1.101

4. Intense scan, no ping (无Ping扫描)
nmap -T4 -A -v -Pn 192.168.1.101

5. Ping scan (Ping扫描)
nmap -sn 192.168.1.101/24

6. Quick scan
nmap -T4 -F 192.168.1.101/24

7. Quick scan plus
nmap -sV -T4 -O -F --version-light 192.168.1.101/24

8. Quick traceroute
nmap -sn --traceroute 192.168.1.101

9. Regular scan 
nmap 192.168.1.101

10. Slow comprehensive scan
nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 --script "default or (discovery and safe)" 192.168.1.101

Nmap 技巧

1. 发送以太网数据包
nmap --send-eth 192.168.1.111

2. 网络层发送
nmap --send-ip 192.168.1.111

3. 假定拥有所有权
nmap --privileged 192.168.1.111

4. 在交互模式中启动
nmap --interactive

5. 查看 Nmap 版本号
nmap -V

6. 设置调试级别
nmap -d (1-9) 192.168.1.111

7. 跟踪发送接收的报文
nmap --packet-trace -p 20-30 192.168.1.111

8. 列举接口和路由
nmap --iflist www.iteye

9. 指定网络接口
nmap -e eth0 192.168.1.111

10. 继续中断扫描
nmap -oG 1.txt -v 192.168.126.1/24
nmap --resume 1.txt (继续扫描)

11. Dnmap
dnmap_server -f test (指定命令脚本)
dnmap_client -s 192.168.1.107 -a test

12. 编写 Nse 脚本

    (1)    -- The scanning module --
        author = "Wing"
        categories = {"version"}
        
        portrule = function(host,port)
            return port.protocol == "tcp" and port.number == 80 and port.state == "open"
        end
        
        action = function(host,port)
            return "Found!!!"
        end
        
    (2) -- The scanning module --
        author = "Wing"
        categories = {"version"}
        
        local comm=require "comm"
        require "shortport"
        local http=require "http"
        
        portrule = function(host,port)
            return (port.number == 80) and (port.start=="open")
        end
        
        action = function(host,port)
            local uri = "/admin.php"
            local response = http.get(host,port,uri)
            return "Found!!!"
        end

13. 探测防火墙
nmap --script=firewalk --traceroute 192.168.1.111

14. VMware认证破解
nmap -p 902 --script vmauthd-brute 192.168.1.107

Nmap的保存和输出

1. 标准保存
nmap -F -oN d:/test1.txt 192.168.1.111

2. XML保存
nmap -F -oX d:/test1.xml 192.168.1.111

3. 133t 保存
nmap -F -oS d:/test2.txt 192.168.1.111

4. Grep 保存
nmap -F -oG d:/test2.txt 192.168.1.111

5. 保存到所有格式
nmap -F -oA d:/test2 192.168.1.111

6. 补充保存文件
nmap -F -append-output -oN d:/test2.txt 192.168.1.111

7. 转换 XML 保存
nmap -F -oX testB.xml --stylesheet http://www.insecure/nmap/data/nmap.xsl 192.168.1.111

8. 忽略 XML 声明的 XSL 样式表
nmap -oX d:/testC.xml --no-stylesheet 192.168.1.111    

本文标签: nmap