渗透测试初学者指南_渗透测试完整教学

hacker|
159

渗透测试的测试对象,渗透检测是什么样的检测方法?

提起渗透测试的测试对象,大家都知道,有人问渗透检测是什么样的检测方法?,另外,还有人想问一个完整的渗透测试流程,分为那几块,每一块有哪些内容,你知道这是怎么回事?其实渗透测试的测试方法,下面就一起来看看渗透检测是什么样的检测方法?,希望能够帮助到大家!

渗透测试的测试对象

1、渗透测试的测试对象:渗透检测是什么样的检测方法?

无损检测是利用物质的声、光、磁和电等特性,在不损害或不影响被检测对象使用性能的前提下,检测被检对象中是否存在缺陷或不均匀性,给出缺陷大小,位置,性质和数量等信息。

渗透检测是利用毛细管作用原理检测材料表面开口性缺陷的无损检测方法。

2、渗透测试的测试对象:一个完整的渗透测试流程,分为那几块,每一块有哪些内容

包含以下几个流程:

信息收集

渗透测试的测试方法

步做的就是信息收集,根据网站URL可以查出一系列关于该网站的信息。通过URL我们可以查到该网站的IP、该网站操作系统、脚本语言、在该上是否还有其他网站等等一些列的信息。

漏洞探测

收集到了足够多的信息之后,我们就要开始对网站进行漏洞探测了。探测网站是否存在一些常见的Web漏洞,比如:SQL注入。

漏洞利用

探测到了该网站存在漏洞之后,就要对该漏洞进行利用了。不同的漏洞有不同的利用工具,很多时候,通过一个漏洞我们很难拿到网站的webshell,我们往往需要结合几个漏洞来拿webshell。

内网渗透

能跟内网主机进行通信后,我们就要开始进行内网渗透了。可以先使用nmap对内网主机进行扫描,探测在线的主机,并且探测其使用的操作系统、的端口等信息。

内网中也有可能存在供内网使用的内网,可以进一步渗透拿下其权限。

痕迹清除

达到了目的之后,有时候只是为了黑入网站挂黑页,炫耀一下;或者在网站留下一个后门,作为肉鸡,没事的时候上去溜达溜达;亦或者挂入挖矿木马。

撰写渗透测试保告

在完成了渗透测试之后,就需要对这次渗透测试撰写渗透测试报告了。明确的写出哪里存在漏洞,以及漏洞修补的方法。以便于网站根据我们的渗透测试报告修补这些漏洞和风险,防止被攻击。

3、渗透测试的测试对象:渗透测试的测试方法

有些渗透通过使用两套扫描器进行安全评估。这些工具至少能够使整个过程实现部分自动化,这样,技术娴熟的专业人员就可以专注于所发现的问题。如果探查得更深入,则需要连接到任何可疑服务,某些情况下,还要利用漏洞。

商用漏洞扫描工具在实际应用中存在一个重要的问题:如果它所做的测试未能肯定答案,许多产品往往会隐测试结果。譬如,有一款知名扫描器就存在这样的缺点:要是它无法进入Cisco路由器,或者无法用SNMP其软件版本号,它就不会做出这样的警告:该路由器容易受到某些拒绝服务(DoS)攻击。如果不知道扫描器隐了某些信息(譬如它无法对某种漏洞进行测试),你可能误以为网络是安全的,而实际上,网络的安全状况可能是危险的。

除了找到合适工具以及具备资质的进行渗透测试外,还应该准确确定测试范围。攻击者会借助工程学、偷窃、贿赂或者破门而入等手法,有关信息。真正的攻击者是不会仅仅满足于攻击某个企业网络的。通过该网络再攻击其它公司往往是的惯用伎俩。攻击者甚至会通过这种方法进入企业的ISP。

以上就是与渗透检测是什么样的检测方法?相关内容,是关于渗透检测是什么样的检测方法?的分享。看完渗透测试的测试对象后,希望这对大家有所帮助!

如何执行一个渗透测试求解答

虽然执行一个渗透测试有许多明显的优点——执行渗透测试的价值在于它的结果。这些结果必须是有价值的,而且对于客户来说必须是很容易理解的。有一个常见的误解是认为渗透测试只是使用一些时髦的自动化安全工具,并处理所生成的报告。但是,成功执行一个浸透测试并不仅仅是需要安全工具。虽然这些自动化安全测试工具在实践中扮演了重要的角色,但是它们也是有缺点的。事实上,这些工具一直无法真正模拟一个高深攻击者的行为。不管安全工具完成的报告有多么全面,其中总是有一些需要解释的问题。

让我们看看构成一个良好渗透测试的一些关键因素:建立参数:定义工作范围是执行一个成功渗透测试的第一步,也是最重要的一步。这包括定义边界、目标和过程验证(成功条件)。

o遵守保密协议

选择足够的测试集:

手工的和自动的都会影响成功/效益之间的最佳平衡。

遵循正确的方法:

这并不是猜谜游戏。所有方面都需要规划、文档化和符合要求。

测试结果与建议:

这是渗透测试的一个非常重要的部分。最终的报告必须清晰地说明成果,必须将成果与潜在的风险对应。这应该会附带产生一个基于最佳安全实践方法的修正路线图。

在我们讨论浸透测试中所使用的测试策略和技术之前,让我们先看一些可能很有用的场景:

建立新的办公室

不管是建立新的公司或增加新的办公点,浸透测试都有助于确定网络基础架构中的潜在漏洞。例如,在增加新办公点时执行内部测试是非常重要的,因为它会检查网络资源的可用性,并检查这些办公点之间传输的流量类型。

部署新的网络基础架构

每一个新的网络基础架构都应该能模拟黑客行为进行全面的测试。当执行外部测试(预先不太了解基础架构)来保证边界安全性时,我们也应该执行内部测试来保证网络资源,如:服务器、存储、路由和访问设备,在边界受到攻击时仍然是足够安全的,而且基础架构是能够抗拒任何攻击的。

修改/升级现有的基础架构

。必要测试的数量取决于基础架构修改的特征和程度。细小的变化,如配置变更为特定规则,将只需要进行端口扫描来保证预期的防火墙行为,而重大的变化,如关键设备/OS版本升级,可能就需要彻底重新测试。

部署新应用当基础架构进行彻底测试之后,新的应用(不管是连接Internet的或是在Intranet中)在部署到生产环境之前也都必须进行安全性测试。这个测试需要在“实际的”平台上进行,以保证这个应用只使用预定义的端口,而且代码本身也是安全的。

修改/升级一个现有应用

随着基本架构发生变化,本质上应用也会发生变化。细小的变化,如用户帐号修改,都不需要测试。但是,重大的变化,包括应用功能变化,都应该彻底重新测试。

定期重复测试

管理安全性并非易事,而公司不应该认为渗透测试就是所有安全问题的最终解决办法。对敏感系统定期执行测试来保证不会出现不按计划的变化,一直都是一个非常好的实践方法

如何进行Web渗透测试

1.SQL Injection(SQL注入)

(1)如何进行SQL注入测试?

首先找到带有参数传递的URL页面,如 搜索页面,登录页面,提交评论页面等等.

注1:对 于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的"FORM"标签来辨别是否还有参数传递.在FORM 和/FORM的标签中间的每一个参数传递都有可能被利用.

form id="form_search" action="/search/" method="get"

div

input type="text" name="q" id="search_q" value="" /

input name="search" type="image" src="/media/images/site/search_btn.gif" /

a href="/search/" class="217f-4494-4fad-b326 fl"Gamefinder/a

/div

/form

注 2:当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如

其 次,在URL参数或表单中加入某些特殊的SQL语句或SQL片断,如在登录页面的URL中输入 /INDEX.ASP?USERNAME='HI' OR 1=1

注1:根据实际情况,SQL注入请求可以使用以下语句:

' or 1=1- -

" or 1=1- -

or 1=1- -

' or 'a'='a

" or "a"="a

') or ('a'='a

注2:为什么是OR, 以及',――是特殊的字符呢?

例子:在登录时进行身份验证时,通常使用如下语句来进行验证:sql=select * from user where username='username' and pwd='password'

如 输入' or 1='1pwd=11,SQL语句会变成以下:sql=select * from user where username='admin' or 1='1' and password='11'

' 与admin前面的'组成了一个查询条件,即username='admin',接下来的语句将按下一个查询条件来执行.

接 下来是OR查询条件,OR是一个逻辑运 算符,在判断多个条件的时候,只要一个成立,则等式就成立,后面的AND就不再时行判断了,也就是 说我们绕过了密码验证,我们只用用户名就可以登录.

如 输入'--pwd=11,SQL语 句会变成以下sql=select * from user where name='admin' --' and pasword='11',

'与admin前面的'组成了一个查 询条件,即username='admin',接下来的语句将按下一个查询条件来执行

接下来是"--"查询条件,“--”是忽略或注释,上 述通过连接符注释掉后面的密码验证(注:对ACCESS数据库无 效).

最后,验证是否能入侵成功或是出错的信息是否包含关于数据库服务器 的相关信息;如果 能说明存在SQL安 全漏洞.

试想,如果网站存在SQL注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结构,并对数据库表进行增\删\改的操 作,这样造成的后果是非常严重的.

(2)如何预防SQL注入?

从应用程序的角度来讲,我们要做以下三项工作:

转义敏感字符及字符串(SQL的敏感字符包括“exec”,”xp_”,”sp_”,”declare”,”Union”,”cmd”,”+”,”//”,”..”,”;”,”‘”,”--”,”%”,”0x”,”=!-*/()|”,和”空格”).

屏蔽出错信息:阻止攻击者知道攻击的结果

在服务端正式处理之前提交数据的合法性(合法性检查主要包括三 项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客 户端的输入合法之前,服务端拒绝进行关键性的处理操作.

从测试人员的角度来讲,在程序开发前(即需求阶段),我们就应该有意识的将安全性检查应用到需求测试中,例如对一个表单需求进行检查时,我们一般检验以下几项安全性问题:

需求中应说明表单中某一FIELD的类型,长度,以及取值范围(主要作用就是禁止输入敏感字符)

需求中应说明如果超出表单规定的类型,长度,以及取值范围的,应用程序应给出不包含任何代码或数据库信息的错误提示.

当然在执行测试的过程中,我们也需求对上述两项内容进行测试.

2.Cross-site scritping(XSS):(跨站点脚本攻击)

(1)如何进行XSS测试?

!--[if !supportLists]--首先,找到带有参数传递的URL,如 登录页面,搜索页面,提交评论,发表留言 页面等等。

!--[if !supportLists]--其次,在页面参数中输入如下语句(如:Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试:

scrīptalert(document.cookie)/scrīpt

最后,当用户浏览 时便会弹出一个警告框,内容显示的是浏览者当前的cookie串,这就说明该网站存在XSS漏洞。

试想如果我们注入的不是以上这个简单的测试代码,而是一段经常精心设计的恶意脚本,当用户浏览此帖时,cookie信息就可能成功的被 攻击者获取。此时浏览者的帐号就很容易被攻击者掌控了。

(2)如何预防XSS漏洞?

从应用程序的角度来讲,要进行以下几项预防:

对Javascrīpt,VB scrīpt, HTML,ActiveX, Flash等 语句或脚本进行转义.

在 服务端正式处理之前提交数据的合法性(合法性检查主要包括三项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端 拒绝进行关键性的处理操作.

从测试人员的角度来讲,要从需求检查和执行测试过程两个阶段来完成XSS检查:

在需求检查过程中对各输入项或输出项进行类型、长度以及取 值范围进行验证,着重验证是否对HTML或脚本代码进行了转义。

执行测试过程中也应对上述项进行检查。

3.CSRF:(跨站点伪造请求)

CSRF尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。

XSS是利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

XSS也好,CSRF也好,它的目的在于窃取用户的信息,如SESSION 和 COOKIES,

(1)如何进行CSRF测试?

目前主要通过安全性测试工具来进行检查。

(2)如何预防CSRF漏洞?

请参见

4.Email Header Injection(邮件标头注入)

Email Header Injection:如果表单用于发送email,表单中可能包括“subject”输入项(邮件标题),我们要验证subject中应能escape掉“\n”标识。

!--[if !supportLists]--!--[endif]--因为“\n”是新行,如果在subject中输入“hello\ncc:spamvictim@example.com”,可能会形成以下

Subject: hello

cc: spamvictim@example.com

!--[if !supportLists]--!--[endif]--如果允许用户使用这样的subject,那他可能会给利用这个缺陷通过我们的平台给其它用 户发送垃圾邮件。

5.Directory Traversal(目录遍历)

(1)如何进行目录遍历测试?

目录遍历产生的原因是:程序中没有过滤用户输入的“../”和“./”之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。

测试方法:在URL中输入一定数量的“../”和“./”,验证系统是否ESCAPE掉了这些目录跳转符。

(2)如何预防目录遍历?

限制Web应用在服务器上的运行

进 行严格的输入验证,控制用户输入非法路径

6.exposed error messages(错误信息)

(1)如何进行测试?

首 先找到一些错误页面,比如404,或500页面。

验证在调试未开通过的情况下,是否给出了友好的错误提示信息比如“你访问的页面不存 在”等,而并非曝露一些程序代码。

(2)如何预防?

测试人员在进行需求检查时,应该对出错信息 进行详细查,比如是否给出了出错信息,是否给出了正确的出错信息。

Kali Linux 无线渗透测试入门指南 第四章 WLAN 加密缺陷

即使做了最充分的预测,未来始终是不可预测的。WLAN 委员会设计了了 WEP 和 WPA 作为最简单的加密机制,但是,久而久之,这些机制拥有在现实世界中广泛公布和利用的缺陷。

WLAN 加密机制易受密码学攻击,这有相当长的历史了。这从 2000 年的 WEP 开始,它最后被完全破解。最近,攻击慢慢转向了 WPA。即使当前没有公开攻击方式用于在所有情况下破解 WPA,特殊情况下的攻击还是可行的。

WLAN 在空气中传输数据,所以保护数据的机密性是一种内在需求。使用加密是最佳方案。WLAN 委员会(IEEE 802.11)为数据加密指定了以下协议:

这一章中,我们会看一看每个加密协议,并演示针对它们的多种攻击。

WEP 协议在 2000 年发现漏洞,但是,诧异的是,它仍然被使用,并且接入点仍然自带 WEP 功能。

WEP 中有许多密码学缺陷,它们被 Walker,Arbaugh,Fluhrer,Martin,Shamir,KoreK,以及其它人发现。密码学立场上的评估超出了这本书的范围,并且涉及到复杂的数学。这一节中,我们会看一看如何使用 Kali 中便捷可用的工具来破解 WEP 加密。这包含整个 aircrack-ng 工具套件 -- airmon-ng , aireplay-ng , airodump-ng , aircrack-ng ,以及其它。

WEP 的基础缺陷是使用 RC4 和短的 IV 值,每 224 帧复用。虽然这本身是个大数,但是每 5000 个封包中还是有 50% 的几率重用四次。为了利用这个,我们尝试大量流量,是我们增加重用 IV 的可能性,从而比较两个使用相同密钥和 IV 加密的密文。

让我们首先在测试环境中建立 WEP,并且看看如何破解。

遵循以下指南来开始:

我们在环境中建立 WEP,并成功破解了 WEP 密钥。为了完成它,我们首先等待正常客户端连接到接入点。之后,我们使用 aireplay-ng 工具在网络上重放 ARP 封包。这会导致网络发送 ARP 重放封包,从而增加空中发送的数据封包数量。之后我们使用 aircrack-ng 工具,通过分析数据风暴的密码学缺陷来破解 WEP 密钥。

要注意我们也能够使用共享密钥验证绕过机制,来伪造接入点的验证,这会在后面的章节中学到。如果正常客户端离开了网络,这可以更方便一些。这会确保我们可以伪造验证和关联,并且继续将重放封包发送到网络。

在之前的练习中,如果正常客户端突然断开了网络,我们就不能重放封包,因为接入点会拒绝接受来自未关联客户端的封包。

你的挑战就是,使用即将在后面学到的共享密钥绕过伪造验证和授权,使你仍然能够将封包注入到网络中,并验证接入点是否接受和响应它们。

WPA 或者 WPA v1 主要使用 TKIP 加密算法。TKIP 用于改进 WEP,不需要完全新的硬件来运行。反之,WPA2 必须使用 AES-CCMP 算法来加密,这比 TKIP 更加强大和健壮。

WPA 和 WPA2 允许 基于 WAP 的验证,使用基于 RADIUS 服务器(企业)和预共享密钥(PSK)(个人)的验证模式。

WPA/WPA2 PSK 易受字典攻击。攻击所需的输入是客户端和接入点之间的四次 WPA 握手,以及包含常用口令的单词列表。之后,使用例如 Aircrack-ng 的工具,我们可以尝试破解 WPA/WPA2 PSK 口令。

四次握手的演示见下面:

WPA/WPA2 PSK 的原理是它导出了会话层面的密钥,叫做成对临时密钥(PTK),使用预共享密钥和五个其它参数 -- 网络 SSID、验证者 Nounce (ANounce)、申请者 Nounce (SNounce)、验证着 MAC 地址(接入点 MAC)、申请者 MAC 地址(WIFI 客户端 MAC)。密钥之后用于加密接入点和客户端之间的所有数据。

通过嗅探空气来窃取整个对话的攻击者,可以获得前面提到的全部五个参数。它唯一不能得到的东西就是预共享密钥。所以,预共享密钥如何创建?它由用户提供的 WPA-PSK 口令以及 SSID 导出。这些东西的组合通过基于密码的密钥推导函数(PBKDF2)来发送,它的输出是 256 位的共享密钥。

在典型的 WPA/WPA2 PSK 字典攻击中,攻击者会使用可能口令的大量字典以及攻击工具。工具会从每个口令中导出 256 位的预共享密钥,并和其它参数(之前提到过)一起使用来创建 PTK。PTK 用于在握手包之一中验证信息完整性检查(MIC)。如果匹配,从字典中猜测的口令就正确,反之就不正确。

最后,如果授权网络的口令存在于字典中,它会被识别。这就是 WPA/WPA2 PSK 破解的工作原理。下面的图展示涉及到的步骤:

下个练习中,我们会看一看如何破解 WPA PSK 无线网络。使用 CCMP(AES)的WPA2-PSK 网络的破解步骤与之相同。

遵循以下指南来开始:

我们在接入点上设置了 WPA-PSK,使用常见口令: abcdefgh 。之后我们使用解除验证攻击,让正常客户端重新连接到接入点。当我们重新连接时,我们捕获了客户端和接入点之间的 WPA 四次握手。

因为 WPA-PSK 易受字典攻击,我们向 Aircrack-ng 输入了包含 WPA 四次握手的捕获文件,以及常见口令的列表(以单词列表形式)。因为口令 abcdefgh 出现在单词列表中, Aircrack-ng 就能够破解 WPS-PSK 共享口令。要再次注意,在基于字典的 WPA 破解中,你的水平就等于你的字典。所以在你开始之前,编译一个大型并且详细的字典非常重要。通过 Kali 自带的字典,有时候可能不够,可能需要更多单词,尤其是考虑位置因素。

Cowpatty 是个同样使用字典攻击来破解 WPA-PSK 口令的工具。这个工具在 Kali 中自带。我将其留做练习,来让你使用 Cowpatty 破解 WPA-PSK 口令。

同样,设置不常见的口令,它不出现在你的字典中,并再次尝试。你现在再破解口令就不会成功了,无论使用 Aircrack-ng 还是 Cowpatty。

要注意,可以对 WPA2-PSK 网络执行相同攻击。我推荐你自己验证一下。

我们在上一节中看到,如果我们在字典中拥有正确的口令,破解个人 WPA 每次都会像魔法一样。所以,为什么我们不创建一个大型的详细字典,包含百万个常见密码和词组呢?这会帮助我们很多,并且多数情况都会最终破解出口令。这听起来不错,但是我们错过了一个核心组件 -- 所花费的时间。更多需要 CPU 和时间的计算之一就是使用 PSK 口令和 SSID 通过 PSKDF2 的预共享密钥。这个函数在输出 256 位的与共享密钥之前,计算超过 4096 次二者组合的哈希。破解的下一步就是使用这个密钥以及四次握手中的参数来验证握手中的 MIC。这一步计算了非常大。同样,握手中的参数每次都会变化,于是这一步不能预先计算。所以,为了加速破解进程,我们需要使来自口令的与共享密钥的计算尽可能快。

我们可以通过预先计算与共享密钥,在 802.11 标准术语中也叫作成对主密钥(PMK)来加速。要注意,因为 SSID 也用于计算 PMK,使用相同口令和不同 SSID,我们会得到不同的 PMK。所以,PMK 取决于口令和 SSID。

下个练习中,我们会看看如何预先计算 PMK,并将其用于 WPA/WPA2 的破解。

我们可以遵循以下步骤来开始:

我们查看了多种不同工具和技巧来加速 WPA/WPA2-PSK 破解。主要原理就是对给定的 SSID 和字典中的口令列表预计算 PMK。

在所有我们做过的联系中,我们使用多种技巧破解了 WEP 和 WPA 密钥。我们能拿这些信息做什么呢?第一步就是使用密钥解密我们捕获的数据封包。

下一个练习中,我们会在相同的我们所捕获的记录文件中解密 WEP 和 WPA 封包,使用我们破解得到的密钥。

遵循以下步骤来开始:

我们刚刚看到了如何使用 Airdecap-ng 解密 WEP 和 WPA/WPA2-PSK 加密封包。要注意,我们可以使用 Wireshark 做相同的事情。我们推荐你查阅 Wireshark 的文档来探索如何用它来完成。

我们也可以在破解网络密钥之后连接到授权网络。这在渗透测试过程中非常方便。使用破解的密钥登录授权网络,是你可以提供给客户的证明网络不安全的证据。

遵循以下步骤来开始:

我们连接到了 WEP 网络。

遵循以下步骤来开始:

默认的 WIFI 工具 iwconfig 不能用于连接 WPA/WPA2 网络。实际上的工具是 WPA_Supplicant 。这个实验中,我们看到如何使用它来连接 WPA 网络。

Q1 哪种封包用于封包重放?

Q2 WEP 什么时候能被破解?

Q3 WPA 什么时候能被破解?

这一章中,我们了解了 WLAN 加密。WEP 含有缺陷,无论 WEP 密钥是什么,使用足够的数据封包就能破解 WEP。WPA/WPA2 在密码学上不可破解;但是,在特殊的场景下,例如 WPA/WP2-PSK 中使用了弱口令,它就能够通过字典攻击来获得口令。

下一章中我们会看一看 WLAN 设施上的不同工具,例如伪造接入点,邪恶双生子,位反转攻击,以及其它。

0条大神的评论

发表评论