《(7.1)--10:第七八章渗透测试.pdf》由会员分享,可在线阅读,更多相关《(7.1)--10:第七八章渗透测试.pdf(83页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第七&八章渗透测试基础及实践知识点一:渗透测试基础知识点二:Kali Linux基础知识点三:Metasploit框架知识点四:被动信息收集知识点五:主动信息收集知识点六:渗透实践攻破XP系统知识点一:渗透测试基础安全业界领军企业所采纳的渗透测试执行标准(PTES:Penetration TestingExecution Standard)对渗透测试过程进行了标准化,具体分为7个阶段。前期交互阶段1在前期交互(Pre-Engagement Interaction)阶段,渗透测试团队与客户组织进行交互讨论,最重要的是确定渗透测试的范围、目标、限制条件以及服务合同细节。该阶段通常涉及收集客户需求、
2、准备测试计划、定义测试范围与边界、定义业务目标、项目管理与规划等活动。情报搜集阶段2在目标范围确定之后,将进入情报搜集(Information Gathering)阶段,渗透测试团队可以利用各种信息来源与搜集技术方法,尝试获取更多关于目标组织网络拓扑、系统配置与安全防御措施的信息。渗透测试者可以使用的情报搜集方法包括公开来源信息查询、Google Hacking、社会工程学、网络踩点、扫描探测、被动监听、服务查点等。而对目标系统的情报探查能力是渗透测试者一项重要的技能,情报搜集是否充分在很大程度上决定了渗透测试的成败。假设你是在一家安全公司工作的道德渗透测试员,你老板跑到你办公室,递给你一张纸
3、,说我刚跟那家公司的CEO在电话里聊了聊。他妥我派出最好的员工给他们公司做渗透测试一一这事得靠你了。一会儿法律部会给你发封邮件,确认我们已经得到相应的授权和保障。然后你点了点头,接下这项任务。老板转身走了,你翻了翻丈件,发现纸上只写了公司的名字,Syngress。这家公司你从来没听过,手头也没有其他任何信息。怎么办?包括与目标系统的直接交互。必须注意的是,在这个过程中,目标可能会记录下我们的IP 地址及活动。主动信息收集则利用从网上获取的海量信息。当执行被动信息收集的时候,我们不会直接与目标交互,因此目标也不可能知道或记录我们的活动。被动信息收集信息收集是渗透测试中最重要的一环。在收集目标信息
4、上所花的时间越多,后续阶段的成功率就越高。具有讽刺意味的是,这一步骤恰恰是当前整个渗透测试方提体系中最容易被忽略、最不被重视、最易受人误解的一环。典型的策略应该同时包含主动和被动的信息收集:假设你正在针对某家公司进行渗透测试。前期侦察阶段你已经发现这家公司某个销售人员的电子邮箱。所以用匿名邮箱对他发送邮件,假装对某个产品很感兴趣。真正目的是得到该销售人员的回复,分析回复邮件的邮件头,收集到这家公司内部电子邮件服务器的相关信息。信息收集的技巧很多,社会工程学不得不提。社会工程学是攻击“人性”弱点的过程,而这种弱点是每个公司天然固有的。当使用社会工程学的时候,攻击者的目标是找到一个员工,并从他口中
5、撬出本应是保密的信息。假设在发出产品问询邮件之后,收到一封自动回复的邮件,告诉你“目前正在海外旅游,不在公司”以及“接下来这两周只能通过有限的途径查收邮件”。最经典的社会工程学的做法是冒充其身份给目标公司的网络支持人员打电话,要求协助重置密码,因为你人在海外,没带电脑、默认保存密码记不住了。运气好的话,技术人员会相信你的话,帮你重置密码。另外一种社会工程学攻击方陆是把优盘或光盘落在目标公司里。优盘需要扔到目标公司内部或附近多个地方,例如停车场、大厅、厕所或员工办公桌等,都是“遗落”的好地方。大部分人出于本性,在捡到优盘或光盘之后,会将其插入电脑或放进光驱,查看里面是什么内容。而这种情况下,优盘
6、和光盘里都预先装载了自执行后门程序,当优盘或光盘放入电脑的时候,就会自动运行。后门程序能够绕过防火墙,并拨号至攻击者的电脑,此时目标暴露无遗,攻击者也因此获得一条进入公司内部的通道。威胁建模阶段3大部分情况下,就算是小规模的侦察工作也能收获海量数据。信息收集过程结束之后,对目标应该就有了十分清楚的认识,包括公司组织构架,甚至内部部署的技术。在搜集到充分的情报信息之后,渗透测试团队的成员们停下敲击键盘,大家聚到一起针对获取的信息进行威胁建模(Threat Modeling)与攻击规划。这是渗透测试过程中非常重要,但很容易被忽视的一个关键点。漏洞分析阶段4在该阶段,渗透测试者需要综合分析前几个阶段
7、获取并汇总的情报信息,特别是安全漏洞扫描结果、服务查点信息等,通过搜索可获取的渗透代码资源,找出可以实施渗透攻击的攻击点,并在实验环境中进行验证。在该阶段,高水平的渗透测试团队还会针对攻击通道上的一些关键系统与服务进行安全漏洞探测与挖掘,期望找出可被利用的未知安全漏洞,并开发出渗透代码,从而打开攻击通道上的关键路径。在确定出最可行的攻击通道之后,接下来需要考虑该如何取得目标系统的访问控制权,即漏洞分析(VulnerabilityAnalysis)阶段。渗透攻击阶段5渗透攻击可以利用公开渠道可获取的渗透代码,但一般在实际应用场景中,渗透测试者还需要充分地考虑目标系统特性来定制渗透攻击,并需要挫败
8、目标网络与系统中实施的安全防御措施,才能成功达成渗透目的。在黑盒测试中,渗透测试者还需要考虑对目标系统检测机制的逃逸,从而避免造成目标组织安全响应团队的警觉和发现。渗透攻击(Exploitation)是渗透测试过程中最具有魅力的环节。在此环节中,渗透测试团队需要利用他们所找出的目标系统安全漏洞,来真正入侵系统当中,获得访问控制权。后渗透攻击阶段6与渗透攻击阶段的区别在于,后渗透攻击更加重视在渗透进去目标之后的进一步的攻击行为。后渗透攻击主要支持在渗透攻击取得目标系统远程控制权之后,在受控系统中进行各式各样的后渗透攻击动作,比如获取敏感信息、进一步拓展、实施跳板攻击等。后渗透攻击(Post Ex
9、ploitation)是整个渗透测试过程中最能够体现渗透测试团队创造力与技术能力的环节。报告阶段7这份报告凝聚了之前所有阶段之中渗透测试团队所获取的关键情报信息、探测和发掘出的系统安全漏洞、成功渗透攻击的过程,以及造成业务影响后果的攻击途径,同时还要站在防御者的角度上,帮助他们分析安全防御体系中的薄弱环节、存在的问题,以及修补与升级技术方案。后渗透攻击(Post Exploitation)是整个渗透测试过程中最能够体现渗透测试团队创造力与技术能力的环节。影响渗透测试成功与否的最关键的步骤是信息收集漏洞分析渗透攻击后渗透攻击ABCD提交单选题1分知识点二:Kali Linux基础Kali Lin
10、uxKali Linux(Kali)是专门用于渗透测试的Linux操作系统,它由BackTrack发展而来。在整合了IWHAX、WHOPPIX和Auditor这3种渗透测试专用Live Linux之后,BackTrack正式改名为Kali Linux。本节将主要介绍一些Kali Linux使用过程中的一些基础命令。基本指令Ls 显示文件或目录创建目录创建空文件切换目录查看文件内容拷贝移动或重命名在文件系统中搜索某文件mkdircd touch cat cp mv find 显示指定文件的详细信息,比ls更详细显示主机名显示当前操作用户显示在线登陆用户显示系统信息动态显示当前耗费资源最多进程信息
11、显示瞬间进程状态 ps-aux查看目录大小 du-h/home带有单位显示目录信息statwhowhoamihostname unametoppsdu系统管理命令系统管理命令查看磁盘大小 df-h 带有单位显示磁盘信息显示网络状态信息测试网络连通查看网络情况命令不会用了?用man指令,如:man ls清屏杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。df ifconfig ping netstatmanclearkill软件包管理CentOS、Ubuntu、Debian三个linux都是非常优秀的系统,开源的系统,Kali是基于Debian类型的Linux
12、系统版本。其主要包含在线和离线两种软件包管理工具,dpkg和apt。dpkg(Debian Package)管理工具,软件包名以.deb后缀。这种方法适合系统不能联网的情况下。比如安装tree命令的安装包,先将tree.deb传到Linux系统中。再使用如下命令安装。sudo dpkg-i tree_1.5.3-1_i386.deb 安装软件sudo dpkg-r tree 卸载软件APT(Advanced Packaging Tool)高级软件工具。这种方法适合系统能够连接互联网的情况。依然以tree为例sudo apt-get install tree 安装treesudo apt-get
13、 remove tree 卸载treesudo apt-get update 更新软件sudo apt-get upgrade Kali 属于那种类型的Linux系统CentOSUbuntuDebianABC提交单选题1分知识点三:Metasploit框架认识MetasploitMetasploit是一个开源的渗透测试框架软件,也是一个逐步发展成熟的漏洞研究与渗透代码开发平台。除了渗透攻击之外,Metasploit在发展过程中逐渐增加对渗透测试全过程的支持,包括情报搜集、威胁建模、漏洞分析、后渗透攻击与报告生成。在成功实施渗透攻击并获得目标系统的远程控制权之后,Metasploit框架中另一个
14、极具威名的工具Meterpreter在后渗透攻击阶段提供了强大功能。认识MeterpreterMeterpreter可以看做一个支持多操作系统平台,可以仅仅驻留于内存中并具备免杀能力的高级后门工具,Meterpreter中实现了特权提升、信息攫取、系统监控、跳板攻击与内网拓展等多样化的功能特性,此外还支持一种灵活可扩展的方式来加载额外功能的后渗透攻击模块,足以支持渗透测试者在目标网络中取得立足点之后进行进一步的拓展攻击,并取得具有业务影响力的渗透效果。启动Metasploit,可以通过Kali中的快捷图标,也可以通过在终端中输入命令:msfconsole。启动后界面如下:常用命令当完成某个模块
15、的工作,或者不经意间选择了错误的模块,可以使用back命令来跳出当前模块。msf back这个命令会显示Metasploit框架中所有可用的渗透攻击模块。msf show exploits主动型主动型exploits能够直接连接并攻击特定主机。被动型被动型exploits则等待主机连接之后对其进行渗透攻击。被动型exploits常见于浏览器,FTP这样的客户端工具等,也可以用邮件发出去,等待连入。Metasploit框架中的exploits可以分为两类:主动型与被动型。msf searchMsfconsole包含一个基于正则查询的功能。当你想要查找某个特定的渗透攻击、辅助或攻击载荷模块时,搜索
16、(search)命令非常有用。例如,如果你想发起一次针对SQL数据库的攻击,输入search mssql命令可以搜索出与SQL有关的模块。类似地,可以使用search ms08_067命令寻找与MS08_067漏洞相关的模块,如下图所示。常用命令常用命令这个命令会显示所有的辅助模块以及它们的用途。在Metasploit中,辅助模块的用途非常广泛,它们可以是扫描器、拒绝服务攻击工具、Fuzz测试器,以及其他类型的工具。msf show auxiliary参数(options)是保证Measploit框架中各个模块正确运行所需的各种设置。当你选择了一个模块,并输入show options后,会列出
17、这个模块所需的各种参数。如果当前你没有选择任何模块,那么输入这个命令会显示所有的全局参数。msf show options常用命令攻击载荷是针对特定平台的一段攻击代码,它将通过网络传送到攻击目标进行执行。show payloads命令,Metasploit会将与当前模块的攻击载荷显示出来。msf show payloads找到攻击模块或者payloads后,可以使用use命令加载模块。此时MSF终端的提示符变成了已选择模块的命令提示符。这时,可输入show options进一步显示该模块所需的参数。msf use常用命令Metasploit的渗透攻击模块通常可以列出受到漏洞影响目标系统的类型。
18、举例来说,由于针对MS08-067漏洞的攻击依赖于硬编码的地址,所以这个攻击仅针对特定的操作系统版本,且只适用于特定的补丁级别、语言版本以及安全机制实现。msf show targets常用命令当你觉得show和search命令所提供的信息过于简短,可以用info命令加上模块的名字来显示此模块的详细信息、参数说明以及所有可用的目标操作系统(如果已选择了某个模块,直接在该模块的提示符下输入info即可。)msf infoCheck可以用于检测目标主机是否存在指定漏洞,这样的不用直接对它进行溢出。目前,支持check命令的exploit并不是很多。msf check常用命令Metasploit模块
19、中的所有参数只有两个状态:已设置(set)或未设置(unset)。有些参数会被标记为必填项(required),这样的参数必须经过手工设置并处于启动状态。使用set命令可以针对某个参数进行设置(同时启动该参数);使用unset命令可以禁用相关参数。msfset和unset通过网络传送到攻击目标进行执行的针对特定平台的攻击代码是POCExploitsPayloadsTargetsABCD提交单选题1分知识点四:被动信息收集被动信息收集信息收集又分为被动信息收集和主动信息收集。很多人不重视信息收集这一环节,其实信息收集对于渗透来说是非常重要的一步,收集的信息越详细对以后渗透测试的影响越大,毫不夸张
20、的说,信息的收集决定着渗透的成功与否。被动信息收集也就是说不会与目标服务器做直接的交互、在不被目标系统察觉的情况下,通过搜索引擎、社交媒体等方式对目标外围的信息进行收集,例如:网站的whois信息、DNS信息、管理员以及工作人员的个人信息等等。Site指令只显示来自于某个目标域名(dsu.edu)的相关搜索结果。这时候,就需要用到“site:”指令。使用这条指令不但会返回与关键字相关的网页,而且只显示来自于某个具体网站的搜索结果。intitle指令只有当网页标题包含所搜索的关键字时,它才会出现在搜索结果里。inurl指令在URL中看是否包含指定的关键字,在目标网站的管理或设置页面方面极其有用。
21、这些命令都可以组合使用,比如:inurl:id=site:搜索引擎都提供了各种各样的搜索指令,可以帮助我们去收集相关的信息,举例如下:搜索引擎查询在linux系统下有一个命令:whois,可以查询目标域名的whois信息,用法很简单,如下图所示:whois信息收集可以查询到域名以及域名注册人的相关信息,例如:域名注册商、DNS服务器地址、联系电话、邮箱、姓名、地址等。也可以使用一些在线工具,如:http:/ 例如对百度域名的dns服务器进行查询,如下图:DNS(Domain Name System,域名系统)信息收集旁站也就是和目标网站处于同一服务器的站点,有些情况下,在对一个网站进行渗透时,
22、发现网站安全性较高,久攻不下,那么我们就可以试着从旁站入手,等拿到一个旁站webshell看是否有权限跨目录,如果没有,继续提权拿到更高权限之后回头对目标网站进行渗透,可以用下面的方式收集旁站:旁站查询 使用在线工具:http:/ 也可以用来查找同IP的多个站点通过bing搜索引擎使用IP:%123.123.123.123格式搜索存在于目标ip上的站点,如右图:知识点五:主动信息收集发现主机1nmap是一个十分强大的网络扫描器,集成了许多插件,也可以自行开发。首先,使用nmap扫描下网络内存在多少台在线主机:主动信息收集和被动信息收集相反,主动收集会与目标系统有直接的交互,从而得到目标系统相关
23、的一些情报信息。nmap-sP 192.168.1.*或 nmap-sP 192.168.1.0/24-sP参数含义是使用ping探测网络内存活主机,不做端口扫描。使用nmap的-p参数可以指定要扫描目标主机的端口范围,如,要扫描目标主机在端口范围165535开放了哪些端口:端口扫描2指纹探测就是对目标主机的系统版本、服务版本、以及目标站点所用的CMS版本进行探测,为漏洞发现做铺垫。指纹探测3Nmap-O参数可以对目标主机的系统以及其版本做探测:探测WEB容器的指纹信息方法很多,比如,随意提交一个错误页面,Apache、iis的默认的错误页面都是不同的,而且不同版本的错误页面也是不同的,如下:
24、WEB指纹探测4也可以用nmap的-sV参数对web服务器的版本进行探测。Web敏感目录扫描5WEB目录扫描也就是通过一些保存着敏感路径的字典(如:后台路径、在线编辑器路径、上传路径、备份文件等),对于一次网站渗透来说,对目录进行暴力猜解是前期阶段必不可少的一个步骤。如果运气好扫到了备份文件之类的,也许会事半功倍。dirb是一款WEB目录扫描工具,也被集成在kali渗透测试系统中,用法很简单,下面简单做个演示:(目标站点 )需要大家平时多收集web敏感路径的字典。首先打开proxy选项卡中的listener选项卡配置代理端口,IP地址填127.0.0.1,点击start开启代理服务:也有爬虫工
25、具,便于帮助渗透者了解目标web的大概结构,webscarab就是一款强大的web爬行工具,也可以做目录爆破用,还有很多其它功能,比如做xss测试等,java开发的 gui界面用法非常简单,这里就简单做爬虫演示:接着,打开浏览器,设置代理服务器为127.0.0.1端口为自己在webscarab中设置的端口配置好代理后,在浏览器中访问目标网站,然后打开webscarab的spider选项卡,选择起始点的请求(目标站点),点击Fecth Tree就可以在messages选项卡中看到请求信息:在spider窗格中双击自己目标站点前的文件夹图标就可以查看爬到的目录以及文件对目标主机的系统版本、服务版本
26、进行检测是指发现主机端口扫描指纹探测目录扫描ABCD提交单选题1分知识点六:渗透实践攻破XP系统Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。对渗透测试人员来说,Nessus是必不可少的工具之一。为了顺利的使用Nessus工具,则必须要将该工具安装在系统中。Nessus工具不仅可以在电脑上使用,而且还可以在手机上使用。本节将介绍在不同操作系统平台及手机上安装Nessus工具的方法。1-扫描获取Ness
27、us软件包http:/ Linux下安装默认下载的位置是Downloads,进入该目录:从官网上下载安装包。本例中下载的安装包文件名为Nessus-6.6.2-debian6_i386.deb。Nessus工具在Kali Linux下安装安装命令:dpkg I Nessus-6.6.2-debian6_i386.deb/etc/init.d/这个是目录,下面存放着很多的服务程序(当然都是可执行的)。Nessus:/etc/init.d/nessusd start打开浏览器,输入网址:https:/127.0.0.1:8834注意第一次登陆将需要根据提示,进行注册获取激活码等,这里省略;第一次登
28、陆,会有风险提示,这个时候选择类似“我知道风险”的选项,进行确认就可以了;Nessus在安装的时候,网络一定要确保顺畅,否则经常会出现下载不完整、在线更新无法完成等情况,如果出现此类情况,一种解决办法就是手动更新Nessus,即在控制台中,运行命令:/opt/nessus/sbin/nessuscli update-plugins-only完成更新后,重新启动Nessus,即使用命令:/etc/init.d/nessusd restart。然后重新登录,即可解决问题。如果第一次扫描,需要点New Scan,新建一个扫描:Nessus扫描一般的XP系统扫描,只需要选择第一个“Advanced S
29、can”就可以了。在Targets输入目标IP地址即可,保存后即可运行:一旦运行后,双击该扫描选项,可以进入如下界面:双击漏洞,进入详细列表,如下:接下来通过msfconsole中的search命令查找该漏洞的渗透攻击模块:发现目标机存在MS08-067的漏洞2-渗透然后使用use命令选用该模块、并使用show options来查看选项:可以看到options中RHOST并没有被设置,使用set进行设置后重新查看如下:利用后,可以看到Windows XP系统中出现:最后,利用exploit命令进行利用:也就是,目标系统出现了溢出。如果使用攻击载荷,则可以对目标系统实施更进一步的攻击,比如植入木
30、马,获取目标主机的控制权等。以上的情况是,仅仅使用了模块,重现了溢出漏洞。注意:此时需要重启Windows系统,刚才的溢出导致windows XP平台不能正常工作了。在使用该模块后,可以使用show payloads指令来查看所有的攻击载荷(payload):可以看到很多的攻击载荷,常见载荷有:reverse_tcp:path:payload/windows/meterpreter/reverse_tcp,反向连接shell,使用起来很稳定。需要设置LHOST。bind_tcp:path:payload/windows/meterpreter/bind_tcp,正向连接shell。需要设置RH
31、OST。我们选用windows/meterpreter/bind_tcp,并使用命令设置该攻击载荷:set payload windows/meterpreter/bind_tcp,然后使用show options,如下:使用命令show targets查看版本如下可以看到,需要设置RHOST,使用set命令设置可以看到,需要设置RHOST,使用set命令设置:set RHOST 192.168.32.131。注意,ms08_067对漏洞版本特别有效,因此,务必需要设置版本。通过show targets命令查看可选的目标操作系统类型,并通过set target命令选择合适的目标操作系统。由于目
32、标机器的操作系统是Windows XP SP3简化中文版,因此,版本号为34,则设置版本号 set target 34之后,进行漏洞利用,如下:很显然,利用成功,进入meterpreter界面。事实上,在利用exploit进行漏洞利用前,可以通过check命令查看目标机是否可攻击,渗透成功后,会返回一个meterpreter shell。Meterpreter是Metasploit框架中的一个杀手锏,通过作为漏洞溢出后的攻击载荷所使用,攻击载荷在触发漏洞后返回给我们一个控制通道。挖掘用户名和密码1微软Windows系统存储哈希值的方式一般为LAN Manger(LM)、NTLAN Manger
33、(NTLM),或NT LAN Manger v2(NTLMv2)。在LM存储方式中,当用户首次输入密码或更新密码的时候,密码被转换为哈希值。由于哈希长度的限制,将密码分为7个字符一组的哈希值。以password123456的密码为例,哈希值以passwor和d123456的方式存储,所以攻击者只需要简单地破解7个字符一组的密码,而不是原始的14个字符。而NTLM的存储方式跟密码长度无关,密码password123456将作为整体转换为哈希值存储。3-后渗透我们可以通过Meterpreter中的hashdump模块来提取系统的用户名和密码哈希值。UID为500的Administrator用户密码
34、的哈希值如下。其中第一个哈希是LM哈希值,第二个则是NTLM哈希值。Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:得到这些HASH值之后,一方面可以利用工具对这些HASH值进行暴力破解,得到其明文,另一方面,在一些渗透脚本中,以这些HASH值作为输入,使其完成对目标主机的登录。感兴趣的同学,可以自行开展进一步的研究。获取目标主机的控制权2利用shell命令可以获得目标主机的控制台,有了控制台,就可以对目标系统进行任意文件操作,也可以执行各类DOS命令。如下:具体的Meterpreter命令如下:exit终止 meterpreter 会话抓取 meterpreter 桌面的屏幕截图screenshot更改 meterpreter 桌面set_desktop其他详见教材