시스템(Windows)

Pass the Hash / Pass the Ticket 에 대해 알아보겠습니다.

forward error correction Circle 2022. 11. 27. 08:14
반응형

 공격자가 공격 대상의 시스템에 접속할 수 있는 자격증명 이란 어떤 것이고 공격자가 시스템의 취약점을 통해 어떻게 자격증명을 획득하게 되는지 알아보겠습니다. 그 중 윈도우와 리눅스 중 윈도우에 대해 조금 더 알아보겠습니다.

1. 자격증명

대상 시스템에서 인가된 사용자인지를 확인하는 것을 자격증명이라고 합니다. 즉, 자격증명을 탈취 혹은 획득하게 된다는 것은 침입할려고 하는 시스템에 접속 할 수 있는 계정 정보를 획득한 것입니다.

우리가 윈도우 서버나, 리눅스 서버에 접속할 기본 계정이 Windows 에서는 Administrator, 리눅스 에서는 root와 같이 디폴트 계정일수도 있습니다.

그래서 취약점 점검을 할 경우 기본 계정의 패스워드 길이, 복잡성, 윈도우는 계정 변경, 리눅스는 루트 계정 SSH 에서 바로 접속 불가 같은 것들이 있습니다.

1) 자격 증명 획득 / 탈취

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

위의 말씀드린 것을 공격자가 공격 대상 시스템 접속 순서로 정리하자면 다음과 같습니다.

1. 공격 대상 시스템의 일반계정, 관리자 계정과 같은 자격 증명을 획득

2. 획득한 자격 증명을 사용하여 일반 계정일 경우 권한상승, 관리자 계정일 경우 네트워크 대역의 호스트로 접근 이라는 2단계로 Lateral Movement가 일어납니다.

2) 자격 증명 획득 방법

자격 증명 획득하는 방법에 대하여 자세히 알아보도록 하곘습니다.

자격 증명은 일반적으로 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

해당 경로의 레지스트리 기본 값은 다음과 같습니다.

UseLogonCredential 이라는 값은 존재하지 않는 값이기 떄문에 해당 값이 만들어져 있고, 1로 설정이 되어있다면 공격자에 의해 만들어졌을 가능성이 존재합니다.

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

자격증명을 취득하는 방법으로는 2가지의 대표적인 방법이 있습니다.

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 이벤트 ID 4648 : 명시적 자격 증명을 사용하여 로그온을 시도했습니다. ] > [도메인 컨트롤러 이벤트 - 4776 : 도메인 컨트롤러가 계정의 자격 증명을 확인하려고했습니다. ] > [도메인 컨트롤러 이벤트- 4776] > [감염된 PC 이벤트 ID- 4624 : 계정이 성공적으로 로그온되었습니다. ] > [감염된 PC 이벤트 ID - 4634/4647 : 계정이 / 로그 오프되었습니다. ] 순으로 기록이 되게 됩니다.

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

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

B) 워크스테이션 이름(서버의 호스트네임)이 아주 의심스럽다.

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

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

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

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

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

2) PSEXEC / PAEXEC 그리고 Proxy Tools

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

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

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

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

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

#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를 탐지하기 위하여 분석가가 확인할 수 있는 아티팩트는 prefetch, shimcache(메모리에만 있는 shimcache포함), 메모리, 레지스트리(RDP관련 HKLM\software\microsoft\terminal server client\default) , 계정 생성시각이 있다.

반응형