如何使用Kali进行信息收集?

渗透测试即模拟黑客入侵的手段对目标网络进修安全测试,从而发现目标网络的漏洞,对目标网络进行安全加固与漏洞修复。

Kali 是一个基于 debian 的渗透测试平台,其中集成了很多常见的和不常见的渗透测试工具,如下图:

工具实在是太多,下面就以平时比较常用的一些东西来做演示,感兴趣的朋友可以自己下去研究,类似 kali 的渗透测试系统有很多,但是我们要学习的是渗透的思路而不是工具的使用,有一个好的的思路对渗透的成功与否是非常重要的,还有弄清楚工具的原理也是关键。

首先介绍一下渗透测试流程大体的归纳:

1.   信息收集

2.   漏洞发现

3.   漏洞利用

4.   维持访问

这是我对于网络渗透常规手段的总结

1.  信息收集

信息收集又分为   被动信息收集   和   主动信息收集。很多人不重视信息收集这一环节,其实信息收集对于渗透来说是非常重要的一步,收集的信息越详细对以后渗透测试的影响越大,毫不夸张的说,信息的收集决定着渗透的成功与否。

1.1 被动信息收集

被动信息收集也就是说不会与目标服务器做直接的交互、在不被目标系统察觉的情况下,通过搜索引擎、社交媒体等方式对目标外围的信息进行收集,例如:网站的 whois 信息、 DNS 信息、管理员以及工作人员的个人信息等等。

1.1.1 IP 查询

想得到一个域名对应的 IP 地址,只要用 ping 命令 ping 一下域名就可以了:

当然,淘宝也使用了 CDN ,所以上面图片中得到的 IP 不是真实 web 服务器的 IP 地址,那么如何得到真实服务器的 IP 呢?

告诉大家个小窍门:不妨把“ www ”去掉,只 ping 下 taobao.com 试试

结果不一样了吧?因为一级域名没有被解析到 cdn 服务器上,很多使用了 cdn 服务器的站点都是这样。

1.1.2 whois 信息收集

在 linux 系统下有一个命令:whois ,可以查询目标域名的 whois 信息,用法很简单,如下图所示:

可以查询到域名以及域名注册人的相关信息,例如:域名注册商、 DNS 服务器地址、联系电话、邮箱、姓名、地址等。

也可以使用一些在线工具,如:http://whois.chinaz.com/

1.1.3 DNS 信息收集

还可以用 linux 下的 host 命令去查询 dns 服务器,具体命令格式为:

host -t ns xxx.com

例如对百度域名的 dns 服务器进行查询,如下图:

同样的用法,还可以查询 a 记录和 mx 记录:

Dnsenum 是一款域名信息收集工具,很好很强大。

示例用法:

1.   dnsenum --enum xxx.com

可以看到 dnsenum 还对域传送漏洞进行了探测,并且尝试从谷歌获取域名,不过在国内谷歌被墙大家是知道的,如果想用谷歌需要翻墙了 ...

2.   dnsenum -f words.txt xxx.com

通过 -f 参数指定字典对目标域名的子域名进行暴力猜解。

更多用法请查看 help 。

1.1.4  旁站查询

旁站也就是和目标网站处于同一服务器的站点,有些情况下,在对一个网站进行渗透时,发现网站安全性较高,久攻不下,那么我们就可以试着从旁站入手,等拿到一个旁站 webshell 看是否有权限跨目录,如果没有,继续提权拿到更高权限之后回头对目标网站进行渗透,可以用下面的方式收集旁站:

1.   通过 bing 搜索引擎

使用 IP:%123.123.123.123 格式搜索存在于目标 ip 上的站点,如下图:

这样便能够得到一些同服务器的其它站点。

也可以使用在线工具:http://s.tool.chinaz.com/same

1.1.5 C 段网站查询

什么是 C 段?每个 IP 都有四个段,如 127.23.33.46 , 127 为 A 段, 23 为 B 段, 33 为 C 段, 46 为 D 段。

在进行 web 渗透时,如果目标站点没有拿下,而旁站也一无所获,或者根本没有旁站,服务器也没有发现其它漏洞,怎么办呢?我们可以通过渗透同一个 C 段的网站、提权拿下服务器,也就是尝试拿下 D 段 1~254 中的一台服务器,接着内网渗透,思路就多了,比如:ARP 欺骗、嗅探?那么,如何收集 C 段存在的站点呢?

之前有不少 C 段查询的工具,由于这些工具多数使用的 bing 接口, bing 接口现在做了限制,需要申请 api-key ,所以很多工具都不能用了,如果要收集 C 段站点的话,可以用 1.1.4 中的方式挨个查询。

1.1.6 Google Hack

搜索引擎真的是个强大的东西,在挖掘信息时你也可以使用一些搜索引擎的语法,对目标的信息进行搜集,也会有一些意想不到的收获,可以用来查找站点敏感路径以及后台地址、查找某人信息、也可以用来搜集子域名等等,用处非常的多,只要自己去构造搜索语法。

网速问题无法开代理,所以访问不了谷歌,就不做演示了,大家可以自行百度去查找 google hack 相关文章。

1.2  主动信息收集

主动信息收集和被动信息收集相反,主动收集会与目标系统有直接的交互,从而得到目标系统相关的一些情报信息。

1.2.1  发现主机

nmap 是一个十分强大的网络扫描器,集成了许多插件,也可以自行开发。下面的一些内容我们就用 nmap 做演示。

首先,使用 nmap 扫描下网络内存在多少台在线主机:

nmap -sP 192.168.1.* / nmap -sP 192.168.1.0/24

-sP 参数和 -sn 作用相同,也可以把 -sP 替换为 -sn ,其含义是使用 ping 探测网络内存活主机,不做端口扫描。

1.2.2  端口扫描

-p 参数可以指定要扫描目标主机的端口范围,如,要扫描目标主机在端口范围 1~65535 开放了哪些端口:

1.2.3  指纹探测

指纹探测就是对目标主机的系统版本、服务版本、以及目标站点所用的 CMS 版本进行探测,为漏洞发现做铺垫。

-O 参数可以对目标主机的系统以及其版本做探测:

这样我们就得到目标主机所运行的系统为 windows xp

如下图所示,可以看到目标主机开放了哪些端口,以及对应的服务。我们还可以加上 -sV 参数来探测详细的服务版本号 :

在对一台主机进行渗透时,服务的版本是很有必要搞清楚的,当知道了服务版本以后,就可以去判断该版本的服务存在哪些漏洞,从而尝试利用该漏洞。

Nmap 的其他一些用法:

-A 参数可以探测目标系统的系统版本、 traceroute 信息、还会调用一些脚本

可以看到,详细的服务版本信息、系统指纹信息、还调用脚本探测了目标主机所在的工作组、主机名、系统时间、 traceroute 等相关的信息。

还有我个人使用 NMAP 对系统做扫描时,常喜欢用的一个组合是:

Nmap -sS -sV - O xxx.xxx.xxx.xxx

其中  -sS 参数的作用是 SYN 扫描, -sV 的作用是探测详细的服务版本信息, -O 是探测系统指纹。效果如下图:

另外,还有些情况,遇到目标系统或者网络对  ICMP 报文做了限制,而 nmap 默认情况下会先使用 ping 去探测目标主机是否存活,如果没有回应的话则不会继续进行端口扫描,遇到这样的情况,可以使用 -Pn 参数,不对目标主机进行 ping 检测。

可以使用 -h 参数查看 nmap 的详细帮助信息,里面有详细的参数介绍。

WEB 指纹探测:

对于 WEB 站点的指纹探测,就是要得到目标网站所用的 CMS 版本、以及 web 容器的版本。

这里用一个 web 站点来举例,

假设拿到一个 web 站点,首先查看站点根目录下有没有 robots.txt 文件,一般 CMS 在这个文件里会留下一些信息,如下:

通过 Disallow 这一项中的路径,就可以判断出是 wordpress 的后台,这样就得到了该网站使用的 CMS 为 wordpress ,或者留意网站下部的版权信息,默认没被修改的情况下可能会留有 powerd by wordpress/powerd by discuz 等字样,这也是获取 cms 的一种思路。

现在我们知道了 CMS 为 wordpress ,那么就用 wpscan 来探测下该 wordpress 站点的版本以及使用的插件版本、主题版本等:

如上图所示(两张图分别是两个不同的站点),默认不加参数会自动探测到 wordpress 的版本、插件版本、主题版本、还有 web 容器的版本信息等。 

至于探测 WEB 容器的指纹信息方法就更多了,比如,随意提交一个错误页面,比如 Apache 、 iis 、 nginx 的默认的错误页面都是不同的,而且不同版本的错误页面也是不同的,如下:

可以看到版本为 apache 2

再用看一个 iis 的站点:

可以判断是 IIS7.5 的错误页面。

也可以用 Nmap 之类的扫描器对 web 服务器的版本进行探测,上一章讲过的 nmap 的 -sV 参数就可以达到这个目的。 

1.2.4 web 敏感目录扫描

WEB 目录扫描也就是通过一些保存着敏感路径的字典(如:后台路径、在线编辑器路径、上传路径、备份文件等),对于一次网站渗透来说,对目录进行暴力猜解是前期阶段必不可少的一个步骤。如果运气好扫到了备份文件之类的,也许会事半功倍。

dirb 是一款 WEB 目录扫描工具,也被集成在 kali 渗透测试系统中,用法很简单,下面简单做个演示:

目标站点   www.hsezzz.cn

需要大家平时多收集 web 敏感路径的字典。

也有爬虫工具,便于帮助渗透者了解目标 web 的大概结构, webscarab 就是一款强大的 web 爬行工具,也可以做目录爆破用,还有很多其它功能,比如做 xss 测试等, java 开发的  gui 界面用法非常简单,这里就简单做爬虫演示:

首先打开 proxy 选项卡中的 listener 选项卡配置代理端口, IP 地址填 127.0.0.1 ,点击 start 开启代理服务:

接着,打开浏览器,设置代理服务器为 127.0.0.1 端口为自己在 webscarab 中设置的端口

配置好代理后,在浏览器中访问目标网站,然后打开 webscarab 的 spider 选项卡,选择起始点的请求(目标站点),点击 Fecth Tree 就可以在 messages 选项卡中看到请求信息

在 spider 窗格中双击自己目标站点前的文件夹图标就可以查看爬到的目录以及文件

信息收集对于一次渗透来说是非常重要的,收集到的信息越多,渗透的成功几率就越大,前期收集到的这些信息对于以后的阶段有着非常重要的意义。

网络安全零基础路线图

对于从来没有接触过网络安全的同学,我帮你们准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253812.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

华为机试:二叉树中序遍历

题目来源 华为机试&#xff1a;二叉树中序遍历 题目描述 题目解析 思路 class Solution{struct TreeNode{char ch;TreeNode *left;TreeNode *right;public:TreeNode(char ch) : ch(ch){}};std::deque<TreeNode *> deque;bool isNode(char ch){return (ch > a &&…

Java 二叉树的中序遍历

二叉树的中序遍历 简单 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输入&#x…

Java实现二叉树中序遍历(递归+非递归)

一、中序遍历&#xff08;递归&#xff09; 实现的思路和前序遍历其实差不多&#xff0c;但是访问的顺序就是&#xff1a;左节点->根节点->右节点&#xff0c;为了节省一些篇幅把节点数设置的少一些&#xff0c;重在大家的理解&#xff0c;话不多说直接上代码&#xff1…

二叉树遍历系列--中序遍历

什么是中序遍历&#xff1f; 优先访问当前节点的左子树&#xff0c;然后访问当前节点&#xff0c;最后访问当前节点的右子树。 代码实现&#xff1a; 主要分为三部分&#xff1a; 1. 声明一个内部类&#xff0c;表示树的节点。 private class TreeNode<K,V> impleme…

二叉树的中序遍历序列

二叉树的中序遍历序列 【问题描述】 设计算法求二叉树的中序遍历序列。 【输入形式】一行字符串&#xff0c;该行是扩展二叉树的前序遍历序列&#xff0c;用于构造二叉树。 【输出形式】二叉树中的中序遍历序列。 【样例输入】AB#D##C## 【样例输出】 BDAC#include<ios…

中序遍历二叉树

package cm.com.algorithm.tree;/*** 中序遍历2叉树* 中序遍历是指&#xff0c;对于树中的任意节点来说&#xff0c;先打印它的左子树&#xff0c;然后再打印它本身&#xff0c;最后打印它的右子树** author liushuai13meicai.cn* date 2019-06-11 22:14*/ public class LDRTre…

二叉树中序遍历(非递归)算法实现--C语言

今天继续二叉树的学习。 昨天写了一遍二叉树的先序遍历&#xff08;非递归&#xff09;算法&#xff0c;今天写一下二叉树的二叉树的中序遍历&#xff08;非递归&#xff09;算法。中序遍历的非递归算法有两种&#xff0c;但是个人觉得只要掌握一种就可以了&#xff0c;只要自己…

一眼看出二叉树中序遍历结果的诀窍

目录 1.二叉树2.二叉排序树&#xff08;搜索树&#xff09; 1.二叉树 方法&#xff1a;在二叉树下画一条线作为X轴&#xff0c;把所有节点投影到X轴上&#xff0c;从左到右排列好&#xff0c;得到的结果就是中序遍历的结果。 例如&#xff1a; 得到“HDIBEAFJCG”是中序遍历…

二叉树中序遍历(递归+非递归)Java

目录 一、结构二、遍历二叉树1.中序遍历&#xff08;递归&#xff09;代码图解 2.中序遍历&#xff08;非递归&#xff09;代码图解 一、结构 二、遍历二叉树 这块内容是二叉树最核心的部分。不但要掌握七种遍历的写法&#xff0c;前、中、后序的递归、非递归写法层次遍历&…

基本题型记录-二叉树中序遍历

由于本人基础较差&#xff0c;所以针对部分题型做一个记录&#xff0c;以免自己忘记 1、二叉树中序遍历 这个遍历方法可以搜一下博客上很多讲解&#xff0c;这里主要是记录一下代码实现&#xff0c;以下面的二叉树为例子 结果应该是 2、迭代法 2.1 遍历过程 这里借用了…

C++算法二叉树中序遍历

非递归中序遍历二叉树思路&#xff08;借助栈实现&#xff09;&#xff1a; 1、依次将所有左子节点压栈&#xff0c;直至为空&#xff1b; 2、弹出栈顶元素&#xff0c;访问栈顶&#xff0c;将栈顶的右子节点压栈&#xff0c;返回步骤1&#xff1b; 3、直至栈空。 &#xff08;…

详解二叉树的中序遍历

中序遍历&#xff1a;首先遍历左子树&#xff0c;然后访问根节点&#xff0c;最后遍历右子树&#xff08;左->根->右&#xff09; 中序遍历的递归算法 思路&#xff1a; 遍历左子树访问根节点遍历右子树 代码如下&#xff1a; //二叉树的中序遍历&#xff08;递归&a…

二叉树的中序遍历算法

一&#xff0c;简介 二叉树的中序遍历在计算机行业有着重要的作用&#xff0c;其中一个应用就是判断一棵二叉树是否二叉排序树。 下面介绍递归和非递归两种方式实现中序遍历。 二&#xff0c;递归实现 递归实现非常简单&#xff0c;左根右依次进行即可。 void mid_scan2(n…

二叉树中序遍历的三种方法

二叉树是一种重要的数据结构&#xff0c;对二叉树的遍历也很重要。这里简单介绍三种二叉树中序遍历的方法。二叉树的中序遍历就是首先遍历左子树&#xff0c;然后访问当前节点&#xff0c;最后遍历右子树。对于下面的二叉树&#xff0c;中序遍历结果如下&#xff1a; 结果&…

(数据结构)二叉树中序遍历

二叉树中序遍历 二叉树中序遍历的实现思想是&#xff1a; 访问当前节点的左子树访问根节点访问当前节点的右子树 图 1 二叉树 以上图 1 为例&#xff0c;中序遍历的过程如下&#xff1a; 访问该二叉树的根节点&#xff0c;找到 1遍历节点 1 的左子树&#xff0c;找到节点 2遍…

二叉树的先序、中序、后序以及层次遍历

二叉树的先序、中序、后序以及层次遍历 方法&#xff1a;在遍历二叉树的时候&#xff0c;一个节点的遍历我们把它看做要经过它三次(下图红色区域)。 当经过一次&#xff0c;被写出来的点&#xff0c;我们称它为先序遍历。 当经过两次&#xff0c;被写出来的点&#xff0c;我…

(数据结构)二叉树后序遍历

二叉树后序遍历 二叉树后序遍历的实现思想是&#xff1a; 访问当前节点的左子树访问当前节点的右子树访问根节点 图 1 二叉树 以上图 1 为例&#xff0c;后序遍历的过程如下&#xff1a; 从根节点 1 开始&#xff0c;遍历该节点的左子树&#xff08;以节点 2 为根节点&#…

二叉树的中序遍历

二叉树文章系列&#xff1a; 二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历二叉树的层序遍历二叉树的前序、中序、后序、层序遍历【解法完整版】 本文目录 一、解题思路&#xff1a;递归二、解题思路&#xff1a;迭代 二叉树的中序遍历的记忆法则是“左根右"&#x…

MySQL基础- 多表查询 和 事务

目录 多表查询多表关系多表查询概述多表查询的分类内连接外连接自连接联合查询union&#xff0c;union all子查询标量子查询列子查询行子查询表子查询 综合练习小结 事务事务简介事务的操作四大特性ACID并发事务问题事务的隔离级别小结 多表查询 之前的SQL语句里的DQL只能进行…

【C++入门】什么是引用

目录 一、引用概念 二、引用特性 三、常引用 四、使用场景 1. 做参数 2. 做返回值 五、传值&#xff0c;传引用效率比较 六、引用和指针的区别 一、引用概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取一个别名&#xff0c;编译器不会为引用变量开辟内存空间…