1、信息收集
在划定了测试范围之后,就需要进入信息收集阶段。在这个阶段,渗透人员需要使用各种公共资源尽可能地获取测试目标的相关信息。他们从互联网上搜集信息的渠道主要有:
论坛、公告板、新闻组、媒体文章、博客、社交网络、其他商业或非商业性网站、GitHub、….此外,也可以借助各种搜索引擎中获取相关数据,如谷歌、雅虎、MSN必应、百度等。收集信息主要包括DNS 服务器、路由关系、whois 数据库、电子邮件地址、电话号码、个人信息以及用户账户。收集信息越多,渗透测试成功的概率越高
1.1、DNS信息
在收集DNS 信息的时候,主要关注域名或注册商,管理员联系方式,电话和邮箱,子域名等信息。
1.1.1、whois查询
whois是一个集成在kali 虚拟机中的小工具
whois工具可以用来查询域名注册信息。
1.1.2、子域名查询
可以查询子域名的网站[https://searchdns.netcraft.com/],这种方法查询大型网站比较有优势
1.1.3、域传送漏洞
DNS区域传送指的是一台备用服务器使用来自主服务器的数据刷新自己的域数据库。这为运行中的DNS 服务提供了一定的冗余度,其目的是为了防止主域名服务器因为意外故障变得不可用时影响到整个域名的解析。一般来说,DNS区域传送操作只在网络中真的有备用域名服务器的时候才有必要用到,但是许多DNS服务器却被错误的配置成只要有client 发出请求,就会像对方提供一个zone 的数据库的详细信息,所以说允许不受信任的英特网用户执行DNS区域传送操作是后果最为严重的错误配置之一。
可以使用dig 工具来检测域传送漏洞,命令如下
[dig axfr @dns.example.com example.com]
通过域传送漏洞
子域名信息
子域名对应的IP地址
1.1.4、子域名爆破
• 工具:子域名挖掘机
• dnsrecon
[dnsrecon -d vulnweb.co -D /root/dic/dns.dic -t brt]
1.2、工具:
1.2.1、layer(子域名挖掘机)
1.2.2、dnsrecon
dnsrecon -d vulnweb.com -D /root/tmp/dic/dns.dic -t brt
-d 指定域名 -D 指定字典 -t 指定模式
1.2.3、DNS2IP
通过DNS 解析找到IP地址
1.2.3.1、ping
非权威解答
ping testfire.net
65.61.137.117
ping baidu.com
39.156.69.79
ping www.baidu.com
39.156.66.18
1.2.3.2、nslookup
testfire.net 65.61.137.117
testfire.net
Server: 192.168.1.2
Address: 192.168.1.2#53
Non-authoritative answer:
Name: testfire.net
Address: 65.61.137.117
baidu.com
Server: 192.168.1.2
Address: 192.168.1.2#53
Non-authoritative answer:
Name: baidu.com
Address: 39.156.69.79
Name: baidu.com
Address: 220.181.38.148
www.baidu.com
Server: 192.168.1.2
Address: 192.168.1.2#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 39.156.66.14
Name: www.a.shifen.com
Address: 39.156.66.18
1.2.3.3、dig
dig testfire.net
dig @8.8.8.8 testfire.net 指定dns服务器
dig +trace testfire.net 获取域名的详细解析过程
1.2.3.4、dnsenum
dnsenum testfire.net
此处推荐dnsenum,此工具在解析域名的时候
会自动检测域传送漏洞
1.2.3.5、 利用站长工具
http://tool.chinaz.com/dns/
路由追踪
1.3、CDN 加速问题
1.3.1、CDN 是内容分发网络
本意是进行节点缓存,是网站访问速度加快。一般情况下是没办法得到目标的网站的真实IP 的。关于SDN 加速可以作为一个课题。
参考资料如下:
https://www.t00ls.net/
http://www.91ri.org/6233.html
http://www.91ri.org/3563.html
1.3.2、IP 查询
1.3.2.1、IP 查询
http://ip.chinaz.com/65.61.137.117
1.3.2.2、同IP 网站查询
同一个IP 上的网站
1.1.1.1
A B
旁站(同一个服务器上的两个网站)
1.1.1.* C 段查询
1.3.2.3、IP whois 查询
1.3.2.4、IP2Location
65.61.137.117
1.3.2.5、查询IP 地址经纬度
https://www.maxmind.com/zh/home
得到IP地址的大致经纬度(40.9476, -73.8624)
1.3.2.6、通过GPS 查询物理位置
http://www.gpsspg.com/maps.htm
2、扫描
2.1、资产发现
发现目标环境中哪些资产,联网设备,主机,服务器,各种服务等。
2.1.1、扫描神器(nmap)
如果使用kali 中的nmap 扫描的时候,建议桥接
如果在没有指定端口的情况下,默认扫描top 1000 端口
端口扫描
开启的端口
端口上的服务
扫描方式
TCP 全链接扫描
SYN 半连接扫描
隐蔽扫描
Null 扫描
Xmas 扫描
FIN 扫描
参数
-sP/-sn 不进行端口扫描
-p
-p 80
-p 1-80
-p 80,3389,8080
-p 1-65535
-p-
-sT TCP全连接扫描
建立完整的三次握手过程
-sS SYN半连接扫描
只进行三次握手的前两次
-sN Null扫描
-sX Xmas扫描
-sF Fin扫描
-sV 显示服务的详细版本
-O 获取操作系统类型(不太准确)
-oN/-ox 保存扫描结果,txt/xml
xpath 自学
-A 全面扫描
-T0 ~ -T5 时序选项
工具
wireshark
ipaddr == 10.0.105.1 and tcp.port == 80
过滤
Nessus NeXpose OpenVAS
OpenVAS http://www.openvas.org
OpenVAS使用方法:现在虚拟机里边安装,账密分别是 admin 空,之后按照提示的网址在浏览器打开,登陆即可,先在configuration里边设置目标,随后在Scans里边添加任务,随后开始任务即可。
3、口令破解
口令安全威胁
*口令安全概述
现在很多地方以用户名(账户)和口令(密码)作为鉴权的方式,口令(密码)就意味着访问权限。例如网站后台、数据库、服务器、个人电脑、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 reverse
用户名未知,密码未知
用户名已知,密码未知
用户名未知,密码已知
离线破解方式
密文,还原成明文的过程
暴力破解
暴力破解就是利用所有可能的字符组密码,去尝试破解。这是最原始,粗暴的破解方法,根据运算能力,如果能够承受的起时间成本的话,最终会爆破出密码。下表根据不同的位数生成密码的空间大小
字符集 密码位数 密码空间
[0-9] 8 位 10^8=100000000
[0-9][a-z] 8位 36^8=2821109907456
[0-9][a-z] 8位 ??
字典破解
如果 能通过比较合理的条件,删选或者滤掉一些全字符组合内容,就会打幅度降低爆破的成本。我们把筛选出来的密码组成特定的字典。用字典爆破密码也是可以的,但是这样可能会漏掉真正的密码。密码字典大致分为以下几大类
弱口令字典
比如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 [] [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
[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]