Skip to content

UMBCCyberDawgs/maccdc26

Repository files navigation

Cool stuff:

#!/bin/bash
# Detect outbound SSH connections (zero-day exfil indicator)

SSH_PORTS="22"
STATE="/var/tmp/ssh_outbound.state"
WHITELIST="/etc/ssh_outbound.whitelist"   # lines: CIDR:PORT or IP:PORT or CIDR:*

touch "$STATE"

ss -H -pt state established | while read -r line; do
  laddr=$(awk '{print $4}' <<<"$line")
  raddr=$(awk '{print $5}' <<<"$line")
  proc=$(sed -n 's/.*users:(("\([^"]*\)".*/\1/p' <<<"$line")
  pid=$(sed -n 's/.*pid=\([0-9]*\).*/\1/p' <<<"$line")

  r_ip=${raddr%:*}
  r_port=${raddr##*:}

  # flag if remote port is SSH or process is ssh
  [[ "$SSH_PORTS" == *"$r_port"* || "$proc" == "ssh" ]] || continue

  # whitelist check
  if [[ -f "$WHITELIST" ]] && grep -qE "^($r_ip|.*/.*):($r_port|\*)$" "$WHITELIST"; then
    continue
  fi

  key="$pid-$r_ip-$r_port"
  grep -q "$key" "$STATE" && continue
  echo "$key" >> "$STATE"

  user=$(ps -o user= -p "$pid" 2>/dev/null)
  exe=$(readlink -f /proc/$pid/exe 2>/dev/null)
  cmd=$(tr '\0' ' ' </proc/$pid/cmdline 2>/dev/null)

  logger -p auth.warning \
    "Outbound SSH detected dst=$r_ip:$r_port pid=$pid user=$user exe=$exe cmd=\"$cmd\""
done

About

UMBC Tools for MACCDC 26

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors