Descripción

Gopher es un agente ligero escrito en Go, diseñado específicamente para sistemas Linux. A diferencia de Beacon, Gopher se centra en la eficiencia y el bajo perfil, con un binario más pequeño y menor huella en memoria.

Plataformas soportadas

Sistema operativoArquitecturasFormato
Linuxx64, x86ELF

Listener compatible

ListenerTipoProtocolo
GopherTCPExternoTCP

Multi-listener

Una característica destacada de Gopher es el soporte multi-listener: un solo payload puede configurarse con múltiples listeners GopherTCP. El agente intentará conectar a cada uno en orden, proporcionando redundancia automática:

Listeners configurados:
  1. gopher-primary   → 10.0.0.1:9443
  2. gopher-secondary → 10.0.0.2:9443
  3. gopher-fallback  → 10.0.0.3:9443

Si #1 falla → intenta #2
Si #2 falla → intenta #3
Si todos fallan → espera y reintenta desde #1

Configuración del agente

Al generar un payload Gopher:

ParámetroDescripción
ListenersUno o más listeners GopherTCP
Arquitecturax64 o x86
SleepIntervalo de reconexión en segundos
JitterVariación aleatoria del sleep
Kill DateFecha de autodestrucción
Working TimeHorario operativo

Funcionalidades

Gopher incluye funcionalidades esenciales para operaciones en Linux:

Ejecución

  • Ejecución de comandos de shell
  • Ejecución de scripts

Sistema de archivos

  • Listado de directorios (con permisos Unix: modo, usuario, grupo)
  • Lectura y escritura de archivos
  • Descarga y subida de archivos

Procesos

  • Listado de procesos (PID, PPID, TTY, usuario, comando)
  • Terminación de procesos

Red

  • Tunneling SOCKS4/5
  • Port forwarding
  • Pivoting

Diferencias con Beacon

CaracterísticaBeaconGopher
PlataformasWin/Linux/macOSSolo Linux
ProtocolosHTTP/TCP/SMB/DNSSolo TCP
Multi-listenerNo
Tamaño de binarioMayorMenor
FuncionalidadesCompletoEsencial
Casos de usoObjetivo principalServidores Linux, pivotes

Cuándo usar Gopher

  • Servidores Linux — Cuando el objetivo es un servidor Linux y necesitas un implante ligero
  • Pivotes internos — Para agentes intermedios en redes internas
  • Redundancia — El multi-listener da resiliencia sin payloads adicionales
  • Bajo perfil — Cuando necesitas minimizar la huella en disco y memoria

Watermark

El watermark de Gopher es 904e5493, diferente al de Beacon. Esto permite al servidor identificar el tipo de agente durante el handshake inicial.

Compilación

Los agentes Gopher se compilan en tiempo real:

GOWORK=off CGO_ENABLED=0 GOOS=linux GOARCH=<arch> \
  go build -trimpath -ldflags="-s -w" -o <output>

El código fuente se encuentra en dist/extenders/gopher_agent/src_gopher/.