
Analisar logs do Citrix NetScaler para verificar sinais de exploração da CVE-2023-4966.
Analisa os logs do Citrix NetScaler para verificar sinais de exploração do CVE-2023-4966
Escrito por Otmar Lendl.
./citrix-anomaly.pl [-d] [-v] [-h] [-p file] [-a X] [logfiles]
This script parse citrix netscale syslog files and looks for session
reconnects that might be the result of a CVE-2023-4966 exploitation.
Parameters:
-d Debug
-v Verbose
-h This help
-a Set aggregation type. Possible values
b (default) simple /24 aggregation
a aggregate by ASN
p aggregate to routing table prefix
-p path to a routing table dump. Syntax: "prefix asn" per line
O script precisa de Net::CIDR e Net::Patricia (você vai querer usar o recurso -p), que podem não estar instalados em todos os servidores Linux. Em sistemas baseados em Debian, use
sudo apt install libnet-cidr-perl libnet-patricia-perl
para instalá-los.
Um arquivo com a tabela de roteamento global de 2023-10-27 está incluído neste repositório. Ele precisa ser descompactado.
Os prefixos das linhas de log podem variar entre diferentes sistemas / daemons de log. O código agora tenta ignorar os prefixos de linha e faz a correspondência com os timestamps fornecidos pela Citrix. (que aparentemente podem variar conforme as configurações de localidade.)
O CVE-2023-4966 vaza cookies de sessão, o que permite que atacantes se reconectem a sessões Citrix existentes.
Este script procura por linhas de syslog "SSLVPN LOGIN" e "SSLVPN TCPCONNSTAT" (pré-filtrar com grep por essas linhas faz sentido) e verifica quais sessões não têm uma linha LOGIN correspondente ou mudam o endereço IP do cliente ao longo de sua vida útil.
O script usa logins iniciais bem-sucedidos como sinal de que uma rede de origem é benigna. Se houver apenas reconexões de uma rede de origem, mas nenhuma conexão inicial vinda dela, então essas reconexões são suspeitas. Isso não é feito apenas com base no endereço IP puro; há três esquemas de agregação implementados:
Os dois últimos algoritmos precisam de um arquivo que associe prefixos a ASNs. Um exemplo é fornecido neste repositório.