Solution de Trachinus pour ja4a4a4do0o0ore SSH !

misc

30 avril 2025

Pour résoudre ce challenge, j’ai d’abord ouvert le .pcap dans Wireshark.

Tout le trafic SSH passait sur le port 2222, donc je l’ai redéfini comme SSH via :

Analyser → Décoder comme → Champ : TCP Port → Valeur : 2222 → Protocole : SSH

Ensuite, j’ai cherché une session SSH interactive (c’est-à-dire humaine, il y aura donc un temps entre les paquets, le temps de rédiger les commandes) avec ce script qui met le port 2222 en SSH et vérfie s’il y a un temps supérieur à 30sec entre les paquets des sessions:

#!/bin/bash

PCAP_FILE="$1"

if [ -z "$PCAP_FILE" ]; then
  echo "Usage: $0 file.pcap"
  exit 1
fi

echo "[*] Analyzing $PCAP_FILE on port 2222 as SSH..."

# Get all TCP packets on port 2222 and extract: time, tcp.stream, ip.src, ip.dst
# Force tshark to decode port 2222 as SSH
tshark -r "$PCAP_FILE" -d tcp.port==2222,ssh -Y "tcp.port == 2222" \
  -T fields -e frame.time_relative -e tcp.stream -e ip.src -e ip.dst \
| sort -k2,2n -k1,1n \
| awk '
BEGIN {
  prev_stream = -1;
}
{
  time = $1;
  stream = $2;
  src = $3;
  dst = $4;

  if (stream != prev_stream) {
    if (prev_stream != -1 && max_delta > 30) {
      printf("[!] Suspicious stream %s: max idle = %.2f sec between %s and %s\n", prev_stream, max_delta, prev_src, prev_dst);
    }
    prev_stream = stream;
    prev_time = time;
    max_delta = 0;
    prev_src = src;
    prev_dst = dst;
    next;
  }

  delta = time - prev_time;
  if (delta > max_delta) {
    max_delta = delta;
  }
  prev_time = time;
}
END {
  if (prev_stream != -1 && max_delta > 30) {
    printf("[!] Suspicious stream %s: max idle = %.2f sec between %s and %s\n", prev_stream, max_delta, prev_src, prev_dst);
  }
}'

En lançant ce script :

chmod +x detect.sh
./detect.sh ja4a4a4do0o0re-ssh.pcap

Seul le stream 100 entre 172.28.1.23 et 172.28.1.5 ressortait du lot avec un idle time de 103sec. Tous les autres, bien que encore plus longs, se trouvaient entre 129sec et 131sec, cela semblait donc normal.

Je vais donc chercher les cookies dans Wireshark. J’applique ce filtre :

ip.addr == 172.28.1.23 && ssh

J’ai extrait les cookies (SSH Version 2 → Key Exchange Init → Cookie)

Client : f24e0ff9dc4c1c005d5f3aaac4853575

Serveur : 90c7d30853db0f93bc8dad28c7b62b4d

FLAG : FCSC{f24e0ff9dc4c1c005d5f3aaac4853575-90c7d30853db0f93bc8dad28c7b62b4d}