Serie de penetración de intranet: frp del túnel de intranet

prefacio

Este artículo estudia una herramienta que sale a través de TCP y HTTP, frp

github: https://github.com/fatedier/frp

I. Resumen

1. Introducción

Escrito en 2015, continuamente actualizado, escrito en Go, una herramienta clásica en línea

  • Admite TCP y UDP, así como los protocolos HTTP y HTTPS, y también admite P2P
  • Soporte para encriptación y compresión.
  • Soporte multiplataforma
  • Tiene GUI
  • depende del archivo de configuración
    inserte la descripción de la imagen aquí

2. Principio

inserte la descripción de la imagen aquí

  • Primero, después de que se inicie frpc, conecte frps y envíe una solicitud para iniciar sesión (), luego mantenga esta conexión larga, si se desconecta, intente nuevamente
  • Después de que frps reciba la solicitud, establecerá un oyente para escuchar las solicitudes de la red pública.
  • Cuando frps recibe la solicitud, verificará localmente si hay una conexión disponible (frp puede establecer un grupo de conexiones), si no, enviará un mensaje.StartWorkConn y esperará la solicitud de frpc
  • Después de que frpc lo recibe, inicia una solicitud a frps. Al comienzo de la solicitud, especificará a qué proxy se dirige la conexión.
  • Después de que frps reciba la conexión de frpc, transferirá el tráfico entre la conexión recién establecida y la conexión de la red pública.
  • Si la solicitud se desconecta, la solicitud en el otro extremo también se desconecta
    inserte la descripción de la imagen aquí

3. Uso

(1) servidor

archivo de configuración frps.ini

[common]
#frp服务器监听地址,如果是IPV6地址必须用中括号包围
bind_addr = 0.0.0.0 
#frp服务器监听端口
bind_port = 7000
 
#kcp的udp监听端口,如果不设那就不启用
#kcp_bind_port = 7000
#指定使用的协议,默认tcp,可选kcp
#protocol = kcp
 
#如果要使用vitual host,就必须设置
#vhost_http_port = 80
#vhost_https_port = 443
 
#Web后台监听端口
dashboard_port = 7500
 
#Web后台的用户名和密码
dashboard_user = admin
dashboard_pwd = admin
 
#Web后台的静态资源目录,调试用的,一般不设
#assets_dir = ./static
 
#日志输出,可以设置为具体的日志文件或者console
log_file = /var/log/frps.log
 
#日志记录等级,有trace, debug, info, warn, error
log_level = info
#日志保留时间
log_max_days = 3
 
#启用特权模式,从v0.10.0版本开始默认启用特权模式,且目前只能使用特权模式
#privilege_mode = true
 
#特权模式Token,请尽量长点且复杂
privilege_token = 12345678
 
#特权模式允许分配的端口范围
privilege_allow_ports = 2000-3000,3001,3003,4000-50000
 
#心跳超时,不用改
#heartbeat_timeout = 90
 
#每个代理可以设置的连接池上限
#max_pool_count = 5
 
#认证超时时间,一般不用改
#authentication_timeout = 900
 
#如果配置了这个,当你的模式为http或https时,就能设置子域名subdomain
#subdomain_host = frps.com
 
#是否启用tcp多路复用,默认就是true,不用管
#tcp_mux = true

correr

./frps -c ./frps.ini
./frps -c ./frps.ini & # 后台运行
# 如果要运行多个服务端:只需要复制并修改frps.ini配置文件中的端口号

(2) Cliente

archivo de configuración frpc.ini

[common]
#frp服务器地址
server_addr = 1.2.3.4
#frp服务器端口
server_port = 7000
#特权模式Token
privilege_token = 12345678
#转发SSH
[ssh]
type = tcp
#可以指定为其它IP,默认是本地
#local_ip = 127.0.0.1
local_port = 22  #代理出去的端口
remote_port = 6000 #出去的端口
#启用加密
use_encryption = true
#启用压缩
use_compression = true
 
#转发Web
[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
#修改header中的host
#host_header_rewrite = dev.yourdomain.com
#启用简单HTTP认证
#http_user = abc
#http_pwd = abc
#在服务端配置了subdomain_host的情况下用于自定义二级域名
#subdomain = test
#在存在多个相同域名的情况下通过请求的URL路由到不同的配置
#locations = /news,/about
 
#转发DNS请求
[dns]
type = udp
local_ip = 8.8.8.8
local_port = 53
remote_port = 6000
 
#转发Unix域套接字(这儿是Docker)
[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock
 
#HTTP代理
[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy
#配置http代理的简单认证
#plugin_http_user = abc
#plugin_http_passwd = abc

correr

./frpc -c ./frpc.ini
./frpc -c ./frpc.ini & # 后台运行
# 如果要运行多个客户端:只需要复制并修改frpc.ini配置文件中的端口号

2. Practica

1. Escenario de prueba

Atacante (servidor): kali 192.168.10.128
Destino (cliente): ubuntu 192.168.10.129

Tampoco limita las conexiones TCP

2. Establecer un túnel

(1) servidor

inserte la descripción de la imagen aquí

./frps -c ./frps.ini

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

(2) Cliente

Iniciar Apache
inserte la descripción de la imagen aquí

archivo de configuración

inserte la descripción de la imagen aquí

./frpc -c ./frpc.ini

inserte la descripción de la imagen aquí

(3) Establecimiento del túnel

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
Del mismo modo, el puerto se puede determinar en función del servicio

3. Echa un vistazo al paquete

El protocolo de enlace de tres vías establece la conexión
inserte la descripción de la imagen aquí
durante la llamada de servicio
inserte la descripción de la imagen aquí

3. Explora

1. Código fuente y análisis

Para combinar la solicitud entre frpc y frps, el código del programa frp encapsula el protocolo sobre TCP, por lo que utiliza muchos canales, por lo que el código está disperso por todas partes y no es fácil conectarse.

Disponible en: https://jiajunhuang.com/articles/2019_06_19-frp_source_code_part2.md.html

2. Detección y derivación

(1) archivo de configuración

El uso de archivos de configuración es un gran problema

Método de derivación: refactorización, sin archivo de configuración

(2) Cadena de característica y código de característica

La cadena de función en el comando y el registro se puede usar como función de detección
y luego el código de función en el código

Método de derivación: modificar las características correspondientes

(3) control portuario

Haga un buen trabajo de control de puertos y solo abra los puertos necesarios

Método de derivación: multiplexación de puertos

(4) Llamadas de proceso y biblioteca

Se está detectando el control de la cadena de procesos del terminal y la llamada de la biblioteca de terceros

Método de omisión: use el proceso blanco, no llame a la biblioteca tanto como sea posible, empaquete el paquete, principalmente el conjunto de eliminación sin troyanos

Epílogo

frp es demasiado famoso y maduro (es decir, la detección de frp también debería ser muy madura), pero el código fuente está muy disperso

Supongo que te gusta

Origin blog.csdn.net/weixin_44604541/article/details/119735357
Recomendado
Clasificación