본문 바로가기

Cybersecurity

내부 전파(Lateral Movement)와 이벤트 로그 1편

개요

Lateral Movement - 측면전달? 내부 전파? 공격자가 내부 시스템을 건너가며 피해를 확산시키는 현상. 공격자가 공격 목표(내부 정보 유출, 전사 시스템 감염 등)원하는 시스템이 나올때까지 단계별로 시스템을 지나오며

1. 타겟 스캔 (정찰)

2. 정보 유출

3. 지속성을 유지하기 위하여 백도어 및 침입 경로 생성

등의 행위를 한다.

 

이번 글에서는 공격자의 내부전파 모델과 행위 등을 정리해 보고자 한다.

 

들어가기 전에

내부 전파 모델에 대하여 생각해 보자.

1. 공격자는 취약한 침해 벡터로 해당 시스템을 장악한다.

-물론 다양한 사례가 있으나 일반적으로는 외부에서 접근이 가능한 웹서버가 최초 침해 벡터로 사용된다. (진입 + 권한상승)

-혹은 스피어 피싱 목적의 메일의 첨부파일을 열어 악성코드 및 취약한 시스템이 초기 침해 벡터가 될 수 있다.

 

2. 권한 상승

- 취약점을 이용하여 권한상승을 한다.

- 혹은 시스템 장악 과정에서 로그인한 계정이 관리자 권한을 가지고 있다.

 

3. NT-Hashses 를 탈취하거나 TGT 티켓을 탈취.

-공격자는 내부 이동을 위하여 Domain Controll 서버를 찾는다.

-DC 가 없는 경우는 적절한 pivot point(베이스 캠프 같은 느낌?)를 찾아서 전파의 꿈을 꾼다. 혹은 DC에서 전파한 후에도 베이스 캠프를 따로 두는 경우도 있다.

 

4. 원하는 시스템에 접근하여 정보를 빼돌리거나 시스템을 파괴한다.

 

그림 참조 : http://cert.europa.eu/static/WhitePapers/CERT-EU_SWP_17-002_Lateral_Movements.pdf

 

 

자격 증명 획득

공격자는 최초 침입 시스템에서 권한 상승을 시도한다. 공격자는 최초 침입한 시스템에서 시스템의 취약점을 이용하여 권한을 획득하고 해당 시스템에 자격 증명을 획득하게 된다. 이렇게 자격 증명을 획득한 공격자는 최초 침입 시스템과 연결된 또 다른 호스트로 연결을 취하려고 한다.

즉, 위치한 호스트에서 자격 증명을 획득 -> 획득한 자격 증명을 이용하여 인접한 네트워크의 호스트로 접근 이라는 2단계로 Lateral Movement가 일어난다.


이번 탭에서는 자격 증명 획득에 대하여 자세히 알아보도록 하자.

자격 증명은 일반적으로 Windows에서 내부에 저장되어 있거나, 메모리에 남아있다. NTLM Hash, Kerberos가 대표적으로 공격자가 노리는 자격 증명이다. 사용자가 로그온하면 다양한 자격 증명이 생성되어 메모리의 로컬 보안 시스템 서비스인 LSASS에 저장된다. 이것은 리소스 메모리가 요청 될 때마다 시스템 사용자에게 메시지가 표시되지 않도록 SSO(Single Sign-On)을 가능하게 한다.

 

이러한 자격 증명에 사용되는 데이터는 위에서 설명한 NTLM 해시, Kerberos 티켓이다. 이외에도 LM 암호해시(Vista이전 버전에 Windows에서 사용하던 암호해시)와 일반 텍스트암호가 있다. 기본적으로 Windows Vista 이후의 시스템에서는 LM 암호 해시, 일반 텍스트 암호는 남지 않는다. 하지만 일반 텍스트 암호가 남도록 공격자가 설정할 수 있는데 레지스트리 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential 이다. 해당 레지스트리에 DWORD값이 1로 설정되어 있다면 이는 공격자에 의해 변형되어 있을 가능성이 존재한다. 해당 키값이 존재하고 1로 되어있다면 침해 벡터로 생각해볼 수 있다.


KB2871997패치 이후 아래 그림과 같이 해당 키값이 0으로 존재(Windows7 /2008R2)하거나 존재하지 않는 것이 기본값(Windows 8.1/2012R2/10)으로 존재하여야 한다. 기본 값과 다르다면 침해 흔적으로도 생각해 볼 수 있다.

 

아래 그림은 윈도우 계정 별로 메모리에 남아있는 자격 증명을 나타낸 것이다.

그림 참조 : https://adsecurity.org/?page_id=1821 원본 : Mimikatz 개발자 Benjamin Delpy

 


Lateral Movement에 쓰이는 도구 및 방법

#1 Pass the Hash / Pass the Ticket

공격자는 mimikatz라고 불리우는 툴을 이용하여 자격 증명을 훔친다. 이를 이용하여 공격자는 Pass the Hash 혹은 Pass the Ticket 방법을 이용하여 인근 네트워크에 원격 엑세스를 시도한다. (L2로 이루어진 네트워크 단에서는 이러한 공격을 탐지할 수 없다.)

 

Pass the Hash : 공격자가 탈취한 NTLM 및 / 또는 LanMan 해시를 사용하여 원격 서버 / 서비스를 인증하는 공격 기술

Pass the Ticket : NT 해시 대신 Kerberos 티켓을 사용하여 원격 서버 / 서비스에 인증하는 공격 기술

 

Pass-the-Hash

Pass-the-Ticket

자격 증명을 얻으려면

관리자 권한 필요

관리자 권한 필요

자격 증명을 다시 사용하려면

관리자 권한 필요

권한 필요 없음

파괴력?

정책에 따라 다름

정책에 따라 다름

 

사용자가 패스워드를 바꿨을때

공격불가

공격가능

 

자격 증명을 획득한 공격자는 원격데스크톱 서비스를 이용하여 다른 네트워크로 이동하게 된다. 문서 초기에 소개했던 바와 같이 타겟 시스템까지 이러한 방식을 반복하며 이동하게된다.

 

#1 탐지 방안
Pass the Hash 및 Pass the Ticket은 이벤트 로그에서 탐지가 가능하다.

Pass the Hash 는 네트워크내에서 정상적인 동작을 보이기 때문에 탐지가 어렵다. 네트워크에서 탐지가 어렵기 때문에 엔드포인트 단에서 실패 및 성공이력을 통하여 내부 전파 시도를 확인할 수 있다.

 

이벤트로그 - 보안에서 Event ID = 4624는 로그인 성공을 나타내며 로그온 유형을 통해 로그인 방법에 대하여 설명한다. 이중 네트워크를 통한 로그온 유형 3번은 Laternal Movement 판단에 있어 중요하다. 실제로 공격자가 네트워크와 훔친 자격증명을 통하여 로그인(RDP)에 성공하였다면 로그인 유형 3번과 로그인 유형 10번이 차례대로 남게된다. 또한 원격지의 IP와 계정명이 남기 때문에 역으로 공격의 전파를 추적할 수도 있다.

 

http://cert.europa.eu/static/WhitePapers/CERT-EU_SWP_17-002_Lateral_Movements.pdf 문서에는 공격에 따라 Event ID가 생성되는 그림을 소개하였다.

[공격PC - 4648 : 명시 적 자격 증명을 사용하여 로그온을 시도했습니다. ] > [DC - 4677 : 도메인 컨트롤러가 계정의 자격 증명을 확인하려고했습니다. ] > [DC- 4677] > [피해PC- 4624 : 계정이 성공적으로 로그온되었습니다. ] > [피해PC- 4634/4647 : 계정이 / 로그 오프되었습니다. ] 순으로 기록이 된다.

그림참조 : http://cert.europa.eu/static/WhitePapers/CERT-EU_SWP_17-002_Lateral_Movements.pdf

 

그림참조 : http://cert.europa.eu/static/WhitePapers/CERT-EU_SWP_17-002_Lateral_Movements.pdf

 

아래는 피해PC에 EventID: 4624, 로그온 유형 3번으로 남는 이벤트 로그에서 확인할 수 있는 Pass the Hash 공격의 의심 증상이다.

#1.1. 보안 ID가 Null sid이다. 모든 공격이 이러한 형태를 보이지는 않으나 정상 접근에서는 호스트의 ID가 뜬다.

그림 참조 : https://blog.binarydefense.com/reliably-detecting-pass-the-hash-through-event-log-analysis

 

#1.2. 워크스테이션 이름이 아주 의심스럽다.

그림 참조 : https://blog.binarydefense.com/reliably-detecting-pass-the-hash-through-event-log-analysis

 

#1.3. 로그온 프로세스가 NtLmSsp이며 키의 값이 0이다. 설정에 따라 다르지만 정상접근에서는 키의 값이 0이 아니다. (설정에 따라 다르지만 기본적으로 128 임)

그림 참조 : https://blog.binarydefense.com/reliably-detecting-pass-the-hash-through-event-log-analysis

 

 

Pass the ticket의 공격 또한 이벤트 로그에서 확인이 가능하다.

DC에 남는 첫번째 이벤트인 4768은 Kerberos TGT 티켓을 도메인 컨트롤러에 요청하기 위해 생성된다. (표시되지 않을 수도 있음)

이후 4769 이벤트는 Kerberos 서비스 티켓이 요청.

피해자 PC에 남는 이벤트는 Pass the Hash와 동일하다. (여기서 실패한 로그인 4625가 있다면 원격지 IP를 통해 공격이 어디서 시도 되었는지 추적이 가능하다.)

그림참조 : http://cert.europa.eu/static/WhitePapers/CERT-EU_SWP_17-002_Lateral_Movements.pdf

 

그림참조 : http://cert.europa.eu/static/WhitePapers/CERT-EU_SWP_17-002_Lateral_Movements.pdf

 

 

또한, 과거 골드티켓 관련 글을 참고해주시길 .. http://two2sh.tistory.com/7?category=656173

 

#2 PSEXEC / PAEXEC 그리고 Proxy Tools

공격자는 획득한 자격을 이용하여 net명령어 혹은 mstsc를 이용하여 다른 호스트로 이동이 가능하다. 그 중에 내가 직접 분석을 경험한 psexec를 통한 proxy tools 사용으로 리버스 커넥션을 한 사례에 대한 연구이다.

Lateral Movement는 단시간에 종료되는 공격이 아니기 때문에 공격자는 들키기 쉬운 정방향 공격보다는 역방향을 이용하는 것으로 추정된다.

공격자는 Psexec와 같은 원격 실행 도구를 이용하여 Proxy Tool을 원격에서 실행시키고 리버스 커넥션 통신을 한다. 물론 원격지에 있는 cmd 창을 열기 위해서도 사용된다.

 

PsExec는 Windows에서 제공하는 Sysinternals suite라는 도구모음에 포함된 원격실행프로그램이다.

해당 툴의 기능은 ""원격지""에 있는 시스템에 파일을 ""복사""해주고 ""실행"" 해준다.

 

즉 다른시스템에 공격자에 입맛에 맞는 프로그램을 던지고 실행시킬 수 있는 훌륭하고 올바른 프로그램이다. 또한, 해당 툴은 Windows에서 공식(?)으로 패포하는 믿을 만한 프로그램이다. (백신 탐지 여부는 실험을 해봐야겠지만 하지 않는 것으로 알고있음) 바토 결과는 다음과 같다.

 

그림 참조 : virustotal.com

 

PAEXEC는 오픈 소스 원격 실행 툴로 역시 동일하게 원격지에 있는 시스템에 파일을 복사하고 실행하는 역할을 한다. 하지만 오픈 소스이다 보니 추가된 기능이 더 많다.

 

 

#2 탐지 방안

PSexec / PaExec 를 사용하면 나타나는 증상은 기본적으로 파일 실행과 관련된 아티팩트인 prefetch, shimcache(shimcachemem), 혹은 프로세스 둥둥 떠있을 수도 있으며 메모리상에서 스트링으로 남아있을 수도 있다. 확인하고자하는 시스템이 만일 서버라면 메모리를 꼭 확보하자.

 

다시 이벤트로그로 돌아와서 PSEXEC 혹은 PAEXEC를 사용한다면 다음과 같은 증상을 확인할 수 있다.

 

출발지(공격시스템)

목적지(피해시스템)

프로그램(프로세스명)

PsExec.exe / PaExec.exe

PSEXESVC.exe / PAEXEC-HOST-PID.exe

흔적

파일 실행 흔적(prefetch, shimcache 등)

Eventlog-System Event ID: 7045

파일 실행 흔적(prefetch, shimcache 등)

command 아티팩트

 

일반적으로 목적지에서 확인을 주로 하게 될테니, 목적지에 있는 EventLog와 prefetch, shimcache를 확인하고 메모리에서 남아있는 String을 통해 공격자의 행위를 파악할 수 있다. 또한, 사용하지 않는 계정이 생성된 흔적을 찾는것도 Laternal movement 탐지에 좋다.

 

 

결론

Laternal Movement를 완벽하게 이해하고자 글을 시작하였으나 윈도우 자격 증명의 세계는 너무 알게 많다.

마지막으로 Laternal Movement를 탐지하기 위하여 분석가가 확인할 수 있는 아티팩트는 prefetch, shimcache(메모리에만 있는 shimcache포함), 메모리, 레지스트리(RDP관련 HKLM\software\microsoft\terminal server client\default) , 계정 생성시각이 있다.

Laternal movement에 대한 탐지와 관련한 고견을 부탁드립니다. 감사합니다.