El otro día hablamos en el blog de ibombshell, una herramienta escrita en Powershell que proporciona al pentester un prompt dinámico sin necesidad de instalar en memoria las herramientas que vaya a utilizar. En ese post ya mencionamos que gracias a la llegada de Powershell a macOS y Linux, la herramienta puede ser ejecutada en todas estas plataformas además de su entorno predilecto, Windows. Hoy vamos a indagar un poco más en como añadir nuevas funcionalidades que pudiéramos necesitar en ibombshell, en este caso enfocado a macOS. Powershell Core apareció en este sistema operativo en su versión 6.0 junto con ciertas funcionalidades destinadas a poder adaptar scripts a estas nuevas plataformas.
Las variables $IsWindows, $IsLinux, $IsOSX y $IsCore fueron incluidas para poder aplicar diferentes funcionalidades en scripts dependiendo del sistema operativo, junto con nuevos cmdlets adaptados a los sistemas operativos recién integrados. Uno de ellos es ‘system_profiler’, que al ejecutarlo en macOS obtenemos toda la información relativa al sistema. Este comando es muy extenso y pesado, por ello acepta argumentos para filtrar información relativa a una parte del sistema. Conociendo esto, vamos a incluir una nueva funcionalidad en ibombshell para sacar la información más general de un mac, la información del hardware y la de red.
Creando una función de ibombshell everywhere
Añadir una nueva funcionalidad en ibobmshell es un proceso relativamente sencillo, pero involucra una serie de pasos en los que es necesario tener una cuenta de GitHub y modificar determinadas URL en el proyecto. Los pasos son los siguientes:
Una vez completado, solo queda probar la herramienta desde nuestro equipo con macOS. Hay que recordar que nuestra consola se encuentra en una url distinta a la oficial, por lo que debemos apuntar a nuestro repositorio.
> pwsh
> iex (new-object net.webclient).downloadstring(‘https://raw.githubusercontent.com/lucferbux/ibombshell/master/console’)
Creando el módulo para el modo Silently
ibombshell tiene una funcionalidad muy interesante para ejecutar remotamente código desde un módulo escrito en python. El funcionamiento de este modo está descrito en el repositorio oficial, donde se explica como funciona la conexión entre el host principal y todas las máquinas controladas remotamente, llamadas warriors.
Para añadir una nueva funcionalidad solo es necesario crear un nuevo archivo python, añadir las opciones de ejecución para indicar el warrior a seleccionar, indicar el tipo de información a obtener y la función que queramos ejecutar.
Una vez creado lo ejecutamos para comprobar que funcione correctamente, para ello creamos un nuevo warrior en una consola de powershell mientras ejecutamos el nuevo módulo creado en la herramienta de ibombshell en python.
Las variables $IsWindows, $IsLinux, $IsOSX y $IsCore fueron incluidas para poder aplicar diferentes funcionalidades en scripts dependiendo del sistema operativo, junto con nuevos cmdlets adaptados a los sistemas operativos recién integrados. Uno de ellos es ‘system_profiler’, que al ejecutarlo en macOS obtenemos toda la información relativa al sistema. Este comando es muy extenso y pesado, por ello acepta argumentos para filtrar información relativa a una parte del sistema. Conociendo esto, vamos a incluir una nueva funcionalidad en ibombshell para sacar la información más general de un mac, la información del hardware y la de red.
Creando una función de ibombshell everywhere
Añadir una nueva funcionalidad en ibobmshell es un proceso relativamente sencillo, pero involucra una serie de pasos en los que es necesario tener una cuenta de GitHub y modificar determinadas URL en el proyecto. Los pasos son los siguientes:
- Crear un fork del repositorio oficial de ibombshell.
- Cambiar la URL donde apunta la consola, y el módulo de python a nuestro nuevo fork. (Adicionalmente la función de bypassuac también apunta al repositorio principal, tendría que cambiar la url si es necesario su uso).
- Crear una nueva función. En este caso creamos una carpeta nueva llamada macOS (data/functions/macos) con el fin de separar lógicamente funcionalidades orientadas a este sistema operativo con el resto y dentro de ella añadimos un nuevo fichero sin extensión (data/functions/macos/sys-info)
- Añadir la función al fichero ‘functions.txt’ indicando el path. (macos/sys-info)
- Realizar un commit con los cambios y subirlo a nuestro fork.
Figura 1: Función de Powershell para macOS |
Una vez completado, solo queda probar la herramienta desde nuestro equipo con macOS. Hay que recordar que nuestra consola se encuentra en una url distinta a la oficial, por lo que debemos apuntar a nuestro repositorio.
> pwsh
> iex (new-object net.webclient).downloadstring(‘https://raw.githubusercontent.com/lucferbux/ibombshell/master/console’)
Figura 2: Función ejecutada |
Creando el módulo para el modo Silently
ibombshell tiene una funcionalidad muy interesante para ejecutar remotamente código desde un módulo escrito en python. El funcionamiento de este modo está descrito en el repositorio oficial, donde se explica como funciona la conexión entre el host principal y todas las máquinas controladas remotamente, llamadas warriors.
Para añadir una nueva funcionalidad solo es necesario crear un nuevo archivo python, añadir las opciones de ejecución para indicar el warrior a seleccionar, indicar el tipo de información a obtener y la función que queramos ejecutar.
Figura 3: Módulo en el modo Silently ejecutado |
Una vez creado lo ejecutamos para comprobar que funcione correctamente, para ello creamos un nuevo warrior en una consola de powershell mientras ejecutamos el nuevo módulo creado en la herramienta de ibombshell en python.