内网攻击-外网访问内网的办法

socat和ncat实现端口转发

socat tcp-l:888,reuseaddr,fork TCP:目标:目标端口

nc --sh-exec "nc 127.0.0.1 1000" -l 888 --keep-open

nc -l -p 1000 -c "nc 127.0.0.1 888"

上面这三个命令都可以实现内网的流量转发,举个例子

nc --sh-exec "nc 127.0.0.1 1000" -l 888 --keep-open

这条命令的效果便是将对于888端口收到的流量转发给127.0.0.1的1000端口,也可以设置为转发给其他的IP的对应端口

但是很多awd的环境里面是没有ncat的环境的,一般都是netcat,ncat是netcat的升级版这时候我们只需要去nmap的官网下载ncat的rpm包,然后将rpm包转换为deb包便可以安装到环境里面去,离线就可以安装

nmap各个部件如下

最新稳定版本:
x86-64(64位Linux) < a i=4>Nmap 转速:nmap-7.94-1.x86_64.rpmx86-64(64 位) Linux)Ncat RPM:ncat-7.94-1.x86_64.rpm x86-64(64 位 Linux)NpingRPM:nping-0.7.94-1.x86_64.rpm 可选Zenmap GUI(所有平台):zenmap-7.94-1.noarch.rpm 源 RPM(包括 Nmap、Zenmap、Ncat 和 Nping):nmap-7.94-1.src.rpm

1
2
3
4
alien xxxx.rpm
#转换为deb包
sudo dpkg -i xxxx.deb
#安装

举例

我在虚拟机里面搭建了一个路由器的环境IP为192.168.0.1端口为80,虚拟机IP为10.8.166.156,物理机IP为 10.8.166.149 。

image-20231214185520938

现在我需要搭建一个环境使得我能够在物理机访问虚拟机里面的路由器环境,于是使用如下命令即可

1
socat tcp-l:8888,reuseaddr,fork TCP:192.168.0.1:80

image-20231214185427859

含义就是把8888端口接受的数据转发给192.168.0.1:80,并且模式为TCP,创建方法为fork(连接一次后断开不会结束),可以看到我们现在可以在物理机访问了

image-20231214185444246

frp搭建一个隧道

frp的下载

github官网如下https://github.com/fatedier/frp/releases

任选一个即可,但是服务端和客户端最好版本一样,我的服务端是windows,客户端是linux,选择如下(最好选择v0.52.0 前面的,在v0.52.0 版本后已经弃用INI了,支持TOML格式了)这里我们介绍的是INI版本的

image-20231214185730582

脚本主要分为服务端与客户端文件
1.外网服务器端用到的是Frps和Frps.ini
2.客户端服务器用到的是Frpc和Frpc.ini

服务端

这里的服务端指的是我们想要使用哪台电脑去访问,也就是我们说的外网机器,相当于攻击机,于是我们选择frps

image-20231214190211971

解压后发现有如下程序,我们只需要关注frps.exe和frps.ini,配置ini文件即可

服务端配置

服务端只需要设置监听端口即可,监听IP默认为本地回环,这里的端口可以随便定义,只要是没有在使用的即可,

1
2
3
4
5
[common]
#内网穿透服务器端监听的IP地址,可以省略,默认为127.0.0.1
bind_addr = 0.0.0.0
#服务器端监听的端口,默认是7000,可自定义
bind_port = 7000

打开frps.ini将上述配置写进去即可

启动frps

启动服务端命令如下

1
frps.exe -c frps.ini

image-20231214190531354

启动日志如下

1
2
3
2023/12/14 19:05:20 [I] [root.go:203] frps uses config file: frps.ini
2023/12/14 19:05:20 [I] [service.go:208] frps tcp listen on 0.0.0.0:7000
2023/12/14 19:05:20 [I] [root.go:212] frps started successfully

客户端

这里的客户端指的是我们的跳板机,也就是用作链接我们攻击机和目标机的媒介,于是我们选择frpc

解压后我们发现如下配置

image-20231214190903463

我们只需要关注frpc和frpc.ini就行

客户端配置

客户端需要设置的配置文件如下,把下面的配置写入frpc.ini即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[common]
#外网-服务器端ip
server_addr = xx.xx.xx.xx
#外网-服务器端监听的端口(必须与Frps.ini中的配置一致)
server_port = 7000

[ssh]
#配置类型为http协议
type = tcp
#内网机器的IP
local_ip = 127.0.0.1
#内网需要监听的端口
local_port = 80
remote_port = 800
use_encryption = true
# if true, message will be compressed
use_compression = true

参数解释:
server_addr 是服务端的公网地址
server_port 是服务端监听的端口,这个端口需与服务端的bind_port相一致
type 协议类型
local_ip 本地地址
local_port 因为本地要映射22端口,所以端口为22
remote_port 这个端口是要把本地的ssh映射到remote_port所指向的公网VPS端口上
use_encryption=true 将 frpc 与 frps 之间的通信内容加密传输
use_compression = true 启用压缩 [传输内容进行压缩,有效减小传输的网络流量,加快流量转发速度,但会额外消耗一些CPU资源]
use_encryption = true 、use_compression = true 必须放在相关协议下面

可能光看这些解释不一定能看懂,这里拿我们上面的例子去解释即可

例子

我在虚拟机里面搭建了一个路由器的环境IP为192.168.0.1端口为80,虚拟机IP为10.8.166.156,物理机IP为 10.8.166.149 。

我们于是在本地物理机搭建frps当做服务端

image-20231214191454174

服务端配置如下

image-20231214191610795

在虚拟机搭建frpc当做客户端

image-20231214191520785

客户端配置如下:

image-20231214191530273

于是服务端就会显示

image-20231214191659037

日志如下

1
2
3
4
5
6
2023/12/14 19:16:31 [I] [root.go:203] frps uses config file: frps.ini
2023/12/14 19:16:31 [I] [service.go:208] frps tcp listen on 0.0.0.0:7000
2023/12/14 19:16:31 [I] [root.go:212] frps started successfully
2023/12/14 19:16:36 [I] [service.go:524] [634cbb431ee603bd] client login info: ip [10.8.166.156:45022] version [0.49.0] hostname [] os [linux] arch [amd64]
2023/12/14 19:16:36 [I] [tcp.go:66] [634cbb431ee603bd] [ssh] tcp proxy listen port [800]
2023/12/14 19:16:36 [I] [control.go:484] [634cbb431ee603bd] new proxy [ssh] type [tcp] success

大概意思就是开放了800端口在监听,于是我们访问http://127.0.0.1:800/

image-20231214191755723

访问成功!环境就搭建好了

chisel内网穿透工具

一、chisel工具介绍

Chisel可用来搭建内网隧道,类似于常用的frp和nps之类的工具。由于目前使用的人比较少,因此对于有些杀软还不能准确的识别出该工具。chisel可以进行端口转发、反向端口转发以及Socks流量代理,使用go语言编写,支持多个平台使用,是进行内网穿透的一个鲜为人知的好工具。

二、chisel工具下载及其使用

0x01 chisel的下载

下载地址:https://github.com/jpillora/chisel/releases/tag/v1.7.4

chisel工具是使用go语言进行编写的,可以适用于各个平台,也可以对源码进行编译,或者直接使用编译好的发行版。

0x02 chisel工具使用

首先,chisel和frp、nps是不同的,没有所谓的服务器端和客户端,对于chisel,只有一个文件,可以通过执行这个文件,让其充当服务器端或者客户端。如下所示:

1
2
./chisel server -p 6666 --reverse
./chisel client -v VPS:6666 R:0.0.0.0:8888:192.168.223.160:22

0x03 chisel搭建隧道

服务端:

首先,服务器端监听6666端口,然后使用reverse参数,reverse表示的是服务端使用反向模式,也就是说流量转到哪个端口由客户端指定。

1
./chisel server -p 10000 --reverse

image-20240118100230087

客户端:

客户端IP为192.168.126.135

1
./chisel client -v 121.196.193.233:10000 R:0.0.0.0:10003:192.168.126.135:80 

image-20240118100515383

然后服务端就会显示连接成功

image-20240118100637587

路由表

VPN