wonder

정보보안 스터디 - 23주차 5일 - DPAPI 개념과 악용 본문

Red Team/레드팀 개념

정보보안 스터디 - 23주차 5일 - DPAPI 개념과 악용

wonder12 2023. 3. 21. 03:21

☞ DPAPI(data protection API)란

DPAPI는 winAPI 윈도우내에서 지원되는 API집합(dpapi.dll)입니다.

 

대칭/비대칭 암호화는 어떤 방식이든 키가 주어지고 관리를 해야되는 것은 맞습니다.

개발자입장에서는 개발에 집중해야하는데 hash 알고리즘, encryption 방식, key manage 등 키를 관리하는 데 신경쓰는 것이 매우 어렵고 귀찮습니다.

그래서 hash 암호화에 대해 개발할 필요없이 그걸 도와주기 위해서 DPAPI이 나왔습니다.

암호화, 복호화와 관련된 다양한 winAPI를 제공해줍니다.

사용자체는 restAPI사용하여 운영체제에 부탁하면 response가 오는 등 쉽습니다.

 

DPAPI의 키를 다시한 번 암호화하며

키들을 마스터키 하나만 사용해서 안전하게 관리하도록합니다.

 

 

 

 DPAPI 악용

post-exploitation 즉 초기 접근이 완료되고 네트워크에 들어왔을 때

암호화된 크리덴셜 키에 대해서 뚫어서 정보를 확인할 수 있고, 내부 시스템에서 적용할 수 있는 exploit 공격입니다.

 

 

 

 DPAPI 사례

DPAPI로 암호화를 적용시키는 곳들이 많은데

 

- 보통 chrominum 기반으로된 브라우저에서 자동완성 기능을 많이 사용할겁니다.

거기서 저장된 방식이 DPAPI이며 키가 있습니다.

- 메일 클라이언트(outlook, thunderbird 등)을 아직도 많이 사용하는데 저장되어있는 키가 DPAPI방식이기 때문에 메일을 털어서 회사직원인 것처럼 악성파일을 보낼 수도 있겠네요.

- 공유폴더에 접속할 때도 사용자의 계정정보가 필요합니다.

- RDP > SSH, putty같이 외부 호스트에 접근할 때도 사용되는 계정정보가 있을 겁니다.

등 굉장히 사용처가 많습니다.

 

 

 

 

 

 

 시나리오

 

개인 1:1 상황이라면 로컬 관리자 권한을 얻으면 특정 유저의 마스터키를 얻게 됩니다. 그러면 대칭/비대칭 복호화할수가 있고 위의 사용처 계정을 복호화 할 수 있습니다.

 

 

회사와 기관의 도메인 관리자 상황이라면 

처음에는 호스트를 장악하고

Active Directory 관리 환경일텐데 호스트가 수만개자리잡아서 관리되고 있을겁니다. 각각 DPAPI 마스터키를 갖고 있습니다.

가장 무서운 점인데 domain controller로 가서 도메인 백업키를 얻었다면 모든 호스트의 계정 키를 얻어 모든 정보를 확보할 수 있다는 점입니다. 각각 호스트와 관련된 PC의 DPAPI를 또 탈취할 수 있는 거죠.

MFA 다중인증이 있더라도 cookie 세션을 탈취하면 6시간짜리 세션을 가져올 수 있습니다.

 

 

무엇보다 회사와 관련되서는 국세청로그인, 카톡로그인, RDP(자기집), 회사공공기관, 제3자 협력기관 등 많이 로그인해 있을 것입니다. 웹은 물론 협력기관의 솔루션, 애플리케이션 등을 사용하는 것도 포함됩니다. 

예를들어 RDP를 통해서 SaaS(세금관리, 돈지급, HR관리 등) 이용 등이 있습니다. 

웹브라우저에 있는 자동 계정들을 털어서 예를들어 카카오계정, 깃헙, 인트라웹, 외부 회사 관련 웹 서버 등에 로그인했을 때 해당 계정으로 접근할 수 있습니다.

그래서 몇몇의 회사에서는 보안상 회사 계정을 저장하지 말라고합니다.

CEO 및 임원, 개발자, sysadmin은 회사 컴퓨터지만 본인의 계정을 웹브라우저에 저장해두고 사용합니다. 

 

깃헙, 깃랩 개발자라면 코드를 수정해서 악성코드를 집어넣고 사용하는 customer(개인이든 기업이든)에게 영향을 미치게 할 수도 있습니다. 

 

 

물론 회사 내부 네트워크가 초기 exploit이 된 것도 위험하지만

다른 호스트들도 감염이 되고,

결국 swift, SaaS등 다른 네트워크로 이동 할 수 있다는 것이 위험합니다.

다른 공격으로 이어지고 대표 자신까지 위험하게 되는 상황에 처하게 됩니다.

 

 

 

 공격

dploot와 donAPI를 같이 사용해서 domain controller 마스터키를 가져와 모든 호스트 키를 가져오거나 해서 계정을 확인할 수 있습니다. dploot로 DC의 백업키를 받아오고 낮은 권한의 유저로 사용해도 백업키만 있으면 계정정보를 빼올 수 있습니다. 

 

 

 

 대응 방안

DPAPI는 윈도우 운영체제에서 기본적으로 내제된 API집합이기 때문에 그 자체를 막을 방법은 없습니다. 

 

하지만 엔드유저로서 외부 공격자들이 DPAPI 비밀 정보를 빼내가는 것을 최소화해야합니다.

 

1. 브라우저 내의 비밀번호 관리자를 사용하지 않고, 써드파티 비밀번호 매니저를 사용합니다.(아마 오프라인)

2. 파일 시스템 내의 평문 비밀번호를 저장하지 않습니다.

3. 기본 윈도우 계정 매니저(windows credential manager)를 비활성화시킵니다.(레지스트리/GPO)

 

시스템 어드민으로서는 DPAPI를 악용하는지 활동에 대해 탐지를 행해야합니다.

 

 

Comments