powershell渗透利用(入门)

lionhoo 技术 2019年2月26日发布
Favorite收藏

导语:假如我们入侵一个服务器要进行内网渗透,但是服务器上的工具有限,powershell可以是一个不错的选择。

Powershell简介

PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能,并且powershell存在于诸多系统中。

Powershell编写脚本

很多人不太了解powershell,包括它内置了很多的命令,假如你想写一个powershell脚本,那么可以通过定义函数,然后调用这些命令(因为本人有点小菜,所以就想到一个小小的方法,那就是用后面介绍的ise)。

我们可以通过Get-Command命令 。

Get-Command使您可以一次显示所有可用的PowerShell命令。                    

1.png

当然了我们还可以通过poweshell ise。

2.png

3.png

可以看到在右面是命令并且还可以筛选你想要的命令!

4.png

那么如何熟悉这些命令呢?

我们看一下powershell的命名规则,可以看出来命令都包含一个动词和一个名词,由连字符分隔。比如关机命令Stop-Computer 在ise中还可看相应的参数!

5.png

6.png

7.png

科普就到这里了 我们要进入重点了!

利用powershell做渗透用

那么我们今天就从第一步入手powershll做信息收集

端口扫描器大家都知道nmap,但是有没有想过用powershell做一个简单的端口扫描器呢?

首先我们了解一下,

TCP(Transmission Control Protocol传输控制协议)三次握手:

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码:

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)。

三次握手建立一个连接

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
· 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
· 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

· 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

当计算机将SYN发送到另一台计算机时,远程计算机通常会回答SYN + ACK或RST。通过这个事实,我们可以测试端口是否打开。

8.png

(不太会画图,可能不太好看)

要测试端口是否打开,可以使用不同的端口扫描程序。当然我们要用Test-NetConnection和自制脚本。

Test-NetConnection:

9.png

Baidu.com的端口80是开放的(SYN + ACK)。

测试代码

到PowerShell或PowerShell ISE运行,然后命令Test-Port变为可用。

10.png

11.png

12.png

这时如果无误就可以看到有自动补齐!

我们来解释一下这个代码。

Function Test-Prot是定义了一个powershell函数这是我们自己命名的!

然后分别调用了powershell内置的模块(使用Get-Module -ListAvailable命令可查看所有模块)。

13.png

我们一步一步来解释。

14.png

通过图片可以看出来通过调用test-netconnection命令进行的扫描。

命令详情(https://docs.microsoft.com/de-de/previous-versions/windows/powershell-scripting/dn372891(v=wps.640))

简简单单的。

15.png

通过用户输入赋值给我们所定义的参数然后带入的命令中去执行!

然后整个命令内容给了$a.

If进行判断当我们的Test-NetConnection命令执行。

9.png

判断返回的TcpTestSucceeded是否为true 也就是端口开放。

16.png

如果测试端口为开放那么。

17.5.png

Write-host输出$a的computername的内容和remoteport的内容为绿色!

如果端口关闭则是红色!

18.png

假如我们入侵一个服务器要进行内网渗透,但是服务器上的工具有限,powershell可以是一个不错的选择,就像python黑客编程一样!

本文为 lionhoo 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址: https://www.4hou.com/technology/16192.html
点赞 10
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论