内网攻击-外网访问内网的办法
内网攻击-外网访问内网的办法
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 | alien xxxx.rpm |
举例
我在虚拟机里面搭建了一个路由器的环境IP为192.168.0.1端口为80,虚拟机IP为10.8.166.156,物理机IP为 10.8.166.149 。
现在我需要搭建一个环境使得我能够在物理机访问虚拟机里面的路由器环境,于是使用如下命令即可
1 | socat tcp-l:8888,reuseaddr,fork TCP:192.168.0.1:80 |
含义就是把8888端口接受的数据转发给192.168.0.1:80,并且模式为TCP,创建方法为fork(连接一次后断开不会结束),可以看到我们现在可以在物理机访问了
frp搭建一个隧道
frp的下载
github官网如下https://github.com/fatedier/frp/releases
任选一个即可,但是服务端和客户端最好版本一样,我的服务端是windows,客户端是linux,选择如下(最好选择v0.52.0 前面的,在v0.52.0 版本后已经弃用INI了,支持TOML格式了)这里我们介绍的是INI版本的
脚本主要分为服务端与客户端文件
1.外网服务器端用到的是Frps和Frps.ini
2.客户端服务器用到的是Frpc和Frpc.ini
服务端
这里的服务端指的是我们想要使用哪台电脑去访问,也就是我们说的外网机器,相当于攻击机,于是我们选择frps
解压后发现有如下程序,我们只需要关注frps.exe和frps.ini,配置ini文件即可
服务端配置
服务端只需要设置监听端口即可,监听IP默认为本地回环,这里的端口可以随便定义,只要是没有在使用的即可,
1 | [common] |
打开frps.ini将上述配置写进去即可
启动frps
启动服务端命令如下
1 | frps.exe -c frps.ini |
启动日志如下
1 | 2023/12/14 19:05:20 [I] [root.go:203] frps uses config file: frps.ini |
客户端
这里的客户端指的是我们的跳板机,也就是用作链接我们攻击机和目标机的媒介,于是我们选择frpc
解压后我们发现如下配置
我们只需要关注frpc和frpc.ini就行
客户端配置
客户端需要设置的配置文件如下,把下面的配置写入frpc.ini即可
1 | [common] |
参数解释:
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当做服务端
服务端配置如下
在虚拟机搭建frpc当做客户端
客户端配置如下:
于是服务端就会显示
日志如下
1 | 2023/12/14 19:16:31 [I] [root.go:203] frps uses config file: frps.ini |
大概意思就是开放了800端口在监听,于是我们访问http://127.0.0.1:800/
访问成功!环境就搭建好了
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 | ./chisel server -p 6666 --reverse |
0x03 chisel搭建隧道
服务端:
首先,服务器端监听6666端口,然后使用reverse参数,reverse表示的是服务端使用反向模式,也就是说流量转到哪个端口由客户端指定。
1 | ./chisel server -p 10000 --reverse |
客户端:
客户端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 |
然后服务端就会显示连接成功