实验
IP信息收集
实验目的
通过实验学习域名查询IP和IP反查域名,了解什么是CDN,通过判断是否存在CDN来查找CDN背后的真实IP,学习旁注和C段嗅探。
实验环境
无特殊要求,能访问互联网即可。
实验步骤一
任务描述:域名查询IP和IP反查域名。
域名查询ip:
可见,同一个域名,访问出了两个IP地址
IP->域名
实验步骤二
任务描述:探测IP真实性:判断是否存在CDN—>查找CDN背后的真实IP。
检测的方法
多地ping
判断是否存在CDN可以使用ping方法,在不同的地区ping同一个域名,查看对应IP地址是否唯一,如果不唯一多半是使用了CDN。
多地ping包括了外国ping
查询子域名的IP
查询历史DNS记录中可能存在的使用CDN前的记录
解析目标域名的AAAA记录
https://github.com/blechschmidt/massdns
然后输出hetianlab.txt
包括了解析器IP地址,以便在检测到某些解析器产生不良结果时便于过滤输出。
dnsenum:查询网站的主机地址信息、域名服务器、mx record(函件交换记录),在域名服务器上执行axfr请求、通过谷歌脚本得到扩展域名信息、提取子域名并查询、计算C类地址并执行whois查询、把地址段写入文件。
dnsenum hetianlab.com -v
实验步骤三
任务描述:旁注和C段嗅探
使用bannerscan进行C段BANNER与路径的扫描
端口信息收集
实验目的
通过实验学习端口扫描的常用方法,利用相关工具检测服务器或指定IP段的端口开放情况。
实验环境
无特殊要求,能访问互联网即可。
实验步骤一
任务描述:nmap工具简单介绍。
NetworkMapper(nmap),是一款开放源代码的网络探测和安全审核工具。手册地址:https://nmap.org/man/zh/
“所感兴趣的端口表格”是其中的关键。那张表列出端口号,协议,服务名称和状态。状态可能是
open
(开放的),filtered
(被过滤的),closed
(关闭的),或者unfiltered
(未被过滤的)。 Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。filtered
(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知 它是open
(开放的) 还是closed
(关闭的)。closed
(关闭的) 端口没有应用程序在它上面监听,但是他们随时可能开放。nmap的功能
1)主机发现:检测网络存活主机
2)端口发现:检测主机开放端口
3)服务发现:检测相应端口软件及版本
4)检测操作系统、硬件地址
5)检测脆弱性漏洞
端口状态
1)open:端口开启、数据到达主机、有程序在端口上监控
2)closed:端口关闭、数据到达主机、没有程序在端口上监控
3)filtered:数据没有到达主机,返回结果为空,数据被防火墙或IDS(intrusiondetection system,入侵检测系统)过滤;
4)unfiltered:数据没有到达主机,且不能识别端口的当前状态
nmap的基础用法
单一主机的扫描
nmap 192.168.1.2
子网扫描
nmap 192.168.1.1/24
/24的意义是使用24位的子网掩码,就是所有的IP地址
多主机扫描
nmap 192.168.1.2 192.168.1.5
也就是添加多个ip地址
主机范围的扫描
nmap 192.168.1.1-100
使用表格扫描
nmap -iL target.txt
nmap常用的命令
系统漏洞检查
nmap –script smb-check-vulns.nse -p ip
数据库密码检查
nmap –script=brute ip
收集目标的应用服务信息
nmap -sC ip
检查常用的漏洞
nmap –script=vuln ip
检测应用的弱命令
nmap –script=auth
实验步骤二
任务描述:其他端口信息收集工具简介。
masscan
单端口扫描
masscan ip -p port
nmap功能
masscan –nmap
scanPort
指定端口号,扫描hetianlab.com的开放端口,使用1000个协程进行
指定IP范围,扫描192.168.78.1-255网段的端口80-10000:
astsu
用Python3写的网络扫描仪。将TCP Syn数据包发送到已定义端口上的目标,如果该端口已打开,使用nmap扫描检查该端口上运行的服务,并打印找到的所有端口。
第三方网站
域名信息收集
预备知识
域名
域名(domain name)又称网域,是由一串用点分隔的名字组成的Internet上某一台或计算机组的名称,用于在数据传输时对计算机的定位标识。
由于IP地址具有不方便记忆、不能显示地址组织的名称和性质等缺点,设计出了域名,并通过网域名称系统(domain name system,DNS)来将域名和IP地址相互映射,使得访问互联网更方便。
域名分类
顶级域名:.com
二级域名:baidu.com
三级域名:www.baidu.com
政府域名:.gov
商业域名:.com
教育域名:.edu
Whois
Whois是用来查询域名的IP和所有者信息的传输协议,就是一个用来查询域名是否已经被注册,以及注册域名的详细信息(域名归属者的联系方式、注册和到期时间等)的数据库。
Whois通常使用TCP协议43端口,每个域名/IP的whois信息由对应的管理机构保存,Whois查询关注的重点是注册商、注册人、注册人联系电话、邮件、DNS解析服务器。
Whois查询的重要性:通过whois查询可以获得域名注册者邮箱地址等信息,一般情况下对于中小型网站,域名注册者就是网站管理员,利用搜索引擎对whois查询到的信息进行搜索,可以获取更多域名注册者的个人信息。
相关实验:<Whois网络注册信息探测>:https://www.hetianlab.com/expc.do?ec=66a18063-8287-4b7c-9dfd-97faf52282f1
备案信息
网站备案信息是根据国家法律法规规定,由网站所有者向国家有关部门申请的备案,是国家信息产业部对网站的一种管理途径,为了防止在网上从事非法网站经营活动。备案号是网站是否合法注册经营的标志,可随时在国家工业和信息化部网站备案系统上查询该ICP备案的详细信息。
子域名
子域名(subdomain)是在域名系统等级中,属于更高一层域的域。比如mail.heetian.com和bbs.heetian.com是heetian.com的子域,heetian.com是顶级域.com的子域。
相关实验:<AWVS 10.5 子域名扫描、盲注、结果比较>
为什么要查询网站的子域名?
1)了解竞争对手网站的业务动向;
2)渗透测试时进行旁注:通过检测哪些子域名存在安全风险,从而判断能否进一步影响到主机的安全。
实验目的
通过实验学习Whois网络注册信息探测的目的和技术方法,了解备案信息在信息收集过程中的重要性,掌握子域名挖掘的常用方式。
实验环境
无特殊要求,能访问互联网即可。
实验步骤一
任务描述:Whois查询hetianlab.com的注册信息。
使用第三方网站查询
https://whois.aliyun.com (中国万网/阿里云)
http://whois.chinaz.com (站长工具)
kali自带whois的查询工具
实验步骤二
任务描述:备案信息查询。
备案信息查询主要关注的是单位信息,如名称、备案编号、网站负责人、法人、电子邮箱、联系电话等。
使用第三方网站查询
http://www.beianbeian.com(ICP备案查询网)
https://www.tianyancha.com (天眼查)
备案号反查,目的是了解目标主体公司下有哪些资产,便于我们确定范围。
如合天网安实验室的备案号反查结果:
实验步骤三
任务描述:子域名收集,分为被动子域枚举和主动子域枚举。
被动子域枚举:收集子域信息的过程不会产生任何流量,目的是要隐身且留下很少或没有足迹。
证书透明度:证书透明度日志通过设计包含了由参与的CA针对任何给定域颁发的所有证书,SSL/TLS证书通常包含域名、子域名和电子邮件地址。这些日志是公开的,这使得它们成为攻击者的信息宝库。通过查看证书透明度日志,攻击者可以收集有关组织基础结构的大量信息。
使用搜索引擎
Bing:发现子域名:site:target.com;过滤掉-site:www.hetianlab.com
使用DNS聚合器
可以为给定域查找潜在的大量子域,有一个非官方的Python库来提取数据。
主动子域枚举:攻击者通过探测目标组织管理的基础结构来收集子域信息,主动枚举会产生检测可能导致的流量。
Subbrute:根据DNS记录查询子域名,旨在创建最快、最准确的子域枚举工具。使用开放式解析器作为代理来规避DNS速率限制,该设计还提供了一层匿名性,不会将流量直接发送到目标的名称服务器。地址:https://github.com/TheRook/subbrute
但是速度太慢了
网站信息收集
预备知识
路径信息
路径信息收集/目录扫描可以让我们发现这个网站存在多少个目录,多少个页面,探索出网站的整体结构,通过目录扫描我们还可以获取敏感文件、后台文件、数据库文件等。
指纹信息
攻击者最常用的方法是覆盖目标网络存在并枚举尽可能多的信息,以便制定出准确的攻击方案,有效利用目标主机正在使用的软件类型/版本中的漏洞。指纹识别的目的是知道当前资产的一些基本情况,可以根据不同的指纹进行对应的测试,提升测试效率。在发起攻击之前我们需要了解某一程序特征、弱点或是历史存在的缺陷,有利于对目标进行快速了解。
相关实验:<python爬虫-WEB目录爆破和指纹识别>
CMS信息
CMS是content management system的缩写,意为‘内容管理系统’,很多网站为了简单和快速地部署服务,会使用别人开发好的CMS进行网站搭建。网站CMS查询可以帮助我们快速地定义使用的CMS,只要爆出漏洞的话影响的就是很多个站点。
相关课程:《CMS安全实践》
WAF信息
WAF全称Web Application Firewall,中文名是Web应用防护系统,也称网站应用级入侵防御系统,是通过执行一系列针对HTTP/HTTPS的安全策略,来专门为Web应用提供保护的一款产品。
相关实验:<WAF渗透攻防实践>
SSL信息
HTTPS服务器需要正确的配置来提供有效的加密方式,保护用户不受MITM攻击(man-in-the-MiddleAttack,中间人攻击)或者密码分析。一些SSL协议的实现和设计上的漏洞已经被发现了,我们需要对HTTPS进行检查。
实验目的
通过实验了解网站的路径信息、指纹信息、敏感文件的收集方式,查询网站的CMS类型及版本,学会WAF识别和对HTTPS进行检查。
实验步骤一
任务描述:路径信息收集。
7kbscan-WebPathBrute
Web路径暴力探测工具,地址:https://github.com/7kbstorm/7kbscan-WebPathBrute
dirsearch
一个简单的命令行工具,旨在暴力破解网站中的目录和文件,地址:https://github.com/maurosoria/dirsearch
实验步骤二
任务描述:敏感文件探测。
利用搜索引擎
site:xxx.com filetype:xls
WEB-INF/web.xml
WEB-INF是Java的Web应用安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行映射。
FileScan
敏感文件扫描,地址:https://github.com/Mosuan/FileScan
实验步骤三
任务描述:指纹信息收集。
第三方网站
https://www.yunsee.cn/ (云悉指纹)
http://finger.tidesec.net/ (潮汐指纹)
推荐使用:潮汐指纹
服务器ssh配置ssh_scan
SSH配置和策略扫描程序,地址:https://github.com/mozilla/ssh_scan
w12scan
一款网络资产发现引擎,通过Web接口下发任务,会自动将相关的资产聚合在一起方便分析使用。地址:https://github.com/w-digital-scanner/w12scan
实验步骤四
任务描述:CMS信息查询。
第三方网站
http://whatweb.bugscaner.com/look/ (在线CMS指纹识别)
但是报错502也就是说对方的服务器出现了问题
CMS-Exploit-Framework
一款CMS漏洞利用框架,通过它可以很容易地获取、开发CMS漏洞利用插件,并对目标应用进行测试。地址:https://github.com/Q2h1Cg/CMS-Exploit-Framework
CMS识别:
实验步骤五
任务描述:WAF识别。
wafw00f
一个Web应用防火墙(WAF)指纹识别工具,地址:https://github.com/EnableSecurity/wafw00f
工作原理:首先发送正常的HTTP请求并分析响应,如果不成功,将发送多个HTTP请求(可能是恶意的),并使用简单的逻辑来推断出它是哪个WAF。如果还是不成功,将分析先前返回的响应,并使用另一种简单的算法来猜测WAF或安全解决方案是否正在积极响应我们的攻击。
实验步骤六
任务描述:其他信息收集。
sslscan
sslscan是kali自带的工具,能够基于服务器的安全通信来分析服务器的配置文件。
这一部分告诉了我们服务器的一些配置信息,包括常见的配置错误:不支持TLS Fallback SCSV(信令套件,可以用来阻止客户端和服务器之间的意外降级,预防中间人攻击)、支持安全会话重新协商、禁止压缩、没有心脏滴血漏洞
这一部分告诉我们服务器支持的加密算法,以及服务器首选的加密算法,红色代表不安全的算法,黄色代表中等强度的算法。
这一部分告诉我们证书签名的一些信息,这里用的是2048位的RSA进行签名。
Kali中还有另一个工具sslyze也可以从SSL/TLS获取加密信息的攻击,并且有时会提供额外信息给攻击者;SSL/TLS信息也可以通过openssl命令获得。
GET显错注入
预备知识
SQL 注入是一种攻击方式,在这种攻击方式中,恶意代码被插入到字符串中,然后将该字符串传递到 SQL Server 的实例以进行分析和执行。任何构成 SQL 语句的过程都应进行注入漏洞检查,因为 SQL Server 将执行其接收到的所有语法有效的查询。一个有经验的、坚定的攻击者甚至可以操作参数化数据。
SQL 注入的主要形式包括直接将代码插入到与 SQL 命令串联在一起并使其得以执行的用户输入变量。一种间接的攻击会将恶意代码注入要在表中存储或作为元数据存储的字符串。在存储的字符串随后串连到一个动态 SQL 命令中时,将执行该恶意代码。
注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。由于插入的命令可能在执行前追加其他字符串,因此攻击者将用注释标记“–”来终止注入的字符串。执行时,此后的文本将被忽略。
实验目的
通过本实验掌握最基本的GET显错注入及GET方式盲注,理解盲注的判断点;了解POST传送工具的使用并根据显错信息来设定注入语句;了解HTTP的信息头并学会通过修改信息头来实现注入;使用base64进行编码解码;学会浏览查看修改cookie。
实验环境
服务器:windows2003,IP地址:10.1.1.10
客户端:winXP,IP地址随机分配