目录
一、网络扫描
1、masscan
Masscan号称是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网。
masscan的扫描结果类似于nmap(一个很著名的端口扫描器),在内部,它更像scanrand, unicornscan, and ZMap,采用了异步传输的方式。它和这些扫描器最主要的区别是,它比这些扫描器更快。而且,masscan更加灵活,它允许自定义任意的地址范和端口范围。
参数:
IP地址范围,有三种有效格式,1、单独的IPv4地址 2、类似"10.0.0.1-10.0.0.233"的范围地址 3、CIDR地址 类似于"0.0.0.0/0",多个目标可以用都好隔开
-p <ports,--ports <ports>> 指定端口进行扫描
--banners 获取banner信息,支持少量的协议
--rate <packets-per-second> 指定发包的速率
-c <filename>, --conf <filename> 读取配置文件进行扫描
--echo 将当前的配置重定向到一个配置文件中
-e <ifname> , --adapter <ifname> 指定用来发包的网卡接口名称
--adapter-ip <ip-address> 指定发包的IP地址
--adapter-port <port> 指定发包的源端口
--adapter-mac <mac-address> 指定发包的源MAC地址
--router-mac <mac address> 指定网关的MAC地址
--exclude <ip/range> IP地址范围黑名单,防止masscan扫描
--excludefile <filename> 指定IP地址范围黑名单文件
--includefile,-iL <filename> 读取一个范围列表进行扫描
--ping 扫描应该包含ICMP回应请求
--append-output 以附加的形式输出到文件
--iflist 列出可用的网络接口,然后退出
--retries 发送重试的次数,以1秒为间隔
--nmap 打印与nmap兼容的相关信息
--http-user-agent <user-agent> 设置user-agent字段的值
--show [open,close] 告诉要显示的端口状态,默认是显示开放端口
--noshow [open,close] 禁用端口状态显示
--pcap <filename> 将接收到的数据包以libpcap格式存储
--regress 运行回归测试,测试扫描器是否正常运行
--ttl <num> 指定传出数据包的TTL值,默认为255
--wait <seconds> 指定发送完包之后的等待时间,默认为10秒
--offline 没有实际的发包,主要用来测试开销
-sL 不执行扫描,主要是生成一个随机地址列表
--readscan <binary-files> 读取从-oB生成的二进制文件,可以转化为XML或者JSON格式.
--connection-timeout <secs> 抓取banners时指定保持TCP连接的最大秒数,默认是30秒。
例1:扫描指定网段范围的指定端口
masscan -p80,8080-8100 10.0.0.0/8 -- rate 1000000
例2:可以使用 --echo 将当前的配置输出到一个配置文件,利用 -c 来制定配置文件进行扫描:
masscan -p80,8000-8100 10.0.0.0/8 --echo > scan.conf
masscan -c scan.conf --rate 1000
例3:获取Banner
masscan 10.0.0.0/8 -p80 --banners --source-ip x.x.x.x
例4:加载配置文件的方式运行
masscan 10.0.0.0/8 -p80 -c masscan.conf
内容:
rate = 100000
output-format = xxx
output-status = all
output-filename = xxx.xxx
ports = 0-65535
range = 0.0.0.0-255.255.255.255
excludefile = exclude.txt
2、nmap
Nmap是一款非常强大的主机发现和端口扫描工具,而且nmap运用自带的脚本,还能完成漏洞检测,同时支持多平台
主机发现
iR 随机选择目标
-iL 从文件中加载IP地址
-sL 简单的扫描目标
-sn Ping扫描-禁用端口扫描
-Pn 将所有主机视为在在线,跳过主机发现
-PS[portlist] (TCP SYN ping) 需要root权限
-PA[portlist] (TCP ACK ping)
-PU[portlist] (UDP ping)
-PY [portlist] (SCTP ping)
-PE/PP/PM ICMP回显,时间戳和网络掩码请求探测
-PO[协议列表] IP协议Ping
-n/-R 从不执行DNS解析/始终解析[默认:有时]
--dns-servers 指定自定义DNS服务器
--system-dns 使用OS的dns服务器
--traceroute 跟踪到每个主机的跃点路径
扫描技术
-sS 使用TCP的SYN进行扫描
-sT 使用TCP进行扫描
-sA 使用TCP的ACK进行扫描
-sU UDP扫描
-sI Idle扫描
-sF FIN扫描
-b<FTP中继主机> FTP反弹扫描
端口规格和扫描顺序
-p 扫描指定端口
--exclude-ports 从扫描中排除指定端口
-f 快速模式-扫描比默认扫描更少的端口
-r 连续扫描端口-不随机化
--top-ports 扫描<number>最常用的端口
服务/版本探测
-sV 探测服务/版本信息
--version-intensity 设置版本扫描强度(0-9)
--version-all 尝试每个强度探测
--version-trace 显示详细的版本扫描活动(用于调试)
脚本扫描
-SC 等效于 --script=defult
--script = <lua scripts>,<lua scripts> 以逗号分隔的目录,脚本文件或脚本类别
--script-args = <n1=v1, n2=v2> 为脚本提供参数
--script-args-file=文件名 从文件名中加载脚本参数
--script-trace 显示发送和接受的所有数据
--script-updatedb 更新脚本数据库
--script-help=<lua scripts> 显示有关脚本的帮助
操作系统检测
-o 启用os检测
--osscan-limit 将os检测限制为可能的目标
--osscan-guess 推测操作系统检测结果
时间和性能
--host-timeout 设置超时时间
--scan-delay 设置探测之间的时间间隔
-T <0-5> 设置时间模板,值越小,IDS报警几率越低
防火墙/IDS规避和欺骗
-f 报文分段
-s 欺骗源地址
-g 使用指定的本机端口
--proxies <url,port> 使用HTTP/SOCK4代理
-data<hex string> 想发送的数据包中追加自定义的负载
--data-string 将自定义的ACSII字符串附加到发送数据包中
--data-length 发送数据包时,附加随机数据
--spoof-mac MAC地址欺骗
--badsum 发送带有虚假TCP/UNP/STCP校验和的数据包
输出
-oN 标准输出
-oX XMl输出
-oS script jlddi3
-oG grepable
-oA 同时输出三种主要格式
-v 信息详细级别
-d 调试级别
--packet-trace 跟踪发送和接收的报文
--reason 显示端口处于特殊状态的原因
--open 仅显示开放的端口
杂项
-6 启动Ipv6扫描
-A 启动Os检测,版本检测,脚本扫描和traceroute
-V 显示版本号
-h 帮助信息
例 1:使用 nmap 扫描一台服务器
默认情况下,Nmap 会扫描 1000 个最有可能开放的 TCP 端口。
┌──(root💀kali)-[~]
└─# nmap 192.168.1.109
Starting Nmap 7.91 ( https://nmap.org ) at 2023-03-21 23:08 CST
Nmap scan report for 192.168.1.109
Host is up (0.000079s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
5003/tcp open filemaker
5555/tcp open freeciv
MAC Address: 00:0C:29:AF:59:19 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
例 2: 扫描一台机器,查看它打开的端口及详细信息。
参数说明:
-v 表示显示冗余信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态
┌──(root💀kali)-[~]
└─# nmap -v 192.168.1.109
Starting Nmap 7.91 ( https://nmap.org ) at 2023-03-21 23:10 CST
Initiating ARP Ping Scan at 23:10
Scanning 192.168.1.109 [1 port]
Completed ARP Ping Scan at 23:10, 0.04s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 23:10
Completed Parallel DNS resolution of 1 host. at 23:10, 0.01s elapsed
Initiating SYN Stealth Scan at 23:10
Scanning 192.168.1.109 [1000 ports]
Discovered open port 111/tcp on 192.168.1.109
Discovered open port 22/tcp on 192.168.1.109
Discovered open port 5555/tcp on 192.168.1.109
Discovered open port 5003/tcp on 192.168.1.109
Completed SYN Stealth Scan at 23:10, 0.05s elapsed (1000 total ports)
Nmap scan report for 192.168.1.109
Host is up (0.000071s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcp open rpcbind
5003/tcp open filemaker
5555/tcp open freeciv
MAC Address: 00:0C:29:AF:59:19 (VMware)
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.15 seconds
Raw packets sent: 1001 (44.028KB) | Rcvd: 1001 (40.044KB)
例 3:扫描一个范围: 端口 1-65535
└─# nmap -p 1-65535 192.168.1.63
注:生产环境下,我们只需要开启正在提供服务的端口,其他端口都关闭。
例 4: 扫描一台机器:查看此服务器开放的端口号和操作系统类型。
┌──(root💀kali)-[~]
└─# nmap -sS -O www.taobao.com
Starting Nmap 7.91 ( https://nmap.org ) at 2023-03-21 23:19 CST
Nmap scan report for www.taobao.com (111.6.93.167)
Host is up (0.021s latency).
Other addresses for www.taobao.com (not scanned): 111.6.93.166 2409:8c44:6100:1000:3::3cd 2409:8c44:6100:1000:3::3ce
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
OS fingerprint not ideal because: Missing a closed TCP port so results incomplete
No OS matches for host
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.87 seconds
参数说明:
-O: 显示出操作系统的类型。 每一种操作系统都有一个指纹。
-sS:半开扫描(half-open)
TCP 同步扫描(TCP SYN):因为不必全部打开一个 TCP 连接,所以这项技术通常称为半开扫描
(half-open)。你可以发出一个 TCP 同步包(SYN),然后等待回应。如果对方返回 SYN|ACK(响应)包就 表示目标端口正在监听;如果返回 RST 数据包,就表示目标端口没有监听程序;如果收到一个 SYN|ACK 包,源主机就会马上发出一个 RST(复位)数据包断开和目标主机的连接,这实际上由我们的操 作系统内核自动完成的。
当服务器端口开放时,半连接扫描过程如图 1 ,当服务器端口关闭时,半连接扫描过程如图 2
例 5:扫描一个网段中所有机器是什么类型的操作系统。
└─# nmap -sS -O 192.168.1.0/24
例 6: 查找一些有特点的 IP 地址中,开启 80 端口的服务器。
└─# nmap -v -p 80 192.168.1.62-67
例 7:如何更隐藏的去扫描,频繁扫描会被屏蔽或者锁定 IP 地址。
--randomize-hosts # 随机扫描,对目标主机的顺序随机划分
--scan-delay #延时扫描,单位秒,调整探针之间的延迟
(1)随机扫描
┌──(root💀kali)-[~]
└─# nmap -v --randomize-hosts -p 80 192.168.1.62-69 130 ⨯
Starting Nmap 7.91 ( https://nmap.org ) at 2023-03-21 23:26 CST
Initiating ARP Ping Scan at 23:26
Scanning 8 hosts [1 port/host]
Completed ARP Ping Scan at 23:26, 1.41s elapsed (8 total hosts)
Nmap scan report for 192.168.1.66 [host down]
Nmap scan report for 192.168.1.68 [host down]
Nmap scan report for 192.168.1.62 [host down]
Nmap scan report for 192.168.1.63 [host down]
Nmap scan report for 192.168.1.65 [host down]
Nmap scan report for 192.168.1.64 [host down]
Nmap scan report for 192.168.1.69 [host down]
Nmap scan report for 192.168.1.67 [host down]
Read data files from: /usr/bin/../share/nmap
Nmap done: 8 IP addresses (0 hosts up) scanned in 1.45 seconds
Raw packets sent: 16 (448B) | Rcvd: 0 (0B)
(2)随机扫描+延时扫描 ,默认单位秒
└─# nmap -v --randomize-hosts --scan-delay 3000ms -p 80 192.168.1.62-69
例 8:使用通配符指定 IP 地址
└─# nmap -v --randomize-hosts --scan-delay 30 -p 80 1.*.2.3-8
例 9:Connect 扫描
└─# nmap -sT 192.168.1.63 -p 80
这种扫描方式和 SYN 扫描很像,只是这种扫描方式完成了 TCP 的三次握手。
例 10:UDP 扫描
└─# nmap -sU 192.168.1.63
端口状态解析:
open:从目标端口得到任意的 UDP 应答
open|filtered:如果目标主机没有给出应答
closed:ICMP 端口无法抵达错误
filtered:ICMP 无法抵达错误
例 11:报文分段扫描
└─# nmap -f -v 192.168.1.63
例 12:使用诱饵主机隐蔽扫描
(1)随机 3 个诱饵
└─# nmap -D RND:3 192.168.1.63
(2)使用自己 IP 作为诱饵
└─# nmap -D ME 192.168.1.63
(3)指定单个 IP:192.168.1.14 作为诱饵
└─# nmap -D 192.168.1.14 192.168.1.63
(4)指定多个 IP 作为诱饵对 192.168.1.63 进行探测
└─# nmap -D 192.168.1.14,192.168.1.18 192.168.1.63
例 13:伪造源端口为 8888 对目标进行扫描
└─# nmap --source-port 8888 101.200.128.35
或
└─# nmap -g 8888 101.200.128.35
例 14:从互联网上随机选择 10 台主机扫描是否运行 Web 服务器(开放 80 端口)
└─# nmap -v -iR 10 -p 80
例 15:将所有主机视为联机,跳过主机发现,这种方式可以穿透防火墙,避免被防火墙发现
└─# nmap -Pn 101.200.128.35
3、unicornscan
Unicornscan 是一个新的信息收集引擎,主要用于安全研究和通讯测试,主要特点是精确、灵活而且高效。
发包探测并根据接收到的回包判断端口是否开放
TCP :基于三次握手判断
UDP :无连接,必须基于应用层指令
发包太快:对带宽和本机资源消耗大(自杀)
回包太慢:超时时间过快来不及收包
另一个名称 us
参数:
us 1.1.1.1默认只扫描TCP常用端口
-i 指定网卡接口
-p 指定目标端口
-s 指定源地址
-B 指定源端口
-H 结果显示主机名
-l 记录日志结果
-L 超时时间
-r 每秒发包总数(默认300 pps )
-R 发包次数
-t 指定TTL值
-T 指定ToS值
-z 嗅探收包
-v 显示详细信息
-W 保存收包
-G payload组编号
-m 扫描方式
U UDP协议
sf TCP连接扫描
T TCP Syn扫描
syn[Ss]、fin[Ff]、 urg[Uu]、 psh[Pp]、 ack[Aa] , ece[Ee], cwr[Cc]
例1: 目标端口和网卡扫描
us -i eth0 192.168.1.109:1-4000
二、DNS分析
1、dnsenum
dnsenum 是一款非常强大的域名信息收集工具。它的目的是尽可能多的收集一个域的信息,能够通过谷歌或者字典文件猜测可能存在的域名,以及对一个网段进行反向查询。它可以查询网站的主机地址信息、域名服务器、mx record(邮件交换记录),在域名服务器上执行axfr请求,通过谷歌脚本得到扩展域名信息(google hacking),提取自域名并查询,计算C类地址并执行whois查询,执行反向查询,把地址段写入文件等。
参数说明:
# 使用这个选项指定 dns 服务器,如果不指定,默认使用 /etc/resolv.conf 中指定的 dns 服务器
--dnsserver <server>
Use this DNS server for A, NS and MX queries.
# 这是一个其他参数的组合,与 --threads 5 -s 15 -w 功能一样
--enum Shortcut option equivalent to --threads 5 -s 15 -w.
# 这个参数是打开本帮助文档
-h, --help Print this help message.
# 这个参数的作用是跳过反向查找操作
--noreverse Skip the reverse lookup operations.
# 禁用 ANSI 颜色输出
--nocolor Disable ANSIColor output.
# 在 domain_ips.txt 文件的末尾显示并保存私人 ips
--private Show and save private ips at the end of the file domain_ips.txt.
# 将扫描到的所有子域写入到这个参数指定的文件中
--subfile <file> Write all valid subdomains to this file.
# 用于指定 tcp 和 udp 超时时间,单位秒,默认 10s
-t, --timeout <value> The tcp and udp timeout values in seconds (default: 10s).
# 指定将执行不同查询的线程数
--threads <value> The number of threads that will perform different queries.
# 显示详细信息,显示所有进度和所有错误消息
-v, --verbose Be verbose: show all the progress and all the error messages.
# 与 Google 搜索引擎结合的参数选项:
GOOGLE SCRAPING OPTIONS:
# 抓取 Google 搜索引擎搜索结果的页数,默认是抓取 5 个页面,必须指定 -s 参数
-p, --pages <value> The number of google search pages to process when scraping names,
the default is 5 pages, the -s switch must be specified.
# 从 Google 抓取的最大子域数量,默认为 15
-s, --scrap <value> The maximum number of subdomains that will be scraped from Google (default 15).
# 暴力破解选项:
BRUTE FORCE OPTIONS:
# 指定暴力破解子域的字典文件,优先级大于默认的字典文件
-f, --file <file> Read subdomains from this file to perform brute force. (Takes priority over default dns.txt)
# 更新 -f 指定的字典文件中可用的子域
-u, --update <a|g|r|z>
Update the file specified with the -f switch with valid subdomains.
# 使用所有结果
a (all) Update using all results.
# 只使用 google 抓取的结果
g Update using only google scraping results.
# 只使用反向查询到的子域结果
r Update using only reverse lookup results.
# 只使用区域传输获取到的结果
z Update using only zonetransfer results.
# 递归查询子域,暴力查询所有发现的具有 NS 记录的子域
-r, --recursion Recursion on subdomains, brute force all discovered subdomains that have an NS record.
# whois 查询选项:
WHOIS NETRANGE OPTIONS:
# Whois 查询之间等待的秒数最大值,该值是随机定义的,默认值:3s
-d, --delay <value> The maximum value of seconds to wait between whois queries, the value is defined randomly, default: 3s.
# 在 c 类网络范围上执行 whois 查询
-w, --whois Perform the whois queries on c class network ranges.
# 警告:这会产生很大的网络范围,执行反向查找将花费大量时间
**Warning**: this can generate very large netranges and it will take lot of time to perform reverse lookups.
# 反向查找选项:
REVERSE LOOKUP OPTIONS:
# 从反向查找结果中排除与regexp 表达式匹配的 PTR 记录,这对无效的主机名很有用。
-e, --exclude <regexp>
Exclude PTR records that match the regexp expression from reverse lookup results, useful on invalid hostnames.
# 输出选项:
OUTPUT OPTIONS:
# 指定扫描结果以 xml 格式保存到文件中
-o --output <file> Output in XML format. Can be imported in MagicTree (www.gremwell.com)
默认的字典文件所在位置是:/usr/share/dnsenum/dns.txt
例1:实现dns查询
dnsenum taobao.com
例2:使用字典文件进行dns查询
dnsenum --noreverse -f /usr/share/dnsenum/dns.txt taobao.com
2、dnsmap
参数说明:
-w 指定用户自己的字典文件。
-r 指定一个目录,将扫描到的结果保存到这个指定的目录中,并以当前时间戳命名。
-d 指定一个正整数,使得 dnsmap 在暴力扫面的时候能够周期性的休眠,这样不会占用系统带宽。单位是毫秒。
-i 后面可以跟一个或者多个 IP 地址,使用逗号隔开,这样扫描结果中就会过滤掉有这些 IP 的结果
-c 保存结果为 CSV 格式。
例1:混合使用
dnsmap taobao.com -d 800 -r /tmp/ -c dns.txt -i 10.55.206.154,10.55.24.100 -w wordlist.txt
3、dnsrecon
DNS侦察是渗透测试信息收集中重要的一部分。DNS侦察是为了从DNS服务器返回的记录中,获取更多信息。不用触发IDS/IPS即可获取网络设施相关的信息。大部分的企业不会监控DNS服务器,只会监视是否存在区域传输漏洞。
参数说明:
-h, --help 打印帮助信息并退出
-d, --domain <domain> 目标域名
-r, --range <range> 对给定格式的IP范围进行爆破,格式为(开始IP-结束IP)或(范围/掩码).
-n, --name_server <name> 指定一个域名服务器
-D, --dictionary <file> 用来爆破的子域名与主机名字典文件
-f 在保存结果时忽略枚举域查找结果
-a 在标准枚举过程中进行空间域传送测试
-s 在标准枚举过程中进行IP地址范围的反向查找
-g 在标准枚举的过程中进行Google枚举
-w 在标准枚举的过程中进行深度whois查询和IP反查
-z 在标准枚举的过程中进行DNSSEC域漫游
--threads <number> 指定线程数
--lifetime <number> 指定查询等待的时间
--db <file> 将结果存储为sqlite3数据库的文件
--xml <file> 将结果存储为XML格式的文件
--iw 即使发现了通配符也依然爆破
-c, --csv <file> CSV格式的文件
-j, --json <file> json文件
-v 显示爆破的过程
-t, --type <types> 指定枚举类型:
std 如果NS服务器的域传送失败,进行SOA、NS、A、AAAA、MX 和 SRV的枚举(必须使用-d参数指定域名才可使用此参数)
rvl 对给定的IP范围或CIDR进行反向查找(必须使用-r指定IP范围)
brt 使用指定的字典爆破域名与主机名
srv 枚举SRV记录
axfr 对所有的NS服务器进行域传送测试
goo 对子域名和host进行Google搜索
snoop 对-D选项给出的文件进行DNS服务器缓存侦测
tld 删除给定域的TLD并测试在IANA中注册的所有的TLD
zonewalk 使用NSEC记录进行DNSSEC域漫游
例1:对域名进行子域名查找
dnsrecon -d taobao.com -t std -v --lifetime 20
例2:对给定的IP范围进行域名反查
dnsrecorn -r 192.168.1.1-192.168.1.254 -t rvl --lifetime 20 -v
4、dnstracer
dnstracer 是用于追踪DNF查询请求的,可以从根域->目标域一步一步迭代查看查询请求。
参数说明:
-c: 禁用本地缓存(默认启用)
-C: 启用negative caching(默认禁用)
-o: 启用返回结果概述(默认禁用,-o与-v对应,-o显示查询结果的简略信息,-v显示查询结果的详细信息)
-q <querytype>: 指定查询记录的类型,默认为A记录
-r <retries>: 指定重试的次数,默认3次
-s <server>: 使用这个服务器作为初始请求服务器(默认使用本地DNS服务器)。如果被指定, A.ROOT-SERVERS.NET将被使用(A.ROOT-SERVERS.NET是全球13个主DNS服务器之一)
-t <maximum timeout>: 设置每一次查询等待的时间
-v: 详细输出(默认不显示查询结果,只显示在NS服务器上是否找到记录)
-S <ip address>: 使用此IP地址为数据包的源IP地址
-4: 不查询IPv6服务器
5、dnswalk
dnswalk是一个DNS调试器,它执行指定域的传送,并以多种方式检查数据库内部一致性以及准确性。用于域的转换和查询数据库。有时候可能需要了解当前域名所对应的所有二级域名,DNSWALK就是利用DNS区域传输技术来获取DNS对应域名A记录的小TOOL。
DNS Zone Transfers(DNS区域传输)是指一台备用服务器使用来自主服务器的数据刷新自己的域(zone)数据库。当主服务器出现故障,备用服务器就自动顶替主服务器提供域名解析服务。当DNS服务器被错误地配置成只要有client发出请求,就会向对方提供一个zone数据库的详细信息。这样就形成了DNS Zone Transfers漏洞工具。通过该漏洞,测试人员可以快速的判定出某个特定zone的所有主机,收集域信息,选择渗透测试目标。
参数说明:
-r 对指定域名的子域进行递归查询
-a 发现重复的A记录发出告警
-d 将调试状态信息输出到stderr
-m 仅检查上次运行后发生变化的记录
-F 检查PTR记录IP是否与对应A记录相符
-i 不检查域名中的无效字符
-l 检查区域文件中NS记录主机是否能返回正确的应答
6、fierce
该工具是一个域名扫描综合性工具。它可以快速获取指定域名的DNS服务器,并检查是否存在区域传输(Zone Transfer)漏洞。如果存在该漏洞,会自动执行暴力破解,以获取子域名信息。对获取的IP地址,它还会遍历周边IP地址,以获取更多的信息。该工具会将IP地址进行分段统计,以便于后期其他工具扫描,如NMAP。是一款轻量级的DNS手机工具。
参数说明:
--search 指定dns服务器
-h, --help 显示此帮助消息并退出
--domain 指定查询的域名
--connect 尝试HTTP连接到非RFC 1918主机
--wide 扫描入口IP地址的c段,会收集到更多的信息,产生大流量
--traverse TRAVERSE 扫描发现的记录附近的IP,这不会进入相邻的c类
--search SEARCH [SEARCH ...] 展开查找时筛选这些域
--range RANGE 扫描内部IP范围,使用cidr表示法
--delay DELAY 查找之间的等待时间
--subdomains SUBDOMAINS [SUBDOMAINS ...] 使用这些子域
--subdomain_file SUBDOMAIN_FILE 使用此文件中指定的子域(每行一个)
--dns-servers dns_servers[dns_servers…] 使用这些dns服务器进行反向查找
--dns-file 用文件指定反向查询DNS服务器列表
--tcp 使用tcp而不是UDP
例1:基本扫描
fierce --domain baidu.com
例2:使用此文件中指定的子域进行TCP扫描
fierce --subdomain_file domain.txt --tcp
7、urlcrazy
Typo域名是一类的特殊域名。用户将正确的域名错误拼写产生的域名被称为Typo域名。例如,www.baidu.com错误拼写为www.bidu.com,就形成一个Typo域名。对于热门网站的Typo域名会产生大量的访问量,通常都会被人抢注,以获取流量。而黑客也会利用Typo域名构建钓鱼网站。
Kali Linux提供对应的检测工具urlcrazy。该工具统计了常见的几百种拼写错误。它可以根据用户输入的域名,自动生成Typo域名;并且会检验这些域名是否被使用,从而发现潜在的风险。同时,它还会统计这些域名的热度,从而分析危害程度。
用途:
1、通过错误输入域名检测Typo Squatting误值域名攻击;
2、通过注册常见域名Typo来保护企业域名安全;
3、识别潜在的Typo域名;
4、在渗透测试过程中执行网络钓鱼攻击;
参数说明:
-k, --keyboard=LAYOUT 选项为:qwerty、azerty、qwertz、dvorak(默认值:qwerty)
-p, --popularity 通过谷歌查看域名受欢迎程度
-r, --no-resolve 不解析DNS
-i, --show-invalid 显示无效域名
-f, --format=TYPE Human readable, JSON, or CSV (default: human readable)
-o, --output=FILE 输出文件
-n, --nocolor 禁用颜色
-d, --debug 为开发启用调试输出
-h, --help 帮助
-v, --version 版本信息
例1:检测baidu.com的Typo域名
urlcrazy -i baidu.com
例2:保存结果到文件中
# -o 参数用于指定保存结果的文件
# -f 参数用来指定数据的保存格式。urlcrazy支持两种格式:human readable 和 CSV,默认为human readable
8、dns 字典文件的网址
http://packetstormsecurity.org/Crackers/wordlists/dictionaries/
http://www.cotse.com/tools/wordlists1.htm
http://wordlist.sourceforge.net/
三、IDS/IPS 识别
1、fragrouter
Fragroute能够截取、修改和重写向外发送的报文,实现了大部分的IDS攻击功能。Fragroute起重要作用的是一个简单的规则设置语言,以它去实现延迟、复制、丢弃、碎片、重叠、打印、重排、分割、源路由或其他一些向目标主机发送数据包的攻击。这个工具开发的本意是去测试入侵检测系统、防火墙、基本的TCP/IP堆栈的行为。 该工具是为了帮助测试网络入侵检测系统,防火墙和基本TCP/IP堆栈行为而编写的,请不要滥用此软件!
用法:fragrouter[-i接口][-p][-g跃点][-g跃点][-g跃点]攻击
如果攻击是以下情况之一:
-B1:base-1:正常IP转发
-F1:frag-1:有序的8字节IP片段
-F2:frag-2:有序的24字节IP片段
-F3:frag-3:有序的8字节IP片段,一个乱序
-F4:frag-4:有序的8字节IP片段,一个副本
-F5:frag-5:无序的8字节片段,一个副本
-F6:frag-6:有序的8字节片段,首先标记最后一个frag
-F7:frag-7:有序16字节片段,fwd覆盖
-T1:tcp-1:三次握手正常完成之后,错误的tcp校验,flag标记位设置为FIN/RST,有序的1字节段
-T3:tcp-3:3-whs,有序的1字节段,一个副本
-T4:tcp-4:3-whs,有序的1字节段,一个覆盖
-T5:tcp-5:3-whs,有序2字节段,fwd覆盖
-T7:tcp-7:3-whs,有序的1字节段,交错的空段
-T8:tcp-8:3-whs,有序的1字节段,一个无序
-T9:tcp-9:3-whs,无序的1字节段
-C2:tcbc-2:3-whs,有序的1字节段,交错的SYN
-C3:tcbc-3:有序1字节空段,3-whs,有序1字节段
-R1:tcbt-1:3-whs、RST、3-whs、有序1字节段
-I2:ins-2:3-whs,有序的1字节段,错误的TCP校验和
-I3:ins-3:3-whs,有序1字节段,无ACK集合
-M1:misc-1:Windows NT 4 SP2-http://www.dataprotect.com/ntfrag/
-M2:misc-2:Linux IP链-http://www.dataprotect.com/ipchains/
2、ftest
防火墙和IDS是网络安全专用工具,可以对网络中各种恶意数据包进行识别和拦截。渗透测试人员必须熟悉各种防火墙和IDS的防护性能,才能保证网络安全。Kali Linux提供专用工具Ftester。该工具主要由两部分组成。
第一部分是ftest,运行在防火墙或IDS的一侧。它根据用户设定的配置文件ftest.conf,对目标主机进行数据包的注入操作。
第二部分是ftestd,运行在防火墙或IDS的另外一侧,往往作为ftest的目标主机。它负责嗅探注入的各种数据包。
通过对比两者的日志文件,来评估防火墙的过滤规则和IDS的检测能力。
参数说明:
Configuration options:
-f <conf_file>
-c <source_ip>:<source_port>:<dest_ip>:<dest_port>:<flags>:<protocol>:<tos>
-v <verbose>Timing options:
-d <delay, 0.25 = 250 ms>
-s <sleep time, 1 = 1 s>Evasion options:
-e <evasion method>
-t <ids_ttl>Connection options:
-r <reset connection>
-F <end connection>
-g <IP fragments number, es. 4|IP fragments size, es. 16b>
-p <TCP segments number, es. 4|TCP segments size, es 6b>
-k <cksum value, es. 60000>
-m <marker>
3、lbd
大型网站为了解决海量访问问题,往往采用负载均衡技术,将用户的访问分配到不同的服务器上。网站的负载均衡可以从DNS和HTTP两个环节进行实施。在进行Web渗透测试的时候,需要先了解网站服务器结构,以确定后期的渗透策略。Kali Linux提供工具lbd来获取网站的负载均衡信息。该工具可以根据DNS域名解析、HTTP服务的header和响应差异,来识别均衡方式。
参数说明:
-a 等效于-v -t ANY
-A 就像-a一样,但是省略了RRSIG,NSEC,NSEC3
-c 指定非IN数据的查询类
-C 比较权威名称服务器上的SOA记录
-d 等效于-v
-l 使用AXFR列出域中的所有主机
-m 设置内存调试标志(跟踪|记录|使用)
-N 更改在查找根之前允许的点数
-p 指定服务器上要查询的端口
-r 禁用递归处理
-R 指定UDP数据包的重试次数
-s SERVFAIL响应应停止查询
-t 指定查询类型
-T 启用TCP / IP模式
-U 启用UDP模式
-v 启用详细输出
-V 打印版本号并退出
-w 指定永久等待应答
-W 指定等待回复的时间
-4 仅使用IPv4查询传输
-6 使用IPv6查询传输
例1:测试baidu.com的负载均衡
ldb baidu.com
4、wafw00f
WAFW00F是一个Web应用防火墙
(WAF)指纹识别的工具。
参数说明:
h, --help 显示此帮助消息并退出
-v, --verbose 启用详细度,多v选项增加
-a, --findall 找到所有匹配签名的waf,不要停止测试第一个
-r, --noredirect 不要遵循3xx回复给出的重定向
-t TEST, --test=TEST WAF测试一个特定的晶圆片
-o OUTPUT, --output=OUTPUT 将输出写入csv、json或文本文件,具体取决于文件扩展名。对于标准输出,指定- as文件名。
-i INPUT, --input-file=INPUT 从文件中读取目标。输入格式可以是csv、json或text。对于csv和json,“url”列名或元素是必需的。
-l, --list 列出WAFW00F能够检测到的所有WAF
-p PROXY, --proxy=PROXY
Use an HTTP proxy to perform requests, examples:
http://hostname:8080, socks5://hostname:1080,
http://user:pass@hostname:8080
-V, --version 打印出当前版本的 WafW00f 并退出。
-H HEADERS, --headers=HEADERS 设定一个头文件信息,用以覆盖默认的头信息
例1:测试多个 URL
wafw00f taobao.com baidu.com
例2:匹配所有签名特征的WAFS
wafw00f taobao.com -a