实践原理
- 网络踩点(Footprinting)
- Web搜索与挖掘
- DNS和IP查询
- 网络拓扑侦察
- 网络扫描(Scanning)
- 主机扫描
- 端口扫描
- 系统类型探查
- 漏洞扫描
- 网络查点( Enumeration)
- 旗标抓取
- 网络服务查点
实践内容
各种搜索技巧的应用
Google Hacking
google还是强的啊,google hacking其实是很老的东西了,就是利用google搜索过滤器对收录的网页信息进行搜索。一些搜索规则如下
- 查询是不区分大小写(
OR
在表示布尔含义时一定要大写) - 谷歌有32词的搜索限制
- 短语搜索要带上单引号
AND
对谷歌来说是多余的,谷歌会自动查询你输入的一切- 谷歌会忽略特别常见的字符,但是前面加上
+
强制搜索(+
后面不能有空格) NOT
可以使用-
- 布尔查询
OR
、|
常用的高级运算符
intext:
把网页中的正文内容中的某个字符做为搜索条件intitle:
搜索网页标题中是否有所输入字符filetype:
搜索指定类型的文件site:
将搜索范围缩小到特定的网站,域或子域inurl:
搜索输入字符是否存在于URL中.可以联合site指定来找后台、fck之类
例如有些网站没有将sql删除,就有可能被搜索到,从而暴露数据库结构。我们在google中输入site:cn filetype:sql -inurl:nju
,这样就可以搜索cn
子域名下可能存在的sql文件,另外我排除了url中包含nju
的,因为要访问他们的网站好像需要南大的账号。。
打开搜索结果第一条就是“收获满满”
我看了看手边的网络安全法,赶快退了出去。
搜索网址目录结构
利用metasploit的dir_scanner辅助模块,暴力猜解,获取网站目录结构
msfconsole
use auxiliary/scanner/http/dir_scanner
set THREADS 10
set RHOSTS www.baidu.com
exploit
另外推荐一个我打ctf常用的扫目录工具dirsearch
路由侦查
traceroute跟踪从IP网络获取到给定主机的路由包。IP每经过一个路由器,TTL值减1,对应的路由器就会返回ICMP TIME_EXCEEDED响应。据此可以得知经过的ip地址。
DNS IP注册信息的查询
whois
WHOIS(读作“Who is”,而非缩写)是用来查询互联网中域名的IP以及所有者等信息的传输协议。早期的WHOIS查询多以命令行接口(Command Line)存在,但是现在出现了一些基于网页接口的简化在线查询工具,甚至可以一次向不同的数据库查询。网页接口的查询工具仍然依赖WHOIS协议向服务器发送查询请求,命令行接口的工具仍然被系统管理员广泛使用。
WHOIS通常使用TCP协议43端口。每个域名或IP的WHOIS信息由对应的管理机构保存,例如,以.com结尾的域名的WHOIS信息由.com域名运营商VeriSign管理,中国国家顶级域名.cn域名由CNNIC管理。
nslookup,dig域名查询
nslookup
可以得到DNS解析服务器保存的Cache的结果,但并不是一定准确的
dig
可以从官方DNS服务器上查询精确的结果
基本的扫描技术
主机发现
ping
最简单的探测方法,ping的通当然是存活的,ping不通也不一定就不存活,有可能只是防火墙拦截了
metasploit中的arp_sweep模块和udp_sweep模块
-
arp_sweep
使用ARP请求枚举本地局域网络中的所有活跃主机。use auxiliary/scanner/discovery/arp_sweep
进入arp_sweep
模块show options
查询模块参数set RHOSTS 192.168.79.0/24
进行hosts主机段设置set THREADS 10
设置多线程run
执行扫描
-
udp_sweep
通过发送UDP数据包探查指定主机是否活跃,并发现主机上的UDP服务
端口扫描
nmap老熟人了,可以扫描各种东西,自然也包括存活主机
-
-R
选项,arp探测,仅限于同网段,和arp_sweep
差不多
-
tcp扫描全家桶
-sT
全开扫描-sS
SYN半开扫描-sA
ACK扫描-sN
Null扫描-sF
FIN扫描
-
udp扫描
-sU
OS及服务版本探测
nmap -O
根据指纹库探测主机操作系统
但是这里我探测的主机太多指纹符合所以没法确定。。
nmap -sV
查看服务的详细信息
具体服务的查点
msf的auxiliary/scanner
模块有许多相关工具,比如探测telnet服务
漏洞扫描--OpenVAS
安装
装了2天,还是各种报错,受不了了,直接去docker拉了OpenVAS image for Docker
docker run -d -p 443:443 --name openvas mikesplain/openvas
半个小时就起了,舒服。
用户名和密码都是admin
扫描
选择菜单栏的Scans
,然后点击Tasks
,点击紫色烟花新建一个任务向导,输入要扫描的主机地址,点击Start Scans
开始扫描
扫描完成后点击Report
,结果如下
可以看到只有一个危险等级为Low
的安全隐患。点击Task
那一栏之后再点击Result
可以看到界面做的还是蛮不错的,居然还有词云。点左上角的?
图标,会有每一列的解释。
点进去看一下那个low
的是啥问题
原因居然是这台主机实现了RFC1323定义的TCP时间戳,导致远程连接者可以据此推测出主机上的时间。我的理解就是时间戳可以被预判,导致基于时间戳的伪随机不那么安全。
尝试按照它的提示修复漏洞。
但是因为我是在docker里面搭建的,而扫的又是自己那个容器。这里想修复的时候报了个只读文件系统,看来是改不了了,作罢。
报告内容
基础问题回答
(1)哪些组织负责DNS,IP的管理。
- 全球根服务器均由ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构统一管理。
- 地址支持组织(ASO)负责IP地址系统的管理
- 域名支持组织(DNSO)负责互联网上的域名系统(DNS)的管理
- 协议支持组织(PSO)负责涉及Internet协议的唯一参数的分配
五个地区性注册机构:
- ARIN(北美地区)
- RIPE(欧洲地区)
- APNIC(亚太地区)
- LACNIC(拉丁美洲美洲)
- AfriNIC(非洲地区)
(2)什么是3R信息。
Registrant
注册人Registrar
注册商Registry
官方注册局
(3)评价下扫描结果的准确性。
ping出来的ip地址不一定是对的,因为大型网站可能用了CDN。whois
没有dig
可信度高。nmap还是蛮好用的,尤其是在目标靶机没开防火墙的时候,扫描的准确度蛮高的。至于漏扫不太好评价,因为就装了这一个,也没有对比,我也不知道这个靶机是不是还有其他漏洞。但是能扫出来东西我已经觉得很厉害了。
实践总结与体会
信息收集是渗透测试的第一步,可以避免像无头苍蝇一样乱撞,能扫出来其他后台也能扩大攻击面。如果能获取某个网站的数据库结构或者脚本类型、容器类型,在攻击过程中都可以少很多无意义的摸索时间。由于之前在别的课程包括课外的自学中接触过不少内容,所以这次试验还是比较轻松的。