总字符数: 21.79K
代码: 12.88K, 文本: 4.42K
预计阅读时间: 1.25 小时
主动信息收集的原理
全球网络攻防实时地图
通以下链接,我们可以发现,现在这个安静的网站环境下,一直存在着攻击和渗透。
主动信息收集的特点
- 直接与目标系统交互通信
- 无法避免留下访问的痕迹
- 使用受控的第三方电脑进行探测,使用代理或已经被控制的机器,做好被封杀的准备
- 扫描发送不同的探测,根据返回结果判断目标状态
扫描敏感目录/文件
扫描敏感目录需要强大的字典,需要平时积累,拥有强大的字典能够更高效地找出网站的管理后台,敏感文件常见的如**.git文件泄露,.svn文件泄露,phpinfo泄露,robots.txt,网站banner,网站后台,测试文件,备份,github源码,JS敏感文件,网页源代码**等,这一步一半交给各类扫描器就可以了,将目标站点输入到域名中,选择对应字典类型,就可以开始扫描了,十分方便。
JS敏感文件
1 | python3 PackerFuzzer.py -u https://www.liaoxuefeng.com |
1 | # 建议使用 -ou 和 -os 来指定保存 URL 和子域名的文件名 |
dirsearch
dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。
相比其他扫描工具disearch的特点是:
- 支持HTTP代理
- 多线程
- 支持多种形式的网页(asp,php)
- 生成报告(纯文本,JSON)
- 启发式检测无效的网页
- 递归扫描
- 用户代理随机化
- 批量处理
- 扫描器与字典(注:字典必须是文本文件)
简单使用
1 | dirsearch -u https://target |
图中,每一列的含义分别是:扫描时间,状态码,大小,扫描的目录,重定向的地址
参数列表
1 | -h, --help # 查看帮助 |
Dirbuster
DirBuster支持全部的Web目录扫描方式。它既支持网页爬虫方式扫描,也支持基于字典暴力扫描,还支持纯暴力扫描。该工具使用Java语言编写,提供命令行(Headless)和图形界面(GUI)两种模式。其中,图形界面模式功能更为强大。用户不仅可以指定纯暴力扫描的字符规则,还可以设置以URL模糊方式构建网页路径。同时,用户还对网页解析方式进行各种定制,提高网址解析效率。
启动dirbuster
1 | ┌──(root㉿kali)-[/home] |
设置相关参数
- 目标ip地址或域名,默认80端口,特殊端口需要加到后面
- 请求方式,用get方式或者HEAD加GET自动切换
选择线程数,用于执行暴力破解的线程数完全取决于计算机的硬件
选择字典类型,字典列表目录为:
/usr/share/dirbuster/wordlists
自动生成,和步骤4二选一,建议使用字典
选择扫描方式
如果用URL Fuzz,可以指定目录,指定扫描admin目录下面的所有文件,dir代表字典的每一行
点击开始
查看结果
Scan Information
:扫描信息Results -List View
:结果列表Results -Tree View
:结果树Errors
:错误
为确定文件是否存在,最常见的响应如下所示
200:文件存在;
404:服务器中不存在该文件;
301:这是重定向到给定的URL;
401:访问此文件需要身份验证;
403:请求有效但服务器拒绝响应。
导出结果
dirb
dirb是一个基于字典的web目录扫描工具,采用递归的方式来获取更多的目录,可以查找到已知的和隐藏的目录,它还支持代理和http认证限制访问的网站在渗透测试过程中,是一个非常好用的工具
dirb命令参数
1 | 格式:dirb <url_base> [<wordlist_file(s)>] [options] |
1 | dirb http://192.168.64.170 -w /usr/share/wordlists/dirb/big.txt |
feroxbuster
1 | sudo apt install feroxbuster |
基于ping命令的探测
PING命令也延伸出了很多其他的命令,如ARPING、FPING、HPING等
ping
PING命令是我们常用的判断主机之间网络是否畅通,同样也是能判断我们的目标主机是否存活
1 | ┌──(root㉿kali)-[/home] |
ARPING
ARP协议概述
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。计算机通过 ARP协议将IP地址转换成MAC地址。
ARP协议工作原理
在以太网中,数据传输的目标地址是MAC地址,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
计算机使用者通常只知道目标机器的IP信息,”地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
简单地说,ARP协议主要负责将局域网中的32位IP地址转换为对应的48位物理地址,即网卡的MAC地址,保障通信顺利进行。
- windows下查看MAC地址:
ipconfig /all
使用arping命令查看局域网中的IP是否有冲突
1
2
3
4
5
6└─# arping 192.168.2.107
ARPING 192.168.2.107
Timeout
Timeout
Timeout
# 注意:按CTRL+C结束arping命令
netdiscover
netdiscover是一个主动/被动的ARP侦查工具.使用netdiscover工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求。
主动模式
主动模式顾名思义就是主动的探测发现网络内主机,但是这种方式往往会引起网络管理员的注意
1 | ┌──(root㉿kali)-[/home] |
被动模式
被动模式的方法更加隐蔽,但是速度会比较慢,网卡被设置为混杂模式来侦听网络内的arp数据包进行被动式探测,这种方式就需要网络内设备发送arp包才能被探测到。
1 | ┌──(root㉿kali)-[/home] |
arp-scan
arp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标扫描,也可以进行批量扫描。
同时,该工具会自动解析Mac地址,给出MAC对应的硬件厂商,帮助用户确认目标。
指令介绍
参数名 | 参数含义 | 使用示例 |
---|---|---|
-f |
从指定文件中读取主机名或地址 | arp-scan -f ip.txt |
-l |
从网络接口配置生成地址 | arp-scan -l |
-i |
各扫描之间的时间差 | arp-scan -l -i 1000 |
-r |
每个主机扫描次数 | arp-scan -l -r 5 |
-V |
显示程序版本并退出 | arp-scan -l -V |
-t |
设置主机超时时间 | arp-scan -t 1000 192.168.2.0/24 |
-I |
使用网络接口 | arp-scan -I eth0 -l |
-g |
不显示重复的数据 | arp-scan -l -g |
-D |
显示数据包往返时间 | arp-scan -l -D |
1 | ┌──(root㉿kali)-[/home] |
FPING
Fping就是ping命令的加强版他可以对一个IP段进行ping扫描,而ping命令本身是不可以对网段进行扫描的
1 | ┌──(root㉿kali)-[/home] |
Nmap
Nmap 是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。它不局限于仅仅收集信息和枚举,同时可以用来作为一个漏洞探测器或安全扫描器。
特点
Nmap 对于网络检查的作用,应该相当于网址导航、搜索引擎的作用:入口。
- 检测活在网络上的主机(主机发现)
- 检测主机上开放的端口(端口发现或枚举)
- 检测到相应的端口(服务发现)的软件和版本
- 检测操作系统,硬件地址,以及软件版本
- 检测脆弱性的漏洞(Nmap 的脚本)
Nmap 使用不同的技术来执行扫描,包括:TCP 的 connect 扫描,TCP 反向的 ident 扫描,FTP 反弹扫描等。所有这些扫描的类型有自己的优点和缺点。
目标探测
目标探测的目的主要有 2 个:
- 判断是否存活
- 获取端口的开放情况
-P*
选项(用于选择 ping 的类型)可以结合使用。可以通过使用不同的 TCP 端口/标志位和 ICMP 码来发送许多探测报文,增加穿透防火墙的机会。注意,即使指定了-P*
选项,在局域网中,默认通过 ARP(-PR
)来探测目标,因为它总是更快更有效。
-sn
不进行端口扫描(Ping 扫描):此选项告诉 Nmap 在主机发现后不进行端口扫描,只打印出探测到的可用主机。-sP
该选项告诉 Nmap 仅仅进行 ping 扫描(主机发现),然后打印出对扫描做出响应的那些主机。没有进一步的测试(如端口扫描或者操作系统探测)。相当于执行了ping xxxx
。当目标为整个局域网的时候,这个方法类似 ping 广播地址,但是它更可靠,因为许多主机对广播请求不响应。同-sn
-Pn
:该选项完全跳过 Nmap 目标存活判断,即认为每个目标都是存活的。一般来说,Nmap 首先判断目标是否存活,如果存活再进行进一步的探测,如端口扫描、版本探测、或者操作系统探测等等。用-P0
会使得 Nmap 对每一个目标都直接进行所要求的扫描。-PU
: UDP ping,它发送一个空的(除非指定了--data-length
)UDP报文到给定的端口-PR
:ARP Ping--system-dns
:默认情况下,Nmap 通过直接发送查询到你的主机上配置的域名服务器来解析域名。为了提高性能会并发执行许多请求(一般几十个)。如果您希望使用系统自带的解析器,就指定该选项(原理是通过调用getnameinfo()
函数,调用一次解析一个 IP)
1 | # 1. nmap扫描局域网存活主机与主机名 |
端口扫描
状态 | 详细的参数说明 |
---|---|
Open | 端口开启,数据有到达主机,有程序在端口上监控 |
Closed | 端口关闭,数据有到达主机,没有程序在端口上监控 |
Filtered | 数据没有到达主机,返回的结果为空,数据被防火墙或者是IDS过滤 |
UnFiltered | 数据有到达主机,但是不能识别端口的当前状态 |
Open|Filtered | 端口没有返回值,主要发生在UDP、IP、FIN、NULL和Xmas扫描中 |
Closed|Filtered | 只发生在IP ID idle扫描 |
--script=
表示启用脚本扫描。具体而言,它会使用default
和safe
脚本组合,用于对目标进行扫描和信息收集。auth
处理身份验证broadcast
网络广播brute
暴力猜解default
默认discovery
服务发现dos
拒绝服务exploit
漏洞利用external
外部扩展fuzzer
模糊测试intrusive
扫描可能造成不良后果malware
检测后门safe
扫描危害较小version
版本识别vuln
漏洞检测
-sS
TCP SYN 扫描执行得很快-sT
TCP connect()
扫描:当 SYN 扫描不能用,例如当用户没有权限发送原始报文或者扫描 IPv6 网络时,TCP 扫描默认使用 TCP Connect() 扫描-sU
: UDP 扫描-P <port ranges>
只扫描指定的端口:该选项指明你想扫描的端口,覆盖默认值。单个端口加上连字符表示端口范围(如1-1023
)也可以。-p-
:全端口扫描
服务和版本探测
-sV
: 打开版本探测。也可以用-A
同时打开操作系统探测和版本探测。--allports
不排除端口:默认情况下,Nmap 版本探测会跳过 TCP 端口 9100
操作系统探测
-O
启用操作系统检测.也可以使用-A
来同时启用操作系统检测和版本检测
输出
-oN <filespec>
:要求将标准输出直接写入指定的文件。如上所述,这个格式与交互式输出略有不同。-oX <filespec>
:要求 XML 输出直接写入指定的文件-oA <basename>
: 输出至所有格式--append-output
: 在输出文件中添加:当使用文件作为输出格式,如-oX
或-oN
,默认该文件被覆盖。如果希望文件保留现有内容,将结果添加在现有文件后面,就使用--append-output
选项。所有指定的输出文件都被添加。但对于XML
(-oX
)扫描输出文件无效,无法正常解析,需要手工修改
激进扫描模式
-A
:这个选项启用额外的高级和高强度选项,目前还未确定代表 的内容。目前,这个选项启用了操作系统检测(-O
)和版本扫描(-sV
),以后会增加更多的功能。目的是启用一个全面的扫描选项集合,不需要用户记忆大量的选项。这个选项仅仅启用功能,不包含用于可能所需要的时间选项(如-T4
)或细节选项(-v
)
1 | # nmap 扫描ip所开放的端口 |
使用nmap进行半连接扫描
nmap扫描类型主要有TCP的全连接扫描(会在被扫描机器留下记录),半连接扫描(不会留下记录)
1 | ┌──(root㉿kali)-[/home] |
masscan
masscan是为了尽可能快速的扫描整个互联网而创建的,根据其作者robert graham描述
可以不到6分钟内完成每秒大约1000万个数据包
基本使用
1 | # 单端口扫描 |
命令行模式详细参数
以下为扩展内容
1 | <ip/range> IP地址范围,有三种有效格式,1、单独的IPv4地址 2、类似"10.0.0.1-10.0.0.233"的范围地址 3、CIDR地址 类似于"0.0.0.0/0",多个目标可以用都好隔开 |
nc
nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具
作用
- 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
- 端口的扫描,nc可以作为client发起TCP或UDP连接
- 机器之间传输文件
- 机器之间网络测速
参数
1 | # -n 直接使用IP地址,而不通过域名服务器 |
wafw00f
Web应用防护系统(也称为:网站应用级入侵防御系统)。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
在KaliLinux中提供了一款防火墙探测工具“wafw00f”,这个工具可以通过发送正常以及不正常甚至是包含恶意代码的HTTP请求,来探测网站是否存在防火墙,并识别该防火墙的厂商及类型。
wafw00f常用指令
1 | ┌──(root㉿kali)-[/opt/TOP10] |
测试单个 URL
1 | ┌──(root㉿kali)-[/opt/TOP10] |
常见的waf拦截页面(83个国内外WAF)
enum4linux
enum4linux介绍
Enum4linux是一个用于枚举来自Windows和Samba系统的信息的工具。
它是用Perl编写的,基本上是一个包装Samba工具smbclient,rpclient,net和nmblookup。
工具的用法可以在下面找到例子,以前版本的工具可以在页面底部找到。
dnstracer用于获取给定主机名从给定域名服务器(DNS)的信息,并跟随DNS服务器链得到权威结果。
主要特性:
- RID循环(当Windows 2000上的RestrictAnonymous设置为1时)
- 用户列表(当Windows 2000上的RestrictAnonymous设置为0时)
- 组成员信息列表
- 共享枚举
- 检测主机是否在工作组或域中
- 识别远程操作系统
- 密码策略检索(使用polenum)
enum4linux功能
1 | ┌──(root㉿kali)-[/opt/TOP10] |
enum4linux用法示例
1 | ┌──(root㉿kali)-[/home/] |