
AD 및 Azure AD 인증 로그를 수집 및 분석하여 그래프 기반 이상 탐지를 통해 측면 이동 공격을 탐지하고, 대화형 타임라인과 GIF로 의심스러운 패턴을 시각화합니다.
측면 이동 분석기(LATMA)는 도메인 및 Azure AD 환경에서 인증 로그를 수집하고 잠재적인 측면 이동 공격 및 의심스러운 활동을 검색합니다. 측면 이동은 AD 환경 내에서 또는 클라우드와 온프레미스 간에 발생할 수 있습니다. 이 도구는 측면 이동 패턴을 보여주는 다이어그램으로 결과를 시각화합니다. 이 도구는 로그를 수집하는 모듈과 분석하는 모듈, 두 가지 모듈로 구성됩니다. 각 모듈을 별도로 실행할 수 있으며, 이벤트 로그 수집기는 Active Directory 도메인 환경의 Windows 머신에서 python 3.8 이상으로 실행해야 합니다. 분석기는 Linux 머신과 Windows 머신에서 모두 실행할 수 있습니다.
이벤트 로그 수집기에는 두 가지 기능이 있습니다. 도메인 컨트롤러에서 성공적인 NTLM 인증 로그를 스캔하고, 엔드포인트에서 성공적인 Kerberos 인증 로그를 스캔하며, Azure AD에서 로그인 로그를 수집합니다. AD 환경에서 로그를 수집하려면 도메인 컨트롤러와 클라이언트에 대한 LDAP/S 포트 389 및 636과 RPC 포트 135 액세스가 필요합니다. 또한 도메인 관리자 권한이나 이벤트 로그 읽기 그룹의 사용자 또는 이에 준하는 권한이 필요합니다. 이는 모든 엔드포인트와 도메인 컨트롤러에서 이벤트 로그를 가져오는 데 필요합니다. 로그인 수집을 위해서는 Azure-AD 환경에 애플리케이션이 있어야 하며 구성 파일에 관련 정보를 제공해야 합니다. 로그인 수집에 사용되는 사용자는 2FA가 설정되어 있지 않은지 확인하세요.
수집기는 도메인 컨트롤러의 이벤트 8004에서 NTLM 로그를, 클라이언트의 이벤트 4648에서 Kerberos 로그를 수집합니다. 출력으로 사용 가능한 모든 인증 트래픽이 포함된 csv 쉼표로 구분된 형식의 파일을 생성합니다. 출력에는 소스 호스트, 대상, 사용자 이름, 인증 유형, SPN 및 %Y/%m/%d %H:%M 형식의 타임스탬프 필드가 포함됩니다. 수집기는 환경 전반에 걸쳐 이벤트 뷰어 권한이 있는 유효한 사용자의 자격 증명이 필요하며 각 프로토콜에 대한 특정 로그를 쿼리합니다.
그룹 정책을 사용하여 환경 전반에서 Kerberos 및 NTLM 프로토콜이 감사되는지 확인합니다:
수집기는 하이브리드 또는 Azure AD 가입 장치에서만 성공적인 로그인을 수집합니다. 이러한 로그인은 Azure AD 환경의 자산에서 온프레미스로 또는 그 반대로의 성공적인 이동을 나타냅니다. 수집기는 데이터를 수집하기 위해 다음 정보가 필요합니다:
분석기는 수집기의 출력 구조에 지정된 형식으로 인증 데이터가 포함된 스프레드시트를 입력으로 받습니다. 측면 이동 분석기 알고리즘으로 의심스러운 활동을 검색하고 측면 이동의 추가 IoC도 감지합니다. 인증 소스 및 대상은 IP 주소가 아닌 넷바이오스 이름으로 공식화되어야 합니다.
LATMA는 인증 요청 배치를 받아 의심스러운 측면 이동 공격을 발견하면 경고를 보냅니다. 다음을 정의합니다:
인증 그래프: 환경 내 인증 트래픽에 대한 정보를 포함하는 방향성 그래프. 그래프의 노드는 컴퓨터이고, 간선은 컴퓨터 간의 인증입니다. 그래프 간선에는 프로토콜 유형, 인증 날짜 및 요청을 보낸 계정이라는 속성이 있습니다. 그래프 노드는 해당 컴퓨터에 대한 정보를 포함하며, 자세한 내용은 아래에 설명됩니다.
측면 이동 그래프: 인증 그래프의 하위 그래프로, 공격자의 이동을 나타냅니다. 측면 이동 그래프는 항상 하위 그래프의 경로가 아닙니다. 일부 공격에서는 공격자가 여러 다른 방향으로 이동합니다.
경고: 알고리즘이 측면 이동 그래프의 일부라고 의심하는 하위 그래프입니다.
LATMA는 실행 중에 여러 작업을 수행합니다:
정보 수집: LATMA는 사용자와 머신의 정상적인 동작을 모니터링하고 특성화합니다. 학습은 나중에 어떤 인증 요청이 정상적인 동작에서 벗어나 측면 이동 공격에 연루될 수 있는지 결정하는 데 사용됩니다. 3주간의 학습 기간 동안 LATMA는 어떠한 경고도 발생시키지 않고 환경만 학습합니다. 학습은 이 3주 후에도 계속됩니다.
인증 그래프 구축: 학습 기간 후 모든 관련 인증이 인증 그래프에 추가됩니다. 관련 인증만 필터링하는 것이 중요합니다. 그렇지 않으면 그래프가 보유하는 간선 수가 너무 많아질 수 있습니다. "rpc", "rpcss" 및 "termsrv" 서비스가 있는 NTLM 및 Kerberos 프로토콜 유형으로 필터링합니다.
인증을 그래프에 추가하면 경고 프로세스가 트리거될 수 있습니다. 일반적으로 새 간선은 새 경고를 생성하거나, 기존 경고에 합류하거나, 두 경고를 병합할 수 있습니다.
LATMA가 모니터링하는 모든 인증 요청은 학습에 사용되며 전용 데이터 구조에 저장됩니다. 먼저, 싱크와 허브를 식별합니다. 싱크는 회사 포털이나 Exchange 서버와 같이 많은 (최소 50개) 다른 계정이 액세스하는 머신으로 정의합니다. 허브는 프록시 및 VPN과 같이 많은 (최소 20개) 다른 계정이 인증하는 머신으로 정의합니다. 싱크로의 인증 또는 허브로부터의 인증은 양성으로 간주되므로 인증 그래프에서 제거됩니다.
기본 분류 외에도 LATMA는 계정과 해당 계정이 자주 인증하는 머신을 매칭합니다. 계정이 3주 기간 동안 최소 3일 동안 머신에서 인증하는 경우, 이 계정이 해당 머신과 일치한다는 의미이며, 이 계정이 해당 머신에서 수행하는 모든 인증은 양성으로 간주되어 인증 그래프에서 제거됩니다.
측면 이동 IoC는 다음과 같습니다:
화이트 케인 – 사용자 계정이 단일 머신에서 비교적 짧은 시간 내에 여러 머신으로 인증하는 경우.
브리지 – 사용자 계정 X가 머신 A에서 머신 B로 인증한 후, 머신 B에서 머신 C로 인증하는 경우. 이 IoC는 공격자가 초기 거점(A)에서 공격 목표에 더 잘 부합하는 대상 머신으로 실제로 전진하고 있음을 나타냅니다.
전환 브리지 – 사용자 계정 X가 머신 A에서 머신 B로 인증한 후, 사용자 계정 Y가 머신 B에서 머신 C로 인증하는 경우. 이 IoC는 공격자가 경로를 따라 추가 계정을 발견 및 손상시키고 새 계정을 사용하여 전진하는 것을 나타냅니다(일반적인 예: 계정 X는 표준 도메인 사용자이고 계정 Y는 관리자 사용자).
가중치 이동 – 머신 A에서 머신 {B1,…,Bn}으로의 화이트 케인(위 참조) 후, 머신 Bx에서 머신 {C1,…,Cn}으로의 또 다른 화이트 케인이 이어지는 경우. 이 IoC는 공격자가 머신 B가 공격 목적에 더 잘 부합한다고 판단하고 이후 머신 B를 추가 검색의 소스로 사용함을 나타낼 수 있습니다.
블래스트 – 사용자 계정 X가 머신 A에서 매우 짧은 시간 내에 여러 머신으로 인증하는 경우. 일반적인 예로는 공격자가 대량의 머신에 동시에 랜섬웨어를 설치/실행하는 경우입니다.
출력:
분석기는 여러 개의 다른 파일을 출력합니다.
사용법
수집기
필수 인수:
바이너리 사용법 명령 프롬프트를 열고 바이너리 폴더로 이동합니다. 위에 지정된 인수로 실행 파일을 실행합니다.
예제 파일에는 실제 환경의 여러 샘플(일부는 측면 이동 공격 포함, 일부는 포함하지 않음)이 있으며, 분석기에 입력으로 제공할 수 있습니다.
사용 예시