계정 조작
공격자는 계정을 조작하여 피해자 시스템에 대한 액세스를 유지 및/또는 상승시킬 수 있습니다. 계정 조작은 자격 증명이나 권한 그룹을 수정하는 것과 같이 손상된 계정에 대한 공격자 액세스를 유지하거나 수정하는 모든 작업으로 구성될 수 있습니다. 이러한 작업에는 암호 기간 정책을 우회하고 손상된 자격 증명의 수명을 보존하기 위해 반복적인 암호 업데이트를 수행하는 것과 같이 보안 정책을 파괴하도록 설계된 계정 활동도 포함될 수 있습니다.
계정을 만들거나 조작하려면 적대자는 이미 시스템이나 도메인에 대한 충분한 권한이 있어야 합니다. 그러나 계정 조작은 수정을 통해 추가 역할, 권한 또는 권한이 더 높은 유효한 계정 에 대한 액세스가 부여되는 권한 상승으로 이어질 수도 있습니다 .
절차
2016년 우크라이나 정전 공격 당시 Sandworm Team - MS-SQL 명령을 사용하여 sp_addlinkedsrvlogin으로 생성된 계정과 네트워크의 다른 서버 간의 링크를 생성했습니다.
Calisto - 모든 사용자에게 권한과 원격 로그인을 추가합니다.
HAFNIUM - 도메인 계정에 권한을 부여했습니다.
Lazarus Group 맬웨어 WhiskeyDelta-Two에는 관리자 계정의 이름을 바꾸는 기능이 포함되어 있습니다.
Mimikatz 자격 증명 덤퍼는 Skeleton Key 도메인 컨트롤러 인증 우회 기능을 포함하도록 확장되었습니다. LSADUMP::ChangeNTLM 및 LSADUMP::SetNTLM 모듈은 일반 텍스트 값을 알지 못해도 계정의 암호 해시를 조작할 수 있습니다.
완화책
기능 또는 프로그램 비활성 또는 제거
가능하면 불필요하고 잠재적으로 남용될 수 있는 인증 및 권한 부여 메커니즘을 제거하세요.
다중 인증 요소
사용자 및 권한 있는 계정에 대해 다중 요소 인증을 사용합니다.
네트워크 세분화
액세스 제어 및 방화벽을 구성하여 중요한 시스템 및 도메인 컨트롤러에 대한 액세스를 제한합니다. 대부분의 클라우드 환경은 클라우드 시스템의 추가 세분화를 가능하게 하는 별도의 가상 사설 클라우드(VPC) 인스턴스를 지원합니다.
운영 체제 구성
SMB 파일 공유 등 잠재적으로 불필요한 프로토콜 및 서비스의 액세스를 제한하기 위해 중요 서버에 대한 적절한 보안 구성을 보장하여 도메인 컨트롤러를 보호합니다.
특권 계정 관리
권한이 없는 시스템에서 잠재적인 적대자에게 노출될 수 있는 일상적인 작업에 도메인 관리자 계정을 사용하도록 허용하지 마세요.
파일 및 디렉토리 권한 제한
인증 및/또는 권한 부여를 다루는 잠재적으로 민감한 파일에 대한 액세스를 제한합니다.
사용자 계정 관리
권한이 낮은 사용자 계정에 계정이나 계정 관련 정책을 수정할 수 있는 권한이 없는지 확인하세요.
발견
액티브 디렉토리
- Active Direcroty
Active Directory에서 새 장치 개체의 등록 또는 가입을 모니터링합니다. MFA를 사용하지 않고 새 장치가 등록되거나 가입되면 경고를 발생시킵니다.
명령
- 명령 실행
계정이나 계정 설정(예: authorized_keys또는 /etc/ssh/sshd_config)을 수정하는 의심스러운 명령이 실행된 명령과 인수를 모니터링합니다.
Add-MailboxPermissionExchange 및 기타 관련 서비스 설정의 권한을 수정하는 것을 나타낼 수 있는 의심스러운 명령(예: )의 실행된 명령 및 인수를 모니터링합니다 .
파일
-파일 수정
/etc/ssh/sshd_config시스템의 각 사용자에 대한 authorized_keys 파일 등 계정 설정과 관련된 파일에 대한 변경 사항을 모니터링합니다 .
그룹
- 그룹 수정
시스템 및 도메인의 계정 개체 및/또는 권한 변경에 대한 이벤트(예: 이벤트 ID 4738, 4728 및 4670)를 모니터링합니다.
프로세스
- 프로세스 생성
계정 설정 수정을 나타내는 새로 구성된 프로세스(예: 파일을 수정하는 프로세스)를 모니터링 authorized_keys합니다 /etc/ssh/sshd_config.
사용자 계정
- 사용자 계정 수정
시스템 및 도메인의 계정 개체 및/또는 권한 변경에 대한 이벤트(예: 이벤트 ID 4738, 4728 및 4670)를 모니터링합니다. 다른 의심스러운 활동과 관련된 계정 수정을 모니터링합니다. 변경은 비정상적인 시간이나 비정상적인 시스템에서 발생할 수 있습니다. 특히 주체와 대상 계정이 다르거나 이전 비밀번호를 알지 못한 채 비밀번호를 변경하는 것과 같은 추가 플래그가 포함된 플래그 이벤트를 플래그합니다.
침해된 계정에 지나치게 광범위한 권한이 부여되는 것을 나타내는 비정상적인 권한 변경을 모니터링합니다.
BITS 일자리
공격자는 BITS 작업을 악용하여 코드를 지속적으로 실행하고 다양한 백그라운드 작업을 수행할 수 있습니다. Windows Background Intelligent Transfer Service(BITS)는 COM( Component Object Model ) 을 통해 노출되는 저대역폭 비동기 파일 전송 메커니즘입니다 . BITS는 일반적으로 업데이터, 메신저 및 다른 네트워크 애플리케이션을 방해하지 않고 백그라운드에서 작동하는(사용 가능한 유휴 대역폭 사용) 것을 선호하는 다른 애플리케이션에서 사용됩니다. 파일 전송 작업은 하나 이상의 파일 작업 대기열을 포함하는 BITS 작업으로 구현됩니다.
BITS 작업을 생성하고 관리하는 인터페이스는 PowerShell 및 BITSAdmin 도구를 통해 액세스할 수 있습니다.
공격자는 BITS를 악용하여 악성 코드를 다운로드(예: Ingress Tool Transfer ), 실행하고 실행한 후 정리(예: Indicator Removal )할 수 있습니다. BITS 작업은 새 파일이나 레지스트리 수정 없이 BITS 작업 데이터베이스에서 자체적으로 포함되며 종종 호스트 방화벽에서 허용됩니다. BITS 지원 실행은 장기 작업(기본 최대 수명은 90일이며 연장 가능)을 생성하거나 작업이 완료되거나 오류가 발생할 때(시스템 재부팅 후 포함) 임의의 프로그램을 호출하여 지속성을 활성화할 수도 있습니다.
BITS 업로드 기능은 대체 프로토콜을 통한 침투를 수행하는 데에도 사용될 수 있습니다 .
절차
APT39 - BITS 프로토콜을 사용하여 손상된 호스트에서 도난된 데이터를 빼냈습니다.
APT41 - BITSAdmin을 사용하여 페이로드를 다운로드하고 설치했습니다.
Bazar - Windows BITS 기능을 통해 다운로드되었습니다.
BITSAdmin을 사용하면 악성 프로세스를 시작하기 위한 BITS 작업을 생성할 수 있습니다.
Cobalt Strike - BITSAdmin을 사용하여 호스팅된 "비콘" 페이로드를 다운로드할 수 있습니다.
Egregor - BITSAdmin을 사용하여 악성 DLL을 다운로드하고 실행했습니다.
JPIN 변형 - BITS 서비스를 통해 백도어 페이로드를 다운로드합니다.
Leviathan - BITSAdmin을 사용하여 추가 도구를 다운로드했습니다.
MarkiRAT - BITS 유틸리티를 사용하여 C2 서버에 연결할 수 있습니다.
Patchwork - BITS 작업을 사용하여 악성 페이로드를 다운로드했습니다.
ProLock - BITS 작업을 사용하여 악성 페이로드를 다운로드할 수 있습니다.
UBoatRAT - BITSAdmin의 /SetNotifyCmdLine 옵션을 활용하여 지속성을 유지하기 위해 시스템에서 계속 실행되도록 합니다.
Wizard Spider - WMIC를 활용하여 손상된 각 시스템에 랜섬웨어 페이로드의 BITSAdmin 전송을 실행하는 일괄 처리 스크립트를 사용했습니다.
완화책
네트워크 트래픽
합법적인 BITS 트래픽만 허용하도록 네트워크 및/또는 호스트 방화벽 규칙과 기타 네트워크 제어를 수정합니다.
운영 체제 구성
그룹 정책에서 기본 BITS 작업 수명을 줄이거나 레지스트리 값을 JobInactivityTimeout편집 하여 고려하십시오 .MaxDownloadTime HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\BITS
사용자 계정 관리
BITS 인터페이스에 대한 액세스를 특정 사용자 또는 그룹으로 제한하는 것을 고려하세요.
발견
명령
- 명령 실행
BITSAdmin 도구에서 실행된 명령 및 인수를 모니터링합니다(특히 'Transfer', 'Create', 'AddFile', 'SetNotifyFlags', 'SetNotifyCmdLine', 'SetMinRetryDelay', 'SetCustomHeaders' 및 'Resume' 명령 옵션)BITS 활동에 대한 관리자 로그, PowerShell 로그 및 Windows 이벤트 로그 또한 BITS 작업 데이터베이스를 구문 분석하여 작업에 대한 보다 자세한 정보를 조사하는 것도 고려합니다.
네트워크 트래픽
- 네트워크 열결 생성
BITS에서 생성된 새로 구성된 네트워크 활동을 모니터링합니다. BITS 작업은 원격 연결에 HTTP(S) 및 SMB를 사용하고 생성한 사용자에게 테더링되며 해당 사용자가 로그인한 경우에만 작동합니다(이 규칙은 사용자가 작업을 서비스 계정에 연결한 경우에도 적용됩니다).
프로세스
- 프로세스 생성
BITSAdmin 도구(bitsadmin /list /allusers /verbose)를 사용하여 새로 구성된 BITS 작업을 모니터링하여 열거합니다.
참고: 이벤트 ID는 Sysmon(이벤트 ID 1 - 프로세스 생성) 및 Windows 보안 로그(이벤트 ID 4688 - 새 프로세스가 생성됨)를 위한 것입니다. 분석 1은 엔드포인트에 지속되도록 BITS 작업을 예약하는 Microsoft Background Intelligent Transfer Service 유틸리티(bitsadmin.exe) 프로세스 생성을 찾는 데 중점을 두고 있습니다. 분석은 BITS 작업에 파일을 생성, 재개 또는 추가하는 데 사용되는 명령줄 매개변수를 식별합니다. 이러한 매개변수는 일반적으로 단일 명령줄에 결합되어 표시되거나 순서대로 실행됩니다.
bitsadmin.exe Analytic 2는 매개 변수를 사용하여 원격 개체를 다운로드하는 Microsoft Background Intelligent Transfer Service 유틸리티를 식별합니다 transfer. 또한 명령줄에서 download 또는 를 찾으면 upload 스위치는 전송을 수행하는 데 필요하지 않습니다. 다운로드한 모든 파일을 캡처합니다. 사용된 IP 또는 도메인의 평판을 검토합니다. 일반적으로 실행되면 후속 명령을 사용하여 삭제된 파일을 실행합니다. 네트워크 연결 또는 파일 수정 이벤트와 관련이 있으면 에서 생성되거나 생성되지 않지만 bitsadmin.exe 아티팩트는 svchost.exe 와 유사한 명령줄을 사용하여 병렬 프로세스에 나타납니다 svchost.exe -k netsvcs -s BITS . 모든 병렬 및 자식 프로세스를 검토하여 모든 동작 및 아티팩트를 캡처하는 것이 중요합니다. 의심스럽고 악의적인 경우 BITS 작업이 생성됩니다. bitsadmin /list /verbose 조사 중에 작업을 나열하는 데 사용할 수 있습니다.
분석 1 - BITS 작업 지속성
(source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode="1") OR (source="WinEventLog:Security" EventCode="4688") Image="C:\Windows\System32\bitsadmin.exe" AND (CommandLine= "create" OR CommandLine= "addfile" OR CommandLine= "setnotifyflags" OR CommandLine= "setnotifycmdline" OR CommandLine= "setminretrydelay" OR CommandLine= "setcustomheaders" OR CommandLine= "resume")
Analytic 2 - BITSAdmin 파일 다운로드
(source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode="1") OR (source="WinEventLog:Security" EventCode="4688") Image="C:\Windows\System32\bitsadmin.exe" AND CommandLine= transfer
서비스
- 서비스 메타데이터
BITS는 서비스로 실행되며 상태는 Sc 쿼리 유틸리티( sc query bits)로 확인할 수 있습니다.
부팅 또는 로그온 자동 시작 실행
공격자는 시스템 부팅 또는 로그온 시 프로그램을 자동으로 실행하여 지속성을 유지하거나 손상된 시스템에서 상위 수준의 권한을 얻도록 시스템 설정을 구성할 수 있습니다. 운영 체제에는 시스템 부팅 또는 계정 로그온 시 프로그램을 자동으로 실행하기 위한 메커니즘이 있을 수 있습니다. 이러한 메커니즘에는 특별히 지정된 디렉토리에 배치되거나 Windows 레지스트리와 같은 구성 정보를 저장하는 저장소에서 참조되는 프로그램을 자동으로 실행하는 것이 포함될 수 있습니다. 공격자는 커널의 기능을 수정하거나 확장하여 동일한 목표를 달성할 수 있습니다.
일부 부팅 또는 로그온 자동 시작 프로그램은 더 높은 권한으로 실행되므로 공격자는 이를 악용하여 권한을 상승시킬 수 있습니다.
절차
BoxCaon - HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load 레지스트리 키를 실행 파일을 가리키도록 설정하여 지속성을 확립했습니다.
Dtrack - RAT는 호스트 시작 시 자동 실행이 가능한 지속적인 대상 파일을 만듭니다.
Mis-Type - HKCU\Software\bkfouerioyou, HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components{6afa8072-b2b1-31a8-b5c1-{Unique Identifier}, 및 HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components{3BF41072-B2B1-31A8-B5C1-{Unique Identifier}를 포함하여 지속성을 위한 레지스트리 키를 생성했습니다.
Misdat - HKCU\Software\dnimtsoleht\StubPath, HKCU\Software\snimtsOleht\StubPath, HKCU\Software\Backtsaleht\StubPath, HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components{3bf41072-b2b1-21c8-b5c1-bd56d32fbda7}, 및 HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components{3ef41072-a2f1-21c8-c5c1-70c2c3bc7905}를 포함하여 지속성을 위한 레지스트리 키를 생성했습니다.
xCaon - 레지스트리 키를 통해 지속성을 추가하여 HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load 사용자가 로그인할 때마다 맬웨어가 실행되도록 했습니다.
완화책
- 이러한 유형의 공격 기술은 시스템 기능을 남용하는 것을 기반으로 하기 때문에 예방적 통제로는 쉽게 완화할 수 없습니다.
발견
명령
- 명령 실행
시스템 부팅이나 로그온 시 자동으로 프로그램을 실행하도록 시스템 설정을 구성할 수 있는 실행된 명령 및 인수를 모니터링하여 지속성을 유지하거나 손상된 시스템에서 더 높은 수준의 권한을 얻습니다.
운전사
- 드라이버 부하
손상된 시스템에서 지속성을 유지하거나 상위 수준의 권한을 얻기 위해 시스템 부팅이나 로그온 시 자동으로 프로그램을 실행하도록 시스템 설정을 구성할 수 있는 비정상적인 커널 드라이버 설치 활동을 모니터링합니다.
파일
- 파일 생성
시스템 부팅이나 로그온 시 자동으로 프로그램을 실행하여 시스템 설정을 구성할 수 있는 새로 구성된 파일을 모니터링하여 손상된 시스템에서 지속성을 유지하거나 상위 수준의 권한을 얻습니다.
- 파일 수정
시스템 부팅이나 로그온 시 프로그램을 자동으로 실행하여 시스템 설정을 구성할 수 있는 파일에 대한 변경 사항을 모니터링하여 손상된 시스템에서 지속성을 유지하거나 상위 수준의 권한을 얻습니다.
핵심
- 커널 모듈 로드
손상된 시스템에서 지속성을 유지하거나 상위 수준의 권한을 얻기 위해 시스템 부팅이나 로그온 시 자동으로 프로그램을 실행하도록 시스템 설정을 구성할 수 있는 비정상적인 커널 드라이버 설치 활동을 모니터링합니다.
기준 치수
- 커널 모듈 로드
프로세스별 DLL 로드를 모니터링하고, 특히 인식되지 않거나 프로세스에 정상적으로 로드되지 않은 DLL을 찾습니다. 악성 DLL을 로드하는 프로세스로 인해 발생할 수 있는 비정상적인 프로세스 동작을 찾습니다.
프로세스
- OS API실행
손상된 시스템에서 지속성을 유지하거나 상위 수준의 권한을 얻기 위해 시스템 부팅 또는 로그온 시 자동으로 프로그램을 실행하도록 시스템 설정을 구성할 수 있는 API 호출을 모니터링합니다.
-프로세스 생성
자동 시작 프로그램으로서의 의심스러운 프로그램 실행은 악성 활동의 신뢰도를 높이기 위해 과거 데이터와 비교했을 때 이전에는 볼 수 없었던 이상치 프로세스로 나타날 수 있습니다. 이러한 데이터와 이벤트는 단독으로 보지 말고 명령 및 제어를 위한 네트워크 연결, Discovery를 통한 환경에 대한 세부 정보 학습, Lateral Movement와 같은 다른 활동으로 이어질 수 있는 일련의 동작의 일부로 보아야 합니다.
윈도우 레지스트리
- 윈도우 레지스트리 키 생성
레지스트리에 관련 항목을 추가하는 등 자동 시작 실행을 트리거하는 데 사용할 수 있는 메커니즘이 추가되었는지 모니터링합니다.
- 윈도우 레지스티리 키 수정
레지스트리에 관련 항목을 추가하는 등 자동 시작 실행을 트리거하는 데 사용할 수 있는 메커니즘의 수정을 모니터링합니다.
부팅 또는 로그온 초기화 스크립트
공격자는 부팅 또는 로그온 초기화 시 자동으로 실행되는 스크립트를 사용하여 지속성을 확립할 수 있습니다. [1] [2] 초기화 스크립트는 관리 기능을 수행하는 데 사용할 수 있으며, 이는 종종 다른 프로그램을 실행하거나 내부 로깅 서버로 정보를 보낼 수 있습니다. 이러한 스크립트는 운영 체제와 로컬 또는 원격으로 적용되는지 여부에 따라 다를 수 있습니다.
적대자는 이러한 스크립트를 사용하여 단일 시스템에서 지속성을 유지할 수 있습니다. 로그온 스크립트의 액세스 구성에 따라 로컬 자격 증명 또는 관리자 계정이 필요할 수 있습니다.
일부 부팅 또는 로그온 초기화 스크립트는 더 높은 권한으로 실행되므로, 적대자는 자신의 권한을 확대할 수도 있습니다.
절차
APT29 - 합법적인 애플리케이션별 시작 스크립트를 하이재킹하여 맬웨어가 시스템 시작 시 실행될 수 있도록 했습니다.
APT41 - 백도어와 루트킷을 활용하기 위해 숨겨진 셸 스크립트를 사용했습니다.
Rocke - 지속성을 유지하기 위해 "init.d" 시작 스크립트를 설치했습니다.
Linux 배포판에 따라 루트 권한으로 실행할 때 RotaJakiro는 /etc/init/ 폴더의 파일을 사용하여 지속성을 설치할 수 있습니다.
완화책
파일 및 디렉토리 권한 제한
로그온 스크립트에 대한 쓰기 권한을 특정 관리자에게만 제한합니다.
레지스트리 권한 제한
사용자가 지속성으로 이어질 수 있는 로그온 스크립트의 키를 수정하지 못하도록 레지스트리 하이브에 적절한 권한이 설정되어 있는지 확인하세요.
발견
액티브 디렉토리
-액티브 디렉토리 개체 구성
부팅 또는 로그온 초기화 시 자동으로 실행되는 스크립트를 사용하여 Active Directory에서 변경된 사항을 모니터링하여 지속성을 확립합니다.
명령
- 명령 실행
비정상적인 사용자에 의한 비정상적인 액세스 또는 비정상적인 시간에 로그온 스크립트로 구성될 수 있는 실행된 명령 및 인수를 모니터링합니다.
파일
- 파일 생성
부팅 또는 로그온 초기화 시 자동으로 실행되는 스크립트를 사용하여 새로 구성된 파일을 모니터링하여 지속성을 확립합니다.
- 파일 수정
정상적인 관리 업무가 아닌 특이한 계정에 의해 수정된 파일에 대한 변경 사항을 모니터링합니다.
프로세스
- 프로세스 생성
부팅 또는 로그온 초기화 시 자동으로 실행되는 스크립트를 사용하여 지속성을 확립할 수 있는 새로 실행된 프로세스를 모니터링합니다. 공격자는 사용자가 시스템에 로그인할 때마다 실행되도록 소프트웨어를 예약할 수 있습니다. 이는 지속성을 확립하고 때로는 측면 이동을 위해 수행됩니다. 이 트리거는 레지스트리 키를 통해 설정됩니다 HKEY_CURRENT_USER\EnvironmentUserInitMprLogonScript. 이 서명은 기존 키의 편집 또는 해당 경로의 새 키 생성을 찾습니다. 사용자가 의도적으로 이 경로에 양성 스크립트를 추가하면 거짓 양성이 발생합니다. 그러나 이러한 경우는 드뭅니다. 이 서명에서 다루지 않는 시작 또는 로그인 시 스크립트를 실행하는 다른 방법이 있습니다. 이 서명은 이 레지스트리 경로의 변경 사항도 표시하는 Windows Sysinternals Autoruns 도구와 겹칩니다.
분석 1 - 부팅 또는 로그온 초기화 스크립트
(source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode="1") OR (source="WinEventLog:Security" EventCode="4688") AND CommandLine="regadd\EnvironmentUserInitMprLogonScript"
윈도우레지스트리
- 윈도우 레지스트리 키 생성
부팅 또는 로그온 초기화 시 자동으로 실행되는 스크립트를 사용하여 지속성을 확립할 수 있는 새로 구성된 Windows 레지스트리 키를 모니터링합니다.
브라우저 확장 프로그램
적대자는 인터넷 브라우저 확장 프로그램을 남용하여 피해자 시스템에 지속적으로 접근할 수 있습니다. 브라우저 확장 프로그램 또는 플러그인은 인터넷 브라우저의 기능을 추가하고 측면을 사용자 지정할 수 있는 작은 프로그램입니다. 직접 또는 브라우저의 앱 스토어를 통해 설치할 수 있으며 일반적으로 브라우저가 접근할 수 있는 모든 것에 대한 액세스 및 권한이 있습니다.
악성 확장 프로그램은 합법적인 확장 프로그램으로 위장한 악성 앱 스토어 다운로드, 소셜 엔지니어링 또는 이미 시스템을 손상시킨 적대자에 의해 브라우저에 설치될 수 있습니다. 브라우저 앱 스토어에서는 보안이 제한될 수 있으므로 악성 확장 프로그램이 자동화된 스캐너를 무력화하는 것이 어렵지 않을 수 있습니다. 브라우저에 따라 적대자는 확장 프로그램의 업데이트 URL을 조작하여 적대자가 제어하는 서버에서 업데이트를 설치하거나 모바일 구성 파일을 조작하여 추가 확장 프로그램을 자동으로 설치할 수도 있습니다.
macOS 11 이전에는 적대자가 도구를 사용하여 명령줄을 통해 브라우저 확장 프로그램을 자동으로 설치하여 profiles악성 .mobileconfig파일을 설치할 수 있었습니다. macOS 11+에서는 profiles도구를 사용하여 더 이상 구성 프로필을 설치할 수 없지만 .mobileconfig사용자 상호 작용으로 파일을 심고 설치할 수 있습니다.
확장 프로그램이 설치되면 백그라운드에서 웹사이트를 탐색하고 사용자가 브라우저에 입력한 모든 정보(자격 증명 포함)를 훔치고 지속성을 위한 RAT 설치 프로그램으로 사용될 수 있습니다.
Command and Control을 위한 악성 Chrome 확장 프로그램을 통해 지속적인 백도어를 사용하는 봇넷의 인스턴스도 있었습니다 . 적대자는 또한 브라우저 확장 프로그램을 사용하여 Defense Evasion을 위한 브라우저 권한 및 구성 요소, 개인 정보 보호 설정 및 기타 보안 제어를 수정할 수 있습니다 .
절차
Bundlore - 사용자 검색을 하이재킹하는 데 사용되는 악성 브라우저 확장 프로그램을 설치할 수 있습니다.
Grandoreiro - 악성 브라우저 확장 프로그램을 사용하여 쿠키 및 기타 사용자 정보를 훔칠 수 있습니다.
Kimsuky - Google Chrome 브라우저 확장 프로그램을 사용하여 피해자를 감염시키고 비밀번호와 쿠키를 훔쳤습니다.
Mispadu - 악성 Google Chrome 브라우저 확장 프로그램을 사용하여 금융 데이터를 훔칩니다.
OSX/Shlayer - 광고를 게재하기 위해 악성 Safari 브라우저 확장 프로그램을 설치할 수 있습니다.
완화책
심사
설치된 확장 프로그램이 올바른 확장 프로그램인지 확인하세요. 합법적인 확장 프로그램처럼 위장한 악성 확장 프로그램이 많기 때문입니다.
실행 방지
보안 정책에 맞게 브라우저 확장 프로그램 허용 또는 거부 목록을 설정합니다.
소프트웨어 설치 제한
검증 가능한 신뢰할 수 있는 출처의 브라우저 확장 프로그램만 설치하세요. 일부 브라우저의 브라우저 확장 프로그램은 그룹 정책을 통해 제어할 수 있습니다. 브라우저가 충분한 권한 없이 확장 프로그램을 설치하지 못하도록 설정을 변경하세요.
소프트웨어 업데이트
운영체제와 브라우저가 최신 버전을 사용하고 있는지 확인하세요.
사용자 교육
잠재적으로 악성인 확장 프로그램이 계속 실행되는 것을 방지하려면 사용이 끝난 후에는 모든 브라우저 세션을 닫으세요.
발견
명령
- 명령 실행
profiles install -type=configuration과 같은 profiles 도구 사용을 위해 실행된 명령과 인수를 모니터링합니다.
파일
- 파일 생성
새로 구성된 파일 및/또는 설치된 모든 확장 프로그램을 모니터링하고 /Library/Managed Preferences/username/ 디렉토리에 plist 파일을 유지합니다. 나열된 모든 파일이 승인된 확장 프로그램과 일치하는지 확인합니다.
네트워크 트래픽
- 네트워크 연결 생성
신뢰할 수 없는 호스트에서 보내거나 받는 새로 구성된 네트워크 연결을 모니터링합니다.
프로세스
- 프로세스 생성
인터넷 브라우저 확장 기능을 악용해 지속성을 확립하는 데 사용될 수 있는 새로 실행된 프로세스를 모니터링합니다.
윈도우 레지스트리
- 윈도우 레지스트리키 생성
레지스트리에 기록된 새 항목이나 디스크에 기록된 PE 파일을 모니터링합니다. 이는 브라우저 확장 프로그램 설치와 관련이 있을 수 있습니다.
호스트 소프트웨어 바이너리 손상
적대자는 호스트 소프트웨어 바이너리를 수정하여 시스템에 대한 지속적인 액세스를 확립할 수 있습니다. 소프트웨어 바이너리/실행 파일은 광범위한 시스템 명령이나 서비스, 프로그램 및 라이브러리를 제공합니다. 일반적인 소프트웨어 바이너리는 SSH 클라이언트, FTP 클라이언트, 이메일 클라이언트, 웹 브라우저 및 기타 많은 사용자 또는 서버 애플리케이션입니다.
적대자는 호스트 소프트웨어 바이너리를 수정하여 지속성을 확립할 수 있습니다. 예를 들어, 적대자는 합법적인 애플리케이션 바이너리(또는 지원 파일)를 백도어로 대체하거나 감염시킬 수 있습니다. 이러한 바이너리는 애플리케이션이나 사용자가 일상적으로 실행할 수 있으므로 적대자는 이를 활용하여 호스트에 지속적으로 액세스할 수 있습니다. 적대자는 로그인 중에 자격 증명을 지속적으로 수집하기 위해 SSH 클라이언트와 같은 소프트웨어 바이너리를 수정할 수도 있습니다(예: 인증 프로세스 수정 ).
적대자는 또한 바이너리의 합법적 실행 전에 악성 기능(예: IAT Hooking/진입점 패치) [2] 을 패치하여 기존 바이너리를 수정할 수도 있습니다 . 예를 들어, 적대자는 정상적인 실행 흐름을 재개하기 전에 적대자가 패치한 악성 코드를 가리키도록 바이너리의 진입점을 수정할 수 있습니다.
바이너리를 수정한 후 적대자는 업데이트를 방지하여 방어를 손상 시키려고 시도할 수 있습니다(예: yum 패키지 관리자를 사용하는 Linux 시스템의 yum-versionlock명령이나 파일을 통해).
절차
2016년 우크라이나 전력 공격 동안 Sandworm Team은 Industroyer에 대한 지속성 계층을 추가하기 위해 Windows 메모장의 트로이 목마 버전을 사용했습니다.
APT5 - 지속성을 위해 ATRIUM 웹셸을 설치하기 위해 합법적인 DSUpgrade.pm 파일을 포함하여 Pulse Secure VPN에 대한 합법적인 바이너리 및 스크립트를 수정했습니다.
BFG Agonizer - 보안 솔루션이 종종 구현하는 사용자 모드 인라인 후크를 제거하기 위해 DLL 언후킹을 사용합니다. 또한, 사용자 모드 IAT 후크를 제거하기 위해 IAT 언후킹을 사용합니다.
Bonadan - 타겟 시스템에서 OpenSSH 바이너리를 악의적으로 변경하여 백도어를 생성했습니다.
BUSHWALK - 손상된 Ivanti Connect Secure VPN의 합법적 querymanifest.cgi 파일에 내장될 수 있습니다.
Cutting Edge 동안 위협 행위자는 악성 코드를 사용하여 Ivanti Connect Secure 어플라이언스의 합법적인 파일을 트로이 목마화했습니다.
Ebury - 라이브러리를 수정하여 keyutils OpenSSH 클라이언트와 curl 라이브러리에 악의적인 동작을 추가합니다.
FRAMESTING - Ivanti Connect Secure VPN의 CAV Python 패키지에 내장될 수 있습니다.
Industroyer - 추가 백도어 지속성 메커니즘을 위해 Windows 메모장 애플리케이션의 트로이 목마 버전을 사용했습니다.
Kessel - 타겟 시스템에서 OpenSSH 바이너리를 악의적으로 변경하여 백도어를 생성했습니다.
Kobalos - 손상된 시스템의 자격 증명을 훔치기 위해 SSH 클라이언트를 트로이 목마화된 SSH 클라이언트로 교체했습니다.
LIGHTWIRE - 명령 실행을 활성화하기 위해 Ivanti Connect Secure VPN의 합법적 구성 요소에 내장될 수 있습니다.
LITTLELAMB.WOOLTEA는 tmp/tmpmnt/bin/samba_upgrade.tar 공장 초기화 파티션 내부의 아카이브에 악성 구성 요소를 추가하여 초기화 이후에도 지속시키려고 시도할 수 있습니다.
SLOWPULSE - 합법적인 Pulse Secure 파일을 수정하여 손상된 환경에 적용됩니다.
ThiefQuest - /Users/ 실행 파일을 찾기 위해 폴더를 검색합니다. 각 실행 파일에 대해 ThiefQuest는 파일의 시작 부분에 자체 사본을 추가합니다. 파일이 실행되면 ThiefQuest 코드가 먼저 실행됩니다.
WARPWIRE - 손상된 Ivanti Connect Secure VPN의 합법적 파일에 자체를 내장할 수 있습니다.
WIREFIRE - visits.py 파일 다운로드 및 임의 명령 실행을 위해 Ivanti Connect Secure VPN의 구성 요소를 수정할 수 있습니다.
XCSSET - 합법적인 브라우저를 대체하는 악성 브라우저 애플리케이션을 사용하여 자격 증명을 지속적으로 캡처하고 웹 트래픽을 모니터링하며 추가 모듈을 다운로드합니다.
완화책
코드 서명
모든 애플리케이션 구성 요소 바이너리가 올바른 애플리케이션 개발자에 의해 서명되었는지 확인하세요.
발견
파일
-파일 생성
시스템에 지속적으로 액세스하기 위해 클라이언트 소프트웨어 바이너리를 수정할 수 있는 새로 구성된 파일을 모니터링합니다.
- 파일 삭제
시스템에 지속적으로 액세스할 수 있도록 클라이언트 소프트웨어 바이너리의 예기치 않은 삭제를 모니터링합니다.
- 파일 메타데이터
환경 내에서 실행되는 소프트웨어에서 서명 인증서 메타데이터를 수집 및 분석하고 서명 유효성을 확인합니다.
- 파일 수정
알려진 소프트웨어나 패치 주기와 관련이 없는 클라이언트 소프트웨어의 변경 사항을 모니터링합니다.
계정 생성
공격자는 피해자 시스템에 대한 액세스를 유지하기 위해 계정을 생성할 수 있습니다. [1] 충분한 수준의 액세스가 있는 경우 이러한 계정을 생성하면 시스템에 지속적인 원격 액세스 도구를 배포할 필요가 없는 보조 자격 증명 액세스를 설정하는 데 사용될 수 있습니다.
계정은 로컬 시스템이나 도메인 또는 클라우드 테넌트 내에서 생성될 수 있습니다. 클라우드 환경에서 적대자는 특정 서비스에만 액세스할 수 있는 계정을 생성할 수 있으며, 이는 탐지 가능성을 줄일 수 있습니다.
절차
2016 우크라이나 전력 공격 당시 Sandworm Team은 SQL Server를 사용하여 로그인을 추가 했습니다sp_addlinkedsrvlogin .
Indrik Spider - wmic.exe 시스템에 새로운 사용자를 추가하곤 했습니다 .
Scattered Spider - 손상된 조직 내에서 새로운 사용자 ID를 생성합니다.
완화책
다중 인증 요소
사용자 및 권한 있는 계정에 대해 다중 요소 인증을 사용합니다.
네트워크 세분화
계정을 만들고 관리하는 데 사용되는 도메인 컨트롤러와 시스템에 대한 액세스를 제한하기 위해 액세스 제어 및 방화벽을 구성합니다.
운영 체제 구성
중요한 서버에 대한 적절한 보안 구성을 보장하여 도메인 컨트롤러를 보호합니다.
특권 계정 관리
다른 계정을 만들 수 있는 권한이 있는 계정 수를 제한합니다. 권한이 없는 시스템에서 잠재적인 적대자에게 노출될 수 있는 일상적인 작업에 도메인 관리자 계정을 사용하도록 허용하지 마십시오.
발각
명령
- 명령 실행
net user 또는 useradd와 같은 계정 생성과 관련된 작업에 대해 실행된 명령 및 인수를 모니터링합니다.
프로세스
- 프로세스 생성
net.exe와 같은 계정 생성과 관련된 새로 실행된 프로세스를 모니터링합니다.
사용자 계정
- 사용자 계정 생성
새로 구성된 사용자 계정을 계정 감사를 통해 모니터링하여 적대자가 만들었을 수 있는 의심스러운 계정을 감지합니다. 네트워크 또는 Windows 이벤트 ID 4720(Windows 시스템 및 도메인 컨트롤러에서 사용자 계정이 생성될 때) 내에서 계정 생성에 대한 데이터를 수집합니다.
시스템 프로세스 생성 또는 수정
공격자는 지속성의 일부로 악성 페이로드를 반복적으로 실행하기 위해 시스템 수준 프로세스를 생성하거나 수정할 수 있습니다. 운영 체제가 부팅되면 백그라운드 시스템 기능을 수행하는 프로세스를 시작할 수 있습니다. Windows 및 Linux에서 이러한 시스템 프로세스를 서비스라고 합니다. macOS에서 Launch Daemon 및 Launch Agent 라는 launchd 프로세스가 실행되어 시스템 초기화를 완료하고 사용자별 매개변수를 로드합니다.
적대자는 지속성을 확립하기 위해 시작 시 또는 반복 가능한 간격으로 실행되도록 구성할 수 있는 새로운 서비스, 데몬 또는 에이전트를 설치할 수 있습니다. 마찬가지로 적대자는 동일한 효과를 얻기 위해 기존 서비스, 데몬 또는 에이전트를 수정할 수 있습니다.
서비스, 데몬 또는 에이전트는 관리자 권한으로 생성될 수 있지만 루트/시스템 권한으로 실행될 수 있습니다. 공격자는 이 기능을 활용하여 시스템 프로세스를 생성하거나 수정하여 권한을 확대할 수 있습니다.
절차 예
Linux용 Exaramel - 시작 시스템이 Upstart 또는 System V이고 루트로 실행되는 경우 지속성을 달성하기 위해 사용하는 하드코딩된 위치가 있습니다.
IMAPLoader - 경로 수정을 통해 검색된 PE 파일을 참조하도록 피해자 컴퓨터에서 Windows 작업을 수정합니다.
LITTLELAMB.WOOLTEA - 백그라운드에서 지속적으로 실행하기 위해 데몬으로 자체를 초기화할 수 있습니다.
LunarMail - 지정된 명령줄로 임의의 프로세스를 생성하고 해당 출력을 스테이징 디렉토리로 리디렉션할 수 있습니다.
완화책
심사
기업 내 시스템에서 권한 및 서비스 남용 기회를 탐지하고 이를 수정하는 데 사용할 수 있는 감사 도구를 사용합니다.
엔드포인트에서의 행동 예방
Windows 10에서 공격 표면 감소(ASR) 규칙을 활성화하여 애플리케이션이 서명된 취약한 드라이버를 시스템에 쓰지 못하도록 합니다. Windows 10 및 11에서 Microsoft 취약한 드라이버 차단 목록을 활성화하여 타사에서 개발한 드라이버에 대한 보안을 강화합니다.
코드 서명
가능한 경우 합법적으로 서명된 서비스 드라이버만 등록하고 실행하도록 시행합니다.
소프트웨어 설치 제한
신뢰할 수 있는 저장소에만 소프트웨어 설치를 제한하고, 버려진 소프트웨어 패키지에 주의하세요.
운영 체제 구성
드라이버 서명 적용이 활성화되어 서명되지 않은 드라이버가 설치되는 것을 제한합니다.
특권 계정 관리
SYSTEM과 root를 포함한 권한 있는 계정에 연관된 생성, 수정, 사용 및 권한을 관리합니다.
파일 및 디렉토리 권환 제한
시스템 수준 프로세스 파일에 대한 읽기/쓰기 액세스를 시스템 서비스를 관리할 수 있는 합법적인 필요가 있는 권한이 있는 특정 사용자에게만 제한합니다.
소프트웨어 구성
가능하다면 컨테이너를 실행하는 호스트에 대한 권한 상승이나 악의적인 영향 가능성을 제한하기 위해 루트 없는 모드에서 컨테이너 서비스 사용을 강제하는 것을 고려하세요.
사용자 계정 관리
권한이 있는 관리자만 시스템 수준 프로세스 변경 및 서비스 구성과 상호 작용할 수 있도록 사용자 계정 및 그룹의 권한을 제한합니다.
발견
명령
- 명령 실행
서비스를 수정할 수 있는 도구의 명령줄 호출은 특정 환경에서 시스템이 일반적으로 사용되는 방식에 따라 특이할 수 있습니다. 알려진 서비스에서 비정상적인 프로세스 호출 트리를 찾고 Discovery 또는 기타 적대적 기술과 관련이 있을 수 있는 다른 명령의 실행을 찾습니다.
컨테이너
- 컨테이너 생성
지속성 또는 권한 확대의 일부로 악성 페이로드를 반복적으로 실행하는 새로 구성된 컨테이너를 모니터링합니다.
운전사
- 드라이버 부하
알려진 소프트웨어 업데이트/패치 주기에 포함되지 않은 새로운 서비스 드라이버 설치 및 로드(예: Sysmon 이벤트 ID 6)를 모니터링합니다.
파일
- 파일 생성
지속성의 일부로 악성 페이로드를 반복적으로 실행하기 위해 시스템 수준 프로세스를 생성하거나 수정할 수 있는 새로 구성된 파일을 모니터링합니다.
- 파일 수정
시스템 수준 프로세스와 관련된 파일의 변경 사항을 모니터링합니다.
프로세스
-OS API 실행
지속성의 일부로 악성 페이로드를 반복적으로 실행하기 위해 시스템 수준 프로세스를 생성하거나 수정할 수 있는 API 호출을 모니터링합니다.
- 프로세스 생성
새 소프트웨어를 설치하는 동안 새롭고 무해한 시스템 프로세스가 생성될 수 있습니다.
서비스
- 서비스 생성
지속성의 일부로 악성 페이로드를 반복적으로 실행하기 위해 시스템 수준 프로세스를 생성하거나 수정할 수 있는 새로 구성된 서비스/데몬을 모니터링합니다.
- 서비스 수정
신뢰할 수 있는 시스템 기준과 결과를 비교하는 것을 포함하여 알려진 소프트웨어, 패치 주기 등과 연관되지 않은 시스템 프로세스의 변경 사항을 모니터링합니다.
윈도우 레지스트리
- 윈도위 레지스트리 키 생성
지속성의 일부로 악성 페이로드를 반복적으로 실행하기 위해 시스템 수준 프로세스를 생성하거나 수정할 수 있는 새로 구성된 Windows 레지스트리 키를 모니터링합니다.
- 윈더우 레지스트리 키 수정
지속성의 일부로 악성 페이로드를 반복적으로 실행하기 위해 시스템 수준 프로세스를 생성하거나 수정할 수 있는 Windows 레지스트리 키 및/또는 값의 변경 사항을 모니터링합니다.
이벤트 트리거 실행
공격자는 특정 이벤트에 따라 실행을 트리거하는 시스템 메커니즘을 사용하여 지속성을 확립하고/하거나 권한을 상승시킬 수 있습니다. 다양한 운영 체제에는 로그온이나 특정 애플리케이션/바이너리 실행과 같은 기타 사용자 활동과 같은 이벤트를 모니터링하고 구독할 수 있는 수단이 있습니다. 클라우드 환경은 또한 특정 클라우드 이벤트를 모니터링하고 이에 대한 응답으로 호출될 수 있는 다양한 기능과 서비스를 지원할 수 있습니다.
공격자는 악성 코드를 반복적으로 실행하여 피해자에게 지속적으로 접근할 수 있는 수단으로 이러한 메커니즘을 남용할 수 있습니다. 피해자 시스템에 접근한 후 공격자는 이벤트 트리거를 생성/수정하여 이벤트 트리거가 호출될 때마다 실행될 악성 콘텐츠를 가리킬 수 있습니다.
SYSTEM이나 서비스 계정 등 더 높은 권한이 있는 계정을 통해 실행을 프록시할 수 있으므로 공격자는 이러한 트리거 실행 메커니즘을 악용하여 자신의 권한을 확대할 수 있습니다.
절차
KV Botnet 활동은 libevent 실행 중인 프로세스가 경로에 다음 참조를 포함하고 있지만 bioset, busybox, wget, curl, tftp, telnetd 또는 lua에 대한 참조가 없는 경우 콜백 함수를 실행하여 피해자 시스템에서 이벤트를 관리하는 것을 포함합니다. bioset 문자열을 찾을 수 없으면 관련 프로세스가 종료됩니다.
Pacu - CloudFormation 템플릿이 버킷에 업로드될 때 악성 Lambda 함수를 트리거하도록 S3 버킷 알림을 설정할 수 있습니다. 또한 사용자, 역할 및 그룹 생성 시 트리거되는 Lambda 함수를 생성할 수도 있습니다.
완화책
특권 계정 관리
SYSTEM과 root를 포함한 권한 있는 계정에 연관된 생성, 수정, 사용 및 권한을 관리합니다.
소프트웨어 업데이트
악용 위험을 완화하기 위해 정기적인 소프트웨어 업데이트를 수행합니다.
발견
클라우드 서비스
- 클라우드 서비스 수정
클라우드 이벤트를 모니터링하는 기능 및 워크플로우와 같이 지속성을 위해 남용될 수 있는 클라우드 리소스의 생성 및 수정을 모니터링합니다.
명령
- 명령 실행
특정 이벤트에 따라 실행을 트리거하는 시스템 메커니즘을 사용하여 지속성을 확립하거나 권한을 상승시킬 수 있는 실행된 명령 및 인수를 모니터링합니다.
파일
- 파일 생성
특정 이벤트에 따라 실행을 트리거하는 시스템 메커니즘을 사용하여 지속성을 확립하거나 권한을 상승시킬 수 있는 새로 구성된 파일을 모니터링합니다.
- 파일 메타데이터
이름, 내용(예: 서명, 헤더 또는 데이터/미디어), 사용자/소유자, 권한 등과 같은 정보를 포함할 수 있는 파일의 컨텍스트 데이터를 모니터링합니다.
- 파일 수정
특정 이벤트에 따라 실행을 트리거하는 시스템 메커니즘을 사용하여 지속성을 확립하거나 권한을 상승시킬 수 있는 파일의 변경 사항을 모니터링합니다.
기준 치수
- 모듈 로드
프로세스별 DLL 로드를 모니터링하고, 특히 인식되지 않거나 프로세스에 정상적으로 로드되지 않은 DLL을 찾습니다. 악성 DLL을 로드하는 프로세스로 인해 발생할 수 있는 비정상적인 프로세스 동작을 찾습니다. 데이터와 이벤트는 단독으로 보지 말고, Command and Control을 위한 네트워크 연결, Discovery를 통한 환경 세부 정보 학습, Lateral Movement 수행과 같은 다른 활동으로 이어질 수 있는 일련의 동작의 일부로 보아야 합니다.
프로세스
- 프로세스 생성
Sysinternals Autoruns와 같은 도구를 사용하면 지속성을 시도할 수 있는 실행 트리거의 변경 사항을 감지할 수 있습니다. 또한 Discovery 작업이나 다른 기술과 관련이 있을 수 있는 다른 명령의 실행에 대한 비정상적인 프로세스 호출 트리를 찾아보세요.
윈도우 레지스트리
- 위도우 레지스트리 키 수정
특정 이벤트에 따라 실행을 트리거하는 시스템 메커니즘을 사용하여 지속성을 확립하거나 권한을 상승시킬 수 있는 Windows 레지스트리 키 및/또는 값의 변경 사항을 모니터링합니다.
YMI
- YMI
특정 이벤트에 따라 실행을 트리거하는 시스템 메커니즘을 사용하여 지속성을 확립하거나 권한을 상승시킬 수 있는 새로 구성된 WMI 개체를 모니터링합니다.
외부 원격 서비스
적대자는 외부에 있는 원격 서비스를 활용하여 네트워크에 처음 액세스하거나 네트워크 내에서 지속할 수 있습니다. VPN, Citrix 및 기타 액세스 메커니즘과 같은 원격 서비스를 사용하면 사용자가 외부 위치에서 내부 엔터프라이즈 네트워크 리소스에 연결할 수 있습니다. 이러한 서비스에 대한 연결 및 자격 증명 인증을 관리하는 원격 서비스 게이트웨이가 종종 있습니다. Windows 원격 관리 및 VNC 와 같은 서비스 도 외부에서 사용할 수 있습니다.
서비스를 사용하기 위한 유효한 계정 에 대한 액세스는 종종 요구 사항이며, 자격 증명 파밍을 통해 얻거나 엔터프라이즈 네트워크를 손상시킨 후 사용자로부터 자격 증명을 얻어 얻을 수 있습니다. 원격 서비스에 대한 액세스는 작업 중에 중복적이거나 지속적인 액세스 메커니즘으로 사용될 수 있습니다.
인증이 필요하지 않은 노출된 서비스를 통해서도 액세스할 수 있습니다. 컨테이너화된 환경에서는 노출된 Docker API, Kubernetes API 서버, kubelet 또는 Kubernetes 대시보드와 같은 웹 애플리케이션이 포함될 수 있습니다.
절차
2015년 우크라이나 전력 공격 당시 Sandworm Team은 수정된 Dropbear SSH 클라이언트를 대상 시스템의 백도어로 설치했습니다.
Akira - 손상된 VPN 계정을 사용하여 피해자 네트워크에 처음 접근합니다.
APT18 공격자 - 합법적인 자격 증명을 활용하여 외부 원격 서비스에 로그인합니다.
APT28 - Tor와 다양한 상업용 VPN 서비스를 사용하여 무차별 대입 인증 시도를 라우팅했습니다.
APT29 - 손상된 ID를 사용하여 VPN 및 Citrix를 통해 네트워크에 액세스했습니다.
APT41 - 제3자 서비스 제공자와 타겟 결제 서비스 간 VPN 액세스를 사용하여 온라인 청구/결제 서비스를 손상시켰습니다.
C0027 동안 Scattered Spider는 Citrix와 VPN을 사용하여 손상된 환경에서 살아남았습니다.
C0032 캠페인 동안 TEMP.Veles는 VPN 액세스를 사용하여 피해자 환경에 머물렀습니다.
Chimera - 합법적인 자격 증명을 사용하여 외부 VPN, Citrix, SSH 및 기타 원격 서비스에 로그인했습니다.
CostaRicto 동안 위협 행위자는 SSH 도구를 사용하여 원격 터널링을 설정하여 손상된 환경에 대한 액세스를 유지했습니다.
Doki - 오픈 Docker 데몬 API 포트를 통해 실행되었습니다.
Dragonfly - VPN과 Outlook Web Access(OWA)를 사용하여 피해자 네트워크에 대한 액세스를 유지했습니다.
Ember Bear - 피해자 환경에 대한 초기 액세스와 침해 후 해당 환경 내에서의 지속성을 위해 VPN을 사용했습니다.
FIN13 - 회사 가상 사설망(VPN)과 같은 원격 액세스 서비스를 통해 손상된 환경에 액세스했습니다.
FIN5 - 합법적인 VPN, Citrix 또는 VNC 자격 증명을 사용하여 피해자 환경에 대한 액세스를 유지했습니다.
GALLIUM - SoftEther VPN을 포함한 VPN 서비스를 사용하여 피해자 환경에 액세스하고 지속성을 유지했습니다.
GOLD SOUTHFIELD - 공개적으로 접근 가능한 RDP 및 원격 관리 및 모니터링(RMM) 서버를 사용하여 피해자 컴퓨터에 액세스했습니다.
Hildegard - 익명으로 피해자 환경에 액세스할 수 있는 보안되지 않은 kubelet을 통해 실행되었습니다.
Ke3chang - 손상된 계정 및 도난된 VPN 인증서를 포함한 VPN을 통해 액세스 권한을 얻었습니다.
Kimsuky - RDP를 사용하여 지속성을 확립했습니다.
Kinsing - 오픈 Docker 데몬 API를 통해 배포된 Ubuntu 컨테이너에서 실행되었습니다.
Leviathan - VPN(가상 사설망)과 같은 외부 원격 서비스를 사용하여 초기 액세스를 얻었습니다.
Linux Rabbit - SSH를 통해 서버에 액세스하려고 시도합니다.
Mafalda - 손상된 호스트에서 서버로 SSH 연결을 설정할 수 있습니다.
Night Dragon 동안 위협 행위자는 손상된 VPN 계정을 사용하여 피해자 시스템에 액세스했습니다.
OilRig - VPN, Citrix 또는 OWA와 같은 원격 서비스를 사용하여 환경을 유지합니다.
Operation CuckooBees 동안 위협 행위자는 HTTP/HTTPS를 통한 WinRM을 활성화했습니다.
Operation Wocao 동안 위협 행위자는 도난한 자격 증명을 사용하여 VPN을 통해 피해자의 네트워크에 연결했습니다.
Play - 초기 액세스를 위해 RDP(원격 데스크톱 프로토콜) 및 VPN(가상 사설망)을 사용했습니다.
Sandworm Team - 하드코딩된 백도어 암호와 함께 Dropbear SSH를 사용하여 대상 네트워크 내에서 지속성을 유지했습니다. 또한 합법적인 소프트웨어 회사 인프라에 구축된 VPN 터널을 사용하여 해당 소프트웨어 회사 사용자의 내부 네트워크에 액세스했습니다.
Scattered Spider - 지속적인 액세스를 유지하기 위해 합법적인 원격 관리 도구를 활용했습니다.
SolarWinds 침해 동안 APT29 - 손상된 ID를 사용하여 SSH, VPN 및 기타 원격 액세스 도구를 통해 네트워크에 액세스했습니다.
TeamTNT - Weave Scope와 같은 오픈 소스 도구를 사용하여 노출된 Docker API 포트를 타겟으로 삼고 피해자 환경에 대한 초기 액세스 권한을 얻었습니다.
위협 그룹 3390 행위자는 외부 VPN 서비스를 사용하여 네트워크에 액세스하는 작업 중에 VPN 프로필을 찾아 사용합니다. 또한 침입 중에 OWA 계정 자격 증명을 얻었으며 이후 피해자 네트워크에서 추방된 후 액세스를 다시 시도하는 데 이를 사용했습니다.
Volt Typhoon - VPN을 사용하여 피해자 환경에 연결하고 악용 후 작업을 가능하게 했습니다.
Wizard Spider - 도난한 자격 증명을 사용하여 회사 VPN 인프라에 액세스하여 피해자 네트워크에 액세스했습니다.
완화책
기능 또는 프로그램 비활성화 또는 제거
불필요할 수 있는 원격으로 사용 가능한 서비스를 비활성화하거나 차단합니다.
네트워크를 통한 리소스 액세스 제한
VPN 및 기타 관리형 원격 액세스 시스템 등의 중앙 관리형 집중 장치를 통해 원격 서비스에 대한 액세스를 제한합니다.
다중 인증 요소
원격 서비스 계정에 강력한 2단계 또는 다중 단계 인증을 사용하여 적대자가 도난당한 자격 증명을 악용하는 능력을 완화합니다. 하지만 일부 2단계 인증 구현에 대해서는 다중 단계 인증 가로채기 기술에 유의하세요.
네트워크 세분화
네트워크 프록시, 게이트웨이, 방화벽을 사용하여 내부 시스템에 대한 직접적인 원격 액세스를 거부합니다.
발견
신청 로그
- 애플리케이션 로그 내용
노출된 원격 서비스에 액세스하는 데 인증이 필요하지 않은 경우 노출된 API나 애플리케이션의 비정상적인 외부 사용과 같은 후속 활동을 모니터링합니다.
로그온 세션
- 로그온 세션 메타데이터
원격 서비스에 대한 인증을 위해 유효한 계정 의 적대적 사용을 감지하기 위한 모범 사례를 따르세요 . 인증 로그를 수집하고 비정상적인 액세스 패턴, 활동 창 및 정상 업무 시간 외의 액세스를 분석합니다.
네트워크 트래픽
- 네트워크 연결
외부 원격 서비스를 사용하여 네트워크에 액세스하거나 네트워크 내에서 지속하기 위해 유효한 계정을 사용할 수 있는 새로 구성된 네트워크 연결을 모니터링합니다. 외부 원격 서비스의 사용은 환경과 사용 방법에 따라 합법적일 수 있습니다. 액세스 패턴 및 원격 로그인 후 발생하는 활동과 같은 다른 요소는 외부 원격 서비스를 사용하는 의심스럽거나 악의적인 동작을 나타낼 수 있습니다.
- 네트워크 트래픽 콘텐츠
예상 프로토콜 표준 및 트래픽 흐름(예: 확립된 흐름에 속하지 않는 외부 패킷, 무의미하거나 비정상적인 트래픽 패턴, 비정상적인 구문 또는 구조)을 따르지 않는 프로토콜과 관련된 트래픽 패턴 및 패킷 검사를 모니터링하고 분석합니다. 프로세스 모니터링 및 명령줄과의 상관 관계를 고려하여 트래픽 패턴과 관련된 비정상적인 프로세스 실행 및 명령줄 인수를 감지합니다(예: 각 프로토콜에 대해 정상적으로 연결을 시작하지 않는 파일 사용 시 이상 모니터링).
- 네트워크 트래픽 흐름
알 수 없는/예상치 못한 하드웨어 장치에서 발생하는 네트워크 트래픽을 모니터링합니다. 로컬 네트워크 트래픽 메타데이터(예: 소스 MAC 주소 지정)와 DHCP와 같은 네트워크 관리 프로토콜의 사용은 하드웨어를 식별하는 데 도움이 될 수 있습니다.
하이재킹 실행 흐름
적대자는 운영 체제가 프로그램을 실행하는 방식을 하이재킹하여 자신의 악성 페이로드를 실행할 수 있습니다. 실행 흐름을 하이재킹하는 것은 지속성을 위한 목적일 수 있는데, 이 하이재킹된 실행은 시간이 지남에 따라 다시 발생할 수 있기 때문입니다. 적대자는 또한 이러한 메커니즘을 사용하여 권한을 상승시키거나 애플리케이션 제어 또는 실행에 대한 기타 제한과 같은 방어를 회피할 수 있습니다.
적대자가 실행 흐름을 하이재킹할 수 있는 방법에는 운영 체제가 실행할 프로그램을 찾는 방법을 조작하는 것을 포함하여 여러 가지가 있습니다. 운영 체제가 프로그램에서 사용할 라이브러리를 찾는 방법도 가로챌 수 있습니다. 운영 체제가 프로그램/리소스를 찾는 위치(예: 파일 디렉터리, Windows의 경우 레지스트리)도 악성 페이로드를 포함하도록 오염될 수 있습니다.
절차
C0017 동안 APT41은 합법적인 Microsoft 바이너리 내의 IAT(가져오기 주소 테이블)를 수정하여 악성 라이브러리를 로드하여 지속성을 확립했습니다.
COATHANGER - 합법적인 시스템 기능과 관련된 악성 공유 객체를 제거하고 작성합니다.
DarkGate - HKCU\Software\Classes\mscfile\shell\open\command에서 악성 AutoIt 스크립트를 실행하기 위해 레지스트리 키를 편집합니다. eventvwr.exe가 실행되면 Microsoft Management Console(mmc.exe)이 호출되고 이는 수정된 레지스트리 키를 참조합니다.
Denis - 존재하지 않는 Windows DLL "msfte.dll"을 SearchIndexer.exe 및 SearchProtocolHost.exe에 의해 로드되는 자신의 악성 버전으로 대체합니다.
Dtrack 중 하나는 악성 코드로 프로그램 실행의 정상적인 흐름을 대체할 수 있습니다.
Nightdoor - 합법적인 실행 파일을 사용하여 설치를 위해 악성 DLL 파일을 로드합니다.
Pikabot Distribution 2024년 2월은 변조된 합법적 실행 파일인 grepWinNP3.exe를 첫 번째 단계 Pikabot 로더에 사용하여 오픈소스 도구를 수정하여 출시 시 악성 코드를 실행하도록 했습니다.
Raspberry Robin - 세션 0에서 실행 중이 아닐 경우 권한 승격 및 방어 회피를 시도하기 위해 자체 사본을 %Program Data%\Microsoft\ 하위 폴더에 놓습니다.
Saint Bot - 엔드포인트 감지 및 응답 또는 맬웨어 방지 소프트웨어가 원본 파일에 대한 호출에 배치한 후크를 방지하기 위해 제공된 핵심 API를 로드하기 위해 악성 파일이 있는 경우 해당 파일을 사용합니다.
ShimRat - migwiz.exe 내의 cryptbase.dll을 하이재킹하여 권한을 확대하고 UAC 제어를 우회할 수 있습니다.
완화책
애플리케이션 개발자 지침
가능하면 악성 라이브러리의 사이드 로딩을 방지하기 위해 매니페스트 파일에 해시 값을 포함하십시오.
심사
기업 내 시스템에서 하이재킹 기회를 탐지하고 이를 수정할 수 있는 감사 도구를 사용합니다. PowerSploit 프레임워크와 같은 툴킷에는 하이재킹 취약점을 찾기 위해 시스템을 탐색하는 데 사용할 수 있는 PowerUp 모듈이 포함되어 있습니다.
Windows에 포함된 sxstrace.exe 프로그램과 수동 검사를 함께 사용해 소프트웨어의 사이드 로딩 취약점이 있는 매니페스트 파일을 검사합니다.
프로그램 구성 파일, 스크립트, PATH 환경 변수, 서비스 및 바로가기에서 경로 가로채기 취약점을 찾아 제거하려면 함수에서 허용하는 경우 PATH 변수를 따옴표로 묶습니다. Windows에서 바이너리를 실행하거나 로드하는 데 사용하는 검색 순서를 알고 적절한 경우 정규화된 경로를 사용합니다.
소프트웨어가 제거되면 오래된 Windows 레지스트리 키를 정리하여 연관된 합법적인 바이너리가 없는 키를 방지합니다. 안전하지 않은 경로 구성을 사용하는 소프트웨어를 보고하는 사용자 지정 또는 사용 가능한 도구를 사용하여 도입되었을 수 있는 시스템에서 경로 가로채기 취약점을 주기적으로 검색하여 수정하거나 보고합니다.
엔드포인트에서의 행동 예방
일부 엔드포인트 보안 솔루션은 일반적인 지표 시퀀스(예: 특정 API 기능 실행)를 기반으로 프로세스 주입/메모리 변조와 관련된 일부 유형의 동작을 차단하도록 구성할 수 있습니다.
실행 방지
적대자는 이 기술을 실행하기 위해 새로운 페이로드를 사용할 수 있습니다. 합법적인 소프트웨어에서 로드된 라이브러리를 차단할 수 있는 애플리케이션 제어 솔루션을 사용하여 하이재킹을 통해 실행되는 잠재적으로 악성 소프트웨어를 식별하고 차단합니다.
파일 및 디렉토리 권한 제한
쓰기 보호된 위치에 소프트웨어를 설치합니다. 응용 프로그램이 실행되는 폴더와 표준 라이브러리 폴더 모두에서 응용 프로그램의 검색 경로에 대한 파일 쓰기를 방지하기 위해 디렉토리 액세스 제어를 설정합니다.
라이브러리로딩 제한
원격 DLL 로딩을 허용하지 않습니다. 이는 Windows Server 2012+에 기본적으로 포함되어 있으며 XP+ 및 Server 2003+에 대한 패치로 제공됩니다.
%SYSTEMROOT%로컬 디렉토리 DLL(예: 사용자의 홈 디렉토리)보다 먼저 더 큰 제한이 있는 디렉토리(예: )에서 시스템 DLL을 검색하도록 강제하려면 안전 DLL 검색 모드를 활성화합니다.
안전한 DLL 검색 모드는 컴퓨터 구성 > [정책] > 관리 템플릿 > MSS(레거시)의 그룹 정책을 통해 활성화할 수 있습니다. MSS: (SafeDllSearchMode) 안전한 DLL 검색 모드 활성화. 이와 관련된 Windows 레지스트리 키는 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\SafeDLLSearchMode 에 있습니다.
레지스트리 권한 제한
사용자가 시스템 구성 요소의 키를 수정하여 권한 상승을 초래하는 것을 방지하려면 레지스트리 하이브에 적절한 권한이 설정되어 있는지 확인하세요.
소프트웨어 업데이트
DLL 사이드 로딩 취약점을 해결하는 패치를 포함하도록 소프트웨어를 정기적으로 업데이트하세요.
사용자계정 컨드롤
표준 사용자에 대한 UAC 권한 상승을 해제하여 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]자동으로 권한 상승 요청을 거부하려면 다음을 추가합니다 "ConsentPromptBehaviorUser"=dword:00000000. 다음을 추가하여 모든 사용자에 대한 설치 프로그램 감지를 활성화하는 것을 고려합니다. "EnableInstallerDetection"=dword:00000001이렇게 하면 설치에 대한 암호를 묻고 시도도 기록합니다. 설치 프로그램 감지를 비활성화하려면 대신 다음을 추가합니다. "EnableInstallerDetection"=dword:00000000이렇게 하면 UAC가 설치 프로그램을 감지하는 동안 악용을 통한 권한 상승 가능성을 방지할 수 있지만 기록되지 않고 설치 프로세스를 계속할 수 있습니다.
사용자계정 관리
사용자 계정 및 그룹의 권한을 제한하여 권한이 있는 관리자만 서비스 변경 및 서비스 바이너리 대상 경로 위치와 상호 작용할 수 있도록 합니다. 가능한 경우 파일 다운로드 디렉토리 및 임시 디렉토리와 같은 사용자 디렉토리에서 실행을 거부합니다.
악성 파일이 실행될 수 있는 위치를 줄이기 위해 적절한 권한과 디렉토리 액세스 제어를 설정하여 사용자가 최상위 디렉토리 C:및 시스템 디렉토리(예: ) 에 파일을 쓸 수 없도록 하세요.C:\Windows\
발견
명령
- 명령 실행
운영 체제가 프로그램을 실행하는 방식을 하이재킹하여 악성 페이로드를 실행할 수 있는 실행된 명령 및 인수를 모니터링합니다.
파일
- 파일 생성
운영 체제가 프로그램을 실행하는 방식을 하이재킹하여 악성 페이로드를 실행할 수 있는 새로 구성된 파일을 모니터링합니다.
- 파일 수정
DLL을 이동, 이름 바꾸기, 바꾸기 또는 수정하기 위해 파일 시스템을 모니터링합니다. 프로세스에서 로드한 DLL 세트의 변경 사항(과거 동작과 비교)이 알려진 소프트웨어, 패치 등과 관련이 없는 경우 의심스럽습니다. 소프트웨어 업데이트와 관련이 없는 .manifest 및 .local 리디렉션 파일의 수정 또는 생성은 의심스럽습니다.
기준 수치
- 모듈 로드
프로세스에 로드된 DLL을 모니터링하고 파일 이름은 같지만 경로가 비정상적인 DLL을 감지합니다.
프로세스
- 프로세스 생성
비정상적인 활동(예: 네트워크를 사용하지 않는 프로세스가 네트워크를 사용하기 시작함, 비정상적인 프로세스 호출 트리)에 대한 프로세스를 모니터링합니다. 해시와 같은 라이브러리 메타데이터를 추적하고, 프로세스 실행 시간에 로드된 라이브러리를 이전 실행과 비교하여 패치나 업데이트와 관련이 없는 차이점을 감지합니다.
서비스
- 서비스 메타데이터
소프트웨어 업데이트 중에 일반적으로 발생할 수 있는 바이너리 및 서비스 실행 파일의 변경 사항을 찾으십시오. 실행 파일이 기존 서비스 실행 파일과 일치하도록 작성, 이름 변경 및/또는 이동된 경우 다른 의심스러운 동작과 감지 및 상관 관계가 있을 수 있습니다. 바이너리 및 서비스 실행 파일의 해싱은 과거 데이터에 대한 대체를 감지하는 데 사용될 수 있습니다.
윈도우 레지스트리
- 윈도우 레지스트리 키 수정
운영 체제가 프로그램을 실행하는 방식을 하이재킹하여 자체적인 악성 페이로드를 실행할 수 있는 Windows 레지스트리 키 및/또는 값의 변경 사항을 모니터링합니다.
임플란트 내부 이미지
공격자는 환경에 액세스한 후 지속성을 확립하기 위해 악성 코드가 있는 클라우드 또는 컨테이너 이미지를 이식할 수 있습니다. Amazon Web Services(AWS) Amazon Machine Images(AMI), Google Cloud Platform(GCP) Images, Azure Images는 물론 Docker와 같은 인기 있는 컨테이너 런타임도 이식되거나 백도어가 될 수 있습니다. Upload Malware 와 달리 이 기술은 피해자 환경 내의 레지스트리에 이미지를 이식하는 공격자에 초점을 맞춥니다. 인프라가 프로비저닝되는 방식에 따라 인프라 프로비저닝 도구에 항상 최신 이미지를 사용하도록 지시하는 경우 지속적인 액세스를 제공할 수 있습니다.
클라우드 컨테이너 이미지에 백도어를 심는 것을 용이하게 하는 도구가 개발되었습니다. 적대자가 손상된 AWS 인스턴스에 액세스하고 사용 가능한 컨테이너 이미지를 나열할 수 있는 권한이 있는 경우 웹 셸 과 같은 백도어를 이식할 수 있습니다 .
완화책
심사
클라우드 배포에 사용되는 이미지와 컨테이너의 무결성을 주기적으로 검사하여 악성 소프트웨어를 포함하도록 수정되지 않았는지 확인하세요.
코드 서명
여러 클라우드 서비스 제공자는 신뢰할 수 있는 소스에서 컨테이너 이미지에 서명해야 하는 콘텐츠 신뢰 모델을 지원합니다.
특권 계정 관리
최소 권한 원칙에 따라 플랫폼 이미지나 컨테이너를 만들고 수정하는 데 연관된 권한을 제한합니다.
발견
영상
- 이미지 생성
사용자의 이미지 및 컨테이너 상호작용을 모니터링하여 비정상적으로 추가된 이미지 및 컨테이너를 식별합니다.
-이미지 메타데이터
주기적으로 가상 머신 이미지의 기준선을 설정하여 악의적인 수정이나 추가 사항을 식별합니다.
이미지 수정
사용자의 이미지 및 컨테이너 상호작용을 모니터링하여 비정상적으로 수정된 항목을 식별합니다. 컨테이너화된 환경에서는 레지스트리 구성에 따라 Docker 데몬 로그를 모니터링하거나 Kubernetes 감사 로그를 설정하고 모니터링하여 변경 사항을 감지할 수 있습니다.
인증 프로세스 수정
적대자는 인증 메커니즘과 프로세스를 수정하여 사용자 자격 증명에 액세스하거나 그렇지 않으면 부당한 계정 액세스를 허용할 수 있습니다. 인증 프로세스는 Windows의 Local Security Authentication Server(LSASS) 프로세스 및 Security Accounts Manager(SAM), Unix 기반 시스템의 플러그형 인증 모듈(PAM), MacOS 시스템의 권한 부여 플러그인과 같은 메커니즘에 의해 처리되며, 자격 증명을 수집, 저장 및 검증합니다. 적대자는 인증 프로세스를 수정하여 Valid Accounts를 사용하지 않고도 서비스나 시스템에 인증할 수 있습니다 .
적대자는 이 프로세스의 일부를 악의적으로 수정하여 자격 증명을 공개하거나 인증 메커니즘을 우회할 수 있습니다. 손상된 자격 증명이나 액세스는 네트워크 내 시스템의 다양한 리소스에 배치된 액세스 제어를 우회하는 데 사용될 수 있으며 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) 에이전트를 검토하여 원치 않는 에이전트나 승인되지 않은 에이전트를 식별합니다. [5] ADFS가 사용 중인 경우 AD FS 및 글로벌 어셈블리 캐시 디렉터리의 DLL과 실행 파일을 검토하여 Microsoft에서 서명했는지 확인합니다. 어떤 경우에는 바이너리가 카탈로그 서명되어 파일 속성을 볼 때 파일이 서명되지 않은 것처럼 보일 수 있습니다. [6]
레지스트리( 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 Dirctory 개체 수정
Azure AD 조건부 액세스 정책의 변경이나 새로운 MFA 애플리케이션 등록과 같은 MFA 로그온 요구 사항과 관련된 AD 보안 설정의 변경 사항을 모니터링합니다.
Azure AD 조건부 액세스 정책과 관련된 보안 설정에 대한 변경 사항을 모니터링합니다. 이는 작업 이름아래의 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 액세스 권한이 없음). 엔터프라이즈 전체와 외부에서 액세스 가능한 서비스에서 강력하고 일관된 계정 활동 감사 정책을 구성합니다.
분석 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. [6]
분석 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 AIP 실행
도메인 컨트롤러에서 실행되는 lsass.exe를 조작하는 데 사용될 수 있는 호출 OpenProcess과 인증 관련 시스템 DLL(cryptdll.dll 및 samsrv.dll 등)에서 내보낸 기능에 대한 악의적인 수정을 모니터링합니다.
악성 네트워크 공급자 DLL을 강조 표시할 수 있는 비정상적인 API 호출을 모니터링합니다 NPLogonNotify().
분석 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")
오피스 어플리케이션 시작
적대자는 스타트업 간의 지속성을 위해 Microsoft Office 기반 애플리케이션을 활용할 수 있습니다. Microsoft Office는 엔터프라이즈 네트워크 내의 Windows 기반 운영 체제에서 상당히 일반적인 애플리케이션 제품군입니다. Office 기반 애플리케이션이 시작될 때 Office와 함께 지속성을 위해 사용할 수 있는 여러 메커니즘이 있습니다. 여기에는 Office Template Macros 및 추가 기능 사용이 포함될 수 있습니다.
Outlook 규칙, 양식, 홈페이지와 같이 지속성을 얻기 위해 남용될 수 있는 다양한 기능이 Outlook에서 발견되었습니다. 이러한 지속성 메커니즘은 Outlook 내에서 작동하거나 Office 365를 통해 사용될 수 있습니다.
절차
APT32 - 지속성을 위한 백도어 매크로를 설치하기 위해 Microsoft Outlook의 VbaProject.OTM 파일을 대체했습니다.
Gamaredon Group - 기존 문서에 악성 매크로를 삽입하여 다시 열 때 지속성을 제공했습니다. Gamaredon Group은/altvba Application.Startup 이벤트가 수신되면 Microsoft Outlook을 옵션으로 다시 시작하여 이전에 제공한 그룹의 VBA 프로젝트를 로드했습니다 .
완화책
엔드포인트에서의 행동 예방
Windows 10에서 Office 응용 프로그램이 자식 프로세스를 생성하고 잠재적으로 악성인 실행 가능 콘텐츠를 디스크에 쓰는 것을 방지하려면 ASR(공격 표면 감소) 규칙을 활성화합니다.
기능 또는 프로그램 비활성화 또는 제거
환경에 적합한 Office 매크로 보안 모범 사례를 따르세요. Office VBA 매크로 실행을 비활성화하세요.
Office 추가 기능을 비활성화합니다. 필요한 경우, 추가 기능에 서명을 요구하고 추가 기능을 허용하기 위한 사용자 알림을 비활성화하여 보안을 위한 모범 사례를 따릅니다. 일부 추가 기능 유형(WLL, VBA)의 경우 Office Trust Center에서 추가 기능을 비활성화해도 WLL이 비활성화되지 않고 VBA 코드 실행도 방해하지 않으므로 추가 완화 조치가 필요할 수 있습니다.
소프트웨어 구성
Office Test 방법의 경우 이를 실행하는 데 사용되는 레지스트리 키를 만들고 권한을 "읽기 제어"로 설정하여 관리자 권한 없이 또는 권한 상승 없이 키에 쉽게 액세스할 수 없도록 합니다.
소프트웨어 업데이트
Outlook 방법의 경우 이러한 기능에 사용되는 Visual Basic 엔진이 매크로 스크립팅 엔진과 별개이므로 매크로 차단이 효과적이지 않을 수 있습니다. [9] Microsoft는 각 문제를 해결하기 위해 패치를 출시했습니다. Outlook Visual Basic을 차단하고 악성 코드 경고를 표시하는 KB3191938, 기본적으로 사용자 지정 양식을 비활성화하는 KB4011091, 레거시 홈 페이지 기능을 제거하는 KB4011162가 시스템에 적용되었는지 확인하십시오.
발견
신청로그
- 애플리케이션 로그 내용
스타트업 간의 지속성을 위해 Microsoft Office 기반 애플리케이션을 활용할 수 있는 타사 애플리케이션 로깅, 메시징 및/또는 기타 아티팩트를 모니터링합니다. Ruler 도구를 사용하여 악성 규칙, 양식 및 홈페이지 공격을 수행할 수 있는 SensePost는 Ruler 사용을 감지하는 도구를 출시했습니다.
명령
- 명령 실행
시작 간의 지속성을 위해 Microsoft Office 기반 애플리케이션을 활용할 수 있는 실행된 명령 및 인수를 모니터링합니다. Microsoft는 메일 환경에서 메일 전달 규칙 및 사용자 지정 양식을 안전하게 수집하는 PowerShell 스크립트와 출력을 해석하는 단계를 출시했습니다. Ruler 도구를 사용하여 악성 규칙, 양식 및 홈페이지 공격을 수행할 수 있는 SensePost는 Ruler 사용을 감지하는 도구를 출시했습니다.
파일
- 파일 생성
스타트업 간의 지속성을 위해 Microsoft Office 기반 애플리케이션을 활용할 수 있는 새로 구성된 파일을 모니터링합니다.
- 파일 수정
스타트업 간의 지속성을 위해 Microsoft Office 기반 애플리케이션을 활용할 수 있는 파일에 대한 변경 사항을 모니터링합니다.
기준 치수
-모듈 로드
DLL/PE 파일 이벤트, 특히 이러한 바이너리 파일의 생성과 프로세스로의 DLL 로딩을 모니터링합니다. 인식되지 않거나 프로세스로 정상적으로 로딩되지 않은 DLL을 찾습니다.
프로세스
- 프로세스 생성
시작 간의 지속성을 위해 Microsoft Office 기반 애플리케이션을 활용할 수 있는 새로 실행된 프로세스를 모니터링합니다. 프로세스 ID(PID) 및 부모 프로세스 ID(PPID)를 포함한 프로세스 실행 정보를 수집하고 Office 프로세스에서 발생하는 비정상적인 활동 체인을 찾습니다. 비표준 프로세스 실행 트리도 의심스럽거나 악의적인 동작을 나타낼 수 있습니다. winword.exe가 의심스러운 프로세스 및 다른 적대적 기술과 관련된 활동의 부모 프로세스인 경우 해당 애플리케이션이 악의적으로 사용되었음을 나타낼 수 있습니다.
윈도우 레지스트리
- 윈도우 레지스트리 키 생성
많은 Office 관련 지속성 메커니즘에는 레지스트리를 변경하고 바이너리, 파일 또는 스크립트를 디스크에 쓰거나 기존 파일을 수정하여 악성 스크립트를 포함해야 합니다. Office 기반 지속성에 사용될 수 있는 키에 대한 레지스트리 키 생성 및 수정과 관련된 이벤트를 수집합니다.
- 윈도우 레지스트리 키 수정
많은 Office 관련 지속성 메커니즘에는 레지스트리를 변경하고 바이너리, 파일 또는 스크립트를 디스크에 쓰거나 기존 파일을 수정하여 악성 스크립트를 포함해야 합니다. Office 기반 지속성에 사용될 수 있는 키에 대한 레지스트리 키 생성 및 수정과 관련된 이벤트를 수집합니다.
전원 설정
적대자는 감염된 시스템에 대한 액세스를 확장하기 위해 시스템의 최대 절전 모드, 재부팅 또는 종료 기능을 손상시킬 수 있습니다. 컴퓨터가 휴면 상태에 들어가면 일부 또는 모든 소프트웨어 및 하드웨어가 작동을 중단하여 악성 활동을 방해할 수 있습니다.와 같이 악성 활동을 종료할 수 있는 상태로 시스템이 전환되는 것을 방지하여 액세스를 유지하기 위해 시스템 유틸리티와 구성 설정을 남용할 수 있습니다.
예를 들어, powercfgWindows 시스템에서 구성 가능한 모든 전원 시스템 설정을 제어하고 감염된 호스트가 잠금 또는 종료되는 것을 방지하기 위해 남용될 수 있습니다. 공격자는 시스템 잠금 화면 시간 초과 설정을 확장할 수도 있습니다. [5] 디스크 및 최대 절전 모드 시간 초과와 같은 기타 관련 설정도 사용자가 활동하지 않더라도 감염된 컴퓨터를 계속 실행하기 위해 유사하게 남용될 수 있습니다.
일부 맬웨어는 시스템 재부팅 후에도 살아남을 수 없다는 사실을 알고 있는 공격자는 시스템 종료 또는 재부팅을 요청하는 데 사용되는 파일을 완전히 삭제할 수 있습니다.
완화책
심사
정기적으로 시스템을 검사하여 악의적인 활동을 나타낼 수 있는 비정상적이거나 예상치 못한 전원 설정이 있는지 확인하세요.
발견
명령
- 명령 실행
시스템의 전원 설정을 조작하는 데 관련된 명령과 인수를 모니터링하고 검사합니다.
파일- 파일 수정
시스템의 전원 설정과 관련된 구성 파일에 대한 예상치 못한 변경 사항을 모니터링합니다.
OS 부팅 전
적대자는 Pre-OS 부팅 메커니즘을 남용하여 시스템에 지속성을 구축할 수 있습니다. 컴퓨터 부팅 프로세스 동안 펌웨어와 다양한 시작 서비스가 운영 체제보다 먼저 로드됩니다. 이러한 프로그램은 운영 체제가 제어권을 잡기 전에 실행 흐름을 제어합니다.
공격자는 BIOS(기본 입출력 시스템) 및 UEFI(통합 확장 가능 펌웨어 인터페이스)와 같은 부팅 드라이버나 펌웨어의 데이터를 덮어써서 운영 체제 아래 계층의 시스템에 지속시킬 수 있습니다. 이는 특히 감지하기 어려울 수 있는데, 이 수준의 맬웨어는 호스트 소프트웨어 기반 방어에서 감지되지 않기 때문입니다.
완화책
심사
잠재적인 취약점을 파악하기 위해 시스템, 권한, 안전하지 않은 소프트웨어, 안전하지 않은 구성 등에 대한 감사나 검사를 수행합니다.
부팅 무결성
신뢰할 수 있는 플랫폼 모듈 기술과 보안 또는 신뢰할 수 있는 부팅 프로세스를 사용하여 시스템 무결성이 손상되는 것을 방지합니다. 기존 BIOS 또는 EFI의 무결성을 확인하여 수정에 취약한지 확인합니다.
네트워크를 통한 리소스 액세스 제한
파일 공유, 시스템에 대한 원격 액세스, 불필요한 서비스에 대한 액세스를 차단합니다. 액세스를 제한하는 메커니즘에는 네트워크 집중기, RDP 게이트웨이 등을 사용하는 것이 포함될 수 있습니다.
특권 계정 관리
이러한 작업을 수행하는 데 필요한 권한 있는 계정에 대한 적대적 액세스를 방지하기 위해 적절한 권한이 있는지 확인하십시오.
소프트웨어 업데이트
필요에 따라 BIOS와 EFI에 패치를 적용하세요.
발견
명령
- 명령 실행
콘솔이나 실행 중인 메모리의 일부로 명령 기록에서 실행된 명령과 인수를 모니터링하여 승인되지 않았거나 의심스러운 명령이 장치 구성을 수정하는 데 사용되었는지 확인합니다.
드라이브
- 드라이브 수정
의심스러운 활동과 추가 분석에 대한 지표를 위해 MBR 및 VBR의 변경 사항을 모니터링합니다. MBR 및 VBR의 스냅샷을 찍고 알려진 양호한 샘플과 비교합니다.
- 드라이브 메타데이터
디스크 검사, 포렌식 유틸리티 및 장치 드라이버의 데이터(예: 프로세스 및 API 호출)는 심층적인 조사가 필요한 이상 현상을 드러낼 수 있습니다.
펌웨어
- 펌웨어 수정
악의적인 목적으로 조작될 수 있는 사전 OS 부팅 메커니즘에서 변경된 사항을 모니터링합니다. 부트 레코드와 펌웨어의 스냅샷을 찍고 알려진 양호한 이미지와 비교합니다. 부트 레코드, BIOS 및 EFI에 대한 변경 사항을 기록합니다.
네트워크 트래픽
- 네트워크 연결 생성
새로 구성된 네트워크 장치 구성 및 시스템 이미지를 알려진 양호한 버전과 비교하여 시스템 부팅, 시작 구성 또는 실행 중인 OS에 대한 무단 변경 사항을 발견합니다. 동일한 프로세스는 런타임 메모리를 비교하여 수행할 수 있지만 이는 사소한 일이 아니며 공급업체의 도움이 필요할 수 있습니다.
프로세스
- Os API실행
시스템에서 지속성을 확립하는 방법으로 Pre-OS 부팅 메커니즘을 남용할 수 있는 API 호출을 모니터링합니다. 디스크 검사, 포렌식 유틸리티 및 장치 드라이버의 데이터(예: API 호출)는 심층 조사가 필요한 이상을 드러낼 수 있습니다.
예약된 작업/작업
적대자는 작업 스케줄링 기능을 남용하여 악성 코드의 초기 또는 반복 실행을 용이하게 할 수 있습니다. 모든 주요 운영 체제에는 프로그램이나 스크립트를 지정된 날짜와 시간에 실행되도록 스케줄링하는 유틸리티가 있습니다. 적절한 인증이 충족되는 경우(예: RPC 및 Windows 환경에서의 파일 및 프린터 공유) 원격 시스템에서도 작업을 스케줄링할 수 있습니다. 원격 시스템에서 작업을 스케줄링하려면 일반적으로 원격 시스템의 관리자 또는 기타 권한이 있는 그룹의 멤버여야 할 수 있습니다.
공격자는 작업 스케줄링을 사용하여 시스템 시작 시 또는 지속성을 위해 예약된 기준으로 프로그램을 실행할 수 있습니다. 이러한 메커니즘은 지정된 계정(예: 권한이 상승된 계정)의 컨텍스트에서 프로세스를 실행하는 데에도 남용될 수 있습니다. System Binary Proxy Execution 과 유사하게 공격자는 신뢰할 수 있는 시스템 프로세스에서 일회성 실행을 잠재적으로 위장하기 위해 작업 스케줄링을 남용하기도 합니다.
절차
DEADEYE- 예약된 작업 \Microsoft\Windows\PLA\Server Manager Performance Monitor, \Microsoft\Windows\Ras\ManagerMobility, \Microsoft\Windows\WDI\SrvSetupResults 및 \Microsoft\Windows\WDI\USOShared를 사용하여 지속성을 확립했습니다.
지구 루스카 - 지속성을 위해 명령을 사용했습니다:
Lokibot의 두 번째 단계 - DLL은 "timeSetEvent"를 사용하여 타이머를 설정하고 다음 실행을 예약합니다.
Remsec - 새로운 스케줄러 작업을 생성하여 모듈 중 하나의 실행을 예약합니다.
StrifeWater - 지속성을 위해 예약된 작업을 생성했습니다: Mozilla\Firefox Default Browser Agent 409046Z0FF4A39CB.
완화책
심사
PowerSploit 프레임워크와 같은 툴킷에는 예약된 작업의 권한 취약점을 탐색하여 권한을 확대하는 데 사용할 수 있는 PowerUp 모듈이 포함되어 있습니다.
운영 체제 구성
예약된 작업에 대한 설정을 구성하여 작업을 SYSTEM으로 실행하는 대신 인증된 계정의 컨텍스트에서 실행하도록 강제합니다. 연관된 레지스트리 키는 .에 있습니다 HKLM\SYSTEM\CurrentControlSet\Control\Lsa\SubmitControl. 설정은 GPO를 통해 구성할 수 있습니다. 컴퓨터 구성 > [정책] > Windows 설정 > 보안 설정 > 로컬 정책 > 보안 옵션: 도메인 컨트롤러: 서버 운영자가 작업을 예약하도록 허용, 사용 안 함으로 설정.
특권 계정 관리
스케줄링 우선 순위 증가 옵션을 구성하여 관리자 그룹에게만 우선 순위 프로세스를 스케줄링할 권한을 허용합니다. 이는 GPO를 통해 구성할 수 있습니다. 컴퓨터 구성 > [정책] > Windows 설정 > 보안 설정 > 로컬 정책 > 사용자 권한 할당: 스케줄링 우선 순위 증가.
파일 및 디렉토리 권한 제한
사용자나 권한이 있는 계정에 국한되지 않는 디렉토리 및 파일 권한을 설정하여 액세스를 제한합니다.
사용자 계정 관리
사용자 계정의 권한을 제한하고 권한 상승 벡터를 해결하여 권한이 있는 관리자만 원격 시스템에서 예약된 작업을 생성할 수 있도록 합니다.
발견
명령
- 명령 실행
악성 코드의 초기 또는 반복 실행을 용이하게 하기 위해 작업 예약 기능을 악용할 수 있는 실행된 명령 및 인수를 모니터링합니다.
분석 1 - 특이한 매개변수로 실행되는 작업 일정 명령을 찾습니다.
index=security (sourcetype="WinEventLog:Security" OR sourcetype="linux_secure" OR sourcetype="macos_secure" OR sourcetype="container_logs")| eval CommandLine = coalesce(CommandLine, process)| where (sourcetype="WinEventLog:Security" AND EventCode IN (4697, 4702, 4698)) OR (sourcetype="linux_secure" AND CommandLine LIKE "%cron%" OR CommandLine LIKE "%at%") OR (sourcetype="macos_secure" AND CommandLine LIKE "%launchctl%" OR CommandLine LIKE "%cron%") OR (sourcetype="container_logs" AND (CommandLine LIKE "%cron%" OR CommandLine LIKE "%at%"))| where (sourcetype="WinEventLog:Security" AND (CommandLine LIKE "%/create%" OR CommandLine LIKE "%/delete%" OR CommandLine LIKE "%/change%")) OR (sourcetype="linux_secure" AND (CommandLine LIKE "%-f%" OR CommandLine LIKE "%-m%" OR CommandLine LIKE "%--env%")) OR (sourcetype="macos_secure" AND (CommandLine LIKE "%/Library/LaunchDaemons%" OR CommandLine LIKE "%/Library/LaunchAgents%" OR CommandLine LIKE "%/System/Library/LaunchDaemons%" OR CommandLine LIKE "%/System/Library/LaunchAgents%")) OR (sourcetype="container_logs" AND (CommandLine LIKE "%-f%" OR CommandLine LIKE "%--schedule%" OR CommandLine LIKE "%--env%"))
컨테이너
- 컨테이너 생성
악성 코드의 초기 또는 반복 실행을 용이하게 하기 위해 작업 일정 기능을 남용할 수 있는 새로 구성된 컨테이너를 모니터링합니다.
분석 1 - 특이한 매개변수를 사용하는 새로운 컨테이너 생성 이벤트를 찾습니다.
index=container_logs sourcetype="docker_events" OR sourcetype="kubernetes_events"| eval event_action=coalesce(action, status)| where (event_action="create" OR event_action="start")| search event_type="container"| search (parameters="--privileged" OR parameters="--cap-add=" OR parameters="--volume=" OR parameters="--network=host" OR parameters="--device")
파일
- 파일 생성
악성 코드의 초기 또는 반복 실행을 용이하게 하기 위해 작업 스케줄링 기능을 남용할 수 있는 새로 구성된 파일을 모니터링합니다.
분석 1 - 특이한 매개변수가 있는 새로운 작업 파일을 찾습니다.
index=security_logs OR index=system_logs(sourcetype="docker_events" OR sourcetype="kubernetes_events" OR sourcetype="wineventlog:security" OR sourcetype="linux_secure" OR sourcetype="syslog" OR sourcetype="file_monitoring")| eval platform=case( sourcetype=="docker_events" OR sourcetype=="kubernetes_events", "Containers", sourcetype=="wineventlog:security", "Windows", sourcetype=="linux_secure" OR sourcetype=="syslog", "Linux", sourcetype=="mac_os_events", "macOS")| search ( (platform="Containers" AND (event_type="file_create" AND (file_path="/etc/cron.d/" OR file_path="/etc/systemd/system/"))) OR (platform="Windows" AND EventCode=4663 AND (ObjectName="C:\Windows\System32\Tasks\" OR ObjectName="C:\Windows\Tasks\")) OR (platform="Linux" AND (file_path="/etc/cron.d/" OR file_path="/etc/systemd/system/")) OR (platform="macOS" AND (file_path="/Library/LaunchDaemons/" OR file_path="/Library/LaunchAgents/")))
- 파일 수정
악성 코드의 초기 또는 반복 실행을 용이하게 하기 위해 작업 일정 기능을 남용할 수 있는 파일의 변경 사항을 모니터링합니다.
분석 1 - 특이한 매개변수로 인한 작업 파일 수정 사항을 찾아보세요.
index=security_logs OR index=system_logs(sourcetype="docker_events" OR sourcetype="kubernetes_events" OR sourcetype="wineventlog:security" OR sourcetype="linux_secure" OR sourcetype="syslog" OR sourcetype="file_monitoring")| eval platform=case( sourcetype=="docker_events" OR sourcetype=="kubernetes_events", "Containers", sourcetype=="wineventlog:security", "Windows", sourcetype=="linux_secure" OR sourcetype=="syslog", "Linux", sourcetype=="mac_os_events", "macOS")| search ( (platform="Containers" AND (event_type="file_modify" AND (file_path="/etc/cron.d/" OR file_path="/etc/systemd/system/" OR file_path="/etc/crontab"))) OR (platform="Windows" AND EventCode=4663 AND (ObjectName="C:\Windows\System32\Tasks\" OR ObjectName="C:\Windows\Tasks\")) OR (platform="Linux" AND (file_path="/etc/cron.d/" OR file_path="/etc/systemd/system/" OR file_path="/etc/crontab")) OR (platform="macOS" AND (file_path="/Library/LaunchDaemons/" OR file_path="/Library/LaunchAgents/")))
프로세스
- 프로세스 생성
악성 코드의 초기 또는 반복 실행을 용이하게 하기 위해 작업 스케줄링 기능을 남용할 수 있는 새로 실행되는 프로세스를 모니터링합니다.
참고: 관련 이벤트 및 소스 창은 다음과 같습니다.
- Sysmon 이벤트 ID 1: 프로세스 생성(특히 schtasks.exe, at.exe, Taskeng.exe, crontab 등)
- Windows 이벤트 로그 이벤트 코드 4688: 작업 일정과 관련이 있을 수 있는 프로세스 생성.
- Windows 작업 스케줄러 로그: 작업 생성, 수정 또는 삭제.
리눅스/macOS:
- Auditd 로그: cron 작업 생성 또는 수정을 모니터링합니다.
- Syslog: Cron 작업이나 예약된 작업과 관련된 로그입니다.
- 파일 무결성 모니터링(FIM): /etc/cron , /var/spool/cron/ 또는 사용자별 cron 작업 에 대한 변경 사항 .
컨테이너:- 컨테이너 로그: 컨테이너 환경 내에서 예약된 작업이나 크론 작업을 감지합니다.
분석 1 - 특이한 매개변수를 사용한 작업 실행을 찾습니다.
(sourcetype="WinEventLog:Microsoft-Windows-Sysmon/Operational" OR sourcetype="WinEventLog:Security" OR sourcetype="linux_auditd" OR sourcetype="syslog") | where Image IN ("schtasks.exe", "at.exe", "Taskeng.exe", "cron", "crontab", "systemd-timers")
예약된 작업
- 예약된 작업 생성
악성 코드의 초기 또는 반복 실행을 용이하게 하기 위해 작업 스케줄링 기능을 남용할 수 있는 새로 구성된 예약된 작업을 모니터링합니다.
Windows 시스템에서 보안 이벤트 ID 4698(예약된 작업이 생성됨)은 새로 생성된 예약된 작업에 대한 정보를 제공합니다. 여기에는 실행될 명령을 포함하여 예약된 작업에 대한 주요 정보를 캡처하는 XML 블롭이 포함된 TaskContent 필드가 포함됩니다.
분석 1 - 예약된 작업 실행
source="*WinEventLog:Security" EventCode="4698" | where NOT (TaskName IN ("\Microsoft\Windows\UpdateOrchestrator\Reboot", "\Microsoft\Windows\Defrag\ScheduledDefrag"))| search TaskContent="powershell.exe" OR TaskContent="cmd.exe".
서버 소프트웨어 구성 요소
적대자는 서버의 합법적인 확장 가능한 개발 기능을 남용하여 시스템에 대한 지속적인 액세스를 확립할 수 있습니다. 엔터프라이즈 서버 애플리케이션에는 개발자가 소프트웨어나 스크립트를 작성하여 설치하여 주 애플리케이션의 기능을 확장할 수 있는 기능이 포함될 수 있습니다. 적대자는 악성 구성 요소를 설치하여 서버 애플리케이션을 확장하고 남용할 수 있습니다.
완화책
심사
적대자가 지속성을 위해 표적으로 삼을 수 있는 중요 서비스의 구성 요소 소프트웨어를 정기적으로 점검하여 시스템 무결성을 검증하고 예상치 못한 변경이 있었는지 파악합니다.
코드 서명
모든 애플리케이션 구성 요소 바이너리가 올바른 애플리케이션 개발자에 의해 서명되었는지 확인하세요.
기능 또는 프로그램 비활성화 및 제거
가능하다면 적대자의 남용을 방지하기 위해 서버에서 소프트웨어 구성 요소를 비활성화하는 것을 고려하십시오.
특권 계정 관리
이러한 서비스에 구성 요소 소프트웨어를 추가할 수 있는 권한이 있는 관리자 계정을 일상적인 작업에 사용하도록 허용하지 마세요. 그렇게 하지 않으면 권한이 없는 시스템에서 잠재적인 적대자에게 해당 계정이 노출될 수 있습니다.
레지스트리 권한 제한
레지스트리의 서비스 및 기타 중요 서버 매개변수에 대한 수정을 구성하고 차단하려면 그룹 정책을 사용하는 것을 고려하세요.
사용자 계정 관리
사용자 계정의 권한을 제한하여 최소 권한 원칙을 적용하여 권한이 있는 계정만이 서버 소프트웨어 구성 요소를 수정 및/또는 추가할 수 있도록 합니다.
발견
신청로그
- 애플리케이션 로그 내용
서버의 합법적인 확장 가능한 개발 기능을 남용하여 시스템에 대한 지속적인 액세스를 설정할 수 있는 타사 애플리케이션 로깅, 메시징 및/또는 기타 아티팩트를 모니터링합니다. 애플리케이션 소프트웨어 구성 요소의 의심스러운 설치를 나타낼 수 있는 비정상적인 동작에 대한 애플리케이션 로그를 모니터링하는 것을 고려합니다. 서버에 대한 인증 시도와 서버 및 내부 네트워크와의 비정상적인 트래픽 패턴을 로깅합니다.
파일
- 파일 생성
새로운 애플리케이션 소프트웨어 구성 요소를 설치할 때 관련된 파일 위치(예: 애플리케이션이 일반적으로 이러한 확장 가능 구성 요소를 로드하는 경로)를 모니터링하는 것을 고려하세요.
- 파일 수정
서버의 합법적인 확장 가능 개발 기능을 악용하여 시스템에 지속적으로 접근하기 위해 파일에 적용된 변경 사항을 모니터링합니다.
네트워크 트래픽
- 네트워크 트래픽 콘텐츠
프로토콜과 관련된 트래픽 패턴 및 패킷 검사를 모니터링하고 분석하여 암호화된 트래픽에 대한 SSL/TLS 검사를 활용하고, 예상 프로토콜 표준 및 트래픽 흐름(예: 확립된 흐름에 속하지 않는 외부 패킷, 무의미하거나 비정상적인 트래픽 패턴, 비정상적인 구문 또는 구조)을 따르지 않는 프로토콜을 모니터링합니다. 프로세스 모니터링 및 명령줄과의 상관 관계를 고려하여 트래픽 패턴과 관련된 비정상적인 프로세스 실행 및 명령줄 인수(예: 각 프로토콜에 대해 정상적으로 연결을 시작하지 않는 파일 사용 시 이상 모니터링)를 감지합니다.
- 네트워크 트래픽 흐름
네트워크 데이터에서 흔하지 않은 데이터 흐름을 모니터링합니다. 일반적으로 네트워크 통신이 없거나 이전에 본 적이 없는 네트워크를 활용하는 프로세스는 의심스럽습니다.
프로세스
- 프러세스 생성
프로세스 모니터링은 cmd.exe를 실행하거나 파일에 액세스하는 등 의심스러운 동작을 수행하는 서버 구성 요소를 감지하는 데 사용될 수 있습니다.
교통 신호
적대자는 트래픽 신호를 사용하여 지속성 또는 명령 및 제어에 사용되는 열린 포트나 기타 악성 기능을 숨길 수 있습니다.트래픽 신호는 닫힌 포트를 열거나 악성 작업을 실행하는 것과 같은 특수한 응답을 트리거하기 위해 시스템으로 보내야 하는 마법의 값이나 시퀀스를 사용하는 것을 포함합니다.이것은 적대자가 명령 및 제어에 사용할 수 있는 포트가 열리기 전에 특정 특성을 가진 일련의 패킷을 보내는 형태를 취할 수 있습니다.일반적으로 이러한 일련의 패킷은 미리 정의된 닫힌 포트 시퀀스(예: 포트 노킹 )에 대한 연결 시도로 구성되지만 비정상적인 플래그, 특정 문자열 또는 기타 고유한 특성이 포함될 수 있습니다.시퀀스가 완료된 후 호스트 기반 방화벽으로 포트를 열 수 있지만 사용자 지정 소프트웨어로 구현할 수도 있습니다.
공격자는 이미 열려 있는 포트와 통신할 수도 있지만, 해당 포트를 수신하는 서비스는 적절한 매직 값이 전달된 경우에만 명령에 응답하거나 다른 악성 기능을 트리거합니다.
통신을 트리거하기 위한 신호 패킷 관찰은 다양한 방법을 통해 수행될 수 있습니다. 원래 Cd00r에서 구현한 한 가지 방법 은 libpcap 라이브러리를 사용하여 문제의 패킷을 스니핑하는 것입니다. 또 다른 방법은 원시 소켓을 활용하여 맬웨어가 다른 프로그램에서 사용할 수 있도록 이미 열려 있는 포트를 사용할 수 있도록 합니다.
네트워크 장치에서 적대자는 텔넷과 같이 장치에서 제공하는 표준 서비스에 대한 네트워크 장치 인증을 활성화하기 위해 정교하게 만들어진 패킷을 사용할 수 있습니다. 이러한 신호는 텔넷과 같은 닫힌 서비스 포트를 열거나 장치의 맬웨어 임플란트의 모듈 수정을 트리거하여 악성 기능을 추가, 제거 또는 변경하는 데 사용될 수도 있습니다. 적대자는 정교하게 만들어진 패킷을 사용하여 하나 이상의(열려 있거나 닫힌) 포트에 연결을 시도할 수 있지만, 목표와 목적을 달성하기 위해 동일한 포트에서 라우터 인터페이스, 브로드캐스트 및 네트워크 주소 IP에 연결을 시도할 수도 있습니다. 임베디드 장치에서 이 트래픽 신호를 활성화하려면 적대자는 먼저 아키텍처의 모놀리식 특성으로 인해 패치 시스템 이미지를 달성하고 활용해야 합니다 .
적대자는 Wake-on-LAN 기능을 사용하여 전원이 꺼진 시스템을 켤 수도 있습니다. Wake-on-LAN은 전원이 꺼진 시스템에 마법 패킷을 보내 전원을 켜거나 깨울 수 있는 하드웨어 기능입니다. 시스템에 전원이 켜지면 측면 이동의 대상이 될 수 있습니다.
절차
BUSHWALK - Ivanti Connect Secure VPN의 Perl 모듈인 DSUserAgentCap.pm을 수정할 수 있으며, 들어오는 HTTP 요청의 사용자 에이전트 값에 따라 활성화하거나 비활성화할 수 있습니다.
Chaos - 특수 문자열이 포함된 패킷을 수신하면 역방향 셸을 트리거하고 모든 포트로 전송됩니다.
Cutting Edge 동안 위협 행위자는 소켓을 통해 PITSOCK 백도어가 통신할 수 있도록 48바이트의 마법 같은 시퀀스를 /tmp/clientsDownload.sock에 보냈습니다.
Kobalos - 특정 소스 포트에서 합법적인 서비스에 대한 들어오는 TCP 연결에 의해 트리거됩니다.
Pandora - 들어오는 HTTP 트래픽에 토큰이 포함되어 있는지 식별할 수 있으며, 그렇다면 트래픽을 가로채서 수신된 명령을 처리합니다.
Penquin - 특정 조건과 일치하는 TCP 또는 UDP 패킷의 "매직 패킷" 값을 스니핑한 후에만 C2에 연결합니다.
Ryuk - 측면 이동을 위해 꺼진 시스템에 전원을 공급하기 위해 Wake-on-Lan을 사용했습니다.
SYNful Knock - 특수 패킷을 통해 기능을 변경하기 위한 지침을 보낼 수 있습니다. 이러한 메시지에는 새로운 기능에 대한 코드가 포함될 수 있습니다.
Umbreon - 특수 패킷을 수신하면 역방향 셸을 제공하는 백도어 Espeon을 사용하여 추가 액세스를 제공합니다.
Uroburos - 3방향 TCP 핸드셰이크에서 첫 번째 클라이언트-서버 패킷을 가로채서 패킷에 특정 Uroburos 임플란트에 대한 올바른 고유 값이 포함되어 있는지 확인할 수 있습니다. 값이 일치하지 않으면 패킷과 나머지 TCP 세션은 합법적인 수신 애플리케이션으로 전달됩니다.
Linux용 Winnti - 작업을 실행하기 전에 특정 마법 값을 식별할 수 있는 수동 리스너를 보조 명령 및 제어(C2) 메커니즘으로 사용했습니다.
ZIPLINE - 가로채는 네트워크 트래픽에서 특정 문자열을 식별하여 SSH-2.0-OpenSSH_0.3xx 명령 기능을 트리거할 수 있습니다.
완화책
기능 도는 프로그램 비활성화 또는 제거
환경에 따라 필요하지 않으면 Wake-on-LAN을 비활성화합니다.
네트워크 트래픽 필터링
이 기술의 일부 변형은 구현 방법에 따라 상태 저장 방화벽을 사용하여 완화할 수 있습니다.
발견
네트워크 트래픽
- 네트워크 연결 생성
신뢰할 수 없는 호스트에서 보내거나 받는 새로 구성된 네트워크 연결을 모니터링합니다.
- 네트워크 트래픽 콘텐츠
암호화된 트래픽에 대한 SSL/TLS 검사를 활용하여 예상 프로토콜 표준 및 트래픽 흐름(예: 설정된 흐름에 속하지 않는 외부 패킷, 프로토콜 포트 불일치, 비정상적인 구문 또는 구조)을 따르지 않는 애플리케이션 계층 프로토콜을 감지하기 위해 네트워크 패킷 내용을 모니터링하고 분석합니다. Wake-on-LAN 매직 패킷에 대한 패킷 검사를 고려합니다. 이 패킷은 FF대상 시스템의 IEEE 주소가 16번 반복된 6바이트로 구성됩니다. 패킷의 페이로드에서 이 문자열을 어디에서나 보면 Wake-on-LAN 시도를 나타낼 수 있습니다.
- 네트워크 트래픽 흐름
예상 프로토콜 표준 및 트래픽 흐름(예: 확립된 흐름에 속하지 않는 외부 패킷 또는 무의미하거나 비정상적인 트래픽 패턴)을 따르지 않는 프로토콜과 관련된 네트워크 흐름을 모니터링하고 분석합니다. 신뢰할 수 없는 호스트, 예상치 못한 하드웨어 장치 또는 기타 흔하지 않은 데이터 흐름에서 보내거나 받는 새로 구성된 네트워크 연결을 분석하는 것을 고려합니다.
프로세스
- 프로세스 생성
원시 소켓을 사용하여 실행 중인 프로세스를 식별합니다. 나열된 프로세스에 열린 원시 소켓이 필요하고 엔터프라이즈 정책에 따라야 합니다.
유효한 계정
공격자는 기존 계정의 자격 증명을 획득하여 초기 액세스, 지속성, 권한 상승 또는 방어 회피를 얻는 수단으로 남용할 수 있습니다. 손상된 자격 증명은 네트워크 내 시스템의 다양한 리소스에 배치된 액세스 제어를 우회하는 데 사용될 수 있으며 VPN, Outlook Web Access, 네트워크 장치 및 원격 데스크톱과 같은 원격 시스템 및 외부에서 사용 가능한 서비스에 대한 지속적인 액세스에도 사용될 수 있습니다. 손상된 자격 증명은 또한 공격자에게 특정 시스템에 대한 권한을 증가시키거나 네트워크의 제한된 영역에 대한 액세스를 부여할 수 있습니다. 공격자는 해당 자격 증명이 제공하는 합법적인 액세스와 함께 맬웨어 또는 도구를 사용하지 않기로 선택하여 존재를 감지하기 어렵게 만들 수 있습니다.
어떤 경우에는 적대자가 비활성 계정을 남용할 수 있습니다. 예를 들어, 더 이상 조직에 속하지 않은 개인이 소유한 계정이 있습니다. 이러한 계정을 사용하면 원래 계정 사용자가 해당 계정에서 발생하는 비정상적인 활동을 식별할 수 없으므로 적대자가 감지를 피할 수 있습니다.
시스템 네트워크 전반에서 로컬, 도메인 및 클라우드 계정에 대한 권한이 중복되는 것은 공격자가 계정 및 시스템 전반을 피벗하여 엔터프라이즈 내에 설정된 액세스 제어를 우회하여 높은 수준의 액세스(예: 도메인 또는 엔터프라이즈 관리자)에 도달할 수 있기 때문에 문제가 됩니다.
절차
2015년 우크라이나 전력 공격 동안 Sandworm Team은 기업 네트워크의 유효한 계정을 사용하여 권한을 확대하고 측면 이동을 수행하며 기업 네트워크 내에서 지속성을 확립했습니다.
Akira - VPN 자격 증명과 같은 유효한 계정 정보를 사용하여 피해자 네트워크에 원격으로 액세스합니다.
APT18 공격자는 합법적인 자격 증명을 활용하여 외부 원격 서비스에 로그인합니다.APT28 - 합법적 자격 증명을 사용하여 초기 액세스를 얻고, 액세스를 유지하며, 피해자 네트워크에서 데이터를 빼냈습니다. 이 그룹은 스피어피싱 이메일을 통해 훔친 자격 증명을 특별히 사용하여 DCCC 네트워크에 로그인했습니다. 또한 기본 제조업체의 암호를 활용하여 IoT 장치를 통해 기업 네트워크에 초기 액세스를 얻었습니다.
APT29 - 손상된 계정을 사용하여 조직의 VPN 인프라에 액세스했습니다.
APT33 - 초기 액세스 및 권한 확대를 위해 유효한 계정을 사용했습니다.
APT39 - 도난된 자격 증명을 사용하여 Outlook Web Access(OWA)를 손상시켰습니다.
APT41 - 손상된 자격 증명을 사용하여 다른 시스템에 로그온했습니다.
Axiom - 이전에 손상된 관리 계정을 사용하여 권한을 확대했습니다.
C0032 캠페인 동안 TEMP.Veles는 손상된 VPN 계정을 사용했습니다.
Carbanak의 배후에는 은행 직원의 합법적인 자격 증명이 사용되어 수백만 달러를 송금하는 작업이 수행되었습니다.
Chimera - 예약된 작업을 통해 지속성을 유지하기 위해 유효한 계정을 사용했습다.
Cinnamon Tempest - 손상된 사용자 계정을 사용하여 페이로드를 배포하고 시스템 서비스를 생성했습니다.
Dragonfly - 사용자 자격 증명을 손상시키고 작업에 유효한 계정을 사용했습니다.
Dtrack - 하드코딩된 자격 증명을 사용하여 네트워크 공유에 액세스했습니다.
Duqu - 합법적인 자격 증명을 얻은 공유에 자신을 복사하여 측면으로 확산하도록 지시할 수 있습니다. 그런 다음 손상된 자격 증명을 사용하여 원격 컴퓨터에서 맬웨어를 실행하는 작업을 예약합니다.
FIN10 - 단일 요소로만 보호되는 VPN을 사용하여 원격으로 피해자 네트워크에 연결하기 위해 도난된 자격 증명을 사용했습니다.
FIN4 - 합법적인 자격 증명을 사용하여 이메일 통신을 하이재킹했습니다.
FIN5 - 합법적인 VPN, RDP, Citrix 또는 VNC 자격 증명을 사용하여 피해자 환경에 대한 액세스를 유지했습니다.
FIN6 - 피해자 네트워크에서 측면으로 이동하기 위해 다양한 시스템에서 훔친 자격 증명을 사용하여 사용자 이름과 비밀번호 해시를 수집했습니다.
FIN7 - 측면 이동을 위한 유효한 관리 자격 증명을 수집했습니다.
FIN8 - 지속성과 측면 이동에 대해 유효한 계정을 사용했습니다.
Fox Kitten - 측면 이동 중 다양한 서비스에서 유효한 자격 증명을 사용했습니다.
GALLIUM - 유효한 계정을 활용하여 피해자 네트워크에 대한 액세스를 유지했습니다.
HomeLand Justice 동안 위협 행위자는 손상된 Exchange 계정을 사용하여 사서함을 검색하고 새로운 Exchange 계정을 생성했습니다.
INC Ransom - 손상된 유효 계정을 사용하여 피해자 환경에 액세스했습니다.
Indrik Spider - 초기 액세스 및 측면 이동에 유효한 계정을 사용했습니다. 또한 VPN 인프라를 통해 피해자 환경에 대한 액세스를 유지했습니다.
Industroyer - 제공된 사용자 자격 증명을 사용하여 프로세스를 실행하고 서비스를 중지할 수 있습니다.
Ke3chang - 신임장 덤퍼나 도용자를 이용해 합법적인 신임장을 얻었고 이를 이용해 피해자 계정에 접근했습니다.
Kinsing - 유효한 SSH 자격 증명을 사용하여 원격 호스트에 액세스했습니다.
Lazarus Group - 관리자 자격 증명을 사용하여 제한된 네트워크 세그먼트에 액세스했습니다.
Leviathan - 초기 액세스를 위해 유효한 계정을 얻었습니다.
Linux Rabbit - 무차별 대입 공격을 통해 유효한 SSH 계정을 획득합니다.
menuPass - 두 환경 간 이동을 위해 관리 서비스 공급자와 클라이언트 간에 공유되는 유효한 계정을 사용했습니다.
Night Dragon 동안 위협 행위자는 손상된 VPN 계정을 사용하여 피해자 시스템에 액세스했습니다.
OilRig - 손상된 자격 증명을 사용하여 피해자 네트워크의 다른 시스템에 액세스했습니다.
Operation Wocao 동안 위협 행위자는 유효한 VPN 자격 증명을 사용하여 초기 액세스 권한을 얻었습니다.
PittyTiger - 작업 중에 합법적인 자격 증명을 얻으려고 시도합니다.
Play - 유효한 VPN 계정을 사용하여 초기 액세스를 달성했습니다.
POLONIUM - 유효한 손상된 자격 증명을 사용하여 피해자 환경에 액세스했습니다.
Sandworm Team - 공격 이전에 획득한 합법적 자격 증명을 사용했습니다.
일부 SeaDuke 샘플에는 손상된 자격 증명을 사용하여 Microsoft Exchange 서버에서 이메일을 추출하는 모듈이 있습니다.
Silence - 손상된 자격 증명을 사용하여 다른 시스템에 로그온하고 권한을 확대했습니다.
Silent Librarian - 손상된 자격 증명을 사용하여 온라인 계정에 대한 무단 액세스를 얻었습니다.
SolarWinds 침해 동안 APT29는 원격 액세스와 측면 이동을 위해 다양한 침해된 자격 증명을 사용했습니다.
Star Blizzard - 도난한 자격 증명을 사용하여 피해자의 이메일 계정에 로그인했습니다.
Suckfly - 합법적인 계정 소유자인 것처럼 내부 피해자 네트워크를 탐색하기 위해 버린 합법적인 계정 자격 증명을 사용했습니다.
위협 그룹 3390 행위자는 다양한 방법을 사용하여 합법적인 자격 증명을 얻고 이를 사용하여 피해자 네트워크에서 측면 이동을 더욱 심화시킵니다.
Volt Typhoon - 지속성을 위해 주로 유효한 자격 증명을 사용합니다.
Wizard Spider - 도메인 컨트롤러에 액세스하는 목표로 권한이 있는 계정에 대한 유효한 자격 증명을 사용했습니다.
완화책
계정 사용 정책
조건부 액세스 정책을 사용하여 규정을 준수하지 않는 장치나 정의된 조직 IP 범위 외부에서 로그인을 차단합니다.
액티브 드라이브 구성
MFA를 지원하지 않는 레거시 인증을 비활성화하고 대신 최신 인증 프로토콜을 사용하도록 요구합니다.
애플리케이션 개발자 지침
애플리케이션이 민감한 데이터나 자격 증명을 안전하지 않은 방식으로 저장하지 않도록 합니다(예: 코드의 일반 텍스트 자격 증명, 저장소에 게시된 자격 증명 또는 퍼블릭 클라우드 스토리지의 자격 증명)
다중 인증 요소
기본, 로컬, 도메인 및 클라우드 계정을 포함한 모든 계정 유형에 다중 요소 인증(MFA)을 구현하여 자격 증명이 손상된 경우에도 무단 액세스를 방지합니다. MFA는 비밀번호 이상의 여러 가지 검증 양식을 요구하여 중요한 보안 계층을 제공합니다. 이 조치는 적대자가 유효한 계정을 남용하여 초기 액세스 권한을 얻거나, 권한을 확대하거나, 지속성을 유지하거나, 네트워크 내의 방어를 회피할 위험을 크게 줄입니다.
비밀번호 정책
기본 사용자 이름 및 암호를 사용하는 애플리케이션과 어플라이언스는 설치 직후, 프로덕션 환경에 배포하기 전에 변경해야 합니다. 가능한 경우 SSH 키를 사용하는 애플리케이션은 주기적으로 업데이트하고 적절히 보호해야 합니다.
정책은 서로 다른 사용자 계정 간에 비밀번호 재사용을 최소화하거나 없애야 하며, 특히 기업 보안 리소스에서 보호되지 않는 개인 계정에 동일한 자격 증명을 사용하는 직원의 경우 더욱 그렇습니다.
특권 계정 관리
특권 계정의 자격 증명을 얻어서 적대자가 광범위한 액세스를 얻을 수 있는 상황을 찾기 위해 정기적으로 도메인 및 로컬 계정과 해당 권한 수준을 감사합니다. 이러한 감사에는 기본 계정이 활성화되었는지 또는 승인되지 않은 새 로컬 계정이 생성되었는지도 포함되어야 합니다. 관리 계층에서 특권 계정 사용을 제한하기 위해 엔터프라이즈 네트워크의 설계 및 관리 모범 사례를 따르세요.
사용자 계정 관리
정기적으로 사용자 계정의 활동을 감사하고 더 이상 필요하지 않은 계정은 비활성화하거나 제거합니다.
사용자 교육
애플리케이션은 다중 요소 인증(MFA)의 한 형태로 로그인을 확인하기 위해 푸시 알림을 보낼 수 있습니다. 사용자에게 유효한 푸시 알림만 수락하고 의심스러운 푸시 알림을 보고하도록 교육합니다.
발견
로그온 세션
- 로그온 세션 생성
기존 계정의 자격 증명을 획득하고 이를 초기 액세스, 지속성, 권한 상승 또는 방어 회피 수단으로 남용할 수 있는 새로 구성된 로그인 동작을 모니터링합니다. 다른 보안 시스템을 로그인 정보와 연관시킵니다(예: 사용자가 활성 로그인 세션이 있지만 건물에 들어오지 않았거나 VPN 액세스 권한이 없음).
-로그온 세션 메타데이터
사용자, 관리자 또는 서비스 계정 등 계정을 공유하는 시스템에서 의심스러운 계정 동작을 찾아보세요. 예: 한 계정이 여러 시스템에 동시에 로그인; 여러 계정이 동일한 컴퓨터에 동시에 로그인; 이상한 시간에 또는 영업 시간 외에 로그인한 계정. 활동은 대화형 로그인 세션에서 발생하거나 특정 계정으로 원격 시스템에서 바이너리를 실행하는 데 사용되는 계정의 프로세스 소유권에서 발생할 수 있습니다.
사용자 계정
- 사용자 계정 인증
기존 계정의 자격 증명을 얻어 초기 액세스, 지속성, 권한 상승 또는 방어 회피 수단으로 악용하려는 사용자의 시도를 모니터링합니다