目录
一、渗透测试概述
1、渗透测试与APT
2、渗透测试执行标准
3、渗透测试报告
二、渗透测试测试环境搭建及工具使用
1、Kali Linux基础
2、渗透测试目标环境构建
(1)基于LANMP构建PHP测试环境
(2)基于WAMP构建PHP测试环境
(3)基于PHPstudy构建PHP测试环境
(4)典型环境漏洞的建立:
3、Nmap
(1)Nmap介绍
(2)主机发现
(3)端口扫描
(4)应用程序与版本信息侦测
(5)操作系统侦测
(6)规避FW/IDS技术
(7)NSE脚本的简单应用
(8)扫描结果保存与输出
4、BurpSuite
(1)BurpSuite介绍
(2)BurpSuite Repeater模块
(3)BurpSuite插件
(4)BurpSuite Intruder模块
5、Metasploit
(1)Metasploit介绍
(2)exploits模块使用
(3)auxiliary模块使用
(4)meterpreter模块
6、FireFox浏览器渗透测试插件
(1)Firefox浏览器及插件概述
(2)Hackbar的使用
(3)其他插件的使用
7、社会工程学工具SET
(1)社会学工具概述
(2)SET使用
8、密码攻击工具
(1)密码存储与密码攻击
(2)Hashcat的使用
(3)Hydra的使用
(4)Crunch的使用
9、漏洞扫描工具
(1)安全漏洞概述
(2)AWVS的使用
(3)Nikto的使用
(4)OWASP ZAP的使用
10、Webshell管理工具
(1)Webshell简介
(2)Webshell工具使用
三、信息收集与社工技巧
1、信息收集总览
2、DNS介绍
3、子域名收集
4、C段扫描
5、Web目录扫描
6、指纹识别
7、GoogleHacking
8、网络空间搜索引擎
9、情报分析
10、社工库和多维度信息收集
11、Cobalt Strike配置
12、Office钓鱼
13、钓鱼
14、网站克隆和钓鱼邮件
渗透测试:渗透测试是一种通过模拟攻击的技术和方法,挫败目标系统的安全控制措施并获得访问控制权的安全测试方法。渗透测试主要依据CVE已经发现的安全漏洞,模拟入侵者的攻击方法对网站应用、服务器系统和网络设备进行非破坏性质的攻击性测试。
CVE(通用缺陷披露):
CWE(通用缺陷列表):
渗透测试过程的原则:
- 要选择不影响业务系统正常运行的攻击方式进行的测试
- 符合规范和法律要求是渗透测试业务的一个必要条件
渗透测试与APT对比:
渗透测试 | APT | |
目的 | 评估计算机网络系统的安全性 | 对高价值目标进行有组织、长期持续性的控制 |
手段方法 | 通过被允许的行为模拟黑客攻击来对目标系统进行测试 | 利用各种高技术手段(包括0day漏洞)、“水坑”攻击、“鱼叉”攻击等 |
结果 | 提高目标系统的安全级别 | 给目标系统带来严重损失 |
渗透测试根据测试方法分类:
- 黑盒测试:将测试对象看做黑盒子,完全不考虑测试对象内部结构和内部特性
- 白盒测试:将测试对象看做白盒子,测试人员依据测试对象内部逻辑结构相关信息,设计或选择测试用例
- 灰盒测试:介于白盒和黑盒之间,是基于对测试对象内部细节有限认知的软件测试方法
渗透测试根据测试目标分类:
渗透测试根据测试位置分类:
- 内部渗透:模拟客户内部违规操作者的行为,在内网中对目标进行渗透测试
- 外网渗透:模拟对内部状态一无所知的外部攻击者的行为(包括对网络设备的远程攻击、口令管理安全性测试、防火墙规则试探与规避、Web及其他开放应用服务的安全性测试),从外网对目标进行渗透测试
针对Web服务体系架构的渗透测试:
渗透测试执行标准(PTES):
- 前期交互阶段:与客户进行沟通,确定渗透测试的范围、目标、限制条件以及服务合同细节。客户书面授权委托,并同意实施方案是进行渗透测试的必要条件,所有过程都在客户的控制下进行
- 信息收集阶段:信息收集是每一步渗透攻击的前提,通过信息收集可以针对性的制定模拟攻击测试计划,提高模拟攻击的成功率,降低攻击测试对系统造成的不利影响
- 信息收集方法包括DNS探测、操作系统指纹判别、应用判别、账号扫描、配置判别等
- 信息收集常用工具:
- 商业网络安全漏洞扫描软件Nessus、开源安全检测工具Nmap等
- 操作系统内置的许多功能(Telnet、Nslookup、IE等)也可以作为信息收集的由有效工具
- 威胁建模阶段:利用信息搜集阶段获取的信息,识别目标系统上可能存在的漏洞与弱点,确定最高效的攻击方法。需要将客户组织当作敌手看待,然后以攻击者的视角和思维来尝试利用目标系统的弱点
- 漏洞分析阶段:从前面环节获取的信息分析和理解哪些攻击途径途径会是可行的。重点分析端和漏洞的扫描结果、攫取到的服务“旗帜”信息以及在信收集环节中得到的其他关键信息
- 渗透攻击阶段:针对目标系统实施深入研究和测试的渗透攻击,主要包括:
- 精准打击
- 绕过防御机制
- 定制渗透攻击路径
- 绕过检测机构
- 触发攻击响应控制措施
- 渗透代码测试
- 后渗透攻击阶段:从已经攻陷了客户组织的一些系统或取得域管理员权限之后开始,以特定业务系统为目标,标识出关键的基础设施,并寻找客户组织最具价值和尝试进行安全保护的信息和资产,并需要演示出能够对客户组织造成最重要业务影响的攻击途径。主要包括:
- 基础设施分析
- 高价值目标识别
- 掠夺敏感信息
- 业务影响攻击
- 掩踪灭迹
- 持续性存在
- 报告阶段:使用文档报告来交流在渗透测试过程中做了哪些、如何做的,以及客户如何修复你所发现的漏洞与弱点
注意事项:前期交互阶段,必须取得客户的授权;取得授权后必须向公安部门等监管机构进行报备;保证渗透过程中的所有工具都是合规的、经过检验的
编写渗透测试报告的两大宗旨及难点:
渗透测试报告必须包含的内容:
- 该漏洞对企业资产的影响状况(肯能造成的问题)
- 合理的漏洞分级标准以及相应漏洞的分级
- 系统整体的加固建议(如漏洞修复建议、安全防护措施等)
渗透测试报告必须保证是任何渗透测试人员都能看懂的,但可能存在的问题:
渗透报告的重要性(地位):
- 判定测试费用的重要依据
- 判定渗透测试团队优劣的重要依据
- 判定测试是否成功的重要依据
渗透报告必须具备的品质:
报告的基本组成要素:(注意最终报告的发送要采用加密传输)
- 封面:
- 公司名称、标志
- 测试的范畴
- 测试时间
- 文档的保密级别(保密声明)
- 法律声明
- 内容概要:
- 限制字数
- 明确指出测试系统是否安全
- 尽量不提及技术、工具
- 让客户明白我们做了什么,接下来要做什么
- 最后一行是一个结论,明确指出该系统是安全还是不安全
- 漏洞概览及目录:
- 一目了然(可以使用表格或图表)
- 分类列举漏洞
- 可以包含漏洞严重性
- 使用的工具列表:
- 列出所用工具
- 可包含简要工具说明
- 报告主体:
- 发现的每一个漏洞
- 发现漏洞所用工具、payload、exp、影响范围和存在的隐患或危害等内容(不能直接复制扫描结果)
- 漏洞修复建议
Kali Linux简介:
Kali Linux特性:
- 开源免费
- 开源git树:可以浏览开发树得到所有源代码
- 遵循FSH(文件系统层次化标准):遵循Linux目录结构标准
- 支持无线设备:兼容大量USB和其他无线设备
- 安全的开发环境
- 多语言支持
- 完全的的可定制化
- 支持ARM设备
Kali Linux基本配置:
LANMP简介:
- LANP:Linux+Apache+Mysql+PHP简称
- LANMP:Linux+Apache+Nginx+Mysql+PHP简称
- LANMP是WDLinux官网2010年底推出的Web应用环境的快速简易一键安装包,用Shell脚本编写,且是开源的
LANMP安装:
LANMP初始配置:
- 设置Apache网站的根目录和默认服务端口:
- 步骤1:查找Apache配置文件http.conf所在位置:find / -name httpd.conf
- 步骤2:编辑httpd.conf,设置Apache网站的服务端口(举例81端口)
- 步骤3:编辑httpd.conf,设置Apache网站的根目录(举例设置网站根目录为/www/wdlinux/httpd-2.4.41/htdocs)
- 步骤4:编辑httpd.conf,设置Apache网站的访问权限(举例修改权限为Allowoverride all,Require all granted)
- 步骤5:保存httpd.conf,并重启apachectl服务:cd /www/wdlinux/httpd-2.4.41/bin(跳转到指定目录)、./apachectl restart(重启服务)
- 设置MySQL数据库root账号的密码:
- 步骤1:查找MySQL配置文件my.cnf所在位置:find / -name my.cnf
- 步骤2:编辑my.cnf,在文件中的[mysqld]下增加一行“skip-grant-tables”,取消密码登录验证
- 步骤3:重启mysql服务:systemctl restart mysqld
- 步骤4:以无密码方式登录MySQL:cd /www/wdlinux/mysql-5.5.62/bin(跳转到指定目录)、mysql -h 127.0.0.1 -uroot(登录mysql)
- 步骤5:设置root账户密码,完成后exit退出:
- 5.7前版本:update mysql.user set password=password("root") where user="root";
- 5.7后版本:update mysql.user set authentication_string=password("root") where user="root";
- 步骤6:编辑my.cnf,删除或注释之前在文件中的[mysqld]下增加一行“skip-grant-tables”,恢复密码验证,实现位密码登录
- 步骤7:重启mysqld服务:systemctl restart mysqld
WAMP简介:
WAMP初始配置:
- WAMP安装:
- 步骤1:安装微软常用运行库合集
- 步骤2:安装WAMPServer 3
- 步骤3:启动WAMPServer,选择Start All Services
- 步骤4:测试WAMPServer是否安装成功:访问http://127.0.0.1
- 开通远程访问权限:
- 步骤1:在系统托盘处的WAMPServer图标上单击鼠标左键,在弹出的菜单中选择“Apache" -> "httpd.conf”,打开httpd.conf 配置文件
- 步骤2︰编辑httpd.conf配置文件,将文件中
标签下的“Require local”修改成“Require all granted",并保存 - 步骤3:在系统托盘处的WAMPServer图标上单击鼠标左键,在弹出的菜单中选择“Apache" ->"httpd-vhosts.conf”,打开httpd-vhosts.conf配置文件。
- 步骤4∶编辑httpd-vhosts.conf配置文件,将文件中的“Require local”修改成“Require all granted”,并保存。
- 步骤5︰在系统托盘处的WAMPServer图标上单击鼠标左键,在弹出的菜单中选择“Restart All Services”重启WAMPServer,重启完毕后尝试远程访问网站,如果访问成功,则表明网站的远程访问权限已开通。
PHPstudy简介:
PHPstudy初始配置:
- PHPstudy安装:
- 步骤1:安装微软常用运行库合集
- 步骤2:安装PHPstudy 2018
- 步骤3:启动PHPstudy 2018
- PHPstudy常规配置:
- 步骤1:设置服务端口和网站根目录
- 步骤2:切换组件版本
- 步骤3:更改配置文件
- 步骤4:设置PHP参数开关
DVWA简介:
DVWA安装:
- 步骤1︰将DVWA资源包解压到网站根目录中(本例中用PHPstudy搭建网站,网站根目录为C:\phpstudy\PHPTutorial\www)
- 步骤2︰修改DVWA-master中config文件夹下的config.inc.php.dist文件:
- (1)文件名修改为config.inc.php
- (2)文件内容中,正确设置连接MySQL数据库的用户名、密码和数据库名(本例中MySQL的root账号的密码为root),并保存
- 步骤3:启动PHPstudy,并访问http://127.0.0.1/DVWA-master/setup.php,点击页面下方的“Create/Reset Database”按钮进行安装
- 步骤4︰安装成功后,会由setup.php自动跳转至login.php,其登录的默认用户名为admin,密码为password
SQLi-Labs简介:
SQLi-Labs安装:
- 步骤1:将SQLi-Labs资源包解压到网站根目录中(本例中用PHPstudy搭建网站,网站根目录为C:\phpStudyPHPTutorial\ www)
- 步骤2︰修改sqli-labs-master中sql-connections文件夹下的db-creds.inc文件,正确设置连接MySQL数据库的用户名、密码和数据库名(本例中MySQL的root账号的密码为root) ,并保存
- 步骤3︰启动PHPstudy,并访问http://127.0.0.1/sqli-labs-master,点击页面上的“Setup/reset Database for labs”按钮进行安装
- 步骤4:如出现Welcome页面则表示安装成功
- 注意:注意:如果PHP版本较高(如PHP7),则可能出现报错。建议在安装SQLi-Labs网站之前,将PHP环境切换成低版本(如PHP5)
Namp简介:
Nmap家族成员:
- Zenmap:Nmap的图形界面版
- Ncat:基于netcat,并扩展了一些功能,如ncat链、SSL支持、二进制等
- Ncrack:测试已部署的认证系统和密码强度,支持常用协议
- Ndiff:用于网络基线测试,对比Nmap扫描结果之间的差异
- Nping:允许将自己构造的数据包整合在扫描过程中,并对原始数据进行操控
Mmap功能:
Nmap命令语法:
- 语法格式:nmap 【空格】 【选项|多选项|协议】【空格】【扫描目标说明】
- 默认扫描:nmap <目标地址>
- 全面扫描:nmap -A -T 4 -v <目标地址>
主机发现:
主机发现相关命令选项:
主机发现相关命令实例:
端口扫描:
端口扫描相关命令:
端口扫描原理:
- TCP SYN扫描(-sS)原理:Nmap向目标端口发送TCP SYN报文,如果目标机返回TCP SYN+ACK报文,则说明端口处于开放状态,同时Namp会紧接着向目标机发送TCP RST报文以重置此链接;如果目标机返回TCP RST+ACK报文,则说明目标端口处于关闭状态
- TCP connect扫描(-sT)原理:Nmap向目标端口发送TCP SYN报文,如果目标机返回TCP SYN+ACK报文,则说明目标端口处于开放状态,同时Nmap会紧接着向目标机依次发送TCP ACK、TCP RST+ACK完成三次握手和重置此连接;如果目标机返回TCP RST+ACK报文,则说明目标端口处于关闭状态。
- TCP ACK扫描(-sA)原理:Nmap向目标端口发送TCP ACK报文,无论目标端口是否处于开放状态,目标机都会返回TCP RST报文。如果Nmap主机能收到此TCP RST报文,则说明目标端口未被防火墙屏蔽。TCP ACK扫描只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。
- 隐蔽扫描(-sF/-sN/-sX)原理:Nmap向目标端口发送TCP FIN (-sF)/ NULL (-sN)/ FIN+ PSH+URG (-sX)报文,对于Linux系统的目标机,如果目标机未响应,则说明目标端口处于开放状态或被防火墙屏蔽;如果目标机返回TCP RST+ACK报文,则说明目标端口处于关闭状态。对于Windows系统的目标机,无论目标端口处于开放还是关闭状态,目标机都会返回TCP RST+ACK报文。因此,隐蔽扫描方式适合于Linux系统的目标机端口扫描。
端口扫描相关命令实例:
应用程序与版本信息侦测:
应用程序与版本信息侦测相关的命令选项:
应用程序与版本信息侦测相关的命令实例:
操作系统侦测:
常用的网络协议栈指纹识别方法:
- TTL:Time To Live,即数据包的“存活时间”,表示一个数据包在被丢弃之前可以通过多少跃点(Hop)。不同操作系统的缺省TTL值往往是不同的。
- 常见操作系统的TTL值
- Windows 9x/NT/2000 lntel TTL=128
- Digital Unix 4.0 Alpha TTL=60
- Linux 2.2.x Intel TTL=64
- Netware 4.11 Intel TTL= 128
- AIX 4.3.x IBM/RS6000 TTL= 60
- Cisco 12.0 2514 TTL= 255
- Solaris 8 lntel/Sparc TTL= 64
- Windows系统修改TTL值的方法:打开注册表,在“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters”新建一个“DefaultTTL”Dword键值进行自定义
- DF位:DF(不分段)位识别:不同OS对DF位有不同的处理方式,有些OS设置DF位,有些不设置DF位;还有一些OS在特定场合设置DF位,在其它场合不设置DF位
- Window Size:TCP接收(发送)窗口大小。它决定了接收信息的机器在收到多少数据包后发送ACK包。一般地,UNIX的Window Size较大。Windows、路由器、交换机等的较小
- ACK序号:不同的OS处理ACK序号时是不同的。如果发送一个FIN+PSH+URG的数据包到一个关闭的TCP端口,大多数OS会把回应ACK包的序号设置为发送的包的初始序号,而
Windows和一些打印机则会发送序号为初始序号加1的ACK包- 对FIN包的相应:发送一个只有FIN标志位的TCP数据包给一个打开的端口,Linux等系统不响应;有些系统如Windows、CISCo、HP/UX等,发回一个RST
- ISN(初始化序列号):不同的OS在选择TCP ISN时采用不同的方法:一些UNIX系统采用传统的64K递增方法;较新的Solaris、IRIX、FreeBSD、Digital Unix、Cray等系统采用随机增量的方法;Linux 2.0、OpenVMS、AlIX等系统采用真随机方法; Windows系统采用一种时间相关的模型;还有一些系统使用常数,如3Com集线器使用Ox803,Apple LaserWriter打印机使用OxC7001。
- 主机使用的端口:一些OS会开放特殊的端口,如Windows的137、139;一些网络设备,如入侵检测系统、防火墙等也开放自己特殊的端口。
操作系统侦测相关的命令选项:
操作系统侦测相关的命令实例:
规避FW/IDS技术:
规避FW/IDS技术实例:
NSE和Lua:
NSE开发工具:
NSE脚本运用:
SE脚本的应用实例:
三种格式的输出:
扫描结果实例:
BurpSuite简介:
BurpSuite安装实例——在Windows7中安装BurpSuite专业版:
- 步骤1:安装Java环境并设置环境变量
- 在Windows 7中下载Java开发与调试工具JDK8并进行安装。
- 步骤2:设置Java环境变量
- (1)打开“控制面板"->“系统”->“高级系统设置”,在弹出的“系统属性”对话框中,点击“环境变量”按钮,在“环境变量”对话框的“系统变量”模块下点击“新建”按钮。
- (2)新建两个变量:
- 变量名称为“JAVA_HOME”,变量值为“C:\Program Files\Java\jdk1.8.0_191”(本例中的JDK程序的绝对安装路径)变量名称为“CLASSPATH”,变量值为“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”(注意前面有一个“.”和“;”)
- (3)在“系统变量”列表中找到并选中“PATH”变量,点击“编辑”按钮,在变量值的最后输入“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”(注意PATH变量原有的值不要删除)。确定无误后,依次点击“确定”按钮,完成环境变量的设置。
- (4)启动cmd,分别用java -version和javac -version命令检查环境版本,若两个版本号一致,则说明环境变量配置成功。
- 步骤3:下载BurpSuite Pro程序包(jar),破解并启动BurpSuite Pro
- (1)下载BurpSuite Pro程序包(本例中为burpsuite_pro_v2.1.jar)和对应的破解程序(本例中为burp-loader-keygen-2.jar)
- (2)选中破解程序Keygen,单击鼠标右键,选择“打开方式”为“Java(TM)Piatform SEbinary"
- (3)在破解程序Keygen的主界面,设置Lisence Text为任意字符,点击“run"按钮启动burpsuite_pro_v2.1.jar。如果点击“run”按钮无法启动burpsuite_pro_v2.1.jar,则可以先启动cmd,进入Keygen所在路径,并使用命令java -noverify -Xbootclasspath/p:burp-loader-keygen-2.jar -jar burpsuite_pro_v2.1.jar来启动`(注意:命令中的蓝色标注部分,请根据下载的实际文件名进行替换)
- (4)将Keygen中License复制粘贴到BurpSuite中,并点击“Next”按钮
- (5)在BurpSuite界面点击“Manual activation”按钮,选择手工激活
- (6)拷贝Activation Request和Activation Response。
- (7)拷贝完成后,点击BurpSuite界面点击“Next”按钮,如出现“Success"的提示,则说明激活成功。
- (8)激活之后,不能通过双击BurpSuite主程序来启动,否则启动之后还是需要输入key,两个文件必须放在一个目录下,启动方式有两种:
- 通过Keygen 上的“run”按钮来启动
- 使用命令java -noverify -Xbootclasspath/p:burp-loader-keygen-2.jar -jar burpsuite_pro_v2.1.jar来启动(注意:命令中的蓝色标注部分,请根据下载的实际文件名进行替换)。为了方便,可以将命令保存为一个批处理文件(.bat)
Burpsuite主要功能模块:
Burpsuite模块简单使用:
- 实例一:HTTP报文抓取与修改
- 步骤1:设置BurpSuite代理服务端口
- 选项卡Proxy->Options->Proxy Listeners
- 注意: Tomcat在本机的默认端口是8080,BurpSuite proxy在本机的默认监听端口也是8080,如果同时打开就会导致端口冲突。因此,建议将BurpSuite proxy的代理端口改为其他不常用端口,如8090
- 步骤2:设置FireFox浏览器代理端口
- 菜单项“工具”->“选项”->“常规”->“网络设置”,点击“设置”按钮,在弹出的“连接设置”对话框中选择“手动代理配置”,“HTTP代理”处填写127.0.0.1,“端口”处填写8090(跟BurpSuite代理服务端口值保持一致),同时勾选“也将此代理用于FTP和HTTPS”,设置完成后点击“确定”按钮
- 步骤3:抓取HTTP请求报文
- (1)首先关闭BurpSuite的拦截功能,具体方法为︰选项卡Proxy->Intercept,设置Intercept is off
- (2)利用FireFox浏览器访问DVWA网站,正常显示认证页面
- (3)开启BurpSuite的拦截功能,具体方法为∶选项卡Proxy->Intercept,设置lntercept is on
- (4)在DVWA网站认证页面输入登录用户名和密码(此处可随便输入任意字符),并点击Login按钮,观察到BurpSuite已经抓到了一个HTTP请求报文
- 步骤4:修改HTTP请求报文
- 将BurpSuite抓到的HTTP请求报文的POST表单中的数据进行修改,设置正确的用户名 (admin)和密码(password),修改完成后多次点击“Forward”按钮发送此HTTP请求报文,观察到DvWA网站认证通过,成功登录
- 实例二:HTTPS报文抓取
- 步骤1:设置BurpSuite代理服务端口
- 选项卡Proxy->Options->Proxy Listeners
- 注意: Tomcat在本机的默认端口是8080,BurpSuite proxy在本机的默认监听端口也是8080,如果同时打开就会导致端口冲突。因此,建议将BurpSuite proxy的代理端口改为其他不常用端口,如8090
- 步骤2:设置FireFox浏览器代理端口
- 菜单项“工具”->“选项”->“常规”->“网络设置”,点击“设置”按钮,在弹出的“连接设置”对话框中选择“手动代理配置”,“HTTP代理”处填写127.0.0.1,“端口”处填写8090(跟BurpSuite代理服务端口值保持一致),同时勾选“也将此代理用于FTP和HTTPS”,设置完成后点击“确定”按钮
- 步骤3:下载并安装浏览器CA证书
- (1)利用FireFox浏览器访问http://burp或127.0.0.1:8090,点击页面右上侧的“cA Certificate”处下载CA证书(cacert.der)
- (2)在FireFox浏览器上选择菜单项“工具”->“选项”->“隐私与安全”>“证书”,点击“查看证书”按钮,在弹出的“证书管理器°对话框中选择“证书颁发机构”标签页,点击“导入”按钮,将刚刚下载的cacert.der导入,导入时注意勾选“信任由此证书颁发机构来标识网站”
- 步骤4:HTTPS报文抓取
- (1)开启BurpSuite的拦截功能,具体方法为︰选项卡Proxy->Intercept,设置lntercept is on
- (2)重启FireFox浏览器,并访问https://www.baidu.com,观察到BurpSuite已经抓到了一个HTTPS请求报文
Repeater模块功能及场景应用:
Repeater模块应用实例(POST注入):
- 步骤1:进入SQLi-Labs,选择Less-11
- 步骤2:设置BurpSuite代理服务端口和FireFox浏览器的代理端口(本例中均为8090)
- 步骤3︰开启BurpSuite拦截功能,并在SQLi-Labs的Less-11登录页面输入用户名admin和任意密码,点击login按钮,此时BurpSuite Proxy会拦截到HTTP请求报文。
- 步骤4:选中拦截到HTTP请求包,点击鼠标右键,选择“Send to Repeater",将此HTTP请求包发送至Repeater模块。
- 步骤5:在Repeater模块的Request框中,通过修改HTTP请求参数后点击“Go"按钮提交,并观察Response框中显示的服务器返回结果,实施POST注入。
- (1)判断注入点类型
- (2)判断字段数
- (3)判断回显位置
- (4)获取数据库名
- (5)获取数据库表名
- (6)获取字段名
- (7)获取字段值
Extender模块主要由四个子模块组成:
常用的Burpsuite插件:
- Logger++ : BurpSuite自带的日志只记录了HTTP Proxy的请求,无法查看Repeater、Intruder等模块的历史记录,Logger++增加了这方面的功能,可以方便地筛选查看各模块历史记录
- CSRF Token Tracker:用于渗透测试过程中CSRF Token的自动更新
- XSS Validator:用于增强BurpSuite对XSS漏洞的检测
- CO2:包含多个小工具如SQLMapper、User Generator、Prettier JS、ASCll Payload Processo、Masher等功能等
- Heartbleed:经典的Heartbleed心脏出血漏洞
- J2EEScan:该插件能够检测JBoss、Tomcat、Weblogic、Oracle应用服务器、Jetty、Apache Axis、JBoss SEAM、Java Server Faces、ApacheWicket、Grails、Apache Struts以及多种CVE漏洞
Intruder模块的工作原理:Intruter在原始请求数据的基础上,通过修改各种请求参数,以获取不同的请求应答。每一次请求中,Intruder通常会携带一个或多个有效攻击载荷( payload),在不同的位置进行攻击重放,通过应答数据的比对分析来获得需要的特征数据
lntruder模块的常见应用场景:
- 标识符枚举: Web应用程序经常使用标识符来引用用户、账户、资产等数据信息,例如用户名、密码、文件ID等
- 提取有用的数据:在某些场景下,需要通过简单标识符提取一些其他的数据。比如通过用户的个人空间id,获取所有用户在个人空间标准的昵称和年龄
- 模糊测试:很多输入型的漏洞,如SQL注入、XSS和文件路径遍历等,可以通过请求参数提交各种测试字符串,并分析错误消息和其他异常情况,来对应用程序进行检测。由于应用程序的复杂性,手动执行这个测试是一个耗时且繁琐的过程。这样的场景,可以设置payload,通过Intruder自动化地对Web应用程序进行模糊测试
lntruder模块组成:
BurpSuite爆破实例:
- 实例一:DVWA暴力破解(Low级别):
- 步骤1:进入DVWA,将安全等级调至Low,并进入网站的暴力破解(BruteForce)模块
- 步骤2:设置BurpSuite代理服务端口和FireFox浏览器的代理端口(本例中均为8090)
- 步骤3:开启BurpSuite拦截功能,并在DVWA网站的暴力破解(Brute Force)模块登录处任意输入用户名和密码,点击login按钮,此时BurpSuite Proxy会拦截到HTTP请求报文
- 步骤4:选中拦截到HTTP请求包,点击鼠标右键,选择“Send to Intruder"
- 步骤5:进入选项卡Intruder-> Positions,先点击“Clear ”按钮清空默认选择的位置,然后依次选中“username=”和“password=”后面的值,并点击"Add ”按钮指定爆破位置,同时将Attack type设置为“Cluster bomb"(集束炸弹模式)。
- 步骤6:进入选项卡Intruder- >Payloads,设置2个payload set(效载荷集),分别用于爆破用户名(username)和密码(password)
- 步骤7:点击右上方的“Start attack”按钮执行爆破攻击,并观察结果。通过请求报文的长度或应答报文的内容判断,正确的用户名和密码为admin/password
- 实例二:DVWA暴力破解(High级别):
- 步骤1:进入DVWA,将安全等级调至High,并进入网站的暴力破解(BruteForce)模块
- 步骤2:设置BurpSuite代理服务端口和FireFox浏览器的代理端口(本例中均为8090)
- 步骤3:开启BurpSuite拦截功能,并在DVWA网站的暴力破解(Brute Force)模块登录处任意输入用户名和密码,点击login按钮,此时BurpSuite Proxy会拦截到HTTP请求报文。与Low级别不同的是,High级别拦截到的HTTP请求报文中含有user_token字段
- 步骤4:选中拦截到HTTP请求包,点击鼠标右键,选择“Send to Intruder"
- 步骤5:进入选项卡Intruder->Positions,按如下方式指定爆破位置,同时将Attack type设置为"Pitchfork”(草叉模式)
- 步骤6:进入选项卡Intruder->Payloads,设置2个payload set(有效载荷集):
- (1) 第一个payload set选择Custom iterator类型
- (2) 第二个payload set选择Recursive grep类型
- 步骤7:进入选项卡lntruder->Options
- (1) 在Request Engine处将线程数设置为1
- (2) 在Grep-Extract处设置为递归提取的内容
- (3) 在Redirections处设置“Follow Redirections”为“always”(总是跟随重定向)
- 步骤8:回到选项卡Intruder->Payloads,在Payload Options处设置初始token值(即为步骤7(2)中选中的token值)
- 步骤9:点击右上方的“Start attack”按钮执行爆破攻击,并观察结果。通过请求报文的长度或应答报文的内容判断,正确的用户名和密码为admin/password
Metasploit简介:
Metasploit发展历程:
- Metasploit Framework最初是HD Moore个人的想法,当时他在一家安全公司工作,他于2003年10月发布了第一个基于Perl的Metasploit版本,一开始只有共11个漏洞利用程序
- 随着Spoonm帮助和加入,HD于2004年4月重写了该项目并发布了Metasploit 2.0。此版本包括19个漏洞和超过27个payload。在这个版本发布后不久,马特米勒(Skape)加入了Metasploit的开发团队,使得该项目日益流行,Metasploit Framework也受到来自信息安全界的大力支持,并迅速成为一个渗透测试必备的工具
- 2007年,Metasploit团队使用Ruby编程语言完全重写并发布了Metasploit3.0,这次Metasploit从Perl到Ruby的迁移历时18个月,增加超过15万行的新代码。随着3.0版本的发布,Metasploit开始被广泛的采用,在整个安全社区也受到了大幅增加的帮助和贡献
- 在2009年秋季,Rapid7收购了Metasploit,Rapid7是一个在漏洞扫描领域的领导者公司。被收购之后,Rapid7公司允许HD建立一个团队,仅仅专注于Metasploit Framework的开发。也正由于这样,这次收购使得MetasploitFramework开始更迅速地发展,HD Moore也成为了Rapid7公司的CSO及Metasploit首席架构师
Metasploit下载与安装:
Metasploit文件结构:
Metasploit模块:
- exploits(渗透攻击/漏洞利用模块)
- 渗透攻击模块是利用发现的安全漏洞或配置弱点对远程目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件。流行的渗透攻击技术包括缓冲区溢出、Web应用程序漏洞攻击、用户配置错误等,其中包含攻击者或测试人员针对系统中的漏洞而设计的各种POC验证程序,以及用于破坏系统安全性的攻击代码,每个漏洞都有相应的攻击代码。
- 渗透攻击模块是Metasploit框架中最核心的功能组件。
- payloads(攻击载荷模块)
- 攻击载荷是我们期望目标系统在被渗透攻击之后完成实际攻击功能的代码,成功渗透目标后,用于在目标系统上运行任意命令或者执行特定代码。
- 攻击载荷模块从最简单的添加用户账号、提供命令行Shell,到基于图形化的VNC界面控制,以及最复杂、具有大量后渗透攻击阶段功能特性的Meterpreter,这使得渗透攻击者可以在选定渗透攻击代码之后,从很多适用的攻击载荷中选取他所中意的模块进行灵活地组装,在渗透攻击后获得他所选择的控制会话类型,这种模块化设计与灵活的组装模式也为渗透攻击者提供了极大的便利。
- auxiliary(辅助模块)
- 该模块不会直接在测试者和目标主机之间建立访问,它们只负责执行扫描、嗅探、指纹识别等相关功能以辅助渗透测试。
- nops(空指令模块)
- 空指令(NOP)是一些对程序运行状态不会造成任何实质性影响的空操作或无关操作指令。最典型的空指令就是空操作,在x86 CPU体系架构平台上的操作码是0x90。
- 在渗透攻击构造邪恶数据缓冲区时,常常要在真正执行的Shellcode之前添加一段空指令区。这样,当触发渗透攻击后跳转执行Shellcode时,就会有一个较大的安全着陆区,从而避免受到内存地址随机化、返回地址计算偏差等原因造成的Shellcode执行失败。
- Matasploit框架中的空指令模块就是用来在攻击载荷中添加空指令区,以提高攻击可靠性的组件。
- encoders(编码器模块)
- 编码器模块通过对攻击载荷进行各种不同形式的编码,完成两大任务:一是确保攻击载荷中不会出现渗透攻击过程中应加以避免的“坏字符”;二是对攻击载荷进行“免杀”处理,即逃避反病毒软件、IDS/IPS的检测与阻断。
- post(后渗透攻击模块)
- 后渗透攻击模块主要用于在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步横向拓展、实施跳板攻击等。
- evasion(规避模块)
- 规避模块主要用于规避Windows Defender防火墙、Windows应用程序控制策略(applocker)等的检查。
Metasploit常用命令:
缓冲区溢出攻击:缓冲区是内存中存放数据的地方。在程序试图将数据放到计算机中某一位置,但没有足够空间时会发生缓冲区溢出。缓冲区溢出攻击利用编写不够严谨的程序,通过向程序缓冲区写入超过预定长度的数据,造成缓存的溢出,从而破坏程序的堆栈,导致程序执行流程改变
exploits(渗透攻击/漏洞利用模块):
- 渗透攻击模块是利用发现的安全漏洞或配置弱点对目标进行攻击,以植入和运行攻击载荷,从而获得对远程目标系统访问的代码组件
- 渗透攻击模块包括缓冲区溢出、Web应用程序漏洞攻击、用户配置错误等多种攻击方法。其中缓冲区溢出攻击方法数量最多,总的来说分为两大类,即主动溢出和被动溢出,主动溢出是针对目标主机的漏洞主动地进行攻击以获得控制权限,被动溢出是针对目标主机被动的监听让偶获得相应的操作
- exploits模块支持的操作系统类别包括:AIS、BSDI、Dialup.FreeBSD、Hpux、lrix、Linux、Netware、OSX、Solaris、Unix、Windows等。其中windows的溢出方式数量最多。
- /usr/share/metasploit-framework/modules/exploits
利用Metasploit进行渗透攻击测试的一般流程:
exploit模块实例:
reverse_tcp与blind_tcp:
auxiliary(辅助模块):
auxiliary模块应用实例:
meterpreter模块:
meterpreter的技术优势:
- 平台通用性:提供了各种主流操作系统和平台上的meterpreter版本,包括Windows、Linux、BSD等,并同时支持x86和x64平台,另外还提供基于Java和PHP语言的实现,以应对各种不同环境。
- 纯内存工作模式:工作时直接装载meterpreter的动态链接库到目标进程空间,而不是先上传到磁盘,再调用loadlibrary加载动态链接库启动。这样启动隐蔽,很难被杀毒软件检测到,也不会在目标主机磁盘留下任何痕迹。
- 灵活且加密的通信协议:采用TLV (Type Length Value)数据封装格式;通信数据经过XOR加密,然后调用OpenSSL库进行SSL封装传输,保证传输的保密和隐蔽性。
- 易于扩展:meterpreter的插件以动态链接库文件的形式存在,可以根据喜好或习惯选择编程语言,并按照meterpreter的接口形式编写所需要的功能,然后编译成动态链接库,拷贝至相应目录即可。
meterpreter常用命令:
meterpreter脚本:
meterpreter脚本使用实例:
Firefox简介:
Firefox浏览器插件通用安装方法:
Hackbar简介:
FoxyProxy:FoxyProxy是一个发哦记得代理管理插件,能够提高firefox的内置代理的兼容性,可基于URL的参数在一个或多个代理之间进行切换
User-Agent Switcher:该插件用于改变HTTP头部中的User Agent,利用它可以实现隐藏(伪装)客户端浏览器信息的目的
HTTP Header Live:支持即时查看网站的HTTP头
Wappalyzer:支持分析目标网站所采用的平台架构、网站环境、服务器配置环境、JavaScript框架、编程语言等参数
Flagfox:安装到浏览器后会显示一个国旗来告知Web服务器的位置,同时也包含Whois、ping等功能
社会工程学:
常见社会工程学攻击方式:
- 环境渗透:对特定的环境进行渗透,是社会工程学为了获得所需的情报或敏感信息经常采用的手段之一。社会工程学攻击者通过观察目标对电子邮件的响应速度、重视程度以及可能提供的相关资料,比如一个人的姓名、生日、ID电话号码、管理员的IP地址、邮箱等,通过这些收集信息来判断目标的网络构架或系统密码的大致内容,从而获取情报。
- 引诱:网上冲浪经常碰到中奖、免费赠送等内容的邮件或网页,诱惑用户进入该页面运行下载程序,或要求填写账户和口令以便“验证”身份,利用人们疏于防范的心理引诱用户,这通常是黑客早已设好的圈套。
- 伪装欺骗:目前流行的网络钓鱼事件以及更早以前的求职信病毒、圣诞节贺卡,都是利用电子邮件和伪造的Web站点来进行诈骗活动的。有调查显示,在所有接触诈骗信息的用户中,有高达5%的人都会对这些骗局做出响应。
- 说服:说服是对信息安全危害较大的一种社会工程学攻击方法,它要求目标内部人员与攻击者达成某种一致,为攻击提供各种便利条件。个人的说服力是一种使某人配合或顺从攻击者意图的有力手段,特别地,当目标的利益与攻击者的利益没有冲突,甚至与攻击者的利益一致时,这种手段就会非常有效。如果目标内部人员已经心存不满甚至有了报复的念头,那么配和就很容易达成,他甚至会成为攻击者的助手,帮助攻击者获得意想不到的情报或数据。
- 恐吓:社会工程学师常常利用人们对安全、漏洞、病毒、木马、黑客等内容的敏感性,以权威机构的身份出现,散布安全警告、系统风险之类的信息,使用危言耸听的伎俩恐吓欺骗计算机用户,并声称如果不按照他们的要求去做,会造成非常严重的危害或损失。
- 恭维:高明的黑客精通心理学、人际关系学、行为学等社会工程学方面的知识与技能,善于利用人类的本能反应、好奇心、盲目信任、贪婪等人性弱点设置陷阱,实施欺骗,控制他人意志为己服务。他们通常十分友善,很讲究说话的艺术,知道如何借助机会均等去迎合人,投其所好,使多数人会友善地做出回应,乐意与他们继续合作。
- 反向社会工程学:反向社会工程学是指攻击者通过技术或者非技术的手段给网络或者计算机应用制造“问题”,使其公司员工深信,诱使工作人员或网络管理人员透露或者泄漏攻击者需要获取的信息。这种方法比较隐蔽,很难发现,危害特别大,不容易防范。
SET简介:
Kali中启动SET:
- 方法一:选择系统菜单->社会工程学工具集(Social Engineering Tools) ->socialengineering toolkit
- 方法二:在终端输入setoolkit命令
SET菜单项说明:
SET使用实例:
密码存储方法:
密码攻击:
- 概念:已经获取目标密钥Hash值或加密后的密文的情形下,利用某种方式还原出目标密钥的明文的过程
- 一般方法:
- 1、暴力攻击:尝试对所有可能的密钥组合进行相同的Hash运算,并将计算结果与目标密钥的Hash值进行比对,比对结果一致则破解成功。特点:时间成本高。
- 2、字典攻击(Dictionary Attack):提前构建一个“明文->密文”对应关系的一个大型数据库(字典),破解时通过密文直接反查明文。特点:存储一个这样的数据库(字典),空间成本高。
- 3、彩虹表攻击(Rainbow Table Attack):特点:在字典法的基础上改进,以时间换空间。常用的彩虹表:http:l/project-rainbowcrack.com/table.htm
Hashcat简介:
使用Hashcat进行密码攻击的关键:
- 选择国构造一本强大的字典
- 了解目标的Hash类型(算法)
Hashcat常用选项参数:
Hashcat的破解模式:
Hashcat的Hash类型:
Hashcat的掩码字符集:
Hashcat掩码运用实例:
Hydra简介:
Hydra常用功能选项:
利用Hydra进行密码攻击的一般步骤:
Hydra使用实例:
实例二:爆破FTP服务器的用户名和密码1
Crunch简介:
Crunch命令格式:
Crunch常用选项参数:
Crunch使用实例:
漏洞产生原因:
安全漏洞的生命周期:
- 阶段一,安全漏洞研究与挖掘:由高技术水平的黑客与渗透测试师开展,主要利用源代码审计(白盒测试)、逆向工程(灰盒测试)、Fuzz测试(黑盒测试)等方法,挖掘出目标系统中存在的可被利用的安全漏洞。
- 阶段二,渗透代码开发与测试:在安全漏洞挖掘的同时,黑客们会开发概念验证性的渗透攻击代码(POC),用于验证找到的安全漏洞是否确实存在,并确认其是否可被利用。
- 阶段三,安全漏洞和渗透代码限于封闭团队:在发现安全漏洞并给出渗透攻击代码后,“白帽子”采用的处理策略是首先通知厂商进行修补,而在厂商给出补丁后再进行公布;而“黑帽子”一般在封闭小规模团队中进行秘密地共享,以充分利用这些安全漏洞和渗透攻击代码所带来的攻击价值。
- 阶段四,安全漏洞和渗透代码开始扩散:由于各种原因,在封闭团队中秘密共享的安全漏洞和渗透代码最终会被披露出来,在互联网上得以公布,“黑帽子”会快速对其进行掌握和应用,并在安全社区中开始快速扩散。
- 阶段五,恶意程序出现并开始传播:“黑帽子”们将在掌握安全漏洞和渗透代码基础上,进一步开发更易使用、更具自动化传播能力的恶意程序,并通过黑客社区组织结构和互联网进行传播。在此过程中,厂商完成补丁程序开发和测试,并进行发布。
- 阶段六,恶意程序大规模传播并危害互联网:厂商发布补丁程序和安全预警将更进一步的让整个黑客社区了解出现新的安全漏洞和相应的渗透代码、恶意程序,更多的“黑帽子”们将从互联网或社区关系网获得并使用这些恶意程序,对互联网的危害也达到顶峰。
- 阶段七,渗透攻击代码、攻击工具、恶意程序逐渐消亡:在厂商补丁程序、安全公司提供的检测和移除机制得到广泛应用后,相应的渗透代码、恶意程序将被“黑帽子”们逐渐抛弃,从而慢慢的消亡。
CVE:
安全漏洞风险评级:
漏洞与补丁:
AWVS:
AWVS 14菜单项:
AWVS 14使用实例:
Nikto简介:
Nikto常用命令:
Nikto使用实例:
OWASP ZAP简介:
OWASP ZAP使用实例:
Webshell简介:
Webshell管理工具:
Webshell工具使用实例:
实例一:菜刀使用
实例二:蚁剑使用
实例三:Weevely使用实例
信息收集种类:
DNS:
IP地址查询方法:
子域名收集原因:
子域名收集方法:
C段扫描原因:
C段扫描方法:
目录扫描原因:
目标扫描方法:
系统指纹识别:
中间件指纹识别:
Web程序指纹识别:
识别目标:
在线探测:
防火墙指纹识别:
逻辑运算式:
基本语法:
Google hacking 语法收集网站:https: // www.exploit-db.com/google-hacking-database/
应用实例:
网络空间搜索引擎:
常见搜索引擎:
情报分析概念:
Maltego:
收集方法:
收集结果:
杜工库:将互联网泄露的信息汇聚成数据库,简单说:黑客数据库。
多维角度信息收集:
信息收录实例:
Cobalt Strike简介:
Cobalt Strike安装配置及使用:
Office钓鱼:在无需交互、用户无感知的情况下,执行Office文档中内嵌的一段恶意代码,从远控地址中下载并运行恶意可执行程序。例如:远控木马或者勒索病毒等。
Cobalt Strike钓鱼:Cobalt Strike office钓鱼主要方法是生成一段vba代码,然后将代码复制到office套件中,当用户启动office自动运行。
Cobalt Strike钓鱼操作:
CVE-2017-11882漏洞:
CHM钓鱼:
CHM钓鱼制作:
LNK钓鱼:
LNK钓鱼制作:
HTA钓鱼:
HTA钓鱼制作:
网站克隆:
克隆方法:
钓鱼邮件:钓鱼邮件指利用伪装的电邮,欺骗收件人将账号、口令等信息回复给指定的接收者;或引导收件人连接到特制的网页,这些网页通常会伪装成和真实网站一样,如银行或理财的网页,令登录者信以为真,输入信用卡或银行卡号码、账户名称及密码等而被盗取。
钓鱼邮件制作: