文章目录
-
- 扫描技术
-
- Nmap----扫描器之王
-
- Nmap扫描出端口的六种状态
- 网络漏洞扫描
- Web漏洞扫描
-
- AWVS漏洞扫描器的使用
- 口令破解
-
- 口令安全威胁
- 破解方式
- 暴力破解
-
- crunch工具
- 字典
-
- cupp工具
- Hydra----九头蛇
-
- Windows口令远程爆破实验
- Windows账户hash值破解
- Linux本地暴力破解:
扫描技术
自动化、提高效率
资产发现:发现目标环境中有哪些资产,联网设备、主机、服务器、各种服务等。
主机发现:有哪些主机在线,IP地址。
端口扫描:开启的端口,端口上的服务。
常见的端口号
服务名 | 端口号 |
---|---|
FTP | 21/20 |
SSH | 22 |
Telnet | 23 |
SMTP | 25 |
HTTP | 80 |
HTTPS | 443 |
SQL Server | 1433 |
Qracle | 1521 |
MySQL | 3306 |
RDP | 3389 |
Nmap----扫描器之王
kali自带,跨平台的,Windows也可以去官网下载
重要参数
参数 | 作用 |
---|---|
nmap ip | 简单扫描:探测目标主机是否在线以及默认1000个1-10000内的端口 |
-vv | 简单扫描,并对过程进行详细输出 |
-p | 扫描指定IP的指定端口号有没有开放 |
-O | 扫描指定IP的所有开放的端口号以及操作系统的版本(不太准确) |
-sP | 探测指定IP有没有在线,ping扫描 |
-sP IP/24 | 探测指定网段的在线主机 |
-sT | TCP全连接扫描(建立完整的三次握手,然后断开) |
-sS | SYN半连接扫描(只进行前两次握手) |
-sN | 隐蔽扫描(不适用于Windows系统)之NULL扫描(发的包参数全为空) |
-sX | 隐蔽扫描(不适用于Windows系统)之Xmas扫描 |
-sF | 隐蔽扫描(不适用于Windows系统)之FIN扫描 |
-A | 全面扫描(什么系统、开放的端口号、服务版本) |
-p 端口号,端口号 IP -sV | 扫描指定IP的指定端口号有没有开放以及服务版本的探测(什么软件发布的) |
-p 端口号,端口号 IP -oN 存储路径\文件名 | 将扫描出来的结果保存成txt文件存储在指定路径 |
-oX | 保存成xml格式的文件 |
-T(0-5) | 时序选项(0-5):-TO(偏执的):非常慢的扫描,用于IDS逃避。-T1(鬼祟的):缓慢的扫描,用于IDS逃避。-T2(文雅的):降低速度以降低对带宽的消耗,此选项一般不常用。-T3(普通的):默认,根据目标的反应自动调整时间。-T4(野蛮的):快速扫描,常用扫描方式,需要在很好的网络环境下进行扫描,请求可能会淹没目标。-T5(疯狂的):极速扫描,这种扫描方式以牺牲准确度来提升扫描速度。 |
Nmap扫描出端口的六种状态
- Open:发现这一点是端口扫描工具的职责所在,每一个端口就可能会是一次被攻击成功的大门,管理员也不会将一个端口随便关闭,这会使合法用户产生不必要的麻烦。当我们使用Nmap进行端口扫描时,如果端口状态为Open,说明此端口对外为开放状态,确定为Open 状态便于我们制定下一步的渗透计划。
- Closed:当端口关闭的时候Nmap也可以轻而易举地将其检测出来,因为接受了Nmap 的探测报文并作出了响应。当然,这也不能忽略是管理员的一个欺骗攻击者的把戏,如果发现没有开放的端口,可以等待一会再次扫描一下可能又呈现开放状态了。如果管理员掌握一定的安全技术,可能会使用防火墙对这些端口进行防护,不过,这并不会阻碍我们发现这个端口,如果被未知或已知的防火墙阻挡访问目标端口,Nmap也会提示“我遇到了一些情况,好像被防火墙挡住了”。
- Filtered:掌握一定安全技术的管理员会布置一个防火墙设备或者是通过设置路由器的规则阻止Nmap 的扫描,当Nmap遇到防火墙设备或是路由器规则的时候,Nmap 的报文就会被过滤达到目标端口,这样就会使Nmap无法判断目标端口到底是否开放了。出现被过滤现象并不代表一定是被某些专业的设备过滤了,也许是因为网络堵塞造成的,建议遇到被过滤状态时分不同的时间段再次进行扫描。
- Unfiltered:未被过滤状态意味着端口可以访问,但是Nmap并不能判断目标端口处于开放状态还是关闭状态,这里需要重申的是目标端口是否可以访问与是否开放并无太大的联系,例如:关闭的端口也可以接受Nmap发出去的探测报文。需要注意的是,当我们使用ACK扫描时才会呈现出这种状态,这时我们可以换一种扫描方式去进行扫描,以便于进一步确认目标端口是否开放。
- Open|Filtered:不确定开放还是过滤的,如果 Nmap发出去的探测报文并没有得到目标端口的响应,那可能会是受到了某些专业设备的阻挡,但这也不是完全一个被过滤的状态,这时Nmap就会呈现出目标端口是开放还是被过滤的。出现这种状态不妨换一种扫描方式进一步确认目标端口是开放还是被过滤的。
- Closed|Filtered:该状态用于Nmap不能确定端口是关闭的还是被过滤的。值得注意的是,它只可能出现在IPID Idle扫描中。
网络漏洞扫描
我们可以通过网络漏洞扫描,全面掌握目标服务器存在的安全漏洞。市面上常用的扫描有Nessus、NeXpose、OpenVAs等,这些扫描器都有商业版和免费版或者家庭版。
Nessus曾将是业内开源漏洞扫描工具的标准,在Nessus商业化不在开放源代码后,在它的原始项目中分支出openVAS开源项目。经过多年的发展,OpenVAS已经成为当前最好的开源漏洞扫描器,功能非常强大,甚至可以与一些商业的漏洞扫描器相媲美。openVaS 使用NVT脚本(漏洞库)对多种远程系统(包括windows、Linux,UNIX以及web应用程序等)的安全问题进行检测。
-
漏洞扫描原理:
网络漏洞扫描指的是利用一些自动化工具发现网络上各类主机设备的安全漏洞。这些自动化工具通常称为漏洞扫描器。
- 漏洞扫描通常可以分为两类:黑盒扫描和白盒扫描。
- 黑盒扫描:黑盒扫描一般都是通过远程识别服务的类型和版本,对服务是否存在漏洞进行判定。在一些最新的漏洞扫描软件中,应用了一些更高级的技术,比如模拟渗透攻击等。
- 白盒扫描:白盒扫描就是在具有主机操作权限的情况下进行漏洞扫描。比如微软的补丁更新程序会定期对你的操作系统进行扫描,查找存在的安全漏洞,并向你推送相应的操作系统补丁。
- 白盒扫描的结果更加准确,但一般来说它所识别出的漏洞不应当作为外部渗透测试的最终数据,因为这些漏洞由于防火墙和各类防护软件的原因很可能无法在外部渗透测试中得到利用。同时,一般情况下你是没有机会获取用户名和口令。
- 漏洞扫描器一般会附带一个用于识别主机漏洞的特征库,并定期进行更新。在漏洞扫描的时候,就是利用特征库里的脚本与目标系统的反馈信息进行匹配,如果能够匹配上,就说明存在某一个漏洞。
- 漏洞扫描器在识别漏洞的过程中,会向目标发送大量的数据包,有时候会导致目标系统拒绝服务或被扫描数据包阻塞,扫描行为也会被对方的入侵检测设备发现。
- 漏洞扫描器扫描出的结果通常会有很多误报(报告发现的漏洞实际并不存在)或者漏报(未报告发现漏洞但漏洞实际存在)。因此,需要对扫描结果进行人工分析,确定哪些漏是实际存在的,这个过程就叫做漏洞验证。这是渗透测试过程中不可缺少的一步,只有验证漏洞存在的真实性,才能对漏洞进行深度利用。
- 渗透测试工作中,在得到客户认可的情况下,可以使用扫描器进行扫描,但使用时一定要注意规避风险,对其系统运行可能造成的影响将到最低。
Web漏洞扫描
随着互联网的发展以及云计算的发展,使得政府、银行、企业以及各个组织基本上都有自己的门户网站。web应用越来越多,同时web应用的攻击成本、难度都比较低,web应用成为黑客攻击的主要目标。无论黑客出于什么样的目的, web应用所面临的挑战都是很大的。
如何及时、快速发现web 应用安全漏洞,并且修补安全漏洞,减轻或消除web安全风险成为安全行业的重要课题。
小型web应用几十上百个页面,大型的web应用成千上万个页面。如果靠人工的方式去检测每个页面的安全性,显然,这个成本是难以估计的。所以,我们需要借助于自动化工具,帮助审计员去发现web安全漏洞。这些自动化工具就是web漏洞扫描器。
市面上web 漏洞扫描器有很多,其中以IBM公司的AppScan和商业化web漏洞扫描器AWVS为优秀。
-
Web 漏洞扫描原理:
进行Web 漏洞扫描的时候,大致分为以下几个步骤:
爬行网站目录、使用漏洞脚本扫描、保存扫描结果
AWVS漏洞扫描器的使用
- 先创建一个目标
- 然后创建一个新的扫描,选择刚才创建的目标
- 点击可以查看详细的信息
- 等待扫描完成之后可以导出报告
口令破解
口令安全威胁
-
口令安全概述
现在很多地方都以用户名(账号)和口令(密码)作为鉴权的方式,口令(密码)就意味着访问权限。口令(密码)就相当于进入家门的钥匙,当他人有一把可以进入你家的钥匙,想想你的安全、你的财务、你的隐私,害怕了吧。例如网站后台、数据库、服务器、个人电脑、QQ、邮箱等等。
- 口令安全现状
-
弱口令:
类似于123456、654321、admin123 等这样常见的弱密码。
-
默认口令:
很多应用或系统都存在默认口令。例如:phpstudy 的MySQL 数据库默认账密【root/root】,Tomcat 管理控制台默认账密是【tomcat/tomcat】等。
-
明文传输
比如HTTP|FTP|TELNET等服务,在网络中传输的数据流都是明文的,包括口令认证信息等。这样的服务,有被嗅探的风险。
-
破解方式
在线破解方式:账密,需要认证
离线破解方式:密文还原成明文的过程
暴力破解
暴力破解就是利用所有可能得字符组密码,去尝试破解。这是最原始最粗暴的破解方法,根据运算能力,如果能够承受的起时间成本的话,最终—定会爆破出密码(理论上)。
下表是根据不同位数生成密码的空间大小:
字符集 | 密码位数 | 密码空间 |
---|---|---|
[0-9] | 8位 | 10^8=100000000 |
[0-9][a-z] | 8位 | 36^8=2821109907456 |
[0-9][a-z] | 1-8位 |
crunch工具
kali自带,用来生成密码字典。
使用crunch工具生成的密码可以输出到屏幕,保存文件或另一个程序。
一般命令格式:
crunch <min-len> <max-len> [<charset string>] [options]
参数说明:
min-len 设定最小字符串长度(必选)
max-len 设定最大字符串长度(必选)
charset string 字符集
options:
-b 指定文件输出的大小,避免字典文件过大
-c 指定文件输出的行数,即包含密码的个数
-d 限制相同元素出现的次数
-e 定义停止字符,即到该字符串就停止生成
-f 调用库文件(/usr/share/crunch/charset.lst)
-i 改变输出格式,即aaa ,aab -> aaa, baa
-l 通常与-t联合使用,表明该字符为实义字符
-m 通常与-p搭配
-o 将密码保存到指定文件
-p 指定元素以组合的方式进行
-q 读取密码文件,即读取pass.txt
-r 定义重某一字符串重新开始
-s 指定一个开始的字符,即从自己定义的密码xxxx开始
-t 指定密码输出的格式
-u 禁止打印百分比(必须为最后一个选项)
-z 压缩生成的字典文件,支持gzip,bzip2,lzma,7z
特殊字符:
% 代表数字
^ 代表特殊字符
@ 代表小写字母
, 代表大写字母
例如:生成元素的组合,比如123.com
crunch 7 7 -t %%%.com -s 111.com -e 123.com
字典
如果能通过比较合理的条件,筛选或者过滤掉一些全字符组合的内容,就会大幅降低爆破的成本。我们把筛选出的密码组合成特定的字典。在用字典爆破密码也是可以的,但是这样做有可能会漏掉真正的密码。密码字典大致分为以下几类:
-
弱口令字典:
比如123456等这样的默认口令或者弱口令。
-
社工字典
人们在设置密码的时候,往往为了便于记忆,密码的内容和组合会与个人信息有关,比如常见的密码组合“名字+生日”。例如:[zhangsan1992]
社工字典更具针对性,准确率也比较高。
我们可以根据个人信息生成密码字典。
可以使用cupp 工具(外国人开发的,可能习惯不是咱们的习惯)
cupp工具
安装cupp:
apt-get install cupp
安装完成
cupp -i
:可以填写一些信息,用来生成社工字典
会生成一个字典文件,打开查看
-
字符字典
确定了密码的字符,也将大大降低我们的成本
我们一般要搜集的字典:
子域名字典
默认账号密码字典
文件路径字典(日志文件、web目录)
常用变量名字典
常用文件名字典
弱口令字典
Hydra----九头蛇
需要身份验证的都能用它来进行暴力破解!!!
密码字典:xxx.dic
命令格式:
hydra -l 用户名 -p 密码 IP 服务名 -vV 小写字母表示已知用户名和密码,-vV表示显示详细过程
hydra -L 用户字典 -P 密码字典 IP 服务名 大写字母表示不知道,需要字典查找
参数:
-l 指定用户名
-L 指定用户名字典
-p 指定密码
-P 指定密码字典
-vV 显示爆破细节
-f 找到正确用户名和密码就停止爆破
-o 保存爆破结果
-t 指定线程
-e 有三个参数
n null,空
s same,用户名相同
r 取反,用户名倒置
Windows口令远程爆破实验
靶机:win7,开放445端口,IP:192.168.35.128
攻击机:kali,使用hydra进行暴力破解
用户名字典:user.dic
密码字典:pass.dic
开始爆破
爆破成功
Windows账户hash值破解
- :Getpass工具 从内存中提取密码
-
:Pwdump工具 提取SAM中的hash值,QuarksPwDump -dhl
手工将hash值存储到hash.txt中
使用saminside软件进行hash暴力破解
Linux本地暴力破解:
john工具(kali内置的)
john --wordlist=密码字典路径 /etc/shadow 破解密码
john --show /etc/shadow 查看密码