Secuve TOS

다운로드 3
업데이트 2025. 11. 25.

SSH 외부 연결

ssh 명령어를 이용하여 외부 SSH 서버 접속 시 탐지합니다.

쿼리

내부에서 외부로의 SSH 접속 시도를 탐지합니다. 정규표현식으로 목적지 사용자(dst_user)와 호스트(dst_host)를 추출하고, matchnet을 이용하여 출발지는 내부, 목적지는 외부인 아웃바운드 SSH 접속만 필터링합니다.

| search contains(cmd_line, "ssh")
| search match(lower(cmd_line), "\\bssh\\s")
| eval src_ip = host_ip, src_host = hostname
| rex field=cmd_line "ssh\s+(?<dst_user>\w+)@(?<dst_host>[a-zA-Z0-9\.\-]+)"
| eval dst_ip = ip(dst_host)
| search isnull(src_host) or matchnet("bb994ca4-1471-4b91-89f2-99a61bd529b5", src_ip) or ( isnull(src_ip) and match(src_host, "^[a-zA-Z0-9\\-]+$|^[a-zA-Z0-9\\-\\.]+\\.local")) 
| search not(isnull(dst_host) or matchnet("bb994ca4-1471-4b91-89f2-99a61bd529b5", dst_ip) or ( isnull(dst_ip) and match(dst_host, "^[a-zA-Z0-9\\-]+$|^[a-zA-Z0-9\\-\\.]+\\.local")))

참조 객체

  • 내부망 대역: bb994ca4-1471-4b91-89f2-99a61bd529b5

메시지

  • SSH 외부 연결: $host_ip ($hostname) ➜ $dst_host

출력 필드 순서

  • _log_time, client_ip, host_ip, hostname, src_user, src_ip, src_host, src_path, dst_user, dst_ip, dst_host, dst_path, log_type, cmd_line, cmd_line_raw, working_dir

위협 분석

  • 공격자가 내부 시스템에서 외부 C2(Command & Control) 서버로 SSH 터널링을 통해 통신을 시도할 수 있습니다.
  • SSH를 이용한 데이터 유출 시도일 수 있습니다.
  • 내부 침투 후 외부 공격 인프라로의 리버스 쉘 연결 시도일 수 있습니다.

오탐 유형

  • 업무상 정상적인 외부 서버 접속에서 탐지될 수 있습니다. 이 경우에는 예외 조건을 추가하여 오탐을 방지합니다.
    • 예시: 개발팀의 외부 Git 서버 접속, 클라우드 인프라(AWS, GCP 등) 관리 작업

대응 방안

  • 목적지 호스트(dst_host) 및 사용자(dst_user)의 정당성을 확인합니다.
  • 목적지 IP/도메인의 평판 조회 및 악성 여부를 확인합니다.
  • 해당 SSH 접속의 업무 연관성 및 승인 여부를 검토합니다.
  • 비인가 외부 접속 확인 시 출발지 시스템을 격리하고 침해 지표(IoC)를 수집합니다.

MITRE ATT&CK