1. 개요

- 영국 보안 기업 Jumpsec에 의해 Microsoft Teams에서 취약점 발견

※ Microsoft Teams: MS에서 개발한 비즈니스 커뮤니케이션 플랫폼

외부 사용자가 보안 제어를 우회하여 피싱 메일 유포할 수 있는 취약점

 

2. 주요내용

- MS Teams 사용자는 각각 고유한 테넌트를 가지며, 다른 테넌트의 사용자에게 메시지를 보낼 수 있음

> 테넌시란 조직의 모든 사용자, 그룹, 리소스 및 서비스를 포함하는 컨테이너 역할을 하고, 조직의 전체 온라인 환경을 의미

> 외부 테넌트의 사용자에게 메시지를 보낼 경우 "External(외부)"가 표시됨

 

- 단, 외부 테넌트의 사용자에게 메시지를 보내는 경우 파일을 보낼 수 없도록 차단

[사진 1] 같은 테넌트 구성원에게 메시지 전송(좌) 및 외부 테넌트 구성원에게 메시지 전송(우) 비교

 

- IDOR 취약점을 이용해 [사진 1]의 차단 정책을 우회하여 파일을 전송할 수 있게됨

 

IDOR(Insecure Direct Object Reference) 취약점
- ‘안전하지 않은 직접 객체 참조’
- 공격자가 요청 메시지의 URL 또는 파라미터를 변경해 정상적으로 허용되지 않는 기능을 실행하거나 다른 사용자의 리소스에 접근할 수 있는 공격
- 접근 제어 기능에서 발생하는 문제점 중 하나
- 수평적/수직적 권한 상승이 발생하며, 이로 인해 타 사용자 정보에 접근하거나, 기존 권한으로는 사용이 불가능한 기능을 이용하게 되는 문제가 발생

※ 접근 통제 리스크 사례
① URL이나 파라미터를 조작하여 다른 사용자의 리소스에 접근하거나 허용되지 않은 기능을 실행할 수 있는 경우
② 적절한 인증 및 인가 과정을 거치지 않고 관리자 페이지 접근할 수 있는 경우
③ 디렉토리 트래버셜 취약점과 같이 웹 디렉토리 경로를 벗어난 호스트 내부 경로의 리소스에 접근할 수 있는 경우

※ 수평적 권한 상승: 동일한 권한을 가진 다른 사용자의 객체에 접근
※ 수직적 권한 상승: 지니고 있는 권한을 넘어서는 기능을 수행(관리자 권한 등)할 수 있는 경우

 

- 공격자는 POST 메소드를 이용한 요청에서 ID 값(RECIPIENT_ID)을 수정하여 파일을 전송할 수 있음

/v1/users/ME/conversations/<RECIPIENT_ID>/messages

 

[사진 2] RECIPIENT_ID 값을 변경한 POST 요청 전송

 

- [사진 2]의 결과로 외부 테넌트에 파일을 전송할 수 있게 됨

 

[사진 3] 외부 테넌트 파일 전송

 

- Jumpsec은 MS에 관련 내용 전달

> MS로부터 즉각적인 조치가 필요한 사항이 아니라는 답변외 취약점 조치 계획 등의 답변은 받지 못함

 

2.1 TeamsPhisher

- 외부 테넌트에 파일을 전송하도록 Python으로 제작된 공격 자동화 툴

- 미국 해군의 보안 전문가들이 개발하여 깃허브에 공개

- 툴 사용을 위해서는 MS Teams 계정이 존재해야 함

> 대상 사용자의 존재여부 및 외부 테넌트의 메시지를 수신할 수 있는지 확인한 뒤 동작하며 미리보기 기능을 제공

 

[사진 4] python3 teamsphisher.py -h

 

옵션 설명
필수 -h 사용법 출력
-u Teams 및 Sharepoint 라이선스가 있는 계정
-p Teams 및 Sharepoint 라이선스가 있는 계정 비밀번호
-a 공격 대상에 전송할 파일의 전체 경로
-m 공격 대상에 첨부파일과 함께 전송할 메시지 파일 경로
-e 공격 대상이 1명일 경우 이메일 주소
-l 공격 대상이 N명일 경우 대상의 이메일 주소가 기록된 파일의 전체 경로
선택 --greeting -m 옵션으로 지정한 메시지 앞에 추가할 사용자 지정 인사말
--securelink 수신자만 확인 가능한 링크로 파일을 전송하며, 첨부 파일을 보기 위해 인증 메시지 표시
--personalize 사용자 이름을 식별해 사용자 이름으로 시작하는 메시지를 전송
--preview 미리보기 모드
--delay 각 메시지 전송 시 지연 시간으로 Default 값은 0
--nogreeting  TeamsPhisher에서 사용하는 내장 인사말을 비활성화
--log TeamsPhisher 출력을 로그 파일에 기록 (사용자 홈 디렉터리에 기록)

 

3. 대응방안

- 외부 테넌트와 메시지를 주고 받을 필요가 있는지에 대한 검토

① 불필요 시

> Microsoft Teams 관리 센터 > 외부 액세스 > 해당 기능 비활성화 권고

 

② 일부 조직이 필요한 경우

> 허용 목록에 있는 특정 도메인과의 통신만 허용하도록 설정

> Microsoft Teams 관리 센터 > 외부 액세스

 

- 외부 테넌트 관련 이벤트 로깅

> Jumpsec은 소프트웨어 로깅에 외부 테넌트 관련 이벤트를 추가해 달라는 요청을 전달

> 외부 메시지 요청 모니터링 및 감지를 위한 웹 프록시 로그 구현

 

- 피싱 등 사회공학 공격과 관련된 직원 교육

> 기본 보안 수칙 준수

 

4. 참고

[1] https://labs.jumpsec.com/advisory-idor-in-microsoft-teams-allows-for-external-tenants-to-introduce-malware/
[2] https://medium.com/@timmylepp/microsoft-teams-idor-exploit-8f3aa7158ce1
[3] https://github.com/Octoberfest7/TeamsPhisher

+ Recent posts