首页 » 安全攻防 » 正文

第七讲.渗透攻击基础

    渗透攻击是渗透工作的终极目标,经过各种信息收集,探测,扫描,发起总攻,获取目标主机完全控制权使其彻底沦陷,是一种绝妙的自我满足感。随着黑客技术不断发展,相对性的网络防护技术和多样化的系统发展导致使用简单的渗透攻击手段越来越难以成功。下面我们将继续通过Metasploit框架里面最基础的命令接口讲起,逐步介绍一些更深入的渗透攻击方法和工具。在正式进入渗透攻击学习之前,请确认你是否掌握了渗透测试和渗透攻击的基本知识。在开始我们谈到的基本的渗透流程,随后讨论的如何进行情报搜集,以后如何进行漏洞扫描。
    现阶段学习用到最多的工具就是Metasploit,所以建议大家对框架中的各种攻击命令能有所了解,大部分攻击会通过MSF终端进行,通过学习对MSF终端、MSF攻击荷载生成器和MSF编码器建立起扎实的理解,最终以此为基础开发自己的工具。
渗透攻击基础
    在Metasploit框架中包含数百个模块,用脑子很难全部把它们全部记下来,在MSF终端中运行show命令会把所有模块显示出来,当然你可以指定模块的类型来缩小搜索范围。


1) msf>show exploits
这个命令会显示Metasploit框架中所有可用的渗透攻击模块。在MSF终端中,你可以针对渗透测试中发现的安全漏洞来实施相应的渗透攻击。而且随着漏洞不停发掘,新的渗透攻击模块也会开发出来,这个列表因此会越来越长。


2) msf>show auxiliary
这个命令会显示所有的辅助模块以及它们的用途。在Metasploit中,辅助模块的用途非常广泛,它们可以是扫描器、拒绝服务攻击工具、Fuzz测试器,以及其他类型的工具。


3) msf>show options
    参数(Options)是保证Metasploit框架中各个模块正确运行所需的各种设置。当你选择了一个模块,并输入msf>show options后,会列出这个模块所需的各种参数。如果当前你没有选择任何模块,那么输入这个命令会显示所有的全局参数,举例来说,你可以修改全局参数中的LogLevel,使渗透攻击时记录系统日志更为详细。你还可以输入back命令,以返回Metasploit的上一个状态。
 
    当你想要查找某个特定的渗透攻击、辅助或攻击载荷模块时,搜索(search)命令非常有用。例如,如果你想发起一次针对SQL数据库的攻击,输入下面的命令可以搜索出与SQL有关的模块。输入下面的命令可以搜索出与SQL有关的模块。
 
    类似地,可以使用该命令查询已知的漏洞攻击模块,找到攻击模块后,可以使用use命令加载模块,如下所示:
 
    请注意当我们执行了use命令后,MSF终端提示符会变成对应攻击模块:
 
    这表明我们已经选择了攻击模块,这时候在终端中输入的命令将在这个攻击模块环境中运行。(无论你当前处于哪个模块环境,都可以使用search和use命令跳转到另一个模块中)
现在,在已选择模块的命令提示符下,可以输入show options显示攻击模块所需的参数:
 
    这种与上下文相关的参数访问方式让Metasploit的界面变得非常简洁,并且让你能够只专注于当前实际需要的参数。


4) msf>show payloads
payload是针对特定平台的一段攻击代码(攻击载荷),它可以通过网络传送到攻击目标进行执行。与show options一样,在当前模块命令提示符下输入show payloads命令时,Metasploit只会将与当前模块兼容的攻击载荷显示出来。
 
    接下来我们输入set payload generic/shell_reverse_tcp以选择reverse_tcp(反弹式TCP连接)攻击载荷。输入show options命令后,会看到一些额外的参数被显示出来。
 

    在本例中可以注意到选定攻击载荷后,显示了额外的一些配置项LHOST和LPORT等,可以配置让目标主机回连到攻击机的特定IP地址和端口号上,所以它被称为一个反弹式的攻击载荷。在反弹式攻击载荷中,连接是由目标主机发起的,并且其连接对象是攻击机。你可以使用这种技巧穿透防火墙或NAT网关。
5) msf>show targets
Metasploit的渗透攻击模块通常可以列出收到漏洞影响目标系统的类型。
 
6) info
    当你觉得show和search命令所提供的信息过于简短,可以使用info命令加上模块的名字来显示此模块的详细信息、参数说明以及所有可用的目标系统:(如果已选择了某个模块,直接在该模块的提示符下输入info即可)
 
7) set和unset
    Metasploit模块中的所有参数只有两个状态:已设置(set)或未设置(unset)。有些参数会被标记为必填项(required),这样的参数必须经过手工设置并处于启用状态。输入show options命令可以查看哪些参数是必填的;使用set命令可以对某个参数进行设置(同时启用该参数);使用unset命令可以禁用相关参数。


8) setg和unsetg
    setg命令和unsetg命令能够对全局参数进行设置和清除。使用这组命令让你不必每次遇到某个参数都要重新设置,特别是那些经常用到又很少会变的参数,如LHOST。


9) save
    使用setg命令对全局参数进行设置后,可以使用save命令将当前的设置值保存下来,这样下次启动MSF终端时还可以使用这些设置值。在Metasploit中可以在任何时候输入save命令以保存当前状态。
 
    在命令执行结果中包含设置值保存在磁盘上的位置(/root/.msf4/config),如果因为特殊原因需要恢复原始设置,可以把该文件删除或移动到其他位置。


课后练习:
使用kali Linux 或在Linux下安装Metasploit,熟悉上述命令,并进行简单操作。

 
附:metasploit的基本文件结构

config --metasploit的环境配置信息,数据库配置信息
data--后渗透模块的一些工具及payload,第三方小工具集合,用户字典等数据信息
db--rails编译生成msf的web框架时的数据库信息
documentation--用户说明文档及开发文档
external--metasploit的一些基础扩展模块
libs--metasploit的一些基础类和第三方模块类
log--msf运行时的一些系统信息和其他信息
modules--metasploit的系统工具模块,包括预辅助模块(auxiliary),渗透模块(exploits),攻击荷载(payloads)和后渗透模块(posts),以及空字段模块(nops)和编码模块(Encoders)
msfbinscan--对bin文件进行文件偏移地址扫描
msfcli--metasploit命令行模式,可以快速调用有效的payload进行攻击,新版本的metasploit即将在2015年6月18日弃用
msfconsole--metasploit的基本命令行,集成了各种功能。
msfd--metasploit服务,非持久性服务
msfelfscan--对linux的elf文件偏移地址进行扫描
msfencode--metasploit的编码模块,可以对mepayload和shellcode进行编码输出
msfpayload--metasploit攻击荷载,用以调用不同的攻击荷载,生成和输出不同格式的shellocode,新版本的metasploit即将在2015年6月18日弃用,用msfvenmon替代。
msfmachscan--功能同msfelfscan
msfpescan--对windows的pe格式文件偏移地址进行扫描
msfrop--对windows的pe进行文件地址偏移操作,可以绕过alsr等
msfrpc--metasploit的服务端,非持久性的rpc服务
msfrpcd--持久性的metasploit本地服务,可以给远程用户提供rpc服务以及其他的http服务,可以通过xml进行数据传输。
msfupdate--metasploit更新模块,可以用来更新metasploit模块
msfvenom--集成了msfpayload和msfencode的功能,效率更高,即将替代msf payload和msfencode
plugins--metasploit的第三方插件接口
scripts--metasplit的常用后渗透模块,区别于data里的后渗透模块,不需要加post参数和绝对路径,可以直接运行
test--metasploit的基本测试目录
tools--额外的小工具和第三方脚本工具

发表评论