
Herramientas de Reconocimiento de Ataques Dirigidos en C#
Este es un ensamblado .NET personalizado que realiza una serie de actividades de reconocimiento situacional. Hay varios conjuntos de funcionalidades actuales:
No tenía ni idea de que GhostPack se estaba desarrollando cuando escribí esto; terminamos publicando nuestras herramientas más o menos al mismo tiempo. La realidad es que GhostPack ahora tiene muchas más funcionalidades. Estoy eliminando la función PrivescCheck porque SharpUp cubre toda su funcionalidad y más.
El punto clave es que todo está implementado en .NET puro, por lo que no se necesita PowerShell.
Se configura y controla mediante parámetros de línea de comandos, lo que lo hace adecuado para usar con la directiva execute-assembly de Beacon.
Esto obtiene una serie de datos del host. Tenga en cuenta que puede haber MUCHA salida. Mostrará:
El verbo 'basic' debe pasarse en la línea de comandos, seguido de la verificación específica requerida. Si se pasa la palabra 'all' como segundo parámetro, se realizarán todas las verificaciones.
| Verificación | Descripción |
|---|---|
| env | Muestra todas las variables de entorno. |
| info | Muestra la dirección IP del host y el identificador de versión del SO mayor/menor. |
| mru | Busca en varias listas de "usados más recientemente". Actualmente incluyen el historial del cuadro Ejecutar y el MRU de archivos y rutas de Office para todas las versiones de Word, Excel, PowerPoint, Access, Publisher y Visio. También muestra la ubicación de la carpeta "Recientes" especial. |
| favourites | Muestra las URLs almacenadas en la carpeta de favoritos (básicamente los marcadores del usuario). Actualmente no admite subcarpetas; necesito arreglarlo. |
| mappeddrives | Muestra las unidades de red mapeadas de la sesión del usuario. Útil para encontrar rápidamente recursos compartidos centrales y directorios personales. Si está mapeado, probablemente contenga datos útiles. |
| installedapplications | Enumera las aplicaciones que se han instalado. Esto incluye aplicaciones instaladas como administrador (en la máquina local) Y aplicaciones instaladas por el usuario actual. Se listan en diferentes lugares del registro. |
| onedrive | Muestra información sobre OneDrive (incluyendo sitios de equipo/inquilinos que se sincronizan). |
Tenga en cuenta que si se usa 'all', se incluye automáticamente una 'proxycheck http://www.google.com'. Consulte la sección proxycheck para más detalles.
Realizar todas las verificaciones básicas: beacon> execute-assembly /tmp/Reconerator.exe o beacon> execute-assembly /tmp/Reconerator.exe basic all
Realizar solo la enumeración de MRU: beacon> execute-assembly /tmp/Reconerator.exe basic mru
Listar solo las unidades mapeadas: beacon> execute-assembly /tmp/Reconerator.exe basic mappeddrives
Razonablemente seguro. Esto consulta el registro del sistema; es poco probable que sea monitoreado.
Esto permite realizar una consulta LDAP. La forma más fácil de demostrarlo es mediante un ejemplo.
Esto mostrará todos los usuarios del dominio 'dc=stufus,dc=lan' con W2K8DC como controlador de dominio:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 0
Esto mostrará un máximo de 5 usuarios en el dominio 'dc=stufus,dc=lan' con W2K8DC como controlador de dominio:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 5
Esto mostrará todos los miembros del grupo de administradores del dominio en el dominio 'dc=stufus,dc=lan' con W2K8DC como controlador de dominio:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "(&(objectClass=group)(cn=Domain Admins))" 0
Esto mostrará todos los miembros de los grupos de administradores del dominio o administradores empresariales en el dominio 'dc=stufus,dc=lan' con W2012DC como controlador de dominio:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2012DC/dc=stufus,dc=lan" "(&(objectClass=group)(|(cn=Enterprise Admins)(cn=Domain Admins)))" 0
Esto generará tráfico de red hacia el controlador de dominio que especifique. Para evitar dudas, utiliza LDAP (a diferencia de RPC o similar).
Esto realiza una consulta DNS utilizando el servidor DNS del host.
Resolver www.google.com:
beacon> execute-assembly /tmp/Reconerator.exe resolvehost www.google.com
Esto generará una consulta DNS al controlador de dominio, pero es poco probable que algo lo marque como alerta debido al gran volumen de solicitudes DNS legítimas.
Esto permite interactuar con Windows Search (anteriormente Servicio de Indexación de Windows) lo que permite buscar archivos y carpetas interesantes (y su contenido) muy rápidamente. Los correos electrónicos suelen estar indexados, pero las carpetas de red no, por lo que puede no ser perfecto para buscar directorios personales de usuarios si están almacenados de forma remota. Sin embargo, es muy rápido.
La interfaz de Windows Search es similar a SQL; esta implementación permite, en efecto, especificar el contenido de la cláusula 'WHERE'. Es más fácil explicarlo con ejemplos, pero necesitará leer MSDN si quiere conocer todos los criterios posibles.
Encontrar todo lo que ha sido indexado y que contenga la palabra 'password' en alguna parte (es decir, busca en el contenido de archivos y correos electrónicos):
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "CONTAINS('password')"
Encontrar todo lo que ha sido indexado y que tenga la palabra 'stufus' en la ruta o nombre de archivo:
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemPathDisplay LIKE '%stufus%'"
Encontrar todo lo que ha sido indexado y que tenga la palabra 'stufus' en el nombre de archivo O contenga la palabra 'secret':
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemName LIKE '%stufus%' OR CONTAINS('secret')"