1.1踩点
1.1.1踩点的概念
引用百度百科上边对于踩点的定义:
踩点指的是预先到某个地方进行考察,为后面正式到这个地方开展工作做准备,比如去商场购物,可能通过某种形式,获得商场别人不知道而自己已经知道的最新信息。即:获得信息的过程就叫踩点。
这个解释和我们渗透人员的“踩点”是一致的,‘踩点’的目的就是为了进行信息的收集。
正所谓知己知彼,百战不殆。我们只有详细的掌握了目标的信息,才能有针对性的对于目标的薄弱点进行渗透。而踩点正是这样一个获取目标信息的方式。
1.1.2渗透测试中的踩点
我们在渗透测试的过程中第一个要做的事情就是进行信息的收集,俗称“踩点”。而在渗透测试中“踩点”是指尽可能多的收集关于目标网络信息以找到多种入侵组织网络系统方法的过程。当然这里我们的入侵是通过黑客的方式帮助网站找到薄弱点,便于之后网站的维护与整改。
信息的收集和分析在黑客入侵过程中是最基础的操作,也是入侵目标之前的准备工作。踩点就是主动或被动获取信息的过程,而信息收集一般通过扫描来实现,通过扫描可以发现远程服务的各种端口、提供的服务及版本等信息。
情报搜集的目的是获取渗透目标的准确信息,以了解目标组织的运作方式,确定最佳的进攻路线,而这一切应当悄无声息地进行,不应让对方察觉到你的存在或分析出你的意图。
情报搜集的工作可能会包含从网页中搜索信息、Google hacking、为特定目标的网络拓扑进行完整的扫描映射等,这些工作往往需要较长的时间。而且没必要对搜集的信息设定条条框框,即使是起初看起来零零碎碎毫无价值的数据都可能在后续工作中派上用场。
踩点目的主要是为了获取到足够的用于在之后的渗透测试用用到的信息,以便于渗透测试人员对于网站有更加充分的了解。
对于“踩点”的目的我们可以把它分为四部分内容:
了解安全架构
缩小攻击范围
建立信息数据库
绘制网络拓扑
1.1.3了解安全架构
踩点使攻击者能够了解组织完整的安全架构。
这个包括了解:
该公司使用了哪些安全设备,比如防火墙,waf等一些硬件或软件的设备,防火墙的话使用的是哪个厂家的,哪个版本的,然后在之后的渗透中就可以针对该防火墙的一些薄弱点进行相对应的渗透,其他的安全设备也是同理;
该公司的网络安全人员或者是网络管理人员的配置等情况,如果该公司只配备有网站管理人员,而没有配备专门的网络安全工程师,那么就可以通过一些比较隐秘的,具有迷惑性的方式来进行渗透测试;
该公司的规范制度完不完善,如果说某公司的而安全制度并不是很完善,比如说机房并没有严格的管理,任意人员都可以随意进出机房,那么无论这家公司针对互联网做了多严密的防护措施,作用都是几乎为零的;
通过踩点后获得的目标公司的IP地址范围、网络、域名、远程访问点等信息,可以便于在之后的渗透测试中缩小攻击的范围。
通过缩小攻击范围之后,就可以确定哪些敏感数据面临风险,他们在哪里。
初步的‘踩点’是为了获得足够的信息,然后在通过锁定那些敏感数据,以及易受攻击的点,这样就便于针对性的进行攻击渗透,而不是通过大范围的攻击,费时又费力。
1.1.4建立信息数据库
渗透测试人员在通过信息收集与分析之后,能够建立针对测试目标组织安全性弱点信息数据库,然后可以通过这个信息数据库来采取下一步的入侵行动。
这个信息信息数据库里可能包含一些网站脆弱点的信息、同一服务器上临站的信息,以及一些其他的重要的信息。
在建立了这个信息数据库之后,渗透测试人员完全可以通过这个渗透数据库来规划入侵的方案。
例如下面的表格:
信息 | |
网址 | www.xxx.com |
ip地址 | 10.2.7.9 |
是否使用cms | dedecms |
网站端口 | 80 |
渗透测试人员在对渗透目标有了充分的了解之后,就能够绘制出该公司的网络拓扑图,然后可以通过这个网络拓扑图,进行分析,找到最容易进行入侵的攻击路径。
在“踩点”的过程中,也是要有针对性的对于一些目标,进行信息的收集,而不是说什么都要收集,毕竟我们的精力是有限的,所以就专门的针对那些比较重要的目标进行“踩点”就可以了。
1.2 IP资源
1.2.1 真实IP获取
谈到真实IP,先简单介绍一下什么是CDN技术。它的中文名是内容分发网络,为了保证网络的稳定和快速传输,网站服务商会在网络的不同位置设置节点服务器,通过CDN技术将网络请求分发到最优的节点服务器上面。
那如何判断服务器上是否有CND呢?这里介绍三个网站:
国外ping探测:https://asm.ca.com/en/ping.php
这里以站长工具为例,如下图:
响应多个IP,那说明可能存在CDN。
1.2.2 绕过CDN获取真实IP
第一种方式是查找子域名,子域名可能跟主站在同一个服务器或者同一个C段网络中,可通过子域名探测的方式,收集目标的子域名信息,通过查询子域名的IP信息来辅助判断主站的真实IP信息。
第二种方式是微步在线查询的【www.***.com】这个域名的历史DNS解析信息,然后分析哪些IP不在现在的CDN解析IP里面,就有可能是之前没有加CDN加速时的真实IP。
第三种方式是探测的方式也有两种,一种是利用自己已有的国外的主机直接进行探测,另一种如果没有国外主机可以利用公开的多地ping服务,多地ping服务有国外的探测节点,可以利用国外节点的返回信息来判断真实的IP信息。
1.2.4 旁站信息收集
旁站是与攻击目标在同一服务器上的不同网站,当攻击目标没有漏洞的情况下,可以通过查找旁站的漏洞,通过攻击旁站,然后再通过提权拿到服务器的最高权限。
这里可以使用NMAP这款工具,它探测目标主机所开放的端口、通过识别新的服务器审计网络的安全性、通过对设备或者防火墙的探测来审计它的安全性、探测网络上的主机。下面是一个全端口扫描结果的详情:
root@kali:~# nmap -sV -p 1-65535 192.168.88.21
Host is up (0.00013s latency).
Not shown: 65523 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.2.17)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows 2003 or 2008 microsoft-ds
800/tcp open http Microsoft IIS httpd 6.0
1025/tcp open msrpc Microsoft Windows RPC
1030/tcp open msrpc Microsoft Windows RPC
1433/tcp open ms-sql-s Microsoft SQL Server 2005 9.00.1399; RTM
3306/tcp open mysql MySQL 5.5.53
3389/tcp open ms-wbt-server Microsoft Terminal Service
还可以使用第三方网站,比如站长工具,可以选择同IP网站查询模块进行查询。
1.2.5 C段主机信息收集
C段主机是指与目标服务器在同一C段网络的服务器,攻击目标的C段存活主机是信息收集的重要信息,很多单位企业的内部服务器可能都会在一个C段网络中。
还可以用NMAP进行C段扫描,使用命令【nmap -sn IP/24】,对目标IP的C段主机存活扫描,根据扫描的结果可以判断目标IP的C段还有哪些主机存活,然后对存活的主机进行渗透,拿到最高权限后进行内网渗透。
1.3 域名发现
1.3.1子域名信息收集
子域名是在域名系统等级中,属于更高一层域的域。比如,mail.example.com和calendar.example.com是example.com的两个子域。
企业可能有多个、几十个甚至很多的子域名应用,因为子域名数量多,企业在人员和防护的投入可能会没有主站及时。攻击者在主站域名找不到突破口时,就可以进行子域名的信息收集,然后通过子域名的漏洞进行迂回攻击。
域名有些类别,下面通过表格写一下:
域名 | 类别 |
.com | 用于工商金融企业 |
.net | 用于互联网信息中心 |
.edu | 用于教育机构 |
.gov | 用于政府部门 |
1.3.2 子域名枚举工具
这里推荐几个好用的子域名枚举工具,一个是Layer子域名挖掘机,Layer子域名挖掘机用于网站子域名查询,有服务接口、暴力破解、同服挖掘三种模式。
子域名爆破结果
对【xxx.com】进行子域名暴力破解的结果,发现存在【m.xxx.com】、【mail.xxx.com】、【secure.xxx.com】等多个子域名。
第二个比较好用的子域名枚举工具是OneForAll,这个工具是开源的,地址为https://github.com/shmilylty/OneForAll
支持批量,会按照域名生成对应文件,如下图:
1.3.3 搜索引擎发现子域
比如:site:baidu.com,如下图
还有其他的语法以及搜索引擎,这里就不阐述了。
1.4 服务器与人力资源情报
1.4.1 NMAP
Nmap可以检测目标主机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。 它是网络管理员必用的软件之一,用以评估网络系统安全。
Nmap的扫描结果有六种显示,如下
open(开放的)
由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。
filtered(被过滤的)
当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。
open|filtered(开放或者被过滤的)
该状态用于Nmap不能确定端口是关闭的还是被过滤的。
closed(关闭的)
关闭的端口对于Nmap也是可访问的, 没有应用程序在其上监听。
closed|filtered(关闭或者被过滤的)
未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。
unfiltered(未被过滤的)
关闭的端口对于Nmap也是可访问的, 没有应用程序在其上监听。
端口扫描结果如下:
root@kali:~# nmap -sV -p 1-65535 192.168.88.21
Host is up (0.00013s latency).
Not shown: 65523 closed ports
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
800/tcp open http
1025/tcp open msrpc
1030/tcp open msrpc
1433/tcp open ms-sql-s
3306/tcp open mysql
3389/tcp open ms-wbt-server
进行服务器版本识别,参数是-sV 如下:
root@kali:~# nmap -sV -p 1-65535 192.168.88.21
Host is up (0.00013s latency).
Not shown: 65523 closed ports
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.23 ((Win32) OpenSSL/1.0.2j PHP/5.2.17)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows 2003 or 2008 microsoft-ds
800/tcp open http Microsoft IIS httpd 6.0
1025/tcp open msrpc Microsoft Windows RPC
1030/tcp open msrpc Microsoft Windows RPC
1433/tcp open ms-sql-s Microsoft SQL Server 2005 9.00.1399; RTM
3306/tcp open mysql MySQL 5.5.53
3389/tcp open ms-wbt-server Microsoft Terminal Service
操作系统识别,参数是-O结果如下:
root@kali:~# nmap -O 192.168.88.21
Nmap scan report for 192.168.88.21
Host is up (0.00086s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
2004/tcp open mailbox
MAC Address: 00:0C:29:D6:A7:12 (VMware)
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:Linux:Linux_kernel:3 cpe:/o:Linux:Linux_kernel:4
OS details: Linux 3.2 - 4.6
Network Distance: 1 hop
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.89 seconds
1.4.2 Whois信息
whois是用来查询域名的IP以及所有者等信息的传输协议。whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人、域名注册商),通过whois来实现对域名信息的查询。
可以去站长之家进行查询,查询域名的所有人、注册商等相关信息,查询的地址为
【http://tool.chinaz.com/ipwhois】。如下图
也可以去利用https://who.is/进行Whois信息查询,如下图
1.4.3社会工程学
社会工程学是关于建立理论通过自然的、社会的和制度上的途径并特别强调根据现实的双向计划和设计经验来一步一步地解决各种社会问题。
通过社会工程学入侵一般分为三部,信息刺探、心理学的应用、反查技术。先说信息刺探。
一、善用你身边的信息
尽量利用现有所知道的信息,这些信息将能处理好突发事件,此类信息指的是规章、制度、方法、约定。
二、学习侦探的伪装
假设我们获取了目标部分信息,但必须通过对话得到更加敏感的信息,我们不可能直接让
对方发现吧,所以我们得先完成身份的伪装。
三、人性的弱点
每个人都有心理弱点,没有人永远没有心理弱点。可以说,此部分是社会工程学重要的部分,
他们能够利用人们的信任、乐于助人的愿望和同情心使你上当。
四、组织信息 构造陷阱
假设现在我们通过目标的同事撑握了信息,比如目标的真实姓名、联系方式、作休时间…等等。高明的社会工程学师会把前前后后的信息进行组织、归类、筛选。以构造精心准备的陷阱,这样,可使目标自行走入。
第二是心理学的应用,冒用身份使对方认为冒充者为内部人员行为模仿如果在行为模仿无误,别人便不会对你产生丝毫怀疑,对于同事的请求与帮助都不会怀疑NPL内心存储记忆NPL是强调行为、内心存储记忆、生理状态模仿,对周围的认识,通过视觉、听觉、嗅觉、传送讯息。
第三就是反查技术,伪造信息在攻击中最重要的一部分不是成功侵入主机,而是清除痕迹,不要让管理者发现被侵入及数据被伪造。
1.4.4 利用客服进行信息收集
攻击者利用文件传输的功能进行社工钓鱼直接发送给客服一个木马文件,安全意识不强的客服在点击后就有可能被植入木马,被攻击者完全控制其电脑文件,客服的办公电脑可能会存储大量的敏感信息,攻击者通过信息收集和信息分析进一步进行渗透攻击 。
1.4.5官方联系方式
一般公司都会将官方的联系方式放在官网上面,可以通过相关的联系方式进行邮箱
信息、电话信息的收集 。
1.4.6 招聘信息收集
招聘网站的招聘信息和求职简历有大量的人员相关信息,招聘信息中涉及招聘公司招聘人员相关的电子邮箱、手机号等相关信息,求职简历中求职人员姓名、手机号、电子邮箱、工作经历等非常详尽的个人信息,如果招聘网站存在安全漏洞,求职人员的简历就有可能造成泄漏。
1.5 网站关键信息收集
1.5.1指纹识别
企业或者开发者为了能够提高开发效率,很多都使用已有的CMS或者在此基础上做二次开发。CMS种类繁多,开发者水平参差不齐,导致CMS漏洞一度成为Web渗透的重灾区。
常见的指纹识别对象,看下面表格。
CMS信息 | 前端技术 | Web服务器 | WAF信息 | 开发语言 | 操作系统 |
织梦CMS | HTML5 | Apache | Yundun | PHP | Kali |
大汉CMS | Jquery | Tomact | Topsec | JAVA | Centos |
帝国CMS | Bootstrap | Nginx | 安全狗 | Python | Win7 |
PhpCMS | Prue | IIS | Ruby | Ubuntu | |
Ecshop | Ace | Jboss | C# | Win2003 |
特定文件及路径识别,不同的CMS会有不同网站结构及文件名称,可以通过特定文件及路径识别CMS。WordPress会有特定的文件路径【/wp-admin】【/wp-includes】等,WordPress和DedeCMS的【robots.txt】文件可能包含了CMS特定的文件路径,与扫描工具数据库存储的指纹信息进行正则匹配判断CMS的类型。
访问特定文件【robots.txt】文件,通过特定路径,判断此CMS为DedeCMS 。
通过静态文件MD5值判断CMS,CMS会有一些JS、CSS、图片等静态文件,这些文件一般不会变化,可以利用这些特定文件的MD5值作为指纹信息来判断CMS。
响应头信息识别
1.5.2 指纹识别工具
Wappalyzer指纹识别工具
Wappalyzer是一个开源的跨平台实用程序,可发现网站指纹,能够识别1200多种不同的Web技术。它可以检测CMS系统、Web框架、服务器软件等。
这是访问wordpress官网,识别出来的信息。可以说很全面了。
云悉指纹识别
云悉指纹识别的指纹库也很不错,地址为:https://www.yunsee.cn/
如下图:
1.5.3 互联网资产收集
互联网资产,包括历史漏洞信息、GitHub源代码信息泄漏、SVN源代码信息
泄漏网盘文件信息等。
ZoomEye给出各大组件、服务器系统等存在的历史性漏洞的描述文档。
【.svn】的【pristine】文件夹里包含了整个项目的所有文件备份。若发布代码时直接将整个项目拷贝到了网站根目录,并且没有删掉隐藏的【.svn】文件,或是直接使用【Checkout】将项目拉到网站根目录发布站点,然后没有删除隐藏的【.svn】文件,将会导致SVN代码泄露。
GitHub信息泄露
GitHub是一个面向开源及私有软件项目的托管平台,很多人喜欢把自己的代码上传到平台托管。攻击者通过关键词进行搜索,可以找到关于目标站点的敏感信息,甚至可以下载网站源码。
小结
本文对信息收集进行了一些总结,如有错误,请斧正。