谁有《黑客秘笈渗透测试实用指南》这本书,发一下谢谢了

(1) 下载链接爬取自于互联网上百度云、城通、蓝奏等网盘及一些第三方网站,资源不保存在我们服务器上。部分网站上的资源只能在线浏览,无法下载,请知晓;

(2) 若您非城通网盘会员,下载来自城通网盘的资源时请选择“普通下载”;

(3) 一些第三方网站的资源可能会有广告,下载按钮也较为隐蔽,请注意;

(4) 另外一些第三方网站的资源可能需要注册登录甚至付费,本站声明与这些网站无合作关系;

本节书摘来自异步社区《黑客秘笈——渗透测试实用指南(第2版)》一书中的第1章/research/wce_v1_4beta_类;
利用用户口令(查询活动目录);
可以用来管理活动目录;
使得Windows脚本攻击更加容易;
目前很多工具是基于PowerShell开发的,掌握这些工具帮助您成为能力出众、效率较高的渗透测试人员。
您可以通过Windows终端提示符输入“PowerShell”,进入PowerShell命令行,输入“help”命令显示帮助菜单。下面是本书用到的基本参数和基本设置。

这个参数非常重要!默认情况下,PowerShell的安全策略不允许运行命令和文件。通过设置这个参数,可以绕过任何一个安全保护规则。在本书中,每一次运行PowerShell脚本时均使用这个参数。
-NonI:非交互模式,PowerShell不提供用户交互式提示符。
-noexit:执行后不退出shell。这对于脚本,例如键盘记录,非常重要,因此这些脚本可以继续执行。
-W Hidden:设置会话的窗口风格,将命令窗口保持隐藏。
这非常重要。一些脚本仅仅能够运行在它们指定的平台。因此,如果是在64位平台,需要执行64位PowerShell脚本来运行命令。

所有的脚本已经配置成绕过执行策略,保持隐藏,以及非交互运行。看一下Easy-P其他菜单选项,还包括权限提升、横向渗透、键盘记录、PowerShell Meterpreter和修改用户执行策略等功能。请随意复制我的代码,然后修改、增加所需要的PowerShell代码。



  • 利用用户口令(查询活动目录);
  • 可以用来管理活动目录;
  • 使得Windows脚本攻击更加容易;
  • 目前很多工具是基于PowerShell开发的,掌握这些工具帮助您成为能力出众、效率较高的渗透测试人员。

您可以通过Windows终端提示符输入“PowerShell”,进入PowerShell命令行,输入“help”命令显示帮助菜单。下面是本书用到的基本参数和基本设置。

    • 这个参数非常重要!默认情况下,PowerShell的安全策略不允许运行命令和文件。通过设置这个参数,可以绕过任何一个安全保护规则。在本书中,每一次运行PowerShell脚本时均使用这个参数。
  • -NonI:非交互模式,PowerShell不提供用户交互式提示符。
  • -noexit:执行后不退出shell。这对于脚本,例如键盘记录,非常重要,因此这些脚本可以继续执行。
  • -W Hidden:设置会话的窗口风格,将命令窗口保持隐藏。
    • 这非常重要。一些脚本仅仅能够运行在它们指定的平台。因此,如果是在64位平台,需要执行64位PowerShell脚本来运行命令。

为了更好了解PowerShell的使用方法,下面介绍一些常用的执行命令(这些命令将在本书中使用)。

第一个命令是从网站服务器下载PowerShell脚本,并执行脚本。在很多情况下,通过命令行,在被攻击对象主机上下载MeterpreterPowerShell脚本:

例如,如果想在目标上执行Meterpreter Shell,需要下载这个脚本:

最终的PowerShell命令看起来如下所示。

可以看出,PowerShell使用非常简单,而且功能超级强大。下面了解更多的例子。

例如,下载同一个文件到目标上。您不需要访问网页,就可以自动下载和执行文件。在本地执行文件:

最后,在本书中我通常使用base64编码PowerShell脚本,目的是混淆和压缩代码。运行和编码PowerShell脚本的命令如下:

希望上述的例子能帮助您在渗透测试中娴熟地使用PowerShell。

因为本书大量应用PowerShell脚本实施攻击,所以我创建了一个小的脚本,用于在渗透测试过程中获取PowerShell脚本。Easy-P包括我常用的一些PowerShell工具,并且具有编码脚本的功能。

对于每个命令,Easy-P提供多种方式运行代码,包括本地和远端。注意所有的远程PowerShell脚本指向我的代码或者其他人代码的复制版本。在这里我要强调一点,在后面的章节中还会提到多次:记住要从源代码中复制自己的一个拷贝,这样您就不会盲目地运行其他人的代码。现在如果一些人恶意地随意篡改PowerShell脚本,您永远不会知道发生了什么。没有做什么或者更坏的情况是,您的shell将转向其他人指定的地址。下面了解一下Easy-P的功能(见图1.2),使渗透测试工作变得更加简单。

我在本书中最经常做的一件事就是使用PowerShell Meterpreter脚本。当执行Easy-P脚本时,输入选项4。设置本地主机IP和Meterpreter脚本回连的端口。完成设置后,就能看到如图1.3所示的输出。

得到4个不同类型的输出。

  • 从因特网下载和执行:从网站下载一个PowerShell脚本,然后执行脚本。虽然仅获得简单的shell,并且不能下载文件,但是也很棒了。
  • 从脚本的一个本地副本运行:如果您已经将一个PowerShell文件下载到系统中,运行命令导入PowerShell脚本,然后执行脚本。
  • Base64编码版本下载和执行:如果由于某个原因想混淆编码脚本,或者遇到字符限制,您可以使用base64编码代码,然后执行命令。
  • 资源文件:最后输出的是关联的资源文件。Metasploit资源文件是一种快捷方式,自动为MeterpreterPowerShell建立监听程序。复制资源脚本并将它存成文件:/opt/listener.rc。

所有的脚本已经配置成绕过执行策略,保持隐藏,以及非交互运行。看一下Easy-P其他菜单选项,还包括权限提升、横向渗透、键盘记录、PowerShellMeterpreter和修改用户执行策略等功能。请随意复制我的代码,然后修改、增加所需要的PowerShell代码。

开始运行Nmap、Masscan或者其他漏洞工具,测试存在漏洞的虚拟机。一旦发现系统漏洞,就运行漏洞利用程序获取一个shell。举个例子,我们发现并且将利用vsftpd存在的缺陷。因此,可以搜索漏洞(搜索vsftpd,见图1.4)或者直接运行漏洞利用程序。

这个虚拟机包括很多不同类型漏洞。您要花费时间学习如何有效使用Metasploit和Meterpreter。如果想深入了解Metasploit,推荐访问。

Edition()。然而,这并不意味着您不需要理解缓冲区溢出和基本漏洞技术。既然所有的渗透测试人员都需要能够编写脚本代码,那么他们也需要能理解漏洞利用代码。比如可能在Metasploit找到一个模块,它不能正常工作,需要较小的调整,或者需要验证从互联网下载的漏洞利用代码。

已经有大量不同类型网站,帮助开始学习二进制漏洞基础知识。一个非常好的学习网站是Over the Wire( )。Over the Wire网站是一个在线夺旗挑战站点,专注于从二进制攻击到网站攻击所有方面的知识。在本章,仅仅介绍二进制漏洞利用。如果您之前没有了解相关的背景知识,我建议用几个周末的时间深入研究这个网站。为了顺利进入情况,我先和您一起回答几个试题,然而后面的挑战试题需要您自己完成。

在开始前,需要学习以下基础知识:

  • 基本的汇编语言和理解寄存器的使用;
  • GDB基础知识(GNU调试器);
  • 理解不同类型的内存段(栈、堆、数据、BSS和代码段);

下面这些资源可能会对学习有所帮助:

Narnia正确配置后,SSH登录到它们的服务器,所有的挑战位于/narnia/目录下。下面详细了解前三个例子。在Kali的终端提示符下或者在Windows下使用类似于Putty()的软件。

每一阶段挑战都提供C语言代码和二进制可执行文件。对于挑战0,具有访问narnia0和narnia0.c的权限。现在看一下C代码。

快速浏览代码(见图1.5)后,看到变量“val”被赋值十六进制“AAAA”。其次,可以看到,程序接受输入的缓冲区长度为20字节。在之后的一些行,scanf()函数允许最多输入24字节。这是非常简单的缓冲区溢出例子。现在运行可执行文件,作为测试,输入20个A和4个B(因为我们知道十六进制值A=41和B=42),在命令提示符下,显示的字符如下:

太棒了!因为val十六进制值是0x(42对应ASCII字母B),可以修改内存中val的值,之前这个值是0x。现在需要做的就是修改内存值为0xdeadbeef。这里提醒一下,所有写到堆栈中的值必须是小端格式( ),这意味着0xdeadbeef最后的字节必须是第一个压到栈中的字节,从而覆盖val的值。目标机器栈机制是先进后出(FILO),或者说是后进先出(LIFO)的架构。因此,为了设置0xdeadbeef值,以“\xef\xbe\xad\xde”顺序写入。最简单的方式是使用Python语言生成所需的数值,并将其作为narnia0例子的输入值。请看下面的操作过程:

太棒了!现在已经将deadbeef值写入“val”变量中。那么如何运行shell命令呢?再查看C代码,可以看到,如果匹配deadbeef,/bin/sh将被调用。因此运行Python代码,并读取位于/etc/narnia_pass/narnia1的密钥:

如果成功了,就通过阶段1,并获得narnia1账户的口令(见图1.6)。现在需要注销账户并使用narnia1账户重新登录。

在完成每一个阶段后,都可以获得下一个账户的口令。使用刚刚获得narnia1账户登录阶段2:

浏览这段C代码(见图1.7),很快可以看到一些操作。

  • int (*ret)():是一个指向ret的指针,用于获取指针对应的数值。
  • getenv:引入一个环境变量EGG并将值存入变量ret中。

如果将shellcode存储在环境变量ECG中,那么无论shellcode是什么内容,它都将被执行。简单的做法是设置shellcode代码为/bin/sh,并将其赋值给ECG的环境  变量。

  • 在这个例子中,将恶意代码设置为/bin/sh:

已经有了narnia2账户的密码(见图1.8),现在可以进入阶段3。

浏览C代码,查看下面的代码:

通过浏览代码可以看到,通过命令输入一个参数,并将它复制到缓冲区。字符串的缓冲区大小是128个字节,因此我们发送200个字符:

仅仅是验证,通过发送200个字符,造成程序出现段错误。需要判断发送多少字节,可以覆盖EIP寄存器。可以使用Metasploit的pattern_create.rb模块实现这个目的。这个模块生成一个特别字符串,在下面的例子中,创建200个字节的字符串。由于生成的字符串不会重复,因此能够精确识别出程序在什么位置覆盖EIP。

现在运行程序narnia2,输入新生成的特殊字符串,观察在造成段错误之前,输入了多少个字节。为了获得段错误的精确结果,使用了调试器。默认情况下,Linux操作系统内嵌gdb调试器。尽管gdb调试器不是最容易使用的调试器,但是它的功能非常强大。

查询结果如图1.9所示。

  • 程序接收SIGSEGV信号,段错误。

命令输出结果是0x。通过查看初始的字符串来查找精确的值。为了能够计算出造成段错误的准确字节数,使用Metasploit的pattern_offset.rb脚本:

这表明在140个字节后可以控制EIP。为了证明这个结果,运行narnia2程序,输入140个字节,使用另外的4个字节覆盖EIP。通过使用调试器来观察内存中的变化。

使用“B”字符(或者十六进制0x42)覆盖EIP,EIP是处理器下一步执行代码的指针。如果将EIP指向一段shellcode区域,就可以控制系统。那么到哪儿可以找到shellcode呢?可以定制shellcode或者从下面网址下载shellcode:。在这个例子中,使用Linux/x86 - execve(/bin/sh),长度28个字节。shellcode长度是28个字节,净荷需要144个字节长度。将A替换为NOP或者0x90,这意味着程序跳到NOP时将继续执行,直到开始运行可执行代码。在使用空指令测试后,我创建了下列代码:

    • 程序接收SIGSEGV信号,段错误。

通过shellcode和NOP成功控制EIP的值。现在在NOP前放置shellcode,从而获得一个/bin/sh shell。为了能够看到出现段错误后内存中的内容,输入:

滚动浏览,可以看到以下内容(见图1.10)。

可以看到初始的NOP (x90),后面是shellcode,然后是多个NOP,最后是BBBB。修改BBBB值,使其指向NOP,从而执行shellcode代码。一个简单的地址是0xffffd850栈地址,指向NOP中的第一个字符。开始进行测试,记住不要忘记系统是小段模式。

现在可以运行shellcode,但是由于某种原因,不能够读取narnia3账户口令。可以尝试脱离GDB调试环境运行程序。

终于发挥作用了!我们现在获得高权限的shell,并可以读取narnia3的密码(见图1.11)。希望通过这个例子,您能初步了解缓冲区溢出是如何产生以及如何进行漏洞利用。记住,这是一个二进制漏洞利用的起始阶段。现在可以用一些时间尝试其他的例子。

说实话那么多工具最好按照功能和操作去区分,这样算下来就是搭建和安装的工作量大。其他的跑两遍就好了。

我要回帖

更多关于 渗透测试书籍 的文章

 

随机推荐