중간의 적대자
적대자는 네트워크 스니핑 , 전송된 데이터 조작 또는 재생 공격( 자격 증명 액세스에 대한 악용 ) 과 같은 후속 동작을 지원하기 위해 중간자 적대자(AiTM) 기술을 사용하여 두 개 이상의 네트워크 장치 사이에 위치를 잡으려고 시도할 수 있습니다. 네트워크 트래픽의 흐름을 결정할 수 있는 일반적인 네트워킹 프로토콜(예: ARP, DNS, LLMNR 등)의 기능을 남용하여 적대자는 장치가 적대자가 제어하는 시스템을 통해 통신하도록 강제하여 정보를 수집하거나 추가 작업을 수행할 수 있습니다.
예를 들어, 적대자는 피해자의 DNS 설정을 조작하여 사용자가 합법적인 사이트에 액세스하는 것을 방지/리디렉션하거나 추가 맬웨어를 푸시하는 것과 같은 다른 악의적인 활동을 가능하게 할 수 있습니다. 적대자는 또한 DNS를 조작하고 자신의 위치를 활용하여 액세스 토큰( Steal Application Access Token ) 및 세션 쿠키( Steal Web Session Cookie )를 포함한 사용자 자격 증명을 가로챌 수 있습니다.다운그레이드 공격 은 보안이 덜한, 더 이상 사용되지 않는 또는 더 약한 버전의 통신 프로토콜(SSL/TLS) 또는 암호화 알고리즘을 협상하는 것과 같이 AiTM 위치를 확립하는 데 사용될 수도 있습니다.
적대자는 또한 AiTM 위치를 활용하여 전송된 데이터 조작 과 같이 트래픽을 모니터링 및/또는 수정하려고 시도할 수 있습니다 . 적대자는 AiTM과 유사한 위치를 설정하여 트래픽이 적절한 목적지로 흐르는 것을 방지하여 잠재적으로 방어를 손상시키 거나 네트워크 서비스 거부를 지원할 수 있습니다 .
절차
Dok 프록시 웹 트래픽은 잠재적으로 피해자 HTTP(S) 트래픽을 모니터링하고 변경합니다.
Kimsuky - 피해자와 접속한 웹사이트 간의 웹 트래픽을 조사하기 위해 PHProxy의 수정된 버전을 사용했습니다.
NPPSPY - 일반적으로 Windows에서 Winlogon 프로세스가 접촉하는 mpnotify.exe 프로세스에 대한 새로운 네트워크 리스너를 엽니다. Winlogon에 입력된 일반 텍스트 자격 증명을 기록하는 악성 DLL을 사용하여 새로운 대체 RPC 채널이 설정되어 로그온 정보를 효과적으로 가로채고 리디렉션합니다.
완화책
기능 또는 프로그램 비활성화 또는 제거
해당되는 경우, 특히 환경 내에서 필요하지 않은 네트워크 트래픽을 가로채는 데 사용될 수 있는 레거시 네트워크 프로토콜을 비활성화합니다.
민감한 정보 암호화
모든 유선 및/또는 무선 트래픽이 적절하게 암호화되었는지 확인하십시오. Kerberos와 같은 인증 프로토콜에 대한 모범 사례를 사용하고 자격 증명이 포함될 수 있는 웹 트래픽이 SSL/TLS로 보호되도록 하십시오.
네트워크 트래픽 필터링
AiTM 조건에 활용될 수 있는 레거시 프로토콜 등 환경 내에서 필요하지 않은 네트워크 트래픽을 차단하려면 네트워크 어플라이언스와 호스트 기반 보안 소프트웨어를 사용합니다.
네트워크를 통한 리소스 액세스
트래픽을 재편하거나 AiTM 조건을 생성하는 데 사용될 수 있는 네트워크 인프라 및 리소스에 대한 액세스를 제한합니다.
네트워크 침입 방지
AiTM 활동을 나타내는 트래픽 패턴을 식별할 수 있는 네트워크 침입 탐지 및 방지 시스템을 사용하면 네트워크 수준의 활동을 완화할 수 있습니다.
네트워크 세분화
네트워크 세분화는 광범위한 네트워크 액세스가 필요하지 않은 인프라 구성 요소를 격리하는 데 사용할 수 있습니다. 이를 통해 AiTM 활동의 범위를 완화하거나 적어도 완화할 수 있습니다.
사용자 교육
사용자에게 인증서 오류에 대해 의심하도록 교육합니다. 적대자는 HTTPS 트래픽을 가로채려고 자신의 인증서를 사용할 수 있습니다. 애플리케이션의 인증서가 호스트가 예상하는 인증서와 일치하지 않으면 인증서 오류가 발생할 수 있습니다.
발견
신청 로그
- 애플리케이션 로그 내용
AiTM에 대해 일반적으로 남용되는 네트워크 프로토콜 및 기타 서비스와 관련된 설정 및 기타 이벤트의 변경 사항을 모니터링하기 위해 애플리케이션 로그를 모니터링합니다.
네트워크 트래픽
- 네트워크 트래픽 콘텐츠
알려진 AiTM 동작과 관련된 이상을 확인하기 위해 네트워크 트래픽을 모니터링합니다.
- 네트워크 트래픽 흐름
알 수 없는/예상치 못한 하드웨어 장치에서 발생하는 네트워크 트래픽을 모니터링합니다. 로컬 네트워크 트래픽 메타데이터(예: 소스 MAC 주소 지정)와 DHCP와 같은 네트워크 관리 프로토콜의 사용은 하드웨어를 식별하는 데 도움이 될 수 있습니다.
서비스
- 서비스 생성
Windows 이벤트 로그에서 이벤트 ID 4697 및 7045에 대한 새로 구성된 서비스/데몬을 모니터링합니다. 데이터와 이벤트는 단독으로 보지 말고 원격 로그인이나 프로세스 생성 이벤트와 같이 다른 활동으로 이어질 수 있는 동작 체인의 일부로 보아야 합니다.
윈도우 레지스트리
- 윈도우 레지스트리 키 수정
"EnableMulticast" DWORD 값의 변경 사항을 확인하려면 HKLM\Software\Policies\Microsoft\Windows NT\DNSClient를 모니터링합니다. 값 "0"은 LLMNR이 비활성화되었음을 나타냅니다.
폭력
적대자는 비밀번호를 알 수 없거나 비밀번호 해시를 얻은 경우 무차별 대입 기술을 사용하여 계정에 액세스할 수 있습니다. 적대자는 계정 또는 계정 세트의 비밀번호를 알지 못하는 경우 반복적 또는 반복적 메커니즘을 사용하여 체계적으로 비밀번호를 추측할 수 있습니다. 비밀번호 무차별 대입은 자격 증명의 유효성을 확인하는 서비스와의 상호 작용을 통해 수행되거나 비밀번호 해시와 같은 이전에 획득한 자격 증명 데이터와 오프라인으로 수행될 수 있습니다.
침해 중 다양한 시점에서 자격 증명을 무차별 대입하는 일이 발생할 수 있습니다. 예를 들어, 적대자는 OS 자격 증명 덤프 , 계정 검색 또는 암호 정책 검색 과 같은 다른 침해 후 동작에서 수집한 지식을 활용하여 피해자 환경 내의 유효한 계정 에 대한 무차별 대입 액세스를 시도할 수 있습니다. 적대자는 또한 초기 액세스의 일부로 외부 원격 서비스 와 같은 동작과 무차별 대입 활동을 결합할 수 있습니다 .
절차
2016년 우크라이나 전력 공격 동안 Sandworm Team은 스크립트를 사용하여 여러 호스트에 대한 RPC 인증을 시도했습니다.
Agrius - 피해자 환경에서 SMB를 통해 다양한 무차별 대입 공격 활동에 참여했습니다.
APT28 - 자격 증명을 얻기 위해 무차별 대입 공격을 수행할 수 있습니다.
APT38 -비밀번호를 알 수 없거나 비밀번호 해시를 사용할 수 없는 경우 무차별 대입 공격 기술을 사용하여 계정 액세스를 시도했습니다.
APT39 - Ncrack을 사용하여 신원 정보를 공개했습니다.
APT41 - 로컬 관리자 계정에 대해 암호 무차별 대입 공격을 수행했습니다.
Caterpillar WebShell - 시스템에 대한 무차별 대입 공격을 수행하는 모듈이 있습니다.
Chaos - SSH 서비스에 대한 무차별 대입 공격을 수행하여 초기 액세스를 얻습니다.
CrackMapExec - 네트워크 범위 전체에서 제공된 사용자 자격 증명을 무차별 대입할 수 있습니다.
DarkVishnya - 무차별 대입 공격을 사용하여 로그인 데이터를 얻었습니다.
Dragonfly - 자격 증명을 무력화하기 위해 액세스를 시도했습니다.
Ember Bear - su-bruteforce 명령을 사용하여 특정 사용자를 무차별 대입 공격하는 도구를 사용했습니다.
FIN5 - GET2 Penetrator 도구를 사용하여 원격 로그인 및 하드코딩된 자격 증명을 찾았습니다.
Fox Kitten - 강제로 RDP 자격 증명을 얻었습니다.
HEXANE - 유효한 자격 증명을 손상시키기 위해 무차별 대입 공격을 사용했습니다.
Kinsing - SSH를 통해 호스트에 무차별 대입 공격을 시도했습니다.
OilRig - 신임장을 얻기 위해 무차별 대입 기술을 사용했습니다.
Dream Job 작전 중 Lazarus Group - 관리자 계정에 대해 무차별 공격을 수행했습니다.
PoshC2 - 로컬 관리자 및 AD 사용자 계정을 무차별 대입 공격하기 위한 모듈이 있습니다.
Pysa - 중앙 관리 콘솔과 일부 Active Directory 계정에 대해 무차별 대입 공격을 시도했습니다.
QakBot - 자격 증명을 캡처하기 위해 무차별 대입 공격을 수행할 수 있습니다.
Turla - net use 명령과 미리 정의된 암호 목록 또는 컬렉션을 사용하여 피해자의 네트워크 내 시스템에 연결을 시도할 수 있습니다.
완화책
계정 사용 정책
특정 횟수의 로그인 시도 실패 후 계정 잠금 정책을 설정하여 비밀번호 추측을 방지합니다. 정책이 너무 엄격하면 서비스 거부 조건이 발생하고 환경을 사용할 수 없게 되며 무차별 대입 공격에 사용된 모든 계정이 잠깁니다. 조건부 액세스 정책을 사용하여 규정을 준수하지 않는 장치나 정의된 조직 IP 범위 외부에서 로그인을 차단합니다. 익명화 서비스/프록시에서 발생하는 것과 같은 위험한 인증 요청을 차단하는 것을 고려합니다.
다중 인증 요소
다중 요소 인증을 사용합니다. 가능한 경우 외부 서비스에서도 다중 요소 인증을 활성화합니다.
비밀번호 정책
비밀번호 정책을 생성할 때 NIST 지침을 참조하세요.
사용자 계정 관리
침해된 자격 증명의 일부로 알려진 계정을 즉시 또는 무차별 대입 시도가 감지된 후 적극적으로 재설정합니다.
발견
신청 로그
- 애플리케이션 로그 내용
유효한 계정 의 시스템 및 애플리케이션 로그인 실패에 대한 인증 로그를 모니터링합니다 . 인증 실패가 높으면 합법적인 자격 증명을 사용하여 시스템에 액세스하려는 무차별 대입 시도가 있을 수 있습니다.
명령
- 명령 실행
비밀번호를 알 수 없거나 비밀번호 해시를 얻은 경우, 계정에 접근하기 위해 무차별 대입 공격을 사용할 수 있는 실행된 명령 및 인수를 모니터링합니다.
분석 1 - 무차별 대입 공격에 사용되는 명령줄 도구입니다.
(index=security sourcetype="Powershell" EventCode=4104) OR(index=os sourcetype="linux_secure" (cmdline IN ("hydra", "medusa", "ncrack", "patator", "john", "hashcat", "rcrack", "w3af", "aircrack-ng"))) OR (index=os sourcetype="macos_secure" (cmdline IN ("hydra", "medusa", "ncrack", "patator", "john", "hashcat", "rcrack", "w3af", "aircrack-ng"))) | where match(CommandLine, "(?i)(hydra|medusa|ncrack|patator|john|hashcat|rcrack|w3af|aircrack-ng)")
사용자 계정
- 사용자 계정 인증
비밀번호 스프레이 시도로 인해 발생할 수 있는 다양한 계정에서 많은 실패한 인증 시도를 모니터링합니다. 해시가 크랙되었을 때 감지하기 어렵습니다. 이는 일반적으로 대상 네트워크의 범위 밖에서 수행되기 때문입니다.
분석 1 - 여러 계정에서 여러 차례의 로그온 시도가 실패했습니다.
(index=security sourcetype="WinEventLog:Security" EventCode IN (4625, 5379))OR (index=security sourcetype="linux_secure" message="Failed password")OR (index=security sourcetype="macos_secure" message="Failed to authenticate user")
비밀번호 저장소의 자격 증명
공격자는 사용자 자격 증명을 얻기 위해 일반적인 비밀번호 저장 위치를 검색할 수 있습니다. 비밀번호는 자격 증명을 보유한 운영 체제 또는 애플리케이션에 따라 시스템의 여러 위치에 저장됩니다. 비밀번호 관리자 및 클라우드 비밀 보관소와 같이 사용자가 관리하고 유지하기 쉽도록 비밀번호를 저장하는 특정 애플리케이션 및 서비스도 있습니다. 자격 증명을 얻으면 측면 이동을 수행하고 제한된 정보에 액세스하는 데 사용할 수 있습니다.
절차
에이전트 테슬라 - FTP 클라이언트와 무선 프로필에서 자격 증명을 훔칠 수 있는 능력을 가지고 있습니다.
APT33 - LaZagne과 같은 다양한 공개적으로 사용 가능한 도구를 사용하여 자격 증명을 수집했습니다.
APT39 - Smartftp Password Decryptor 도구를 사용하여 FTP 암호를 해독했습니다.
APT41 - 데이터베이스에서 계정, 직원 목록, 일반 텍스트 및 해시된 비밀번호에 대한 정보를 얻었습니다.
Astaroth - NetPass라는 외부 소프트웨어를 사용하여 비밀번호를 복구합니다.
Carberp의 passw.plug 플러그인은 여러 인스턴트 메시징, 이메일, 소셜 미디어 서비스뿐만 아니라 FTP, VNC, VPN 클라이언트로부터 계정 정보를 수집할 수 있습니다.
CosmicDuke - 인기 있는 인스턴트 메시징 애플리케이션 및 이메일 클라이언트는 물론 WLAN 키를 비롯한 다양한 프로그램의 비밀번호를 포함한 사용자 자격 증명을 수집합니다.
DarkGate - 일부 맬웨어 버전에서 저장된 RDP 자격 증명을 훔치기 위해 Nirsoft Network Password Recovery 또는 NetPass 도구를 사용합니다.
Evilnum - 피해자의 이메일 자격 증명을 수집할 수 있습니다.
FIN6 - FTP를 포함한 이메일 및 파일 전송 유틸리티를 타겟으로 삼기 위해 Stealer One 자격 증명 도용 도구를 사용했습니다.
HEXANE - 저장된 자격 증명을 식별하기 위해 피해자 컴퓨터에서 cmdkey를 실행했습니다.
KGH_SPY - WINSCP에서 자격 증명을 수집할 수 있습니다.
LaZagne - 다양한 플랫폼에서 데이터베이스, 메일 및 WiFi로부터 자격 증명을 얻을 수 있습니다.
Leafminer - LaZagne을 포함하여 로그인 및 비밀번호 정보를 검색하기 위해 여러 도구를 사용했습니다.
Lokibot - Windows OS 자격 증명, 이메일 클라이언트, FTP 및 SFTP 클라이언트를 포함한 여러 애플리케이션 및 데이터 소스에서 자격 증명을 도용했습니다.
Malteiro - NirSoft MailPassView를 통해 메일 클라이언트로부터 자격 증명을 얻었습니다.
Manjusaka - 다양한 데이터베이스 유형에 대한 액세스를 용이하게 하는 데 사용되는 유틸리티인 Premiumsoft Navicat과 관련된 Windows 레지스트리에서 자격 증명을 추출합니다.
마트료시카 - Outlook 암호를 훔칠 수 있습니다.
MgBot - Outlook 및 Foxmail 이메일 클라이언트 소프트웨어에서 저장된 자격 증명을 훔치기 위한 모듈이 포함되어 있습니다.
Mimikatz - 추가 시스템 및 엔터프라이즈 네트워크 리소스에 액세스하는 데 유용한 계정 및 비밀번호 정보를 얻기 위해 자격 증명 덤핑을 수행합니다.
Mispadu - NirSoft MailPassView를 통해 메일 클라이언트로부터 자격 증명을 얻었습니다.
MuddyWater - LaZagne 및 기타 도구를 사용하여 자격 증명 덤핑을 수행했으며, 여기에는 피해자 이메일에 저장된 비밀번호 덤핑도 포함됩니다.
NETWIRE - 메시징 및 메일 클라이언트 애플리케이션에서 암호를 검색할 수 있습니다.
OilRig - LaZagne과 같은 자격 증명 덤핑 도구를 사용하여 손상된 시스템에 로그인한 계정과 Outlook Web Access에 대한 자격 증명을 훔쳤습니다.
OLDBAIT - 여러 이메일 클라이언트로부터 자격 증명을 수집합니다.
PinchDuke - 손상된 호스트에서 자격 증명을 훔칩니다.
PLEAD - Microsoft Outlook에서 저장된 비밀번호를 훔칠 수 있는 기능을 가지고 있습니다.
PoshC2 - RDCMan 구성 파일에 저장된 암호를 해독할 수 있습니다.
Prikormka의 모듈은 피해자에게 설치된 애플리케이션에 저장된 비밀번호를 수집합니다.
Pupy - Lazagne을 사용하여 자격 증명을 수집할 수 있습니다.
QuasarRAT - 일반 FTP 클라이언트에서 암호를 얻을 수 있습니다.
SolarWinds 침해 동안 APT29는 얻은 계정 자격 증명을 사용하여 그룹 관리 서비스 계정(gMSA) 암호에 액세스를 시도했습니다.
Stealth Falcon 맬웨어 - Windows Credential Vault 및 Outlook을 포함한 여러 소스에서 비밀번호를 수집합니다
Volt Typhoon - OpenSSH, realvnc 및 PuTTY에서 자격 증명을 얻으려고 시도했습니다.
완화책
비밀번호 정책
사용자 로그인 키체인의 비밀번호는 사용자 로그인 비밀번호에서 변경할 수 있습니다. 이는 적대자가 추가 비밀번호를 알아야 하기 때문에 복잡성을 증가시킵니다.
조직은 암호 저장소와 웹 브라우저에 자격 증명을 저장하는 위험을 평가하는 것을 고려할 수 있습니다. 시스템, 소프트웨어 또는 웹 브라우저 자격 증명 공개가 심각한 문제인 경우 기술적 통제, 정책 및 사용자 교육을 사용하여 자격 증명이 부적절한 위치에 저장되는 것을 방지할 수 있습니다.
특권 계정 관리
비밀번호 저장소에서 정보를 쿼리할 수 있는 권한이 있는 계정 및 서비스의 수를 필요한 것으로만 제한합니다. 비밀번호 저장소를 쿼리할 수 있는 권한이 있는 계정 및 서비스가 필요한 비밀에만 액세스할 수 있도록 합니다.
소프트웨어 업데이트
악용 위험을 완화하기 위해 정기적인 소프트웨어 업데이트를 수행합니다.
발견
클라우드 서비스
- 클라우드 서비스 열거
get-secret-valueAWS, gcloud secrets describeGCP, Azure와 같은 클라우드 비밀 관리자에서 자격 증명 자료를 열거하고 가져오려는 API 호출 및 CLI 명령을 모니터링합니다 az key vault secret show. 계정이나 서비스가 비정상적으로 많은 수의 비밀 요청을 생성하는 등 이러한 명령의 의심스러운 사용에 대해 경고합니다.
분석 1 - 특이한 계정이나 서비스로부터 비밀 요청이 대량으로 발생합니다.
index=security sourcetype IN ("aws:cloudtrail", "azure:activity", "gcp:activity")(eventName IN ("ListAccessKeys", "GetLoginProfile", "ListSecrets", "GetSecretValue", "GetParametersByPath", "ListKeys") ORoperationName IN ("ListAccessKeys", "GetLoginProfile", "ListSecrets", "GetSecretValue", "GetParametersByPath", "ListKeys") ORprotoPayload.methodName IN ("ListAccessKeys", "GetLoginProfile", "ListSecrets", "GetSecretValue", "GetParametersByPath", "ListKeys"))
명령
- 명령 실행
사용자 자격 증명을 얻기 위해 일반적인 비밀번호 저장 위치를 검색할 수 있는 실행된 명령과 인수를 모니터링합니다.
분석 1 - 자격 증명 검색을 나타내는 명령입니다.
(index=os sourcetype IN ("Powershell", "linux_secure", "macos_secure") CommandLine IN ("findstr /si password", "findstr /si pass", "grep -r password", "grep -r pass", "grep -r secret", "security find-generic-password", "security find-internet-password", "security dump-keychain", "gsettings get org.gnome.crypto.cache", "cat /etc/shadow", "strings /etc/shadow", "ls -al ~/.ssh/known_hosts", "ssh-add -L"))
파일
- 파일 접근
사용자 자격 증명을 얻기 위해 일반적인 비밀번호 저장 위치를 검색할 수 있는 파일에 액세스하는 것을 모니터링합니다.
분석 1 - 자격 증명이 포함된 파일에 대한 무단 액세스.
index=security sourcetype IN ("WinEventLog:Security", "WinEventLog:Microsoft-Windows-Sysmon/Operational", "linux_secure", "macos_secure")((sourcetype="WinEventLog:Security" EventCode=4663 ObjectName IN ("passwords", "creds", "credentials", "secrets")) OR (sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=11 TargetObject IN ("passwords", "creds", "credentials", "secrets")) OR (sourcetype="linux_secure" action="open" filepath IN ("/etc/shadow", "/etc/passwd", "/.aws/credentials", "/.ssh/id_rsa")) OR (sourcetype="macos_secure" event_type="open" file_path IN ("/Library/Keychains/", "/Users//Library/Keychains/", "/Users//.ssh/id_rsa")))
프로세스
- OS API 실행
사용자 자격 증명을 얻기 위해 일반적인 비밀번호 저장 위치를 검색할 수 있는 API 호출을 모니터링합니다.
- 프로세스 접근
사용자 자격 증명을 얻기 위해 일반적인 비밀번호 저장 위치를 검색할 수 있는 프로세스에 대한 모니터링을 실시합니다.
분석 1 - 자격 증명 검색을 나타내는 승인되지 않은 프로세스 접근.
index=security sourcetype IN ("WinEventLog:Microsoft-Windows-Sysmon/Operational", "linux_secure", "macos_secure")(EventCode=10 TargetImage IN ("lsass.exe", "securityd", "ssh-agent", "gpg-agent") OR EventCode=11 TargetObject IN ("password", "creds", "credentials", "secrets", "keychain", ".kdbx", ".pfx", ".pem", ".p12", ".key") OR EventCode=1 CommandLine IN ("mimikatz", "procdump", "gcore", "dbxutil", "security find-generic-password", "security find-internet-password", "security dump-keychain", "gsettings get org.gnome.crypto.cache"))
- 프로세스 생성
사용자 자격 증명을 얻기 위해 일반적인 비밀번호 저장 위치를 검색할 수 있는 새로 실행된 프로세스를 모니터링합니다.
분석 1 - 자격 증명 검색을 나타내는 매개변수를 갖춘 새로운 프로세스.
index=security sourcetype IN ("WinEventLog:Microsoft-Windows-Sysmon/Operational", "linux_secure", "macos_secure")(EventCode=1 CommandLine IN ("mimikatz", "procdump", "gcore", "dbxutil", "security find-generic-password", "security find-internet-password", "security dump-keychain", "gsettings get org.gnome.crypto.cache", "cat /etc/shadow", "strings /etc/shadow", "ls -al ~/.ssh/known_hosts", "ssh-add -L"))
자격 증명 액세스를 위한 악용
적대자는 자격 증명을 수집하기 위해 소프트웨어 취약성을 악용할 수 있습니다. 소프트웨어 취약성 악용은 적대자가 프로그램, 서비스 또는 운영 체제 소프트웨어나 커널 자체의 프로그래밍 오류를 이용하여 적대자가 제어하는 코드를 실행할 때 발생합니다.
자격 증명 및 인증 메커니즘은 적대자가 유용한 자격 증명에 액세스하거나 인증된 시스템에 대한 액세스를 얻기 위한 프로세스를 우회하는 수단으로 악용될 수 있습니다. 이에 대한 한 가지 예는 MS14-068Kerberos를 대상으로 하며 도메인 사용자 권한을 사용하여 Kerberos 티켓을 위조하는 데 사용할 수 있는 입니다. 이에 대한 또 다른 예는 재생 공격으로, 적대자가 당사자 간에 전송된 데이터 패킷을 가로채서 나중에 이러한 패킷을 재생합니다. 서비스가 인증 요청을 적절하게 검증하지 않으면 이러한 재생된 패킷을 통해 적대자가 당사자 중 한 명을 가장하고 무단 액세스 또는 권한을 얻을 수 있습니다.
이러한 악용은 클라우드 환경에서도 입증되었습니다. 예를 들어, 공격자는 의도치 않은 인증 토큰 생성 및 갱신을 허용하는 퍼블릭 클라우드 인프라의 취약성을 악용했습니다.
자격 증명 접근을 위한 악용은 대상 프로세스나 획득한 자격 증명에 따라 권한 상승으로 이어질 수도 있습니다.
완화책
애플리케이션 개발자 지침
애플리케이션 개발자는 일회용 비밀번호를 활성화하고, 전송된 메시지에 대한 타임스탬프 또는 순서 번호를 제공하고, 디지털 서명을 사용하고, 무작위 세션 키를 사용하여 인증 요청을 검증하기 위한 조치를 취하는 것을 고려해야 합니다.
애플리케이션 격리 및 샌드박싱
샌드박싱을 사용하여 발견되지 않았거나 패치되지 않은 취약성을 악용하여 적대자가 작업을 진행하기 어렵게 만드십시오. 다른 유형의 가상화 및 애플리케이션 마이크로세그먼테이션도 일부 유형의 악용의 영향을 완화할 수 있습니다. 이러한 시스템의 추가 악용 및 약점의 위험은 여전히 존재할 수 있습니다.
익스플로잇 보호
Windows Defender Exploit Guard(WDEG) 및 Enhanced Mitigation Experience Toolkit(EMET)와 같은 악용 중에 사용되는 동작을 찾는 보안 애플리케이션을 사용하면 일부 악용 동작을 완화할 수 있습니다. 제어 흐름 무결성 검사는 소프트웨어 악용을 잠재적으로 식별하고 발생을 중지하는 또 다른 방법입니다.이러한 보호 기능 중 다수는 호환성을 위해 아키텍처와 대상 애플리케이션 바이너리에 따라 달라지며 방어 회피를 목표로 하는 소프트웨어에서는 작동하지 않을 수 있습니다.
위협 인텔리전스 프로그램
특정 조직을 대상으로 소프트웨어 익스플로잇과 0-day를 사용할 수 있는 위협 유형과 수준을 파악하기 위해 강력한 사이버 위협 인텔리전스 역량을 개발합니다.
소프트웨어 업데이트
패치 관리를 통해 내부 기업 엔드포인트와 서버를 대상으로 소프트웨어를 정기적으로 업데이트합니다.
발견
신청 로그
- 애플리케이션 로그 내용
소프트웨어 익스플로잇을 탐지하는 것은 사용 가능한 도구에 따라 어려울 수 있습니다. 소프트웨어 익스플로잇이 항상 성공하는 것은 아니거나 익스플로잇된 프로세스가 불안정해지거나 충돌할 수 있습니다.
프로세스
- 프로세스 생성
자격 증명 액세스에 대한 취약점을 악용하려는 시도를 나타낼 수 있는 새로 실행된 프로세스를 모니터링합니다.
분석 1 - 활용 도구나 기술과 관련된 예상치 못한 프로세스 생성.
(index=security sourcetype="WinEventLog:Security" EventCode=4688) OR (index=security sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1) OR (index=os sourcetype="linux_secure" action="execve") OR (index=os sourcetype="macos_secure" event_type="execve") | where match(Image, "(?i)(msfconsole|metasploit|mimikatz|powersploit|empire|cobaltstrike|responder|kerberoast|john|hashcat|rcrack|hydra|medusa|ncrack|patator)")
사용자 계정
- 사용자 계정 인증
악용을 통해 얻은 신임장 리소스는 일반적으로 사용되거나 보이지 않더라도 사용 중에 감지될 수 있습니다.
분석 1 - 인증 시도 실패 횟수가 많거나 특이한 로그온 패턴이 있습니다.
(index=security sourcetype="WinEventLog:Security" EventCode IN (4625, 4648)) OR (index=os sourcetype="linux_secure" message="Failed password") OR (index=os sourcetype="macos_secure" message="Failed to authenticate user")
강제 인증
공격자는 사용자가 인증 정보를 자동으로 제공하도록 요청하거나 강요하는 등의 방법을 통해 자격 증명 자료를 수집할 수 있습니다.
SMB(Server Message Block) 프로토콜은 일반적으로 Windows 네트워크에서 리소스 액세스 및 파일 공유를 위한 시스템 간 인증 및 통신에 사용됩니다. Windows 시스템이 SMB 리소스에 연결을 시도하면 자동으로 인증을 시도하고 현재 사용자의 자격 증명 정보를 원격 시스템으로 보냅니다. 이 동작은 사용자가 네트워크 리소스에 액세스하기 위해 자격 증명을 입력할 필요가 없는 엔터프라이즈 환경에서 일반적입니다.
WebDAV(Web Distributed Authoring and Versioning)는 일반적으로 SMB가 차단되거나 실패할 때 백업 프로토콜로 Windows 시스템에서 사용됩니다. WebDAV는 HTTP의 확장이며 일반적으로 TCP 포트 80 및 443에서 작동합니다.
적대자는 강제 SMB/WebDAV 인증을 통해 사용자 계정 해시에 액세스하기 위해 이러한 동작을 이용할 수 있습니다. 적대자는 적대자가 제어하는 외부 서버로의 리소스 링크가 포함된 스피어피싱을 통해 사용자에게 첨부 파일을 보내거나(예: 템플릿 주입 ) 권한이 있는 계정의 탐색 경로에 특별히 제작된 파일을 배치하거나(예: 데스크톱에 배치된 .SCF 파일) 피해자가 액세스할 수 있는 공개적으로 액세스 가능한 공유에 배치할 수 있습니다. 사용자 시스템이 신뢰할 수 없는 리소스에 액세스하면 인증을 시도하고 사용자의 해시된 자격 증명을 포함한 정보를 SMB를 통해 적대자가 제어하는 서버로 전송합니다. [4] 자격 증명 해시에 액세스하면 적대자는 오프라인 무차별 대입 공격을 수행하여 일반 텍스트 자격 증명에 액세스할 수 있습니다. [5]
이것이 발생할 수 있는 여러 가지 방법이 있습니다. 야생에서의 사용에서 얻은 몇 가지 구체적인 내용은 다음과 같습니다.
- 문서가 열릴 때 자동으로 로드되는 리소스가 포함된 스피어피싱 첨부 파일(예: 템플릿 주입 ). 예를 들어, 문서에는 file[:]//[remote address]/Normal.dotmSMB 요청을 트리거하는 것과 유사한 요청이 포함될 수 있습니다.
- 아이콘 파일 이름이 외부 참조를 가리키는 수정된 .LNK 또는 .SCF 파일은 \[remote address]\pic.png아이콘이 반복적으로 자격 증명을 수집하기 위해 렌더링될 때 시스템이 리소스를 로드하도록 강제합니다.
절차
DarkHydrus - 사용자가 자격 증명을 입력할 수 있는 인증 창을 시작하기 위해 Template Injection을 사용했습니다.
Dragonfly - 외부 리소스 링크가 있는 스피어피싱 첨부 파일을 사용하여 SMB를 통해 해시된 사용자 자격 증명을 수집하고, 가상화된 시스템에서 자격 증명을 수집하기 위해 .LNK 파일 아이콘 리소스를 수정했습니다.
EnvyScout - 프로토콜 핸들러를 사용하여 운영 체제가 공격자가 제어하는 인프라에 NTLMv2 인증 응답을 보내도록 유도할 수 있습니다.
완화책
네트워크트래픽 필터링
egress 필터링을 사용하거나 TCP 포트 139, 445 및 UDP 포트 137을 차단하여 SMB 트래픽이 엔터프라이즈 네트워크에서 나가는 것을 차단합니다. WebDAV 프로토콜 트래픽이 네트워크에서 나가는 것을 필터링하거나 차단합니다. SMB 및 WebDAV를 통해 외부 리소스에 액세스해야 하는 경우 허용 목록을 사용하여 트래픽을 엄격하게 제한해야 합니다.
비밀번호 정책
강력한 비밀번호를 사용하면 자격 증명 해시가 획득되더라도 해독되기 어렵습니다.
발견
파일
- 파일 접근
사용자에게 인증 정보를 제공하도록 강요하려는 시도가 있을 수 있는 파일에 대한 액세스를 모니터링합니다.
분석 1 - 강제 인증 공격에 사용되는 것으로 알려진 파일에 대한 의심스러운 액세스.
index=security sourcetype="WinEventLog:Security" EventCode=4663 ObjectName="\path\to\suspicious\file" | where match(ObjectName, "(?i)\(.*\.)?(lnk|scf|url|doc|dot|xls|ppt|pdf|scf|html)$")
- 파일 생성
외부 네트워크 리소스를 가리키는 리소스가 포함된 시스템이나 가상 환경에서 새로 구성된 .LNK, .SCF 또는 기타 파일을 모니터링합니다.
분석 1 - 강제 인증 공격에 사용되는 위치에 의심스러운 파일 생성.
(index=security sourcetype="WinEventLog:Security" EventCode=4663) OR (index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=11) | where match(ObjectName, "(?i)\(.*\.)?(lnk|scf|url|doc|dot|xls|ppt|pdf|html)$")| where match(ObjectName, "(?i)(desktop|public|downloads|temp|cache|start menu|startup)")
- 파일 수정
외부 네트워크 리소스를 가리키는 리소스가 포함된 시스템이나 가상 환경의 .LNK, .SCF 또는 기타 파일에 대한 변경 사항을 모니터링합니다.
분석 1 - 강제 인증 공격에 사용되는 것으로 알려진 파일에 대한 수정.
(index=security sourcetype="WinEventLog:Security" EventCode=4663) | where match(ObjectName, "(?i)\(.*\.)?(lnk|scf|url|doc|dot|xls|ppt|pdf|html)$")| where match(ObjectName, "(?i)(desktop|public|downloads|temp|cache|start menu|startup)")
네트워크 트래픽
- 네트워크 트래픽 콘텐츠
내부 트래픽의 경우, 워크스테이션 간 비정상적인(기준선 대비) SMB 트래픽을 모니터링합니다. 많은 네트워크의 경우 이런 트래픽이 없어야 하지만, 네트워크의 시스템이 어떻게 구성되어 있고 리소스가 어디에 있는지에 따라 달라집니다.
분석 1 - NTLM 해시 트래픽 또는 기타 의심스러운 인증 트래픽 감지.
index=network sourcetype="stream:tcp" (dest_port=445 OR dest_port=80 OR dest_port=443) | eval Protocol=case(dest_port==445, "SMB", dest_port==80, "HTTP", dest_port==443, "HTTPS", true(), "Unknown")| search (command IN ("NTLMSSP_NEGOTIATE", "NTLMSSP_AUTH")) | eval SuspiciousAuth=case( match(_raw, "NTLMSSP_NEGOTIATE"), "NTLM Negotiate", match(_raw, "NTLMSSP_AUTH"), "NTLM Authentication", true(), "Unknown")
- 네트워크 트래픽 흐름
TCP 포트 139, 445 및 UDP 포트 137에서 SMB 트래픽과 네트워크를 빠져나가 알 수 없는 외부 시스템으로 가는 WebDAV 트래픽을 모니터링합니다. 시도가 감지되면 엔드포인트 데이터 소스를 조사하여 근본 원인을 찾습니다.
분석 1 - 강제 인증 시도를 나타내는 비정상적인 네트워크 트래픽 패턴입니다.
index=network sourcetype="stream:tcp" (dest_port=445 OR dest_port=80 OR dest_port=443)| eval Protocol=case(dest_port==445, "SMB", dest_port==80, "HTTP", dest_port==443, "HTTPS", true(), "Unknown")| eval SuspiciousConn=if((Protocol="SMB" AND src_ip!=dest_ip AND (src_ip!="known_ip1" AND dest_ip!="known_ip2")), 1, 0)| where SuspiciousConn=1
웹 자격 증명을 위조하다
적대자는 웹 애플리케이션이나 인터넷 서비스에 액세스하는 데 사용할 수 있는 자격 증명 자료를 위조할 수 있습니다. 웹 애플리케이션과 서비스(클라우드 SaaS 환경이나 온프레미스 서버에 호스팅됨)는 종종 세션 쿠키, 토큰 또는 기타 자료를 사용하여 사용자 액세스를 인증하고 허가합니다.
적대자는 웹 리소스에 액세스하기 위해 이러한 자격 증명 자료를 생성할 수 있습니다. 이는 Steal Web Session Cookie , Steal Application Access Token 및 기타 유사한 동작과 다릅니다. 자격 증명은 합법적인 사용자로부터 도난되거나 가로채기보다는 적대자가 새롭고 위조한 것입니다.
웹 자격 증명 생성에는 종종 비밀번호, 개인 키 또는 기타 암호화 시드 값과 같은 비밀 값이 필요합니다. AssumeRole 공격자는 AWS의 및 API 와 같은 기능을 활용하여 토큰을 위조할 수도 있습니다 .이를 통해 사용자는 임시 보안 자격 증명(예: 임시 상승된 클라우드 액세스GetFederationToken ) 을 요청할 수 있으며 , Zimbra의 명령은 도메인의 모든 사용자에 대한 토큰을 생성하는 데 사용할 수 있는 사전 인증 키를 생성합니다. ]zmprov gdpak
일단 위조되면 적대자는 이러한 웹 자격 증명을 사용하여 리소스에 액세스할 수 있습니다(예: 대체 인증 자료 사용 ). 이를 통해 다중 인증 요소 및 기타 인증 보호 메커니즘을 우회할 수 있습니다.
완화책
심사
관리자는 모든 액세스 목록과 웹 애플리케이션 및 서비스에 액세스하기 위해 부여된 권한에 대한 감사를 수행해야 합니다. 이는 모든 리소스에 대해 광범위하게 수행하여 기준을 확립한 후 새 리소스나 업데이트된 리소스에 대한 주기적 감사를 수행해야 합니다. 의심스러운 계정/자격 증명은 조사하여 제거해야 합니다.
ADFS에서 고급 감사를 사용하도록 설정합니다. ADFS 관리 스냅인에서 성공 및 실패 감사 옵션을 확인합니다. 그룹 정책 개체를 통해 AD FS 팜에서 응용 프로그램 생성 이벤트 감사를 사용하도록 설정합니다.
특권 계정 관리
AD FS 서버에 대한 권한 및 액세스를 권한이 있는 액세스 워크스테이션에서만 시작되도록 제한합니다.
소프트웨어 구성
정기적으로 영구 웹 자격 증명(쿠키 등)을 삭제하도록 브라우저/애플리케이션을 구성합니다.
사용자 계정 관리
관리 권한이 있는 사용자 계정이 특권 액세스 워크스테이션, Just in Time/Just Enough Administration(JIT/JEA) 및 강력한 인증을 포함한 모범 사례를 따르도록 합니다. 권한이 높은 디렉토리 역할의 멤버인 사용자 수를 줄입니다. AWS 환경에서 sts:GetFederationToken명시적으로 요구되지 않는 한 사용자가 API를 호출하는 것을 금지합니다.
발견
로그온 세션
- 로그온 세션 새성
알 수 없는 계정과 관련된 로그온 또는 기타 사용자 세션 활동 및/또는 도메인에 해당 4769 및 1200 이벤트가 없는 SAML 토큰 사용과 같은 비정상적인 인증 활동을 모니터링합니다. 동일한 사용자가 다른 위치에 있거나 예상 구성과 일치하지 않는 다른 시스템에 의한 웹사이트 및 클라우드 기반 애플리케이션 액세스를 포함하여 리소스에 대한 예상치 못한 비정상적인 액세스를 모니터링합니다. 이러한 로그인은 자격 증명을 신뢰하는 모든 클라우드 환경뿐만 아니라 모든 온프레미스 리소스에서 발생할 수 있습니다.
웹 자격 증명
- 웹 자격 증명
도메인에 해당 4769 및 1200 이벤트가 없는 SAML 토큰을 사용하여 액세스 토큰 생성을 모니터링합니다. AWS에서와 같이 액세스 토큰을 생성하기 위한 비정상적인 API 호출을 감지합니다 sts:GetFederationToken.
- 웹 자격 증명 사용
도메인에 해당 1202 이벤트가 없는 SAML 토큰을 사용하여 생성된 이메일과 같은 서비스에 액세스하기 위해 액세스 토큰 사용을 모니터링합니다.
입력 캡처
적대자는 사용자 입력을 캡처하는 방법을 사용하여 자격 증명을 얻거나 정보를 수집할 수 있습니다. 일반적인 시스템 사용 중에 사용자는 종종 로그인 페이지/포털 또는 시스템 대화 상자와 같은 다양한 위치에 자격 증명을 제공합니다. 입력 캡처 메커니즘은 사용자에게 투명할 수 있습니다(예: 자격 증명 API 후킹 ) 또는 사용자를 속여 진짜 서비스라고 믿는 것에 입력을 제공하도록 할 수 있습니다(예: 웹 포털 캡처 ).
절차
APT39 - 마우스 움직임을 캡처하기 위해 도구를 활용했습니다.
Chaes - 원하는 API 후킹을 수행하는 모듈이 있습니다.
FlawedAmmyy - 마우스 이벤트를 수집할 수 있습니다.
Kobalos - 손상된 SSH 클라이언트를 사용하여 손상된 호스트에서 SSH 연결을 설정하는 데 사용된 호스트 이름, 포트, 사용자 이름 및 비밀번호를 캡처했습니다.
Mafalda - 마우스 이벤트 로깅을 수행할 수 있습니다.
metaMain - 마우스 이벤트를 기록할 수 있습니다.
NPPSPY - 운영 체제 내의 합법적인 수신 DLL에서 새로 등록된 악성 항목으로 RPC 트래픽을 리디렉션하여 일반 텍스트로 로그온 정보를 기록할 수 있도록 하여 Winlogon 프로세스에 대한 사용자 입력을 캡처합니다.
Versa Director Zero Day Exploitation - 손상된 장치의 사용자 로그인에서 자격 증명을 가로채서 수집했습니다.
완화책
이러한 유형의 공격 기술은 시스템 기능을 남용하는 것을 기반으로 하기 때문에 예방적 통제로는 쉽게 완화할 수 없습니다.
발견
드라이버
- 드라이버 부하
비정상적인 커널 드라이버 설치 활동을 모니터링합니다.
분석 1 - 예상치 못한 커널 드라이버 설치.
index=security sourcetype="WinEventLog:System" EventCode=7045 | where match(Service_Name, "(?i)(keylogger|input|capture|sniff|monitor|keyboard|logger|driver)")
파일
- 파일 수정
예상치 못한 액세스 권한 및 속성 수정을 위해 파일에 적용된 변경 사항을 모니터링합니다.
분석 1 - 예상치 못한 파일 수정.
index=security sourcetype="WinEventLog:Security" EventCode=4663 | where Object_Type="File" AND Access_Mask IN ("0x2", "0x4", "0x20", "0x80", "0x100")
프로세스
- OS API 실행
SetWindowsHook, GetKeyState 및 GetAsyncKeyState에 대한 API 호출을 모니터링합니다.
- 프로세스 생성
악성 활동을 수행하는 새로 실행된 프로세스를 모니터링합니다.
- 프로세스 메타데이터
메모리에 있는 코드와 해당 정적 바이너리의 코드를 비교하여 라이브 프로세스의 무결성을 확인하고, 특히 코드 흐름을 리디렉션하는 점프 및 기타 명령을 확인합니다.
윈도우 레지스트리
- 윈도우 레지스트리 키 수정
예상치 못한 수정을 위해 Windows 레지스트리 키나 값에 대한 변경 사항을 모니터링합니다.
인증 프로세스 수정
적대자는 사용자 자격 증명에 액세스하거나 그렇지 않으면 부당한 계정 액세스를 허용하기 위해 인증 메커니즘과 프로세스를 수정할 수 있습니다. 인증 프로세스는 Windows의 로컬 보안 인증 서버(LSASS) 프로세스 및 보안 계정 관리자(SAM), Unix 기반 시스템의 플러그형 인증 모듈(PAM), MacOS 시스템의 권한 부여 플러그인과 같은 메커니즘에 의해 처리되며, 자격 증명을 수집, 저장 및 검증합니다. 적대자는 인증 프로세스를 수정함으로써 유효한 계정을 사용하지 않고도 서비스나 시스템에 인증할 수 있습니다 .
적대자는 이 프로세스의 일부를 악의적으로 수정하여 자격 증명을 공개하거나 인증 메커니즘을 우회할 수 있습니다. 손상된 자격 증명이나 액세스는 네트워크 내 시스템의 다양한 리소스에 배치된 액세스 제어를 우회하는 데 사용될 수 있으며 VPN, Outlook Web Access 및 원격 데스크톱과 같은 원격 시스템 및 외부에서 사용 가능한 서비스에 대한 지속적인 액세스에도 사용될 수 있습니다.
절차
Ebury - 트로이 목마 기능을 사용하여 개인 키를 가로챌 수 있습니다: ssh-add.
FIN13 - 수많은 애플리케이션에서 비밀번호를 수집하기 위해 합법적인 KeePass 바이너리를 트로이 목마 버전으로 대체했습니다.
Kessel - 트로이 목마를 사용하여 ssh_login 및 user-auth_pubkey를 통해 일반 텍스트 자격 증명을 훔치는 기능을 가지고 있습니다.
SILENTTRINITY - 악성 구성 파일을 사용하여 KeePass에 백도어를 생성할 수 있으며, 레지스트리 후크를 사용하여 TortoiseSVN에 백도어를 생성할 수 있습니다.
완화책
심사
MFA 시행 등의 메커니즘이 의도한 대로 작동하는지 확인하기 위해 인증 로그를 검토합니다.
사용 중인 하이브리드 ID 솔루션을 주기적으로 검토하여 불일치 사항이 있는지 확인합니다. 예를 들어 Azure Management Portal에서 모든 PTA(Pass Through Authentication) 에이전트를 검토하여 원치 않는 에이전트나 승인되지 않은 에이전트를 식별합니다. ADFS가 사용 중인 경우 AD FS 및 Global Assembly Cache 디렉터리의 DLL과 실행 파일을 검토하여 Microsoft에서 서명했는지 확인합니다. 경우에 따라 바이너리가 카탈로그 서명되어 파일 속성을 볼 때 파일이 서명되지 않은 것처럼 보일 수 있습니다.
레지스트리( HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<NetworkProviderName>\NetworkProvider\ProviderPath) 내의 새롭고 알려지지 않은 네트워크 공급자 DLL을 주기적으로 검토합니다. 유효한 네트워크 공급자 DLL만 등록되었는지 확인합니다. 이러한 DLL의 이름은 레지스트리 키에서 찾을 수 있으며 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order, 해당 서비스 하위 키가 에서 DLL을 가리키도록 합니다 HKEY_LOCAL_MACHINE\SYSTEM\CurrentC ontrolSet\Services\<NetworkProviderName>\NetworkProvider.
다중 인증 요소
조직 정책의 일부로 다중 요소 인증(MFA)을 통합하면 초기 액세스, 측면 이동, 정보 수집과 같은 추가 전술에 사용될 수 있는 유효한 자격 증명을 적대자가 제어할 위험을 크게 줄일 수 있습니다. MFA는 클라우드 리소스 및 API에 대한 액세스를 제한하는 데에도 사용할 수 있습니다.
운영 체제 구성
유효한 암호 필터만 등록되었는지 확인하십시오. 필터 DLL은 C:\Windows\System32\도메인 컨트롤러 및/또는 로컬 컴퓨터의 Windows 설치 디렉토리(기본값)에 해당 항목 이 있어야 합니다 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages.
Windows 11 22H2부터 EnableMPRNotifications그룹 정책이나 구성 서비스 공급자를 통해 정책을 비활성화하여 Winlogon이 네트워크 공급자에게 자격 증명을 보내는 것을 방지할 수 있습니다.
비밀번호 정책
AllowReversiblePasswordEncryption애플리케이션 요구 사항이 없는 한 속성이 비활성화로 설정되어 있는지 확인하십시오 .
특권 계정 관리
특권 계정의 자격 증명을 얻어서 적대자가 광범위한 액세스를 얻을 수 있는 상황을 찾기 위해 정기적으로 도메인 및 로컬 계정과 해당 권한 수준을 감사합니다. 이러한 감사에는 기본 계정이 활성화되었는지 또는 권한이 부여되지 않은 새 로컬 계정이 생성되었는지도 포함되어야 합니다. 관리 계층에서 특권 계정 사용을 제한하기 위해 엔터프라이즈 네트워크의 설계 및 관리 모범 사례를 따르세요.
적절한 권한 분리(예: SELinux, grsecurity, AppArmor 등) 및 권한 상승 기회 제한을 통해 루트 계정에 대한 액세스를 제한하고 사용자가 보호된 구성 요소를 수정하지 못하도록 합니다.
하이브리드 ID 솔루션에 대한 액세스 권한이 있는 온프레미스 계정을 제한합니다. 예를 들어 Azure AD 글로벌 관리자 계정을 필요한 계정으로만 제한하고 이것이 하이브리드 계정이 아닌 전용 클라우드 전용 계정인지 확인합니다.
특권 프로세스 무결성
LSA에 대한 PPL(Protected Process Light)과 같은 활성화된 기능.
파일 및 디렉토리 권한 제한
디렉토리 에 대한 쓰기 액세스를 제한합니다 /Library/Security/SecurityAgentPlugins.
레지스트리 권한 제한
레지스트리 권한을 제한하여 .과 같은 중요한 레지스트리 키의 수정을 허용하지 않습니다 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order.
사용자 계정 관리
MFA와 같은 인증 메커니즘의 안전한 등록 및 비활성화를 규정하는 적절한 정책이 구현되어 있는지 확인하세요.
발견
액티브 디렉토리
- Active Directory 개체 수정
Azure AD 조건부 액세스 정책의 변경이나 새로운 MFA 애플리케이션 등록과 같은 MFA 로그온 요구 사항과 관련된 AD 보안 설정의 변경 사항을 모니터링합니다.
Azure AD 조건부 액세스 정책과 관련된 보안 설정에 대한 변경 사항을 모니터링합니다. 이는 작업 이름 [13] 아래의 Azure AD 감사 로그에서 찾을 수 있습니다.Update Conditional Access policy.
분석 1 - 정상적인 유지 관리 기간 외에 AD 보안 설정이 변경되었습니다.
index=security sourcetype IN ("WinEventLog:Security", "azure:activity", "gsuite:reports:activity", "aws:cloudtrail", "linux_audit", "macos_secure", "network_logs")(EventCode IN (4670, 5136, 5137, 5139, 5141) OR eventName IN ("UpdateUser", "UpdateGroup", "UpdatePolicy", "UpdateRole", "PutRolePolicy", "AttachUserPolicy", "AttachGroupPolicy", "AttachRolePolicy") OR "protoPayload.methodName" IN ("directory.users.update", "admin.directory.group.update", "admin.directory.roleAssignments.update"))
신청로그
- 애플리케이션 로그 내용
하이브리드 ID 솔루션에서 로그를 수집하려면 보안 감사를 활성화합니다. 예를 들어, 일반적으로 새 PTA(Pass Through Authentication) 에이전트가 추가될 때만 생성되는 Entra ID 애플리케이션 프록시 커넥터에 대한 로그인을 모니터링합니다. [5] AD FS가 사용 중인 경우 클레임의 모든 EKU 특성을 지정하는 이벤트 ID 501에 대한 로그를 검토하고 환경에 구성되지 않은 모든 값에 대한 경고를 발생시킵니다.
분석 1 - 예상치 못한 로그인 또는 새로운 PTA 에이전트 추가.
index=third_party_logs sourcetype IN ("azure:activity", "gsuite:reports:activity", "aws:cloudtrail", "office365:management", "saas_audit")(eventName IN ("AddServicePrincipal", "AddUser", "UpdateUser", "AddGroup", "UpdateGroup", "AddPolicy", "UpdatePolicy", "AddRole", "UpdateRole", "PutRolePolicy", "AttachUserPolicy", "AttachGroupPolicy", "AttachRolePolicy") OR eventCategory IN ("Sign-ins", "Security", "AuditLogs") OR EventID IN (501, 4662) OR "protoPayload.methodName" IN ("directory.users.update", "admin.directory.group.update", "admin.directory.roleAssignments.update"))
클라우드 서비스
- 클라우드 서비스 수정
SaaS ID 공급자와 내부 IaaS ID 및 액세스 관리 시스템에서 사용하는 조건부 액세스 정책에 대한 변경 사항을 모니터링합니다.
분석 1 - 해당 변경 요청 없이 액세스 정책이 변경됩니다.
index=cloud_logs sourcetype IN ("azure:activity", "gsuite:reports:activity", "aws:cloudtrail", "office365:management", "saas_audit")(eventName IN ("UpdateServicePrincipal", "UpdateUser", "UpdateGroup", "UpdatePolicy", "UpdateRole", "PutRolePolicy", "AttachUserPolicy", "AttachGroupPolicy", "AttachRolePolicy", "ModifyAuthenticationMethod") OR protoPayload.methodName IN ("directory.users.update", "admin.directory.group.update", "admin.directory.roleAssignments.update", "Set-AzureADApplicationProxyConnector", "Update-PassThroughAuthentication") OR (eventName="Sign-in" AND targetResourceType="applicationProxyConnector"))
파일
- 파일 생성
디렉토리 에 의심스러운 추가 사항을 모니터링합니다 /Library/Security/SecurityAgentPlugins. [14]
악성 네트워크 공급자 동적 링크 라이브러리(DLL)를 등록하는 데 사용될 수 있는 새로 생성된 파일을 모니터링합니다.
분석 1 - 중요 디렉토리에 승인되지 않은 파일 생성.
index=security sourcetype IN ("WinEventLog:Security", "wineventlog:sysmon", "linux_audit", "macos_secure")(EventCode=4663 OR EventCode=11 OR EventCode=13 OR (sourcetype="linux_audit" AND (syscall="creat" OR syscall="open" OR syscall="openat")) OR (sourcetype="macos_secure" AND action="file_write"))| eval TargetFile=coalesce(ObjectName, FileName, target_file)| search TargetFile IN ( "C:\Windows\System32\config\SAM", "C:\Windows\System32\config\system", "C:\Windows\System32\config\security", "C:\Windows\System32\lsass.exe", "/etc/passwd", "/etc/shadow", "/etc/pam.d/", "/Library/Preferences/com.apple.loginwindow.plist")
- 파일 수정
구성 파일 및 모듈 경로(예: )와 같은 인증 프로세스와 관련된 파일의 의심스러운 수정을 모니터링합니다 /etc/pam.d/. AIDE와 같은 시스템 무결성 도구와 auditd와 같은 모니터링 도구를 사용하여 PAM 파일을 모니터링합니다. 또한 인증서 및 암호화 키 자료에 대한 액세스를 모니터링합니다.
분석 1 - 인증 관련 파일에 대한 무단 수정.
index=security sourcetype IN ("WinEventLog:Security", "WinEventLog:Microsoft-Windows-Sysmon/Operational", "linux_audit", "macos_secure")(EventCode=4663 OR EventCode=11 OR EventCode=13 OR (sourcetype="linux_audit" AND (syscall IN ("creat", "open", "openat", "write", "chmod", "chown", "unlink"))) OR (sourcetype="macos_secure" AND action="file_write"))| eval TargetFile=coalesce(ObjectName, FileName, target_file)| search TargetFile IN ( "C:\Windows\System32\config\SAM", "C:\Windows\System32\config\system", "C:\Windows\System32\config\security", "C:\Windows\System32\lsass.exe", "C:\Windows\System32\Drivers\etc\hosts", "/etc/passwd", "/etc/shadow", "/etc/pam.d/", "/etc/security/", "/etc/sshd_config", "/etc/ssh/sshd_config", "/Library/Preferences/com.apple.loginwindow.plist", "/Library/Security/authorization", "/etc/krb5.conf", "/etc/krb5.keytab", "/etc/pam.conf", "/etc/security/access.conf", "/etc/security/limits.conf", "/etc/security/namespace.conf", "/etc/security/sepermit.conf", "/etc/security/time.conf")| eval User=coalesce(Account_Name, user, uid, user_name)| eval Platform=case( sourcetype=="WinEventLog:Security", "Windows", sourcetype=="wineventlog:sysmon", "Windows", sourcetype=="linux_audit", "Linux", sourcetype=="macos_secure", "macOS", true(), "Unknown")
로그온 세션
- 로그온 세션 생성
계정을 공유하는 시스템(사용자, 관리자 또는 서비스 계정)에서 새로 구성된 로그인 동작을 모니터링합니다. 예: 한 계정이 여러 시스템에 동시에 로그인; 여러 계정이 동일한 컴퓨터에 동시에 로그인; 이상한 시간에 로그인(예: 사용자가 없는 경우) 또는 업무 시간 외에 로그인한 계정. 활동은 대화형 로그인 세션에서 발생하거나 특정 계정으로 원격 시스템에서 바이너리를 실행하는 데 사용되는 계정의 프로세스 소유권에서 발생할 수 있습니다. 다른 보안 시스템을 로그인 정보와 연관시킵니다(예: 사용자에게 활성 로그인 세션이 있지만 건물에 들어오지 않았거나 VPN 액세스 권한이 없음). 엔터프라이즈 전체와 외부에서 액세스 가능한 서비스에서 강력하고 일관된 계정 활동 감사 정책을 구성합니다. [15]
분석 1 - 특이한 로그온 패턴 및 시간.
index=security sourcetype IN ("WinEventLog:Security", "linux_secure", "macos_secure")(EventCode=4624 OR EventCode=4625 OR EventCode=4768 OR EventCode=4769 OR EventCode=4776 OR EventCode=4778 OR EventCode=4779 OR EventCode=5379 OR EventCode=22)| eval LogonType=case( EventCode==4624, "Logon", EventCode==4625, "Failed Logon", EventCode IN (4768, 4769), "Kerberos", EventCode==4776, "NTLM", EventCode==4778, "Session Reconnected", EventCode==4779, "Session Disconnected", EventCode==5379, "Login Attempt", EventCode==22, "Interactive Logon", true(), "Other")| eval User=coalesce(user, UserName, Account_Name, user_name)| eval System=coalesce(ComputerName, host)| eval Platform=case( sourcetype=="WinEventLog:Security", "Windows", sourcetype=="linux_secure", "Linux", sourcetype=="macos_secure", "macOS", true(), "Unknown")| where (date_wday!="saturday" AND date_wday!="sunday") AND (date_hour<9 OR date_hour>17)| bin _time span=1m| stats earliest(_time) as first_time, latest(_time) as last_time, count by User, System, LogonType, Platform| eval duration=last_time-first_time| where (LogonType="Logon" AND duration<60 AND count > 1) OR (LogonType="Failed Logon" AND count > 5)| eval isOddTime=if(date_hour<9 OR date_hour>17, "Yes", "No")| eval isMultipleSystems=if(count>1, "Yes", "No")| table first_time, last_time, duration, User, System, LogonType, Platform, count, isOddTime, isMultipleSystems| sort -count
기준 치수
- 모듈 로드
도메인 컨트롤러 및/또는 로컬 컴퓨터에 기록된 새롭고 익숙하지 않은 DLL 파일을 모니터링합니다. 암호 필터는 lsass.exe에서 자동 실행 및 로드된 DLL로도 표시됩니다. AD FS가 사용 중인 경우 AD FS 서버에서 DLL 생성과 인식되지 않거나 서명되지 않은 DLL이 애플리케이션에 로드되는 것을 모니터링합니다 Microsoft.IdentityServer.Servicehost.
분석 1 - 중요 시스템에 승인되지 않은 DLL이 로드됩니다.
index=security sourcetype IN ("WinEventLog:Microsoft-Windows-Sysmon/Operational", "linux_secure", "macos_secure")(EventCode=7 OR EventCode=10 OR sourcetype="linux_secure" OR sourcetype="macos_secure")| eval ImageLoaded=coalesce(Image, file_path, target_file)| eval Process=coalesce(ProcessGuid, pid, process_id)| eval User=coalesce(User, user, user_name)| eval Platform=case( sourcetype=="WinEventLog:Microsoft-Windows-Sysmon/Operational", "Windows", sourcetype=="linux_secure", "Linux", sourcetype=="macos_secure", "macOS", true(), "Unknown")| search ImageLoaded IN ( "\lsass.exe", "\services.exe", "\winlogon.exe", "/usr/libexec/", "/usr/bin/", "/etc/pam.d/", "/Library/Preferences/com.apple.loginwindow.plist")| search ImageLoaded IN ("\.dll", "/.so", "/.dylib")| eval isSuspicious=if(match(ImageLoaded, ".\(?!\")(lsass|services|winlogon).exe\.\.dll$|/usr/libexec/.\.so$|/usr/bin/.\.so$|/etc/pam.d/.\.so$|/Library/Preferences/com.apple.loginwindow.plist.\.dylib$"), "Yes", "No")| where isSuspicious="Yes"| bin _time span=1m| stats count by _time, User, ImageLoaded, Process, Platform, host| where count > 1| table _time, User, ImageLoaded, Process, Platform, host, count| sort -count </code
프로세스
- OS API실행
도메인 컨트롤러에서 실행되는 lsass.exe를 조작하는 데 사용될 수 있는 호출 OpenProcess과 인증 관련 시스템 DLL(cryptdll.dll 및 samsrv.dll 등)에서 내보낸 기능에 대한 악의적인 수정을 모니터링합니다. [17]
악성 네트워크 공급자 DLL을 강조 표시할 수 있는 비정상적인 API 호출을 모니터링합니다 NPLogonNotify(). [18]
분석 1 - lsass.exe를 조작하기 위한 무단 API 호출 또는 비정상적인 API 호출
index=security sourcetype IN ("Sysmon", "WinEventLog:Security", "Powershell", "linux_audit", "macos_secure")(EventCode=4688 OR EventCode=10 OR EventID=4104)| eval CommandLine=coalesce(CommandLine, process_command_line, message)| eval User=coalesce(User, user, user_name)| eval Platform=case( sourcetype=="WinEventLog:Microsoft-Windows-Sysmon/Operational", "Windows", sourcetype=="linux_audit", "Linux", sourcetype=="macos_secure", "macOS", true(), "Unknown")| search CommandLine IN ("SetWindowsHookEx", "LogonUser", "AuthenticateUser", "pam_unix", "pam_exec", "osascript", "launchctl")| eval isSuspicious=if( (Platform="Windows" AND (match(CommandLine, ".SetWindowsHookEx.|.LogonUser.|.CredWrite."))), (Platform="Linux" AND (match(CommandLine, ".pam_unix.|.pam_exec."))), (Platform="macOS" AND (match(CommandLine, ".osascript.|.launchctl."))), "Yes", "No")| where isSuspicious="Yes"| stats count by _time, User, CommandLine, Platform, host| where count > 1| table _time, User, CommandLine, Platform, host, count| sort -count
분석 2 - lsass.exe를 조작하는 승인되지 않은 API 호출 또는 NPLogonNotify()에 대한 비정상적인 API 호출.
index=security_logs source="WinEventLog:Security" | eval suspicious_processes=if((process_name="lsass.exe" AND action="OpenProcess") OR (dll_name IN ("cryptdll.dll", "samsrv.dll") AND (action="modify" OR action="load")) OR (api_call="NPLogonNotify" AND dll_name="unknown")), "true", "false")| search suspicious_processes="true"| stats count by host, process_name, dll_name, api_call, user, action| where count > 1
-프로세스 접근
인증 메커니즘과 상호 작용하는 예상치 못한 프로세스 및 사용자 자격 증명에 액세스하거나 계정에 대한 부당한 액세스를 허용하는 프로세스를 모니터링합니다.
분석 1 - 인증 메커니즘을 통한 승인되지 않은 프로세스 상호작용.
( index=your_index source="WinEventLog:Security" EventCode=4688 | where (New_Process_Name IN ("C:\Windows\System32\lsass.exe", "C:\Windows\System32\winlogon.exe"))AND (Parent_Process_Name != "C:\Windows\System32\services.exe")| stats count by New_Process_Name, Parent_Process_Name, Account_Name, ComputerName) OR (index=your_index sourcetype=linux_auditd| where file IN ("/etc/pam.d/", "/etc/passwd", "/etc/shadow")| stats count by file, user, host )
사용자 계정
- 사용자 계정 인증
사용자 계정에서 인증 엔터티에 MFA 자격 증명이 제공되지 않는 계정 인증을 모니터링합니다.
분석 1 - Windows MFA 없이 성공적으로 로그온했습니다.
index=your_index sourcetype="WinEventLog:Security" EventCode=4624 | eval MFA_used=if(searchmatch("MFA"), "Yes", "No")| where MFA_used="No"| stats count by Account_Name, Logon_Type, IpAddress, ComputerName
분석 2 - Linux MFA 없이 성공적으로 로그온했습니다.
index=your_index sourcetype="linux_secure" OR sourcetype="macos_auth" "Accepted password" | eval MFA_used=if(searchmatch("MFA"), "Yes", "No")| where MFA_used="No"| stats count by user, src_ip, host
- 사용자 계정 수정
성공적인 로그인에 MFA 자격 증명이 필요하지 않은 대체 보안 설정을 사용하여 장치 및 사용자 계정이 등록되는지 모니터링합니다.
분석 1 - Windows 사용자 계정의 무단 수정(사용자 계정 수정)
index=your_index sourcetype="WinEventLog:Security" EventCode IN (4720, 4722, 4724, 4738, 4725, 4732, 4733, 4735, 4737) | eval Risk_Level=if(MemberName="Domain Admins" OR MemberName="Administrators", "High", "Low")| stats count by TargetUserName, AccountName, EventCode, Risk_Level, ComputerName| where Risk_Level="High"
Analytic 2 - macOS/Linux(사용자 계정 수정)
index=your_index sourcetype="linux_secure" OR sourcetype="macos_auth" "usermod" OR "passwd" OR "chpasswd" OR "adduser" OR "deluser" OR "vipw" | stats count by user, command, src_ip, host | where command IN ("usermod", "passwd", "chpasswd", "adduser", "deluser", "vipw")
윈도우 레지스트리
- 윈도우 레지스트리 키 생성
네트워크 공급자 레지스트리 키(예: ) 추가를 모니터링합니다 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<NetworkProviderName>\NetworkProvider.
분석 1 - 네트워크 공급자 레지스트리 키의 무단 추가.
sourcetype=WinEventLog:Security(EventCode=4663 OR EventCode=4657) | eval registry_path=mvindex(split(ObjectName,"\"), 0, mvcount(split(ObjectName,"\"))-1)| search registry_path IN ("HKLM\SYSTEM\CurrentControlSet\Control\Lsa", "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication", "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters")
- 윈도우 레지스티리 키 수정
비밀번호 필터(예: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages)에 대한 레지스트리 항목의 변경 사항을 모니터링하고 이 파일이 참조하는 DLL 파일을 연관시켜 조사합니다.
네트워크 공급자(예: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order)에 대한 레지스트리 항목의 변경 사항을 모니터링하고 이러한 값이 참조하는 DLL 파일을 연관시킨 다음 조사합니다.
분석 1 - 비밀번호 필터나 네트워크 공급자에 대한 레지스트리 항목에 대한 무단 수정.
index=wineventlog| eval suspicious_activity=if((EventCode=4657 AND (RegistryKeyPath="HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages" OR RegistryKeyPath="HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order")) OR (EventCode=4663 AND AccessMask="0x2" AND (ObjectName="HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages" OR ObjectName="HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order")), "true", "false")
분석 2 - Windows 레지스트리 키의 무단 수정은 인증 메커니즘을 수정할 수 있습니다.
sourcetype=WinEventLog:Security(EventCode=4657 OR EventCode=4663) | eval registry_path=mvindex(split(ObjectName,"\"), 0, mvcount(split(ObjectName,"\"))-1)| search registry_path IN ("HKLM\SYSTEM\CurrentControlSet\Control\Lsa", "HKLM\SYSTEM\CurrentControlSet\Services\WDigest\Parameters", "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL")
다중 요소 인증 차단
적대자는 시스템, 서비스 및 네트워크 리소스에 액세스하는 데 사용할 수 있는 자격 증명에 액세스하기 위해 다중 요소 인증(MFA) 메커니즘(예: 스마트 카드, 토큰 생성기 등)을 표적으로 삼을 수 있습니다. MFA를 사용하는 것이 권장되며 사용자 이름과 비밀번호만 사용하는 것보다 더 높은 수준의 보안을 제공하지만 조직은 이러한 보안 메커니즘을 가로채고 우회하는 데 사용할 수 있는 기술을 알고 있어야 합니다.
스마트 카드가 다중 인증에 사용되는 경우 키로거를 사용하여 일반적인 사용 중에 스마트 카드와 관련된 비밀번호를 얻어야 합니다. 삽입된 카드와 스마트 카드 비밀번호에 대한 액세스가 모두 있는 경우, 공격자는 감염된 시스템을 사용하여 네트워크 리소스에 연결하여 삽입된 하드웨어 토큰으로 인증을 프록시할 수 있습니다.
적대자는 RSA SecurID와 같은 다른 하드웨어 토큰을 유사하게 타겟팅하기 위해 키로거를 사용할 수도 있습니다. 토큰 입력(사용자의 개인 식별 코드 포함)을 캡처하면 임시 액세스(즉, 다음 값 롤오버까지 일회용 패스코드를 재생)를 제공할 수 있으며, 적대자가 미래 인증 값을 안정적으로 예측할 수 있도록 할 수도 있습니다(알고리즘과 추가된 임시 코드를 생성하는 데 사용된 시드 값에 대한 액세스가 제공됨).
다른 MFA 방법은 적대자가 가로채어 인증하는 데 사용될 수 있습니다. 일회용 코드가 대역 외 통신(이메일, SMS)을 통해 전송되는 것은 일반적입니다. 장치 및/또는 서비스가 보안되지 않은 경우 가로채기에 취약할 수 있습니다. 서비스 제공자도 타깃이 될 수 있습니다. 예를 들어, 적대자는 사용자의 전화로 전송된 MFA 코드를 훔치기 위해 SMS 메시징 서비스를 손상시킬 수 있습니다.
절차
Chimera - SMS를 통해 전송된 2FA 코드를 가로채기 위해 침해된 사용자를 위한 대체 전화 번호를 등록했습니다.
Kimsuky - 2단계 인증에 필요한 일회용 비밀번호를 가로채기 위해 독점 도구를 사용했습니다.
랩수스 LAPSUS - 합법적인 사용자가 필요한 승인을 부여할 것을 바라는 간단한 승인 MFA 프롬프트를 트리거하기 위해 도난된 세션 토큰과 비밀번호를 재생했습니다.
Operation Wocao 동안 위협 행위자는 사용자 지정 수집 방법을 사용하여 2단계 인증 소프트 토큰을 가로채었습니다.
SLOWPULSE - ACE-2FA 인증 절차 동안 손상된 Pulse Secure VPN에 대한 자격 증명을 기록할 수 있습니다.
Sykipot - 탐지된 하드웨어 토큰을 사용하여 제한된 네트워크 리소스에 대한 연결을 위한 프록시 인증을 위해 스마트 카드 기술을 타겟팅하는 기능이 포함되어 있는 것으로 알려져 있습니다.
완화책
사용자 교육
사용하지 않을 때는 스마트 카드를 제거하세요.
발견
드라이버
- 드라이버 부하
적대자가 프록시 스마트 카드 연결을 사용하는지 모니터링하는 것은 토큰을 시스템에 삽입해야 하기 때문에 어려울 수 있습니다. 따라서 합법적인 사용자가 사용하고 다른 네트워크 동작과 섞일 가능성이 더 큽니다. 입력 캡처 와 유사하게 키로깅 활동은 다양한 형태를 취할 수 있지만 드라이버 설치를 통해 감지할 수 있습니다.
분석 1 - 예상치 못한 커널 드라이버 설치.
(index=security sourcetype="WinEventLog:System" EventCode=7045) OR(index=os sourcetype="linux_audit" action="add" path="/lib/modules/*/kernel/drivers/" OR path="/etc/udev/rules.d/") OR(index=os sourcetype="macos_secure" message="kextload")
프로세스
- OS API실행
키 입력을 가로채기 위한 폴링과 관련된 API 호출을 모니터링합니다.
윈도우 레지스트리
- 윈도우 레지스트리 키 수정
시스템, 서비스 및 네트워크 리소스에 액세스하는 데 사용할 수 있는 자격 증명에 액세스하기 위해 스마트 카드와 같은 다중 요소 인증 메커니즘을 대상으로 할 수 있는 Windows 레지스트리 키나 값의 변경 사항을 모니터링합니다.
분석 1 - MFA 설정과 관련된 무단 레지스트리 변경.
index=security sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=13 | where match(RegistryKeyPath, "(?i)(MFA|2FA|MultiFactorAuth|SmartCard|Token|SecureID|OTP|OneTimePasscode)")
다중 요소 인증 요청 생성
공격자는 다중 인증(MFA) 메커니즘을 우회하여 사용자에게 MFA 요청을 전송하여 계정에 액세스하려고 시도할 수 있습니다.
유효한 계정 에 대한 자격 증명을 소지한 공격자는 추가 자격 증명 및 보안 제어로 필요한 2FA 또는 MFA 메커니즘에 대한 액세스 권한이 없으면 로그인 프로세스를 완료하지 못할 수 있습니다. 이를 피하기 위해 공격자는 Duo Push, Microsoft Authenticator, Okta 또는 이와 유사한 서비스와 같은 MFA 서비스에 대한 푸시 알림의 자동 생성을 악용하여 사용자에게 계정에 대한 액세스 권한을 부여할 수 있습니다. 공격자가 피해자 계정에 대한 자격 증명이 없는 경우 이 옵션이 셀프 서비스 암호 재설정(SSPR)에 대해 구성된 경우 자동 푸시 알림 생성을 악용할 수도 있습니다.
일부 경우, 적대자는 MFA 푸시 알림, SMS 메시지, 전화 통화로 사용자를 폭격하기 위해 로그인 시도를 지속적으로 반복할 수 있으며, 이는 결국 사용자가 "MFA 피로"에 대한 응답으로 인증 요청을 수락하게 만들 수 있습니다.
절차
APT29 - 피해자 계정에 액세스하기 위해 반복적인 MFA 요청을 사용했습니다.
C0027 동안 Scattered Spider는 피해자가 MFA 푸시 챌린지를 수락할 때까지 지속적으로 MFA 메시지를 보내어 액세스를 시도했습니다.
랩수스 LAPSUS - 합법적인 사용자가 필요한 승인을 부여할 것이라는 희망으로 MFA 프롬프트를 대상 사용자에게 스팸으로 보냈습니다.
Scattered Spider - 대상에 반복적인 MFA 인증 요청을 보내어 다중 인증 요소(MFA) 피로를 사용했습니다.
완화책
계정 사용 정책
로그인 시도와 그에 따른 2FA/MFA 서비스 요청이 의심스러운 위치에서 시작되거나 로그인 시도의 출처가 2FA/MFA 스마트 기기의 위치와 일치하지 않는 경우 시작되지 않도록 계정 제한을 활성화합니다. 조건부 액세스 정책을 사용하여 규정을 준수하지 않는 기기나 정의된 조직 IP 범위 외부에서 로그인을 차단합니다.
다중 인증 요소
간단한 푸시 또는 원클릭 2FA/MFA 옵션을 대체하여 보다 안전한 2FA/MFA 메커니즘을 구현합니다. 예를 들어, 사용자가 로그인 화면에서 제공하는 일회용 코드를 2FA/MFA 애플리케이션에 입력하거나 다른 대역 외 2FA/MFA 메커니즘(예: 동반 사용자 PIN이 필요한 회전 코드를 제공하는 회전 코드 기반 하드웨어 토큰)을 활용하는 것이 보다 안전할 수 있습니다. 또한 기본 구성을 변경하고 특정 기간 동안 사용자에게 보낼 수 있는 최대 2FA/MFA 요청 프롬프트 수에 대한 제한을 구현합니다.
사용자 교육
사용자에게 자신이 시작한 로그인 시도에서만 2FA/MFA 요청을 수락하고, 2FA/MFA 요청을 촉구하는 로그인 시도의 소스 위치를 검토하고, 의심스럽거나 요청하지 않은 메시지는 보고하도록 교육합니다.
발견
신청 로그
- 애플리케이션 로그 내용
사용자의 기본 자격 증명이 손상되었을 수 있는 반복적인 MFA 실패를 포함하여 의심스러운 이벤트에 대해 애플리케이션 로그를 모니터링합니다.
로그온 세션
- 로그온 세션 생성
유효한 자격 증명을 사용한 빠른 로그인 시도 등 의심스러운 이벤트가 있는지 2FA/MFA 애플리케이션 로그를 모니터링합니다.
- 로그온 세션 메타데이터
비정상적인 로그인 시도 소스 위치, 로그인 시도 위치 불일치, 스마트 기기에서 2FA/MFA 요청 메시지 승인 등 의심스러운 이벤트에 대해 2FA/MFA 애플리케이션 로그를 모니터링합니다.
사용자 계정
- 사용자 계정 인증
사용자 계정 로그에서 의심스러운 이벤트(예: 비정상적인 로그인 시도 소스 위치, 로그인 시도 위치와 2FA/MFA 요청 메시지를 수신하는 스마트 기기의 위치 불일치, 반복적인 로그인 시도의 잦은 횟수)를 모니터링합니다. 이러한 이벤트는 모두 2FA/MFA 메커니즘 없이 사용자의 기본 자격 증명이 손상되었음을 나타낼 수 있습니다.
분석 1 - 비정상적인 IP 주소, 관리되지 않는 장치, 자동화 도구 또는 스크립트를 나타내는 비정상적인 사용자 에이전트, 높은 실패율
index="m365_audit_logs" Operation="UserLoginFailed" ErrorNumber="500121"| stats count by ClientIP, UserId, DeviceProperties| where ClientIP!="expected_ip" OR DeviceProperties!="expected_properties"
네트워크 스니핑
적대자는 네트워크 트래픽을 수동적으로 스니핑하여 네트워크를 통해 전달된 인증 자료를 포함한 환경에 대한 정보를 캡처할 수 있습니다. 네트워크 스니핑은 시스템의 네트워크 인터페이스를 사용하여 유선 또는 무선 연결을 통해 전송된 정보를 모니터링하거나 캡처하는 것을 말합니다. 적대자는 네트워크 인터페이스를 무차별 모드로 전환하여 네트워크를 통해 전송되는 데이터에 수동적으로 액세스하거나 span 포트를 사용하여 더 많은 양의 데이터를 캡처할 수 있습니다.
이 기술을 통해 캡처된 데이터에는 사용자 자격 증명, 특히 안전하지 않고 암호화되지 않은 프로토콜을 통해 전송된 자격 증명이 포함될 수 있습니다. LLMNR/NBT-NS Poisoning 및 SMB Relay 와 같은 이름 서비스 해결 포이즈닝 기술은 트래픽을 적대자에게 리디렉션하여 웹사이트, 프록시 및 내부 시스템에 대한 자격 증명을 캡처하는 데 사용될 수도 있습니다.
네트워크 스니핑은 후속 측면 이동 및/또는 방어 회피 활동 에 필요한 실행 중인 서비스, 버전 번호 및 기타 네트워크 특성(예: IP 주소, 호스트 이름, VLAN ID)과 같은 구성 세부 정보를 공개할 수 있습니다. 적대자는 또한 중간자 공격 (AiTM) 중에 네트워크 스니핑을 활용하여 환경에 대한 추가 지식을 수동적으로 얻을 수 있습니다.
클라우드 기반 환경에서 적대자는 여전히 트래픽 미러링 서비스를 사용하여 가상 머신의 네트워크 트래픽을 스니핑할 수 있습니다. 예를 들어, AWS 트래픽 미러링, GCP 패킷 미러링 및 Azure vTap을 사용하면 사용자가 트래픽을 수집할 지정된 인스턴스와 수집된 트래픽을 보낼 지정된 대상을 정의할 수 있습니다. 종종 이러한 트래픽의 대부분은 트래픽 암호화 및 복호화의 부담을 줄이기 위해 부하 분산 장치 수준에서 TLS 종료를 사용하기 때문에 일반 텍스트로 제공됩니다. 그런 다음 적대자는 스니핑된 트래픽에 액세스하기 위해 클라우드 계정으로 데이터 전송과 같은 침출 기술을 사용할 수 있습니다.
네트워크 장치에서 적대자는와 같은 네트워크 장치 CLImonitor capture 명령을 사용하여 네트워크 캡처를 수행할 수 있습니다.
절차
2015년 우크라이나 전력 공격 동안 Sandworm Team은 BlackEnergy의 네트워크 스니퍼 모듈을 사용하여 로컬 LAN과 전력망의 산업용 제어 시스템 간 네트워크를 통해 전송되는 사용자 자격 증명을 발견했습니다.
APT28 - NetBIOS 이름 서비스 포이즈닝을 수행하기 위해 오픈 소스 도구 Responder를 배포하여 합법적인 자격 증명에 대한 액세스를 허용하는 사용자 이름과 해시된 비밀번호를 캡처했습니다. APT28의 폐쇄 액세스 팀은 Wi-Fi 파인애플을 사용하여 Wi-Fi 신호와 사용자 자격 증명을 가로채었습니다.
APT33 - 네트워크 트래픽을 스니핑하여 자격 증명을 수집하기 위해 SniffPass를 사용했습니다.
DarkVishnya - 네트워크 스니핑을 사용하여 로그인 데이터를 얻었습니다.
Emotet - 네트워크 트래픽을 모니터링하기 위해 네트워크 API를 연결하는 것으로 관찰되었습니다.
Empire - 사용하면 대상 호스트에서 패킷 캡처를 수행할 수 있습니다.
FoggyWeb - 인트라넷/인터넷에서 AD FS 서버로 전송된 모든 수신 HTTP GET 및 POST 요청을 수동으로 모니터링하고, 액터가 정의한 사용자 지정 URI 패턴과 일치하는 HTTP 요청을 가로채기 위해 사용자 지정 수신기를 구성할 수 있습니다.
Impacket - 인터페이스나 원시 소켓을 통해 네트워크 트래픽을 스니핑하는 데 사용할 수 있습니다.
Kimsuky - Nirsoft SniffPass 네트워크 스니퍼를 사용하여 비보안 프로토콜을 통해 전송된 비밀번호를 얻었습니다.
MESSAGETAP - libpcap 라이브러리를 사용하여 모든 트래픽을 수신하고 이더넷 및 IP 계층부터 네트워크 프로토콜을 구문 분석합니다. SCTP, SCCP 및 TCAP을 포함한 프로토콜 계층을 계속 구문 분석하고 마지막으로 SMS 메시지 데이터와 라우팅 메타데이터를 추출합니다.
NBTscan - 전체 패킷 콘텐츠를 덤프하고 인쇄할 수 있습니다.
Penquin - 특정 조건과 일치하는 패킷을 찾기 위해 네트워크 트래픽을 탐지할 수 있습니다.
PoshC2 - 손상된 호스트에서 패킷 캡처를 수행하기 위한 모듈이 포함되어 있습니다.
Regin - HTTP, SMTP 및 SMB를 통해 전달된 자격 증명을 탐지하는 기능이 있는 것으로 보입니다.
Responder - 이름 서비스가 오염된 후 시스템으로 전송되는 해시 및 자격 증명을 캡처합니다.
Sandworm Team - 네트워크 트래픽의 비밀번호를 탐지하기 위해 intercepter-NG를 사용했습니다.
VersaMem - 손상된 시스템에 Catalina 애플리케이션 필터 체인을 연결하여 doFilter를 통해 로컬 Tomcat 웹 서버에 대한 모든 인바운드 요청을 모니터링하고 비밀번호 및 후속 Java 모듈과 같은 매개변수를 검사했습니다.
완화책
민감한 정보 암호화
모든 유선 및/또는 무선 트래픽이 적절하게 암호화되었는지 확인하십시오. Kerberos와 같은 인증 프로토콜에 대한 모범 사례를 사용하고 자격 증명이 포함될 수 있는 웹 트래픽이 SSL/TLS로 보호되도록 하십시오.
다중 인증 요소
가능하면 다중 요소 인증을 사용하세요.
네트워크 세분화
브로드캐스트 및 멀티캐스트 스니핑에 대한 직접 액세스를 거부하고 LLMNR/NBT-NS 포이즈닝 및 SMB 릴레이 와 같은 공격을 방지합니다.
사용자 계정 관리
클라우드 환경에서는 명시적으로 필요하지 않은 한 사용자에게 트래픽 미러를 생성하거나 수정할 수 있는 권한이 부여되지 않도록 해야 합니다.
발견
명령
- 명령 실행
네트워크 트래픽을 스니핑하여 네트워크를 통해 전달되는 인증 자료를 포함한 환경에 대한 정보를 캡처하는 데 도움이 되는 작업에 대해 실행된 명령과 인수를 모니터링합니다.
분석 1 - 네트워크 스니핑 도구의 예상치 못한 명령 실행.
index=security (sourcetype="Powershell" EventCode=4104) | eval CommandLine=coalesce(Command_Line, CommandLine)| where ExecutingProcess IN ("tshark.exe", "windump.exe", "tcpdump.exe", "wprui.exe", "*wpr.exe")
프로세스
- 프로세스 생성
네트워크를 통해 전달되는 인증 자료를 포함하여 환경에 대한 정보를 캡처하기 위해 네트워크 트래픽을 스니핑하는 데 도움이 될 수 있는 새로 실행된 프로세스를 모니터링합니다.
참고: Analytic은 Windows 시스템용이며 가장 일반적인 네트워크 스니핑 도구의 이름을 가진 새로운 프로세스를 찾습니다. 시스템 관리자가 이러한 도구를 정기적으로 사용하는 네트워크에서는 시끄러울 수 있지만 대부분의 네트워크에서는 주목할 만한 사용입니다.
분석 1 - 네트워크 스니핑 도구의 예상치 못한 실행.
index=security sourcetype="WinEventLog:Security" EventCode=4688 OR index=security sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 Image IN ("tshark.exe", "windump.exe", "*tcpdump.exe", "wprui.exe", "wpr.exe") AND ParentImage!="C:\Program Files\Windows Event Reporting\Core\EventReporting.AgentService.exe"
OS 자격 증명 덤핑
적대자는 계정 로그인 및 자격 증명 자료를 얻기 위해 자격 증명을 덤프하려고 시도할 수 있으며, 일반적으로 해시 또는 일반 텍스트 암호 형태입니다. 자격 증명은 OS 캐시, 메모리 또는 구조에서 얻을 수 있습니다. 그런 다음 자격 증명을 사용하여 측면 이동을 수행 하고 제한된 정보에 액세스할 수 있습니다.
관련 하위 기술에 언급된 도구 중 몇 가지는 적대자와 전문 보안 테스터가 모두 사용할 수 있습니다. 추가 사용자 지정 도구도 존재할 가능성이 높습니다.
절차
APT28 - 공개적으로 사용 가능한 도구(예: Mimikatz)와 사용자 정의 암호 검색 도구를 모두 피해자에게 정기적으로 배포합니다.
APT32 - GetPassword_x64를 사용하여 자격 증명을 수집했습니다.
APT39 - 자격 증명을 얻기 위해 다양한 버전의 Mimikatz를 사용했습니다.
Axiom - 자격 증명을 덤프하는 것으로 알려져 있습니다.
Carbanak - Windows 로그온 비밀번호 세부 정보를 얻습니다.
Ember Bear - SSH 키와 같은 대상 시스템의 자격 증명 자료를 수집하여 피해자 환경에 대한 액세스를 용이하게 합니다.
HOMEFRY - 신임장 덤핑을 수행할 수 있습니다.
Leviathan - HOMEFRY를 포함하여 공개적으로 사용 가능한 도구를 사용하여 비밀번호 해시를 덤프했습니다.
MgBot - 프로세스 메모리에서 자격 증명을 덤프하고 캡처하기 위한 모듈이 포함되어 있습니다.
OnionDuke - 피해자의 자격 증명을 훔칩니다.
PinchDuke - 손상된 호스트에서 자격 증명을 훔칩니다. PinchDuke의 자격 증명 훔치기 기능은 Pinch 자격 증명 훔치기 맬웨어(LdPinch라고도 함)의 소스 코드를 기반으로 하는 것으로 여겨집니다.
Poseidon Group - 도메인 및 데이터베이스 서버에 속한 자격 증명을 얻는 데 중점을 두고 피해자에게 자격 증명 덤핑을 수행합니다.
Revenge RAT - 자격 증명 수집을 위한 플러그인이 있습니다.
Sowbug - 자격 증명 덤핑 도구를 사용했습니다.
Suckfly - 서명된 자격 증명 덤핑 도구를 사용하여 피해자 계정 자격 증명을 얻었습니다.
Tonto Team - 다양한 자격 증명 덤핑 도구를 사용했습니다.
Trojan.Karagany - \ProgramData\Mail\MailAg\pwds.txt에 암호를 덤프하여 저장할 수 있습니다.
완화책
Active Directory
"모든 디렉터리 변경 복제" 및 도메인 컨트롤러 복제와 관련된 기타 권한에 대한 액세스 제어 목록을 관리합니다. "보호된 사용자" Active Directory 보안 그룹에 사용자를 추가하는 것을 고려하십시오. 이렇게 하면 사용자의 일반 텍스트 자격 증명 캐싱을 제한하는 데 도움이 될 수 있습니다.
엔드포인트에서의 행동 예방
Windows 10에서 공격 표면 감소(ASR) 규칙을 활성화하여 LSASS를 보호하고 자격 증명 도용을 방지합니다.
자격 증명 액세스 보호
Windows 10에서 Microsoft는 자격 증명 덤핑 형식을 통해 자격 증명을 얻는 데 사용할 수 있는 LSA 비밀을 보호하기 위해 Credential Guard라는 새로운 보호 기능을 구현했습니다. 기본적으로 구성되지 않으며 하드웨어 및 펌웨어 시스템 요구 사항이 있습니다. 모든 형태의 자격 증명 덤핑으로부터 보호하지 않습니다.
민감함 정보 암호화
도메인 컨트롤러 백업이 제대로 보호되는지 확인하세요.
운영 체제 구성
NTLM을 비활성화하거나 제한하는 것을 고려하십시오.WDigest 인증을 비활성화하는 것을 고려하십시오.
비밀번호 정책
네트워크의 모든 시스템에서 로컬 관리자 계정에 복잡하고 고유한 비밀번호가 있는지 확인하세요.
특권 계정 관리
Windows: 엄격하게 제어되지 않는 한 시스템 전체의 로컬 관리자 그룹에 사용자 또는 관리자 도메인 계정을 두지 마십시오. 이는 모든 시스템에서 동일한 암호를 가진 로컬 관리자 계정을 갖는 것과 동일한 경우가 많습니다. 엔터프라이즈 네트워크의 설계 및 관리 모범 사례를 따라 관리 계층 전체에서 권한 있는 계정 사용을 제한하십시오.
Linux: 메모리에서 비밀번호를 스크래핑하려면 루트 권한이 필요합니다. 악의적인 프로그램이 이러한 민감한 메모리 영역에 액세스하지 못하도록 특권 계정에 대한 액세스를 제한하는 모범 사례를 따르세요.
특권 프로세스 무결성
Windows 8.1 및 Windows Server 2012 R2에서 LSA에 대해 보호 프로세스 표시등을 활성화합니다.
사용자 교육
사용자와 관리자에게 여러 계정에 동일한 비밀번호를 사용하지 않도록 교육하여 계정 및 시스템 간 자격 증명 중복을 제한합니다.
발견
액티브 디렉토리
- Activer Directory 개체 액세스
DCSync와 연관될 수 있는 복제 요청 및 기타 예약되지 않은 활동에 대한 도메인 컨트롤러 로그를 모니터링합니다. 참고: 도메인 컨트롤러는 기본 도메인 컨트롤러 계정에서 시작된 복제 요청을 기록하지 않을 수 있습니다. 알려진 도메인 컨트롤러와 연관되지 않은 IP에서 발생하는 복제 요청을 모니터링합니다 .
분석 1 - 의심스러운 복제 요청
sourcetype=WinEventLog:Security EventCode="4662" AND AccessMask= "0x100" AND (guid= "1131f6ad-9c07-11d1-f79f-00c04fc2dcd2" OR guid= "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" OR guid= "9923a32a-3607-11d2-b9be-0000f87a36b2" OR guid= "89e95b76-444d-4c62-991a-0facbeda640c")
명령
- 명령 실행
Mimikatz , ProcDump, NTDSUtil과 같은 도구를 사용하거나 /proc, /etc/passwd, /etc/shadow에 액세스하여 자격 증명을 덤프하려고 시도하는 실행된 명령 및 인수를 모니터링합니다 .
분석 1 - 자격 증명 덤핑 도구와 관련된 의심스러운 명령 실행.(index=security sourcetype="WinEventLog:Security" EventCode=4688 Image IN ("mimikatz.exe", "procdump.exe", "ntdsutil.exe", "powershell.exe") CommandLine IN ("Invoke-Mimikatz", "Invoke-CachedCredentials", "Invoke-LSADump", "Invoke-SAMDump"))OR(index=security sourcetype="linux_secure" Command IN ("cat /etc/passwd", "cat /etc/shadow", "grep -E '^[0-9a-f-] r' /proc//maps"))OR(index=security sourcetype="macOS:UnifiedLog" process IN ("cat", "grep") message IN ("/etc/passwd", "/etc/shadow", "/var/db/shadow/hash/*", "/private/etc/master.passwd"))
파일
- 파일 접근
LSASS 메모리, SAM, NTDS.dit, LSA 비밀, 캐시된 도메인 자격 증명, proc 파일 시스템, /etc/passwd, /etc/shadow 등 다양한 저장 위치에서 자격 증명 데이터를 덤프하려는 시도를 나타낼 수 있는 파일 액세스를 모니터링합니다.
분석 1 - 자격 증명 저장 파일에 대한 무단 액세스.
(index=security sourcetype="WinEventLog:Security" EventCode=4663 ObjectName IN ("\config\SAM", "\ntds.dit", "\policy\secrets", "\cache"))OR (index=security sourcetype="auditd" (key="path" (value IN ("/etc/passwd", "/etc/shadow")) OR key="proctitle" value IN ("cat", "strings", "grep", "awk", "cut", "sed", "sort", "uniq", "head", "tail", "less", "more")))OR(index=security sourcetype="macOS:UnifiedLog" (process IN ("cat", "grep", "awk", "cut", "sed", "sort", "uniq", "head", "tail", "less", "more") OR message IN ("/etc/passwd", "/etc/shadow", "/var/db/shadow/hash/*", "/private/etc/master.passwd")))
- 파일 생성
자격 증명이 포함되어 있을 수 있는 프로세스의 메모리 덤프 파일이 예기치 않게 생성되는지 모니터링합니다.
분석 1 - 예상치 못한 메모리 덤프 파일 생성.
(index=security sourcetype="WinEventLog:Security" EventCode=4663 ObjectName IN ("lsass.dmp", "\config\SAM", "\ntds.dit", "\policy\secrets", "\cache"))OR (index=security sourcetype="linux_secure" (key="path" value IN ("/etc/passwd", "/etc/shadow")))OR (index=security sourcetype="macOS:UnifiedLog" message IN ("/var/db/shadow/hash/*", "/private/etc/master.passwd"))
네트워크 트래픽
- 네트워크 트래픽 콘텐츠
알려진 도메인 컨트롤러와 연결되지 않은 IP에서 네트워크 프로토콜 및 기타 복제 요청을 모니터링합니다 .
분석 1 - 자격 증명 관리자와 관련된 비정상적인 네트워크 트래픽 콘텐츠
index=network sourcetype="stream:tcp" dest_port=389 NOT [| inputlookup known_dc_ip_addresses | fields ip]| eval SourceIP = src_ip, DestinationIP = dest_ip, Protocol = proto| search (content="LDAPSearchRequest") OR (content="LDAPModifyRequest") OR (content="bindRequest") OR (content="searchResEntry") OR (content="NTDS.dit")
- 네트워크 트래픽 흐름
네트워크 데이터에서 흔하지 않은 데이터 흐름을 모니터링합니다. 일반적으로 네트워크 통신이 없거나 이전에 본 적이 없는 네트워크를 활용하는 프로세스는 의심스럽습니다.
분석 1 - 특이한 네트워크 통신 패턴.
index=network sourcetype="stream:tcp" dest_port=389 NOT [| inputlookup known_dc_ip_addresses | fields ip]
프로세스
- OS API실행
운영 체제 및 소프트웨어에서 해시 또는 일반 텍스트 비밀번호 형태로 계정 로그인 및 자격 증명 자료를 얻기 위해 자격 증명을 덤프하려는 API 호출을 모니터링합니다.
-프로세스 접근
lsass.exe와 상호 작용하는 예상치 못한 프로세스를 모니터링합니다. Mimikatz 와 같은 일반적인 자격 증명 덤퍼는 프로세스를 열고 LSA 비밀 키를 찾고 자격 증명 세부 정보가 저장된 메모리의 섹션을 암호 해독하여 LSA 하위 시스템 서비스(LSASS) 프로세스에 액세스합니다. 자격 증명 덤퍼는 악의적인 활동의 잠재적 지표를 줄이기 위해 반사적 프로세스 주입 방법을 사용할 수도 있습니다 .
리눅스
메모리에 저장된 비밀번호와 해시를 얻으려면 프로세스는 분석 중인 프로세스에 대한 /proc 파일 시스템에서 맵 파일을 열어야 합니다. 이 파일은 경로 아래에 저장되며 /proc/<pid>/maps, 여기서 <pid>디렉토리는 이러한 인증 데이터에 대해 조사 중인 프로그램의 고유한 pid입니다. 많은 Linux 배포판에 기본으로 제공되는 AuditD 모니터링 도구는 proc 파일 시스템에서 이 파일을 여는 적대적인 프로세스를 감시하고 이러한 프로그램의 pid, 프로세스 이름 및 인수에 대해 경고하는 데 사용할 수 있습니다.
분석 1 - 자격 증명 관리자에 대한 무단 액세스.
(index=security sourcetype="WinEventLog:Security" EventCode=10 TargetImage="lsass.exe" SourceImage IN ("mimikatz.exe", "procdump.exe"))OR (index=security sourcetype="linux_secure" (key="path" value IN ("/etc/passwd", "/etc/shadow")) (key="cmdline" value IN ("mimikatz", "procdump")))OR(index=security sourcetype="macOS:UnifiedLog" message IN ("/var/db/shadow/hash/", "/private/etc/master.passwd") process IN ("mimikatz", "procdump"))
- 프로세스 생성
자격 증명 덤핑을 나타낼 수 있는 새로 실행된 프로세스를 모니터링합니다.
분석 1 - 자격 증명 덤핑과 관련된 예상치 못한 프로세스 생성.
(index=security sourcetype="WinEventLog:Security" EventCode=4688 Image="procdump.exe" CommandLine IN (" -ma lsass"))OR (index=security sourcetype="linux_secure" (key="cmdline" value IN ("procdump -ma /proc/$(pgrep lsass)")) (key="exe" value="procdump"))OR(index=security sourcetype="macOS:UnifiedLog" process="procdump" command=" -ma /proc/$(pgrep lsass)")
윈도우 레지스트리
- 윈도우 레지스트리 키 액세스
운영 체제 및 소프트웨어에서 해시 또는 일반 텍스트 비밀번호 형태로 계정 로그인 및 자격 증명 자료를 얻기 위해 자격 증명을 덤프하려는 시도가 있는 SAM 레지스트리 키에 대한 모니터링을 실시합니다.
분석 1 - SAM 키에 대한 무단 레지스트리 접근.
index=security sourcetype="WinEventLog:Security" EventCode=4663 ObjectName="*\SAM" | where ProcessName IN ("mimikatz.exe", "procdump.exe", "reg.exe", "powershell.exe", "wmic.exe", "schtasks.exe", "cmd.exe")
애플리케이션 액세스 토큰을 훔치세요
공격자는 원격 시스템과 리소스에 액세스하는 데 필요한 자격 증명을 얻는 수단으로 애플리케이션 액세스 토큰을 훔칠 수 있습니다.
애플리케이션 액세스 토큰은 사용자 또는 서비스를 대신하여 승인된 API 요청을 하는 데 사용되며 일반적으로 클라우드 및 컨테이너 기반 애플리케이션과 SaaS(Software-as-a-Service)에서 리소스에 액세스하는 방법으로 사용됩니다. 클라우드 및 컨테이너화된 환경에서 계정 API 토큰을 훔치는 공격자는 이러한 계정의 권한으로 데이터에 액세스하고 작업을 수행할 수 있으며, 이로 인해 권한이 상승하고 환경이 더욱 손상될 수 있습니다.
예를 들어, Kubernetes 환경에서 컨테이너 내부에서 실행되는 프로세스는 서비스 계정 토큰을 사용하여 Kubernetes API 서버와 통신할 수 있습니다. 컨테이너가 손상되면 공격자가 컨테이너의 토큰을 훔쳐 Kubernetes API 명령에 액세스할 수 있습니다. 마찬가지로 CI/CD(지속적 개발/지속적 통합) 파이프라인 내의 인스턴스는 종종 API 토큰을 사용하여 테스트 및 배포를 위해 다른 서비스에 인증합니다. 이러한 파이프라인이 손상되면 공격자가 이러한 토큰을 훔쳐 권한을 활용할 수 있습니다.
토큰 도용은 사회 공학을 통해서도 발생할 수 있으며, 이 경우 액세스 권한을 부여하기 위해 사용자 작업이 필요할 수 있습니다. OAuth는 시스템에 액세스하기 위해 사용자에게 토큰을 발급하는 일반적으로 구현되는 프레임워크 중 하나입니다. 클라우드 기반 서비스나 보호된 API에 액세스하려는 애플리케이션은 다양한 권한 부여 프로토콜을 통해 OAuth 2.0을 사용하여 진입할 수 있습니다. 일반적으로 사용되는 시퀀스의 예로는 Microsoft의 Authorization Code Grant 흐름이 있습니다. OAuth 액세스 토큰을 사용하면 타사 애플리케이션이 사용자 자격 증명을 얻지 않고도 애플리케이션에서 요청한 방식으로 사용자 데이터가 포함된 리소스와 상호 작용할 수 있습니다.
공격자는 대상 사용자의 OAuth 토큰을 사용하여 리소스에 대한 액세스 권한이 부여되도록 설계된 악성 애플리케이션을 구성하여 OAuth 권한 부여를 활용할 수 있습니다. 공격자는 Azure Portal, Visual Studio IDE, 명령줄 인터페이스, PowerShell 또는 REST API 호출을 사용하여 권한 부여 서버(예: Microsoft Identity Platform)에 애플리케이션 등록을 완료해야 합니다. 그런 다음 대상 사용자에게 스피어피싱 링크를 보내 애플리케이션에 대한 액세스 권한을 부여하도록 유도할 수 있습니다. OAuth 액세스 토큰이 부여되면 애플리케이션은 애플리케이션 액세스 토큰을 통해 사용자 계정의 기능에 대한 장기적인 액세스 권한을 얻을 수 있습니다 .
애플리케이션 액세스 토큰은 제한된 수명 내에서 작동할 수 있으므로 공격자가 도난한 토큰을 활용할 수 있는 기간이 제한됩니다. 그러나 어떤 경우에는 공격자가 애플리케이션 새로 고침 토큰을 훔쳐 사용자에게 묻지 않고도 새로운 액세스 토큰을 얻을 수도 있습니다.
절차
AADInternals - 악성 링크가 포함된 피싱 이메일을 통해 사용자의 액세스 토큰을 훔칠 수 있습니다.
APT28 - "Google Defender", "Google Email Protection", Gmail 사용자를 위한 "Google Scanner"로 위장한 애플리케이션을 포함하여 사용자 OAuth 액세스 토큰을 훔치기 위해 여러 악성 애플리케이션을 사용했습니다. 또한 "Delivery Service" 및 "McAfee Email Protection"으로 위장한 애플리케이션으로 Yahoo 사용자를 표적으로 삼았습니다.
APT29 - 비밀번호 없이도 도난한 토큰을 사용하여 피해자 계정에 액세스합니다.
Peirates - 다양한 기술을 사용하여 Kubernetes 서비스 계정 토큰을 수집합니다.
완화책
심사
관리자는 모든 클라우드 및 컨테이너 계정을 감사하여 필요한지, 부여된 권한이 적절한지 확인해야 합니다. 또한 관리자는 모든 OAuth 애플리케이션과 조직 데이터에 액세스하기 위해 부여된 권한에 대한 감사를 수행해야 합니다. 이는 모든 애플리케이션에서 광범위하게 수행하여 기준을 확립한 후 새 애플리케이션이나 업데이트된 애플리케이션에 대한 주기적 감사를 수행해야 합니다. 의심스러운 애플리케이션은 조사하여 제거해야 합니다.
웹 기반 콘텐츠 제한
관리자는 OAuth 애플리케이션에 대한 최종 사용자 동의를 차단하여 사용자가 OAuth 2.0을 통해 타사 앱을 승인하지 못하게 하고 모든 요청에 대해 관리자 동의를 강제할 수 있습니다. 또한 위험을 줄이기 위해 사용자가 애플리케이션을 등록하는 것을 차단할 수도 있습니다. Cloud Access Security Broker를 사용하여 애플리케이션을 금지할 수도 있습니다.
Azure는 Azure Management Portal에서 도움이 될 수 있는 몇 가지 엔터프라이즈 정책 설정을 제공합니다.
"사용자 -> 사용자 설정 -> 앱 등록: 사용자가 애플리케이션을 등록할 수 있음"을 "아니요"로 설정하여 사용자가 새 애플리케이션을 등록하지 못하게 할 수 있습니다. "엔터프라이즈 애플리케이션 -> 사용자 설정 -> 엔터프라이즈 애플리케이션: 사용자가 자신을 대신하여 앱이 회사 데이터에 액세스하는 데 동의할 수 있음"을 "아니요"로 설정하여 사용자가 타사 멀티 테넌트 애플리케이션 허용에 동의하지 못하게 할 수 있습니다.
사용자 계정 관리
역할 기반 액세스 제어를 적용하여 계정을 필요한 최소 권한으로 제한합니다. 클라우드 액세스 보안 브로커(CASB)를 사용하면 사용 정책을 설정하고 클라우드 애플리케이션에서 사용자 권한을 관리하여 애플리케이션 액세스 토큰에 대한 액세스를 방지할 수 있습니다. Kubernetes 애플리케이션에서 서비스 계정 토큰에 대한 액세스가 필요하지 않은 포드의 YAML 사양에서 "automountServiceAccountToken: false"를 설정합니다.
사용자 교육
사용자는 자신이 인식하지 못하는 타사 애플리케이션을 승인하지 않도록 교육을 받아야 합니다. 사용자는 리디렉션 URL에 특히 주의해야 합니다. URL이 예상 서비스나 SaaS 애플리케이션과 관련된 철자가 틀리거나 복잡한 단어 시퀀스인 경우 웹사이트는 합법적인 서비스를 스푸핑하려고 할 가능성이 높습니다. 사용자는 또한 앱에 부여하는 권한에 대해서도 주의해야 합니다. 예를 들어, 오프라인 액세스 및 이메일 읽기 액세스는 적대자가 SaaS API를 사용하여 자격 증명 및 기타 민감한 커뮤니케이션을 발견할 수 있기 때문에 더 큰 의심을 불러일으켜야 합니다.
발견
액티브 디렉토리
- Active Directory개체 수정
AzureActiveDirectory 워크로드에 대해 발생하는 사용자 및/또는 애플리케이션에 대한 동의에 대한 작업 추가에 대한 M365 감사 로그를 모니터링합니다.
분석 1 - 비정상적인 앱 역할 할당 또는 애플리케이션 동의.
index=security sourcetype="WinEventLog:Security" EventCode=5136 OR (index=azuread sourcetype="azure:activity" operationName="Add member to role" OR operationName="Update application" OR operationName="Update servicePrincipal") OR(index=gsuite sourcetype="gsuite:admin" event_type="UPDATE_GROUP" OR event_type="UPDATE_USER") OR(index=o365 sourcetype="o365:management:activity" operation IN ("Add member to role", "Update user", "Update group"))
사용자 계정
- 사용자 계정 수정
관리자는 정책 기준이 충족되면 자동 알림을 트리거하도록 모니터링을 설정해야 합니다. 예를 들어, 클라우드 액세스 보안 브로커(CASB)를 사용하면 관리자는 앱이 높은 심각도 권한을 요청하거나 너무 많은 사용자에게 권한 요청을 보내는 경우 알림을 생성하는 "높은 심각도 앱 권한" 정책을 만들 수 있습니다.
보안 분석가는 CASB, ID 공급자 또는 리소스 공급자(플랫폼에 따라 다름)에서 제공하는 도구를 사용하여 악성 앱을 사냥할 수 있습니다. 예를 들어, 소수의 사용자가 승인한 앱, 고위험 권한을 요청하는 앱, 앱의 목적과 일치하지 않는 권한 또는 오래된 "마지막 승인" 필드가 있는 앱을 필터링할 수 있습니다. 앱이 수행한 활동을 표시하는 활동 로그를 사용하여 특정 앱을 조사할 수 있지만 일부 활동은 사용자가 수행한 것으로 잘못 기록될 수 있습니다. 앱 스토어는 의심스러운 앱을 추가로 조사하는 데 유용한 리소스가 될 수 있습니다.
관리자는 다양한 로그를 설정하고 감사 도구를 활용하여 OAuth 2.0 액세스의 결과로 수행될 수 있는 작업을 모니터링할 수 있습니다. 예를 들어, 감사 보고서를 통해 관리자는 역할 생성 또는 정책 수정과 같은 권한 상승 작업을 식별할 수 있으며, 이는 초기 액세스 후 수행될 수 있는 작업입니다.
분석 1 - 앱 로그에 승인되지 않은 앱 권한이나 비정상적인 활동 패턴이 있습니다.
(index=security sourcetype="WinEventLog:Security" EventCode=4720 OR EventCode=4722 OR EventCode=4738) OR(index=azuread sourcetype="azure:activity" operationName IN ("Add member to role", "Update user", "Update group")) OR(index=gsuite sourcetype="gsuite:admin" event_type IN ("UPDATE_USER", "ADD_USER_TO_GROUP")) OR(index=o365 sourcetype="o365:management:activity" operation IN ("Add member to role", "Update user", "Update group"))
인증서 도용 또는 위조
적대자는 원격 시스템이나 리소스에 액세스하기 위한 인증에 사용되는 인증서를 훔치거나 위조할 수 있습니다. 디지털 인증서는 종종 메시지 및/또는 파일에 서명하고 암호화하는 데 사용됩니다. 인증서는 또한 인증 자료로 사용됩니다. 예를 들어, Entra ID 장치 인증서와 Active Directory 인증서 서비스(AD CS) 인증서는 ID에 바인딩되며 도메인 계정의 자격 증명으로 사용될 수 있습니다.
인증 인증서는 도난당하거나 위조될 수 있습니다.예를 들어, AD CS 인증서는 암호화된 저장소(레지스트리 또는 파일) , 잘못된 인증서 파일(예: 보안되지 않은 자격 증명 )에서 도난당하거나 다양한 암호화 API를 통해 Windows 인증서 저장소에서 직접 도난당할 수 있습니다. 적절한 등록 권한이 있으면 도메인 내의 사용자 및/또는 컴퓨터도 엔터프라이즈 인증 기관(CA)에서 인증서를 요청 및/또는 수동으로 갱신할 수 있습니다.이 등록 프로세스는 인증서와 관련된 다양한 설정 및 권한을 정의합니다.참고로 인증서의 확장 키 사용(EKU) 값은 서명, 암호화 및 인증 사용 사례를 정의하는 반면 인증서의 주체 대체 이름(SAN) 값은 인증서 소유자의 대체 이름을 정의합니다.
인증 자격 증명에 대한 인증서를 남용하면 Lateral Movement 와 같은 다른 동작이 가능해질 수 있습니다 . 인증서 관련 구성 오류는 사용자가 인증서와 연결된 ID(SAN)를 통해 권한 있는 계정이나 권한을 가장하거나 가정할 수 있도록 허용함으로써 Privilege Escalation 의 기회를 제공할 수도 있습니다. 이러한 남용은 사용자 암호 재설정에도 불구하고 인증서의 유효 기간 동안 유효한 계정 으로 사용할 수 있는 인증서를 훔치거나 위조하여 Persistence를 가능하게 할 수도 있습니다 . 인증 인증서는 머신 계정에 대해 훔쳐지고 위조될 수도 있습니다.
루트(또는 하위) CA 인증서 개인 키(또는 이러한 키를 보호/관리하는 메커니즘)에 액세스할 수 있는 공격자는 피해자 도메인에 대한 임의의 인증 인증서(일명 "골든" 인증서)를 위조하여 지속성을 확립할 수도 있습니다. 공격자는 골든 티켓 티켓 부여 티켓(TGT) 또는 NTLM 일반 텍스트와 같은 다른 형태의 자격 증명에 액세스하기 위해 인증서 및 관련 서비스를 표적으로 삼을 수도 있습니다 .
절차
AADInternals - Azure AD에 가입/등록된 장치와 관련된 인증서를 포함하여 다양한 인증 인증서를 만들고 내보낼 수 있습니다.
APT29 - 잘못 구성된 AD CS 인증서 템플릿을 남용하여 관리자 사용자를 가장하고 추가 인증 인증서를 생성했습니다.
Mimikatz의 CRYPTO 모듈은 다양한 유형의 인증서를 생성하고 내보낼 수 있습니다.
완화책
Active Directory
인증 기관(CA)이 적절하게 보안되도록 합니다. 여기에는 CA 서버(및 CA 인증서를 호스팅하는 다른 리소스)를 티어 0 자산으로 처리하는 것이 포함됩니다. 남용 가능한 CA 설정 및 속성을 강화합니다.
예를 들어, 엄격한 사용자 매핑을 적용하고 인증서가 다른 식별자로 인증되는 것을 방지하기 위해 관련 인증 프로토콜 설정 내에서 AD CS 인증서 SAN 사용을 비활성화하는 것을 고려하십시오. 또한 SAN을 발급 요구 사항으로 포함하는 템플릿에 대해 CA 인증서 관리자 승인을 적용하는 것을 고려하십시오.
심사
불필요한 기존 인증 인증서와 AD CS 인증서 등록 권한 및 게시된 지나치게 관대한 인증서 템플릿(생성된 인증서에 대한 사용 가능한 설정을 정의함)과 같은 CA 설정 및 권한의 일반적인 남용 가능한 오구성을 확인하고 수정합니다. 예를 들어, 사용 가능한 AD CS 인증서 템플릿은 인증 기관 MMC 스냅인( certsrv.msc)을 통해 확인할 수 있습니다. certutil.exe또한 AD CS CA 데이터베이스 내의 다양한 정보를 검사하는 데 사용할 수도 있습니다.
기능 또는 프로그램 비활성화 또는 제거
오래되었거나 위험한 인증 프로토콜(예: NTLM)과 잠재적으로 취약한 AD CS 웹 및 기타 등록 서버 역할과 같은 불필요한 인증서 기능을 비활성화하는 것을 고려하십시오.
민감한 정보 암호화
인증서와 연관된 개인 키가 적절하게 보호되도록 합니다. 신뢰할 수 있는 플랫폼 모듈(TPM) 또는 하드웨어 보안 모듈(HSM)과 같은 추가 하드웨어 자격 증명 보호를 활용하는 것을 고려합니다. HTTPS를 시행하고 인증을 위한 확장 보호를 활성화합니다.
발견
액티브 디렉토리
- Active Directory자격 증명 요청
예상치 못한 인증서 등록 및 인증서 속성 내의 남용 징후(남용 가능한 EKU 등)를 포함한 비정상적인 활동에 대해 AD CS 인증서 요청(예: EID 4886) 및 발급된 인증서(예: EID 4887)를 모니터링합니다.
- Active Directory 개체 수정
AD CS 인증서 템플릿 수정(예: 잠재적으로 악성인 인증서가 등록된 후 EID 4899/4900)과 같은 CA 특성 및 설정의 변경 사항을 모니터링합니다.
신청로그
- 애플리케이션 로그 내용
CA 감사 로그가 활성화되었는지 확인하고 이러한 서비스를 모니터링하여 남용 징후를 파악합니다.
명령
- 명령 실행
인증서 및 관련 개인 키를 위조 및/또는 도용하는 데 악용되는 명령 및 기타 유틸리티의 실행을 모니터링합니다.
파일
- 파일 접근
인증서 및 관련 개인 키에 대한 정보를 저장하는 파일에 액세스하려는 시도를 모니터링합니다. 예를 들어, 사용자의 개인 인증서는 %APPDATA%\Microsoft\SystemCertificates\My\Certificates\ 과 같은 폴더의 디스크에 저장될 수 있습니다.
로그온 세션
- 로그온 세션 생성
AD CS 인증서가 Kerberos 인증에 사용되는 경우(특히 합법적으로 발급된 인증서와 일치하지 않는 경우) 또는 보안 채널( SchannelSSL/TLS와 연결된 ) Logon Process이 EID 4624 로그온 이벤트와 연결된 것으로 강조 표시되는 경우 EID 4768과 같은 인증서 기반 인증 이벤트를 모니터링합니다.
윈도우 레지스트리
- 윈도우 레지스트리 키 액세스
인증서 및 연관된 개인 키에 대한 레지스트리에 저장된 정보에 액세스하려는 시도를 모니터링합니다. 예를 들어, 사용자 인증서는 일반적으로 HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates 에 저장됩니다 .
Kerberos 티켓을 훔치거나 위조하세요
공격자는 Pass the Ticket을 활성화하기 위해 Kerberos 티켓을 훔치거나 위조하여 Kerberos 인증을 파괴하려고 시도할 수 있습니다 .Kerberos는 최신 Windows 도메인 환경에서 널리 사용되는 인증 프로토콜입니다."영역"이라고 하는 Kerberos 환경에는 클라이언트, 서비스, 키 배포 센터(KDC)의 세 가지 기본 참여자가 있습니다. 클라이언트는 서비스에 대한 액세스를 요청하고 KDC에서 시작된 Kerberos 티켓을 교환하여 성공적으로 인증한 후 액세스 권한이 부여됩니다.KDC는 인증과 티켓 부여를 모두 담당합니다.공격자는 티켓을 훔치거나 위조하여 무단 액세스를 활성화하여 Kerberos를 남용하려고 시도할 수 있습니다.
Windows에서는 내장 klist유틸리티를 사용하여 캐시된 Kerberos 티켓을 나열하고 분석할 수 있습니다.
완화책
Active Directory구성
이전에 생성된 골든 티켓의 영향을 억제하려면 내장된 KRBTGT 계정 비밀번호를 두 번 재설정하여 KRBTGT 해시와 여기에서 파생된 다른 Kerberos 티켓으로 생성된 기존 골든 티켓을 무효화합니다. 각 도메인에 대해 KRBTGT 계정 비밀번호를 한 번 변경하고 복제를 강제로 수행한 다음 비밀번호를 두 번째로 변경합니다. 180일마다 KRBTGT 계정 비밀번호를 순환하는 것을 고려하세요.
심사
잠재적인 취약점을 파악하기 위해 시스템, 권한, 안전하지 않은 소프트웨어, 안전하지 않은 구성 등에 대한 감사나 검사를 수행합니다.
자격 증명 액세스 보호
Linux 시스템에서는 진입점, 프로세스 유형 및 파일 레이블을 정의하여 SELinux(Security Enhanced Linux)로 리소스를 보호합니다.
민감한 정보 암호화
가능한 경우 RC4 대신 AES Kerberos 암호화(또는 다른 강력한 암호화 알고리즘)를 활성화합니다.
비밀번호 정책
서비스 계정에 대해 강력한 암호 길이(이상적으로 25자 이상)와 복잡성을 보장하고 이러한 암호가 주기적으로 만료되도록 합니다. 또한 그룹 관리 서비스 계정이나 암호 보관과 같은 타사 제품을 사용하는 것도 고려합니다.
특권 계정 관리
도메인 관리자 계정 권한을 도메인 컨트롤러와 제한된 서버로 제한합니다. 다른 관리자 기능을 별도의 계정에 위임합니다.
도메인 관리자와 같은 권한 그룹의 멤버십을 포함하여 최소한의 필수 권한으로 서비스 계정을 제한합니다.
발견
액티브 디렉토리
- Active Directory자격 증명 요청
잘못된 형식이나 빈 필드(이벤트 ID 4624, 4672, 4634)와 같은 Windows 로그온/로그오프 이벤트의 비정상적인 Kerberos 활동, 티켓 부여 티켓(TGT) 내의 RC4 암호화, 선행 TGT 요청 없이 티켓 부여 서비스(TGS) 요청을 모니터링합니다. ] 기본 도메인 기간과 다른 값에 대한 TGT 티켓의 수명을 모니터링합니다. 측면으로 이동하는 데 사용되는 Pass the Ticket 표시를 모니터링합니다 .
명령
- 명령 실행
Pass the Ticket 기능을 활성화하기 위해 Kerberos 티켓을 훔치거나 위조하여 Kerberos 인증을 파괴하려는 실행된 명령과 인수를 모니터링합니다 .
파일
- 파일 접근
lsass.exe와 상호 작용하는 예상치 못한 프로세스를 모니터링합니다. Mimikatz 와 같은 일반적인 자격 증명 덤퍼는 프로세스를 열고 LSA 비밀 키를 찾고 Kerberos 티켓을 포함한 자격 증명 세부 정보가 저장된 메모리의 섹션을 해독하여 LSA 하위 시스템 서비스(LSASS) 프로세스에 액세스합니다.
로그온 세션
- 로그온 세션 메타데이터
Audit Kerberos Service Ticket Operations를 활성화하여 Kerberos TGS 서비스 티켓 요청을 기록합니다. 특히 불규칙한 활동 패턴(예: 짧은 시간 내에 많은 요청을 하는 계정, 이벤트 ID 4769, 특히 RC4 암호화[유형 0x17]도 요청하는 경우)을 조사합니다.
웹 세션 쿠키 도용
적대자는 웹 애플리케이션이나 서비스 세션 쿠키를 훔쳐 자격 증명 없이 인증된 사용자로서 웹 애플리케이션이나 인터넷 서비스에 액세스하는 데 사용할 수 있습니다. 웹 애플리케이션과 서비스는 종종 사용자가 웹사이트에 인증한 후 세션 쿠키를 인증 토큰으로 사용합니다.
쿠키는 웹 애플리케이션이 적극적으로 사용되지 않더라도 장시간 동안 유효합니다. 쿠키는 디스크, 브라우저의 프로세스 메모리, 원격 시스템에 대한 네트워크 트래픽에서 찾을 수 있습니다. 또한 대상 머신의 다른 애플리케이션은 메모리에 민감한 인증 쿠키를 저장할 수 있습니다(예: 클라우드 서비스에 인증하는 앱). 세션 쿠키는 일부 다중 인증 프로토콜을 우회하는 데 사용할 수 있습니다.
로컬 시스템의 웹 브라우저에서 쿠키를 타겟으로 하는 맬웨어의 예는 여러 가지가 있습니다. 공격자는 악성 JavaScript 콘텐츠를 웹사이트에 삽입하거나 피해자를 속여 브라우저에서 악성 JavaScript를 실행하도록 하여 사용자 실행 에 의존하여 쿠키를 훔칠 수도 있습니다 .
또한 , 적대자가 설정하고 피싱 캠페인에 사용할 수 있는 악성 프록시(예: 중간자 공격)를 통해 세션 쿠키를 수집할 수 있는 오픈 소스 프레임워크도 있습니다. Evilginx2[ Muraena6
공격자가 유효한 쿠키를 획득하면 웹 세션 쿠키 기술을 실행하여 해당 웹 애플리케이션에 로그인할 수 있습니다.
절차
BLUELIGHT - Internet Explorer, Edge, Chrome, Naver Whale 브라우저에서 쿠키를 수집할 수 있습니다.
Chaes - 웹 세션 쿠키를 추출하여 C2 서버로 전송하는 스크립트를 사용했습니다.
CookieMiner - 피해자의 컴퓨터에서 Google Chrome 및 Apple Safari 브라우저 쿠키를 훔칠 수 있습니다.
EVILNUM - 쿠키를 수집하여 C2 서버에 업로드할 수 있습니다.
Evilnum - 브라우저에서 쿠키와 세션 정보를 훔칠 수 있습니다.
Grandoreiro - 다른 장치에서 활성 세션을 복제하는 데 사용하기 위해 피해자의 쿠키를 훔칠 수 있습니다.
LuminousMoth - 이름이 지정되지 않은 사후 익스플로잇 도구를 사용하여 Chrome 브라우저에서 쿠키를 훔쳤습니다.
MgBot - Firefox, Chrome 및 Edge 웹 브라우저에서 쿠키를 훔칠 수 있는 모듈이 포함되어 있습니다.
QakBot - 웹 세션 쿠키를 캡처하는 기능이 있습니다.
Raccoon Stealer - 브라우저 기록에서 쿠키 및 관련 정보를 훔치려고 시도합니다.
Sandworm Team - 정보 도용 맬웨어를 사용하여 브라우저 세션 쿠키를 수집했습니다.
Scattered Spider - Raccoon Stealer를 통해 브라우저 쿠키를 검색합니다.
SolarWinds 침해 사건 동안 APT29는 타겟 사용자의 Chrome 프로필 디렉토리를 복사하여 Chrome 브라우저 쿠키를 훔쳤습니다.
Spica - Chrome, Firefox, Opera 및 Edge 브라우저의 쿠키를 훔칠 수 있는 기능을 가지고 있습니다.
TajMahal - Internet Explorer, Netscape Navigator, Firefox 및 RealNetworks 애플리케이션에서 웹 세션 쿠키를 훔칠 수 있는 기능을 가지고 있습니다.
XCSSET - ~/Library/Cookies/Cookies.binarycookies에 액세스하는 데 사용됩니다.
완화책
심사
인증 활동 및 사용자 로그인에 대한 감사를 구현하여 도난된 세션 쿠키 사용을 감지합니다. 불가능한 여행 시나리오와 손상된 세션 토큰 또는 쿠키 사용을 나타낼 수 있는 비정상적인 동작을 모니터링합니다.
다중 인증 요소
협상 프로토콜의 일부로 대상 로그인 도메인을 사용하는 물리적인 두 번째 요소 키는 프록시 방법을 통한 세션 쿠키 도용을 방지합니다. 토큰 보호와 함께 조건부 액세스 정책을 구현하여 세션 토큰을 원래 장치 및 사용자에 바인딩합니다. 이렇게 하면 도난당한 토큰이 승인되지 않은 위치나 장치에서 재사용될 수 없도록 하여 세션 쿠키 도난 위험을 줄일 수 있습니다.
웹 기반 콘텐츠 제한
브라우저에 저장된 세션 쿠키나 자격 증명을 추출하는 데 사용될 수 있는 웹 기반 콘텐츠를 제한하거나 차단합니다. 타사 쿠키 비활성화 및 브라우저 확장 프로그램 제한과 같은 브라우저 보안 설정을 사용하여 공격 표면을 제한합니다.
소프트웨어 구성
정기적으로 영구 쿠키를 삭제하도록 브라우저나 작업을 구성합니다.
또한, 도난된 쿠키의 영향을 잠재적으로 줄이는 동시에 쿠키 도난 시도의 필요한 빈도를 늘리기 위해 웹 쿠키의 실행 가능 기간을 최소화하여 방어자에게 감지 가능성을 더 높여줍니다. 예를 들어, 비영구 쿠키를 사용하여 공격자가 세션 ID를 얻을 수 있는 웹 클라이언트 캐시에 세션 ID가 남아 있는 기간을 제한합니다.
소프트웨어 업데이트
웹 브라우저, 비밀번호 관리자 및 모든 관련 소프트웨어를 최신 버전으로 정기적으로 업데이트합니다. 소프트웨어를 최신 상태로 유지하면 공격자가 저장된 자격 증명이나 세션 쿠키를 추출하기 위해 취약성을 악용할 위험이 줄어듭니다.
사용자 교육
사용자에게 로그인하는 애플리케이션에 잘못된 도메인이 있는 사이트에 자격 증명을 입력하라는 피싱 시도의 측면을 식별하도록 교육합니다. 또한 사용자에게 코드를 복사하여 붙여 넣거나 북마크릿을 끌어서 놓는 것과 같이 브라우저에서 신뢰할 수 없는 JavaScript를 실행하지 않도록 교육합니다.
발견
파일
- 파일 접근
사용자가 네트워크나 컴퓨팅 리소스에 액세스하려는 시도를 모니터링합니다. 종종 클라우드 서비스 관리 콘솔에 자격 증명을 제공합니다. AWS와 같은 일부 클라우드 공급자는 관리 콘솔에 로그인 시도에 대한 별도의 로그 이벤트를 제공합니다.
분석 1 - 웹 세션 쿠키 파일에 예상치 못한 액세스가 발생했습니다.
(index=security sourcetype="WinEventLog:Security" EventCode=4663 ObjectName="\AppData\Roaming\\Cookies\" OR ObjectName="\AppData\Local\\Cookies\") OR(index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=11 TargetObject="\AppData\Roaming\\Cookies\" OR TargetObject="\AppData\Local\\Cookies\") OR(index=os sourcetype="linux_audit" (filepath="/home//.mozilla/firefox/.default-release/cookies.sqlite" OR filepath="/home//.config/google-chrome/Default/Cookies")) OR(index=os sourcetype="macos_secure" file_path="/Users//Library/Application Support/Google/Chrome/Default/Cookies") OR(index=gsuite sourcetype="gsuite:admin" event_name="LOGIN" event_type="cookie_auth") OR(index=o365 sourcetype="o365:management:activity" Operation="UserLoginViaCookie")
프로세스
- 프로세스 접근
프로그램이 브라우저 프로세스 메모리에 삽입하거나 덤프하려는 시도를 모니터링합니다.
분석 1 - 브라우저 프로세스에 대한 무단 액세스 또는 삽입.
(index=security sourcetype="WinEventLog:Security" EventCode=4688 OR EventCode=4663) OR(index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 OR EventCode=10) OR(index=os sourcetype="linux_secure" action="execve" OR action="ptrace") OR(index=os sourcetype="macos_secure" event_type="execve" OR event_type="ptrace") OR(index=gsuite sourcetype="gsuite:admin" event_name="LOGIN" event_type="cookie_auth") OR(index=o365 sourcetype="o365:management:activity" Operation="UserLoginViaCookie")
보안되지 않은 자격 증명
공격자는 보안되지 않은 상태로 저장된 자격 증명을 찾아 획득하기 위해 손상된 시스템을 검색합니다. 이러한 자격 증명은 일반 텍스트 파일(예: Bash History ), 운영 체제 또는 애플리케이션별 저장소(예: Credentials in Registry ) 또는 기타 특수 파일/아티팩트(예: Private Keys )를 포함하여 시스템의 여러 위치에 저장되거나 분실될 수 있습니다.
절차
Astaroth - NetPass라는 외부 소프트웨어를 사용하여 비밀번호를 복구합니다.
DarkGate - NirSoft 도구를 사용하여 감염된 컴퓨터에서 사용자 자격 증명을 훔칩니다. NirSoft 도구는 새로 생성된 vbc.exe 또는 regasm.exe 인스턴스에서 프로세스 홀로잉을 통해 실행됩니다.
NPPSPY - 프로세스에 등록된 대체 네트워크 수신기를 통해 자격 증명을 기록하여 캡처하고, mpnotify.exe를 통해 로그온 정보의 일반 텍스트 기록을 허용합니다.
Pacu - 민감한 데이터(예: Code Build 환경 변수, EC2 사용자 데이터, Cloud Formation 템플릿)를 검색할 수 있습니다.
Volt Typhoon - 대상 네트워크 어플라이언스에 안전하지 않게 저장된 자격 증명을 얻었습니다.
완화책
Active Directory구성
취약한 그룹 정책 기본 설정을 제거합니다.
심사
비밀번호나 기타 자격 증명이 포함된 파일을 사전에 검색하고, 발견 시 노출 위험을 줄이기 위한 조치를 취하세요.
민감한 정보 암호화
가능하다면 로컬 시스템이 아닌 별도의 암호화 하드웨어에 키를 저장하세요.
네트워크 트래픽 필터링
인스턴스 메타데이터 API에 대한 액세스를 제한합니다. 적절하게 구성된 웹 애플리케이션 방화벽(WAF)은 외부 적대자가 클라우드 인스턴스 메타데이터 API에 대한 액세스를 허용하는 서버 측 요청 위조(SSRF) 공격을 악용하는 것을 방지하는 데 도움이 될 수 있습니다.
네트워크를 통한 리소스 액세스 제한
인스턴스 메타데이터 API와 같은 중요한 서비스에 대한 네트워크 액세스를 제한합니다.
운영 체제 구성
사용자의 명령 기록이 .bash_history 파일에 플러시되는 것을 방지하는 방법에는 여러 가지가 있습니다. 여기에는 다음 명령을 사용하는 것이 포함됩니다. 로깅을 다시 시작합니다. set +o history사용자 의 .bash_rc 파일에 추가합니다. 대신 명령을 작성합니다 .set -o historyunset HISTFILEln -s /dev/null ~/.bash_history/dev/null
비밀번호 정책
개인 키에 강력한 암호문을 사용하여 크래킹을 어렵게 만드십시오. 레지스트리에 자격 증명을 저장하지 마십시오. 파일에 암호를 저장하는 것을 금지하는 조직 정책을 수립하십시오.
특권 계정 관리
소프트웨어가 레지스트리에 자격 증명을 저장해야 하는 경우, 적대자에게 권한이 획득되어도 남용될 수 없도록 연관된 계정에 제한된 권한을 부여해야 합니다.
파일 및 디렉토리 권한 제한
파일 공유를 특정 디렉토리로 제한하고 필요한 사용자만 접근할 수 있도록 합니다.
소프트웨어 업데이트
GPP에 자격 증명이 저장되는 것을 방지하는 패치 KB2962486을 적용합니다.
사용자 교육
개발자와 시스템 관리자가 엔드포인트 시스템이나 서버에 남아 있을 수 있는 소프트웨어 구성 파일에 일반 텍스트 비밀번호가 있는 경우 발생할 수 있는 위험을 알고 있는지 확인하세요.
발견
신청 로그
- 애플리케이션 로그 내용
특히 암호 및 자격 증명과 관련된 기타 아티팩트를 타겟으로 하는 비정상적인 검색 활동과 같이 애플리케이션 데이터에 액세스하려는 악의적인 시도를 강조할 수 있는 활동에 대해 애플리케이션 로그를 모니터링합니다. [11]
분석 1 - 비밀번호 및 기타 자격 증명 아티팩트를 타겟으로 하는 비정상적인 검색 활동.
(index=third_party sourcetype IN ("mailserver_logs", "webapp_logs", "appliance_logs") ("search" OR "query" OR "find" OR "grep") ("password" OR "credential" OR "key" OR "secret" OR "token"))
명령
- 명령 실행
환경에 적대자가 존재한다는 사실을 알지 못하면 자격 증명에 액세스하는 적을 감지하기 어려울 수 있지만, 적대자가 획득한 자격 증명을 사용하는 것을 감지할 수 있습니다. 실행 중인 프로세스의 명령줄 인수를 모니터링하여 의심스러운 단어나 암호 검색을 나타낼 수 있는 정규 표현식(예: password, pwd, login, secure 또는 credentials)을 확인합니다. 자세한 내용은 유효한 계정을 참조하세요.
분석 1 - 자격 증명 검색을 나타내는 의심스러운 명령이나 정규 표현식.
(index=security sourcetype="Powershell" EventCode=4104) OR(index=os sourcetype="linux_secure" action="execve") OR(index=os sourcetype="macos_secure" event_type="execve") | where match(CommandLine, "(?i)(password|credential|secret|key|token|login|passwd|passphrase)")
파일
- 파일 접근
의심스러운 파일 액세스 활동, 특히 프로세스가 짧은 시간 내에 여러 파일을 읽고/또는 자격 증명 자료를 검색하는 것을 나타내는 명령줄 인수를 사용하는지(예: 정규식 패턴)를 모니터링합니다. 이는 자동화/스크립트된 자격 증명 액세스 동작의 지표일 수 있습니다. 사용자의 .bash_historyis 읽기를 모니터링하면 의심스러운 활동에 대한 경고를 받는 데 도움이 될 수 있습니다. 사용자는 일반적으로 명령 기록에 의존하지만 종종 cat ~/.bash_history.
분석 1 - 짧은 기간 내에 여러 파일을 읽거나 자격 증명 자료를 검색합니다.
(index=security sourcetype="WinEventLog:Security" EventCode=4663 ObjectName="password" OR ObjectName="credential") OR(index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=11 TargetObject="password" OR TargetObject="credential") OR(index=os sourcetype="linux_audit" action="open" filepath IN ("password", "credential", "passwd", "shadow", ".pem", ".key")) OR(index=os sourcetype="macos_secure" event_type="open" file_path IN ("password", "credential", "passwd", "shadow", ".pem", ".key"))
프로세스
- 프로세스 생성
손상된 시스템을 검색하여 안전하지 않게 저장된 자격 증명을 찾아 획득할 수 있는 새로 실행된 프로세스를 모니터링합니다.
분석 1 - 자격 증명 검색을 나타내는 매개변수를 갖춘 새로운 프로세스.
(index=security sourcetype="WinEventLog:Security" EventCode=4688 CommandLine="password" OR CommandLine="credential") OR(index=sysmon sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1 CommandLine="password" OR CommandLine="credential") OR(index=os sourcetype="linux_audit" action="execve" CommandLine="password" OR CommandLine="credential") OR(index=os sourcetype="macos_secure" event_type="execve" CommandLine="password" OR CommandLine="credential")
사용자 계정
- 사용자 계정 인증
종종 보안되지 않은 상태로 저장된 자격 증명을 찾아 얻기 위해 손상된 시스템을 검색하는 자격 증명을 제공하는 방식으로 사용자가 네트워크나 컴퓨팅 리소스에 액세스하려는 시도를 모니터링합니다.
분석 1 - 손상된 자격 증명을 사용한 실패하거나 비정상적인 로그온 시도.
(index=security sourcetype="WinEventLog:Security" EventCode IN (4625, 4648)) OR(index=os sourcetype="linux_secure" message="Failed password" OR message="Invalid user") OR(index=os sourcetype="macos_secure" event_type="authentication_failure" OR message="Failed to authenticate user")
윈도우 레지스트리
- 윈도우 레지스트리 키 액세스
예상치 못한 Windows 레지스트리 키에 액세스하여 손상된 시스템을 검색하여 안전하지 않게 저장된 자격 증명을 찾아 획득하는 것을 모니터링합니다.
분석 1 - 자격 증명과 관련된 레지스트리 키에 대한 무단 액세스.
index=security sourcetype="WinEventLog:Microsoft-Windows-Security-Auditing" EventCode=4663 ObjectType="Registry" (ObjectName="password" OR ObjectName="credential") | eval AccessAttempt=case( AccessMask="0x1", "Read", AccessMask="0x2", "Write", AccessMask="0x3", "Read/Write", AccessMask="0x4", "Delete", true(), "Unknown")