导语:随着我们本系列文章的逐步深入,我们便会更加明白powershell的强大之处,本文我们就来讲解一些powershell的函数和脚本。

介绍

随着我们本系列文章的逐步深入,我们便会更加明白powershell的强大之处,本文我们就来讲解一些powershell的函数和脚本。

Powershell函数

基于前两篇文章的介绍,相信大家对powershell有了基本的了解,函数的用法其实也非常简单,只要使用下面的语法即可:

function [<scope:>]<name> [([type]$parameter1[,[type]$parameter2])]
{
param([type]$parameter1 [,[type]$parameter2]) 

dynamicparam {<statement list>}
 
begin {<statement list>}
 
process {<statement list>}
 
end {<statement list>}
 
}

不过根据上下文环境不同,函数的使用可能很简单,但也可能很复杂。

现在我们来看看如何使用powershell函数,先从一个简单的函数开始:multiplying 4 by 3.

这个函数就是一个乘法运算,如图:

1.jpg

我们也可以使用变量$args作为数组来表示参数,然后按照位置顺序从用户的输入中取值,如图所示:

2.jpg

我们还可以使用命名参数,如图:

3.jpg

关于参数还有一个功能是,我们可以指定参数被解析的类型。

在下面这个例子中,我们只允许int型参数才能被解析,其他任何类型都会引发一个异常,如图:

4.jpg

当然,这里我只是向大家介绍的最基础的知识,关于函数还有很多用法需要你自己探索,特别是在使用参数和属性等高级功能或使用参数验证时。我们稍后会讨论一些例子。

使用Powershell编写脚本

现在我们来讲解一下使用powershell编写脚本。

不过,在我们直接开始编写脚本之前,先来了解下Microsoft是如何保护我们的系统免受恶意脚本攻击的。

我们可以发现在脚本执行安全策略(微软称之为执行策略)中,有一条很有意思,那就是“执行策略是Windows powershell安全策略的一部分”。

它决定你是否运行脚本,如果运行脚本的话,它还决定哪些脚本在运行之前必须进行数字签名。

你可以使用‘Get-ExecutionPolicy’命令来获取当前的执行策略,如图:

5.jpg

根据微软官方文档,执行策略有如下几种:

· Restricted:Powershell不会执行任何脚本,这是powershell默认的执行策略。

· Allsigned:Powershell只会执行具有数字签名的脚本。如果你执行的脚本是由Powershell无法识别的Publisher进行签名的,powershell会询问你是否信任这个脚本的Publisher.

· RemoteSigned:powershell不会执行从互联网上下载的脚本,除非他们有签名,但是powershell可以执行非互联网下载脚本,而不会弹窗提醒.如果下载脚本有签名,但是powershell无法识别,那么在执行脚本之前,powershell还是会弹框提示.

· Unrestricted:powershell忽视数字签名,但是执行从互联网上下载的脚本时会弹窗提示.

当然,你也可以修改默认策略,命令是Set-ExecutionPolicy <policy>,如图:

7.jpg

现在我们已经修改了执行策略为“unrestricted”,这个策略允许我们执行脚本,我们来尝试进行攻击。(我非常激动来完成这一部分来攻击渗透中的实例)。

你可以在notepad中编写脚本,也可以使用powershell的脚本编写交互界面,这是powershell默认就自带的集成脚本环境(ISE),也是非常好用的,界面如图:

8.jpg

如图可以看到ISE有三个区域:

1.脚本编写区

2.Powershell解释器

3.现有命令(可以搜索和过滤)

现在终于可以开始编写脚本了,我们先写一个非常简单的hello world脚本并执行,如图:

9.jpg

或者保存脚本,然后使用命令行执行,如图:

10.jpg

现在你就可以自由发挥了,发现什么功能都可以尝试去做。不过,放心,我们会在后续的文章中讲解一些非常不错的用例和场景。

脚本和函数用例

下面这个简单的脚本可以让我们杀掉指定进程,需要指定的参数就是我们想要杀掉的进程的PID,脚本如下:

11.jpg

执行脚本,如图:

12.jpg

总结

当然,这仅仅只是一个简单的开始,不要小瞧这些简单的基础知识,一定要牢牢把握,不然后期很难进阶。在接下来的文章中,我们就要开始讲高级用法和实际用例,敬请期待。

源链接

Hacking more

...