Al fin después de mucho batallar ya dimos con la solución de esta impedimento que muchos los lectores de nuestra web tienen. Si tienes algo más que aportar puedes aportar tu conocimiento.
Solución:
Justin Warner proporciona un argumento en su blog que es importante resumir antes de continuar una discusión sobre la persistencia:
¿Es la persistencia de reinicio un requisito?
Yo diría que una puerta trasera no tiene que ser persistente en el reinicio. Por su propia naturaleza, una puerta trasera es simplemente un método para obtener acceso a algún recurso específico. Las puertas traseras a menudo tienen un componente persistente, pero yo diría que es una decisión que es mejor dejar en el contexto y el escenario de lo que está tratando de lograr. En escenarios de red muy simples o pruebas de penetración que tienen poca atención por parte de los defensores de la red, la persistencia común y corriente puede ser aplicable y útil. cosas como correr keyslos ejecutables de servicio o las DLL de inicio de aplicación son muy útiles para esta situación.
En entornos de red más sofisticados o difíciles, a menudo trato de operar solo el 95% de la memoria y solo recurro a la persistencia de reinicio en áreas que parecen estar key-terreno. Esto puede ser más paranoico de lo necesario, pero al hacerlo, ayudo a evitar problemas con IDS basados en host y evito dejar artefactos en los hosts. En los lugares que elijo para la persistencia de reinicio, prefiero los métodos que no utilizan un archivo en el disco, como el almacenamiento de registro de las cargas útiles.
Tomemos los ataques del mundo real, como el malware Kovter, como un ejemplo del posible comercio en 2016: https://blog.malwarebytes.com/threat-analysis/2016/07/untangling-kovter/
Gracias a las técnicas empleadas por Kovter, no es necesario colocar ningún ejecutable en el disco; por eso se conoce como “sin archivos”. […]
dispersos en varias capas, pero también ofuscados en cada etapa y que contienen trucos que ralentizan el proceso de análisis
Kovter usa una combinación de entradas de registro persistentes y PowerShell (otros a menudo usan o sugieren registros remotos, PS Remoting y/o consumidores de eventos WMI) para realizar esta persistencia sin archivos. Algunos blogs han hablado extensamente sobre las ubicaciones de persistencia de inicio automático basadas en estos servicios, ejecuciones automáticas, etc.
En meterpreter, uno puede acceder a técnicas sin archivos (como se describe en la publicación de blog de Justin Warner en la parte superior de esta respuesta) a través de las técnicas PowerPick y ReflectivePick de PowerShell, que no requieren ejecución (o lista de procesos visible) de ningún powershell.exe. Darkoperator cubre la extensión de powershell y la capacidad de usar el powershell_import
Comando para extraer una canalización de PowerShell. Luego se pueden usar las capacidades de persistencia de PowerSploit, pero es posible que no siempre estén claramente definidas. Por supuesto, en lugar de meterpreter, se podrían usar agentes de PowerShellEmpire para entregar el módulo de persistencia/elevado/wmi. Lo que estoy sugiriendo, y que probablemente resolverá su problema directamente, es obtener Persistence.psm1 para realizar la suscripción de eventos permanentes de WMI a través de powershell_import
mientras está dentro de meterpreter. Esto proporcionará las omisiones de AV, IPS y firewall/UTM que necesitará, pero puede ser fácil de limpiar si los respondedores buscan múltiples instancias de esta técnica.
Lo que me lleva al siguiente tema de conversación al que alude Justin Warner. Cada máquina contra la que desea persistir en una red debe tener una técnica de persistencia diferente (algunos quizás ninguna estrategia en absoluto; por ejemplo, los servidores con un alto tiempo de actividad pueden tener puertas traseras residentes en la memoria durante meses, tal vez años a la vez). A menudo, puede usar la infraestructura de administración del sistema contra el objetivo, aprovechándola para el mal en lugar del bien, por así decirlo. Hay formas de controlar los controladores COM, WSUS, AD GPO, BITSadmin, DSC, SCCM y muchos otros paquetes y características para mantener la persistencia.
Además, la persistencia del sistema puede ser completamente diferente a los transportes confiables. Le recomiendo que consulte la documentación de Meterpreter:
- https://github.com/rapid7/metasploit-framework/wiki/Meterpreter-Reliable-Network-Communication
- https://github.com/rapid7/metasploit-framework/wiki/Meterpreter-Transport-Control
Debes entender el transport
arquitectura para mantener una conectividad de red confiable. Sin embargo, una de las mejores formas de garantizar la confiabilidad de la red que no cubre lo anterior es combinar transport
con Metasploit AutoRunScript, como se cubre en esta otra respuesta para que AutoRunScript funcione en el contexto de meterpreter. mubix cubre los transportes con más detalle en este minuto de metasploit de Hak5.
Supongo que estás hablando de Windows como sistema de destino. En ese caso, para la mayoría de los sistemas operativos Windows modernos, debe pensar en powershell e inyectar cargas útiles de meterpreter en los procesos en ejecución. Eso generalmente pasará por alto el antivirus. Hay muchos scripts útiles para eso en el marco de trabajo de powersploit. Echa un vistazo a este blog para ver un par de ejemplos de lo que tienes que hacer en la práctica.
Si entiendes que ha resultado provechoso este post, sería de mucha ayuda si lo compartieras con otros entusiastas de la programación y nos ayudes a difundir este contenido.