MITRE ATT&CK

방어 회피

bumsoha []

학대 상승 제어 메커니즘

적대자는 권한 상승을 제어하도록 설계된 메커니즘을 우회하여 더 높은 수준의 권한을 얻을 수 있습니다. 대부분의 최신 시스템에는 사용자가 컴퓨터에서 수행할 수 있는 권한을 제한하도록 설계된 기본 권한 상승 제어 메커니즘이 포함되어 있습니다. 더 높은 위험으로 간주될 수 있는 작업을 수행하려면 특정 사용자에게 권한을 부여해야 합니다. 적대자는 내장된 제어 메커니즘을 활용하여 시스템에서 권한을 상승시키기 위해 여러 가지 방법을 수행할 수 있습니다. 

 

 

절차 

Raspberry Robin -ucmDccwCOMMethod UAC를 우회하고 권한을 상승시키기 위해 Windows AutoElevate 백도어를 남용하는 기술 의 변형을 구현합니다 .

 

완화책

심사

Windows 시스템에서 일반적인 UAC 우회 취약점을 확인하여 위험 태세를 파악하고 필요한 경우 문제를 해결하십시오.

실행 방지

시스템 설정은 합법적인 저장소에서 다운로드되지 않은 애플리케이션이 실행되는 것을 방지할 수 있으며, 이는 이러한 문제 중 일부를 완화하는 데 도움이 될 수 있습니다. 서명되지 않은 애플리케이션이 실행되는 것을 허용하지 않는 것도 일부 위험을 완화할 수 있습니다.

운영 체제 구성

알려진 취약성이나 알려진 셸 이스케이프가 있는 애플리케이션은 애플리케이션이 손상될 경우 잠재적인 피해를 줄이기 위해 setuid 또는 setgid 비트를 설정해서는 안 됩니다. 또한, setuid 또는 setgid 비트가 설정된 프로그램의 수는 시스템 전체에서 최소화해야 합니다. sudo tty_tickets 설정을 활성화하면 tty 세션에서 이러한 누출이 방지됩니다.

특권 계정 관리

시스템의 로컬 관리자 그룹에서 사용자를 제거합니다.

암호를 요구함으로써, 적대자가 터미널에 접근할 수 있더라도, sudoers 파일에서 무엇이든 실행하려면 암호를 알아야 합니다. timestamp_timeout을 0으로 설정하면 사용자는 sudo를 실행할 때마다 암호를 입력해야 합니다.

파일 및 디렉토리 권한 제한

sudoers 파일은 비밀번호가 항상 필요하고 사용자가 더 높은 권한을 가진 사용자로 위험한 프로세스를 생성할 수 없도록 엄격하게 편집해야 합니다.

소프트웨어 업데이트

악용 위험을 완화하기 위해 정기적인 소프트웨어 업데이트를 수행합니다.

사용자 계정 컨트롤

UAC 우회 기술이 존재하지만, 가능하다면 UAC에 대해 가장 높은 적용 수준을 사용하고 DLL 검색 순서 하이재킹과 같은 기술을 사용하여 존재하는 우회 기회를 완화하는 것이 여전히 신중한 일입니다 .

사용자 계정 관리

클라우드 계정의 권한을 제한하여 필요한 역할, 정책 및 권한만 추가로 가정, 생성 또는 가장합니다. Just-in-Time 액세스가 활성화된 경우 권한의 일시적 상승에 대한 수동 승인을 요구하는 것을 고려합니다.

 

 

발견

명령

- 명령 실행

상위 수준의 권한을 얻기 위해 권한 상승을 제어하도록 설계된 메커니즘을 우회할 수 있는 실행된 명령과 인수를 모니터링합니다.

파일

- 파일 메타데이터

setuid 또는 setgid 비트가 설정된 파일에 대한 파일 시스템을 모니터링합니다. Linux에서 auditd는 사용자의 실제 ID와 유효 ID가 다를 때마다 경고할 수 있습니다(sudo를 실행할 때 발생하는 일입니다).

- 파일 수정

Linux에서 auditd는 사용자의 실제 ID와 유효 ID가 다를 때마다 경고할 수 있습니다(sudo를 실행할 때 발생하는 상황). 이 기술은 macOS와 Linux 시스템에서 정상적인 기능을 남용하지만 sudo는 파일의 LOG_INPUT및 LOG_OUTPUT지시문 에 따라 모든 입력 및 출력을 기록할 수 있습니다 /etc/sudoers. /usr/libexec/security_authtrampolineAuthorizationExecuteWithPrivileges가 실행 중임을 나타낼 수 있는 실행을 모니터링하는 것을 고려하세요. MacOS 시스템 로그는 AuthorizationExecuteWithPrivileges가 호출되는 시점을 나타낼 수도 있습니다.

프로세스 

-OS API 실행

프로세스 주입을 나타낼 수 있는 동작에 대한 프로세스 API 호출을 찾습니다 . 실행을 위한 OS API 콜백을 모니터링하는 것도 이 동작을 감지하는 방법이 될 수 있지만 특수 보안 도구가 필요합니다.

- 프로세스 생성

상위 레벨의 권한을 얻기 위해 권한 상승을 제어하도록 설계된 메커니즘을 우회할 수 있는 새로 실행된 프로세스를 모니터링합니다. 사이버 공격자는 Windows 호스트에 진입한 후 SYSTEM 계정으로 자주 에스컬레이션하여 다양한 공격을 보다 효과적으로 수행할 수 있습니다. Meterpreter, Cobalt Strike, Empire와 같은 도구는 자동화된 단계를 수행하여 "시스템 가져오기"를 수행하는데, 이는 System 사용자 계정으로 전환하는 것과 같습니다. 이러한 도구 대부분은 여러 가지 기술을 사용하여 SYSTEM을 얻으려고 시도합니다. 첫 번째 기술에서는 명명된 파이프를 만들고 cmd.exe 인스턴스를 여기에 연결하여 cmd.exe의 보안 컨텍스트인 SYSTEM을 가장할 수 있습니다. 두 번째 기술에서는 악성 DLL이 SYSTEM으로 실행되는 프로세스에 삽입됩니다. 삽입된 DLL은 SYSTEM 토큰을 훔쳐 필요한 곳에 적용하여 권한을 에스컬레이션합니다. 이 분석은 두 가지 기술을 모두 찾습니다.

분석 1 - 시스템 고도 얻기

(source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode="1") OR (source="WinEventLog:Security" EventCode="4688")(ParentImage="C:\Windows\System32\services.exe" Image="C:\Windows\System32\cmd.exe" CommandLine="echo" CommandLine="\pipe*") OR (Image="C:\Windows\System32\rundll32.exe" CommandLine=",a /p:*")

- 프로세스 메타 데이터

실행 중인 프로세스에 대한 컨텍스트 데이터를 모니터링합니다. 여기에는 환경 변수, 이미지 이름, 사용자/소유자 등의 정보가 포함될 수 있으며, 이러한 정보는 상위 수준의 권한을 얻기 위해 권한 상승을 제어하도록 설계된 메커니즘을 우회할 수 있습니다.

사용자 계정

- 사용자 계정 수정

추가 역할, 정책 및 권한을 가정, 생성 또는 가장하기 위한 클라우드 API 호출을 기록합니다. 제공된 모든 정당성이 유효하고 예상된 작업만 수행되었는지 확인하기 위해 적시 액세스 사용을 검토합니다.

윈도우 레지스트리 

- 윈도우 레지스트리 키 수정

사용자가 시스템의 로컬 관리자 그룹에 있는 경우 UAC 우회를 수행하는 방법은 여러 가지가 있으므로 모든 변형에 대한 탐지를 목표로 삼는 것이 어려울 수 있습니다. UAC 우회를 수행하기 전과 후에 수행할 수 있는 프로세스 시작 및 작업에 대한 충분한 정보를 수집하고 완화하는 데 노력을 기울여야 할 것입니다. 일부 UAC 우회 방법은 사용자가 액세스할 수 있는 특정 레지스트리 설정을 수정하는 데 의존합니다. 분석가는 레지스트리 설정에서 승인되지 않은 변경 사항을 모니터링해야 합니다.

 

 

 

액세스 토큰 조작

공격자는 다른 사용자 또는 시스템 보안 컨텍스트에서 작동하도록 액세스 토큰을 수정하여 작업을 수행하고 액세스 제어를 우회할 수 있습니다. Windows는 액세스 토큰을 사용하여 실행 중인 프로세스의 소유권을 확인합니다. 사용자는 액세스 토큰을 조작하여 실행 중인 프로세스가 다른 프로세스의 자식이거나 프로세스를 시작한 사용자가 아닌 다른 사람에게 속한 것처럼 보이게 할 수 있습니다. 이런 일이 발생하면 프로세스는 새 토큰과 연결된 보안 컨텍스트도 사용합니다.

공격자는 내장된 Windows API 함수를 사용하여 기존 프로세스에서 액세스 토큰을 복사할 수 있습니다.이를 토큰 도용이라고 합니다.이 토큰은 기존 프로세스에 적용되거나(예: 토큰 사칭/도난 ) 새 프로세스를 생성하는 데 사용될 수 있습니다(예: 토큰을 사용하여 프로세스 생성 ).공격자는 토큰을 도용하려면 이미 권한이 있는 사용자 컨텍스트(예: 관리자)에 있어야 합니다.그러나 공격자는 일반적으로 토큰 도용을 사용하여 보안 컨텍스트를 관리자 수준에서 SYSTEM 수준으로 높입니다.그런 다음 공격자는 토큰을 사용하여 계정에 원격 시스템에 대한 적절한 권한이 있는 경우 해당 토큰의 계정으로 원격 시스템에 인증할 수 있습니다.

모든 표준 사용자는 명령과 Windows API 함수를 사용하여 runas가장 토큰을 만들 수 있으며 관리자 계정에 대한 액세스가 필요하지 않습니다. 또한 Active Directory 필드와 같이 액세스 토큰을 수정하는 데 사용할 수 있는 다른 메커니즘도 있습니다.

 

절차

AppleSeed - AdjustTokenPrivileges API에 전달하여 시스템 수준 권한을 얻을 수 있습니다.

BlackCat - 액세스 토큰을 수정할 수 있는 기능이 있습니다.

Blue Mockingbird - JuicyPotato를 사용하여 SeImpersonate 토큰 권한을 남용하여 웹 애플리케이션 풀 계정에서 NT Authority\SYSTEM으로 확대했습니다.

C0017 동안 APT41은 로컬 권한 확대를 위해 명명된 파이프를 남용하기 위해 ConfuserEx 난독화된 BADPOTATO 익스플로잇을 사용했습니다.

쿠바 - SeDebugPrivilege와 AdjustTokenPrivileges를 이용해 특권을 높이기 위해 노력해 왔습니다.

Duqu - 특정 시스템 권한이 있는 토큰을 찾기 위해 실행 중인 시스템 프로세스를 조사합니다. 토큰을 찾으면 이를 복사하여 나중에 사용할 수 있도록 저장합니다. 저장된 토큰이 첨부된 새 프로세스를 시작할 수 있으며, 관리자 권한을 얻기 위해 토큰을 훔칠 수도 있습니다.

Empire - PowerSploit를 사용하여 Invoke-TokenManipulation으로 액세스 토큰을 조작할 수 있습니다.

FIN6 - Metasploit의 명명된 파이프를 사용하여 권한을 확대했습니다.

Gelsemium - 토큰 조작을 사용하여 Windows 7 시스템에서 UAC를 우회할 수 있습니다.

HermeticWiper - AdjustTokenPrivileges를 사용하여 디버깅, 백업 생성, 드라이버 로드 및 로컬 시스템 종료에 대한 권한을 부여할 수 있습니다.

Hydraq - 원격 공격자가 토큰 권한을 조정할 수 있는 백도어를 생성합니다.

KillDisk - OpenProcessToken을 호출하여 프로세스의 액세스 토큰을 얻으려고 시도했습니다. 이후 AdjustTokenPrivileges를 사용하여 토큰 권한을 수정하려고 시도합니다.

마팔다 - 권한을 높이는 데 AdjustTokenPrivileges()를 사용할 수 있습니다.

MegaCortex - SeDebugPrivilege를 활성화하고 토큰 권한을 조정할 수 있습니다.

PoshC2 - 토큰을 조작하기 위해 Invoke-TokenManipulation을 사용할 수 있습니다.

PowerSploit의 Invoke-TokenManipulationExfiltration 모듈은 토큰을 조작하는 데 사용할 수 있습니다.

Ryuk - SeDebugPrivilege 토큰 권한을 조정하여 권한을 얻으려고 시도했습니다.

Sliver - 대상 Windows 시스템에서 사용자 토큰을 조작할 수 있는 기능을 가지고 있습니다.

SslMM - 프로세스 권한과 토큰을 조작하는 기능이 포함되어 있습니다.

SUNSPOT - SeDebugPrivilege를 추가하여 보안 토큰을 수정하고 디버깅 권한을 부여했습니다.

 

 

완화책

특권 계정 관리

사용자와 사용자 그룹이 토큰을 만들 수 없도록 권한을 제한합니다. 이 설정은 로컬 시스템 계정에 대해서만 정의해야 합니다. GPO: 컴퓨터 구성 > [정책] > Windows 설정 > 보안 설정 > 로컬 정책 > 사용자 권한 할당: 토큰 개체를 만듭니다. 또한 GPO를 통해 로컬 및 네트워크 서비스에만 프로세스 수준 토큰을 만들 수 있는 사람을 정의합니다. 컴퓨터 구성 > [정책] > Windows 설정 > 보안 설정 > 로컬 정책 > 사용자 권한 할당: 프로세스 수준 토큰을 바꿉니다. 

관리자는 표준 사용자로 로그인해야 하지만 내장된 액세스 토큰 조작 명령을 사용하여 관리자 권한으로 도구를 실행해야 합니다 runas.

사용자 계정 관리

이 기술을 최대한 활용하려면 공격자가 로컬 시스템에서 관리자 수준의 액세스 권한을 이미 가지고 있어야 합니다. 사용자와 계정을 필요한 최소한의 권한으로 제한해야 합니다.

 

 

발견

액티브 디렉토리 

- Active Directory 

다른 사용자 또는 시스템 보안 컨텍스트에서 작업을 수행하고 액세스 제어를 우회하기 위해 액세스 토큰을 수정할 수 있는 AD 설정 변경 사항을 모니터링합니다.

명령

- 명령 실행

명령줄 활동을 감사하여 토큰 조작에 대한 실행된 명령 및 인수를 모니터링합니다. 특히 분석가는 명령 사용을 살펴봐야 합니다 runas. 자세한 명령줄 로깅은 Windows에서 기본적으로 활성화되지 않습니다.

프로세스

- Os API 실행

사용자 네트워크 활동의 신중한 분석, 실행 중인 프로세스의 검사, 다른 엔드포인트 및 네트워크 동작과의 상관 관계를 통해서만 토큰 조작을 위해 페이로드에 의해 로드된 API 호출을 모니터링합니다. 페이로드가 액세스 토큰을 조작하기 위해 이용할 수 있는 Windows API 호출은 많습니다(예: LogonUser, DuplicateTokenEx ImpersonateLoggedOnUser). 자세한 내용은 참조된 Windows API 페이지를 참조하십시오.

- 프로세스 생성

다른 사용자 또는 시스템 보안 컨텍스트에서 작동하여 작업을 수행하고 액세스 제어를 우회하기 위해 액세스 토큰을 수정할 수 있는 실행된 프로세스를 모니터링합니다.

- 프로세스 메타데이터

프로세스 및 스레드 토큰 정보에 대한 쿼리 시스템을 사용하고 로컬 SYSTEM 계정을 가장하는 사용자 소유 프로세스와 같은 불일치 사항을 찾습니다. Windows용 이벤트 추적(ETW)을 통해 수집된 데이터의 EventHeader ProcessId, Windows 이벤트 로그의 Creator Process ID/Name, ProcessID 및 ParentProcessID(ETW 및 작업 관리자, 프로세스 탐색기와 같은 다른 유틸리티에서도 생성됨)와 같이 PPID 정보를 저장하는 다양한 필드 간의 불일치 사항을 찾습니다. ETW에서 제공하는 EventHeader ProcessId는 실제 부모 프로세스를 식별합니다.

사용자 계정

- 사용자 계정 메타데이터

사용자 이름, 사용자 ID, 환경 데이터 등 계정에 대한 상황적 데이터를 모니터링합니다. 이러한 데이터는 다른 사용자 또는 시스템 보안 컨텍스트에서 작동하여 작업을 수행하고 액세스 제어를 우회하도록 액세스 토큰을 수정할 수 있습니다.

 

 

계정 조작

공격자는 계정을 조작하여 피해자 시스템에 대한 액세스를 유지 및/또는 상승시킬 수 있습니다. 계정 조작은 자격 증명이나 권한 그룹을 수정하는 것과 같이 손상된 계정에 대한 공격자 액세스를 유지하거나 수정하는 모든 작업으로 구성될 수 있습니다. 이러한 작업에는 암호 기간 정책을 우회하고 손상된 자격 증명의 수명을 보존하기 위해 반복적인 암호 업데이트를 수행하는 것과 같이 보안 정책을 파괴하도록 설계된 계정 활동도 포함될 수 있습니다.

계정을 만들거나 조작하려면 적대자는 이미 시스템이나 도메인에 대한 충분한 권한이 있어야 합니다. 그러나 계정 조작은 수정을 통해 추가 역할, 권한 또는 권한이 더 높은 유효한 계정 에 대한 액세스가 부여되는 권한 상승으로 이어질 수도 있습니다 .

 

절차

2016년 우크라이나 정전 공격 당시 Sandworm Team은 MS-SQL 명령을 사용하여 sp_addlinkedsrvlogin으로 생성된 계정과 네트워크의 다른 서버 간의 링크를 생성했습니다.

Calisto - 모든 사용자에게 권한과 원격 로그인을 추가합니다.

HAFNIUM - 도메인 계정에 권한을 부여했습니다.

Lazarus Group의 맬웨어 WhiskeyDelta-Two에는 관리자 계정의 이름을 바꾸는 기능이 포함되어 있습니다.

Mimikatz 자격 증명 덤퍼는 Skeleton Key 도메인 컨트롤러 인증 우회 기능을 포함하도록 확장되었습니다. LSADUMP::ChangeNTLM 및 LSADUMP::SetNTLM 모듈은 일반 텍스트 값을 알지 못해도 계정의 암호 해시를 조작할 수 있습니다.

 

 

완화책

기능 또는 프로그램 비활성화 또는 제거

가능하면 불필요하고 잠재적으로 남용될 수 있는 인증 및 권한 부여 메커니즘을 제거하세요.

다중 인증 요소

사용자 및 권한 있는 계정에 대해 다중 요소 인증을 사용합니다.

네트워크 세분화 

액세스 제어 및 방화벽을 구성하여 중요한 시스템 및 도메인 컨트롤러에 대한 액세스를 제한합니다. 대부분의 클라우드 환경은 클라우드 시스템의 추가 세분화를 가능하게 하는 별도의 가상 사설 클라우드(VPC) 인스턴스를 지원합니다.

운영 체제 구성

SMB 파일 공유 등 잠재적으로 불필요한 프로토콜 및 서비스의 액세스를 제한하기 위해 중요 서버에 대한 적절한 보안 구성을 보장하여 도메인 컨트롤러를 보호합니다.

특권 계정 관리

권한이 없는 시스템에서 잠재적인 적대자에게 노출될 수 있는 일상적인 작업에 도메인 관리자 계정을 사용하도록 허용하지 마세요.

파일 및 디렉토리 권한 제한

인증 및/또는 권한 부여를 다루는 잠재적으로 민감한 파일에 대한 액세스를 제한합니다.

사용자 계정 관리

권한이 낮은 사용자 계정에 계정이나 계정 관련 정책을 수정할 수 있는 권한이 없는지 확인하세요.

 

 

발견

액티브 디렉토리

- Active Directoty 개체 수정

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)를 모니터링합니다. 다른 의심스러운 활동과 관련된 계정 수정을 모니터링합니다. 변경은 비정상적인 시간이나 비정상적인 시스템에서 발생할 수 있습니다. 특히 주체와 대상 계정이 다르거나 이전 비밀번호를 알지 못한 채 비밀번호를 변경하는 것과 같은 추가 플래그가 포함된 플래그 이벤트를 플래그합니다.

침해된 계정에 지나치게 광범위한 권한이 부여되는 것을 나타내는 비정상적인 권한 변경을 모니터링합니다.

 

 

 

 

부팅 또는 로그온 자동 시작 실행

공격자는 시스템 부팅 또는 로그온 시 프로그램을 자동으로 실행하여 지속성을 유지하거나 손상된 시스템에서 상위 수준의 권한을 얻도록 시스템 설정을 구성할 수 있습니다. 운영 체제에는 시스템 부팅 또는 계정 로그온 시 프로그램을 자동으로 실행하기 위한 메커니즘이 있을 수 있습니다. 이러한 메커니즘에는 특별히 지정된 디렉토리에 배치되거나 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" 시작 스크립트를 설치했습니다.

RotaJakiro - Linux 배포판에 따라 루트 권한으로 실행할 때 /etc/init/의 .conf 파일을 사용하여 지속성을 설치할 수 있습니다.

 

완화책

파일 및 디렉토리 권환 제한

로그온 스크립트에 대한 쓰기 권한을 특정 관리자에게만 제한합니다.

레지스트리 권한 제한

사용자가 지속성으로 이어질 수 있는 로그온 스크립트의 키를 수정하지 못하도록 레지스트리 하이브에 적절한 권한이 설정되어 있는지 확인하세요.

 

 

발견

액티브 디렉토리

- Acitve Directoty

부팅 또는 로그온 초기화 시 자동으로 실행되는 스크립트를 사용하여 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 레지스트리 키를 모니터링합니다.

 

 

 

시스템 프로세스 생성 또는 수정

공격자는 지속성의 일부로 악성 페이로드를 반복적으로 실행하기 위해 시스템 수준 프로세스를 생성하거나 수정할 수 있습니다. 운영 체제가 부팅되면 백그라운드 시스템 기능을 수행하는 프로세스를 시작할 수 있습니다. 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 레지스트리 키 및/또는 값의 변경 사항을 모니터링합니다.

 

 

 

도메인 또는 테넌트 정책 수정

적대자는 방어를 회피하거나 중앙 관리 환경에서 권한을 확대하기 위해 도메인 또는 ID 테넌트의 구성 설정을 수정할 수 있습니다. 이러한 서비스는 장치 및 계정과 같은 ID 리소스를 관리하는 중앙 집중식 수단을 제공하며, 종종 신뢰 관계, ID 동기화 또는 ID 페더레이션과 같이 도메인 또는 테넌트 간에 적용될 수 있는 구성 설정을 포함합니다.

도메인 또는 테넌트 설정을 수정하는 작업에는 Microsoft Active Directory(AD)의 도메인 그룹 정책 개체(GPO)를 변경하거나 도메인의 신뢰 설정(도메인 또는 테넌트 간의 페더레이션 트러스트 관계 포함)을 변경하는 작업이 포함될 수 있습니다.

충분한 권한이 있으면 적대자는 도메인 또는 테넌트 정책 설정을 수정할 수 있습니다. 이러한 서비스에 대한 구성 설정은 많은 수의 ID 리소스에 적용되므로 이러한 남용으로 인해 발생할 수 있는 잠재적 공격 및 악의적 결과가 매우 많습니다. 이러한 남용의 예는 다음과 같습니다.

  • 도메인 환경 전체의 컴퓨터에 악성 예약 작업을 푸시하기 위해 GPO 수정 
  • 적대자가 제어하는 ​​도메인을 포함하도록 도메인 신뢰를 수정하여 적대자가 피해자 도메인 리소스에서 나중에 수락되는 액세스 토큰을 위조할 수 있도록 함 
  • AD 환경 내에서 구성 설정을 변경하여 Rogue 도메인 컨트롤러를 구현합니다 .
  • 피해자 테넌트가 관리하는 모든 사용자로 적대자가 인증할 수 있도록 새로운 적대자 제어 연합 ID 공급자를 ID 테넌트에 추가합니다. 

공격자는 도메인 또는 테넌트 정책을 일시적으로 수정하고 악의적인 작업을 수행한 다음 변경 사항을 되돌려 의심스러운 표시를 제거할 수 있습니다.

 

 

완화책

심사 

BloodHound (버전 1.5.1 이상)와 같은 감사 도구를 사용하여 GPO 권한 남용 기회(예: GPO 수정 권한)를 식별하고 수정합니다 .

특권 계정 관리

최소 권한을 사용하고 도메인 컨트롤러와 Active Directory Federation Services(AD FS) 서버에 대한 관리 액세스를 보호합니다. 관리 권한이 있는 서비스 계정을 만들지 마십시오.

사용자 계정 관리

GPO가 적용될 사용자 및 컴퓨터를 더욱 세부적으로 조정하기 위해 WMI 및 보안 필터링을 구현하는 것을 고려하십시오.

 

 

발견

액티브 디렉토리

- Active Directoty 개체 생성

Windows EID 5137과 같은 새로 생성된 활성 디렉터리 개체를 모니터링합니다.

- Active Directoty 개체 삭제

Windows EID 5141과 같은 활성 디렉토리 개체의 예기치 않은 삭제를 모니터링합니다.

- Active Directoty 개체 수정

사용자 계정에 대한 예상치 못한 수정(예: 사용자 속성(자격 증명, 상태 등) 삭제 또는 잠재적으로 악의적인 변경)을 확인하기 위해 AD 설정에서 변경 사항을 모니터링합니다.

신청 로그

- 애플리케이션 로그 내용 

특히 새로운 페더레이션 ID 공급자 추가와 관련하여 클라우드 기반 디렉토리 서비스 및 ID 테넌트에 대한 변경 사항을 모니터링합니다. Okta 환경에서 이벤트는 system.idp.lifecycle.createID 공급자 생성 시 트리거되고 타사 ID 공급자의 로그인은 이벤트를 생성합니다 user.authentication.auth_via_IDP.

명령

- 명령 실행

사용자 또는 애플리케이션이 도메인의 페더레이션 설정을 수정하거나 ActionTypes Set federation settings on domain및 Set domain authentication 를 통해 도메인 인증을 관리에서 페더레이션으로 업데이트하는 경우와 같이 도메인 신뢰 설정에 대한 수정 사항을 모니터링하기 위해 실행된 명령 및 인수를 모니터링합니다.

 

 

 

호스트로 탈출

적대자는 컨테이너에서 탈출하여 기본 호스트에 액세스할 수 있습니다. 이를 통해 적대자는 호스트 수준이나 호스트 자체에서 다른 컨테이너화된 리소스에 액세스할 수 있습니다. 원칙적으로 컨테이너화된 리소스는 애플리케이션 기능을 명확하게 분리해야 하며 호스트 환경과 격리되어야 합니다. 

적대자가 호스트 환경으로 탈출할 수 있는 방법은 여러 가지가 있습니다. 예를 들어 bind 매개변수를 사용하여 호스트의 파일 시스템을 마운트하도록 구성된 컨테이너를 생성하여 적대자가 페이로드를 삭제하고 호스트에서 cron과 같은 제어 유틸리티를 실행할 수 있도록 하는 것, 권한이 있는 컨테이너를 사용하여 기본 호스트에서 명령을 실행하거나 악성 커널 모듈을 로드하는 것, 및 와 같은 시스템 호출을 남용하여 unshare권한 keyctl을 확대하고 비밀을 훔치는 것 등이 있습니다. 

또한 적대자는 컨테이너 관리 소켓이 마운트된 손상된 컨테이너(예: 컨테이너 관리 명령을docker.sock 통해 컨테이너에서 탈출) 를 악용할 수 있습니다 . 적대자는 또한 호스트 머신의 루트 디렉토리에 액세스하기 위해 글로벌 심볼릭 링크의 취약점을 악용하는 것과 같이 권한 상승을 위한 악용을 통해 탈출할 수도 있습니다 .

호스트에 접근하면 적대 세력은 지속성 확립, 환경 내에서 측면 이동, 호스트에서 실행되는 다른 컨테이너에 접근, 호스트에 명령 및 제어 채널 설정 등의 후속 목표를 달성할 기회를 얻습니다.

 

 

절차

Doki의 컨테이너는 호스트 루트 디렉토리를 바인딩하도록 구성되었습니다.

힐데가르트 - 컨테이너에서 벗어날 수 있는 BotB 도구를 사용했습니다.

Peirates - Kubernetes hostPath를 마운트하여 호스트 노드에서 역방향 셸을 얻을 수 있습니다.

Siloscape - NtSetInformationSymbolicLink를 호출하여 호스트에 대한 글로벌 심볼릭 링크를 생성하여 호스트의 C 드라이브를 컨테이너에 매핑합니다.

TeamTNT - 피해자 머신의 파일 시스템을 마운트하는 권한이 있는 컨테이너를 배포했습니다.

 

 

완화책

애플리케이션 격리 및 샌드박싱

mount와 같은 특정 시스템 호출을 제한하는 seccomp, seccomp-bpf 또는 유사한 솔루션을 활용하는 것을 고려하세요. Kubernetes 환경에서 컨테이너 액세스를 호스트 프로세스 네임스페이스, 호스트 네트워크 및 호스트 파일 시스템으로 제한하는 Pod 보안 표준을 정의하는 것을 고려하세요.

기능 또는 프로그램 비활성화 또는 제거

컨테이너에서 불필요한 도구와 소프트웨어를 제거합니다.

실행 방지

가능하면 명령 실행을 방지하기 위해 읽기 전용 컨테이너, 읽기 전용 파일 시스템 및 최소 이미지를 사용하십시오. [14] 가능하면 SELinux에서 제공하는 것과 같은 애플리케이션 제어 및 소프트웨어 제한 도구를 사용하여 컨테이너에서 파일, 프로세스 및 시스템 호출에 대한 액세스를 제한하는 것도 고려하십시오.

특권 계정 관리

컨테이너가 기본적으로 루트로 실행되지 않고 불필요한 권한이나 마운트된 구성 요소를 사용하지 않도록 합니다. Kubernetes 환경에서는 Pod가 권한이 있는 컨테이너를 실행하지 못하도록 하는 Pod 보안 표준을 정의하는 것을 고려하세요.

 

 

발견

컨테이너 

- 컨테이너 생성

특히 루트로 실행되는 컨테이너의 경우 환경에서 의심스럽거나 알려지지 않은 컨테이너 이미지와 Pod가 배포되는 것을 모니터링합니다.

핵심

- 커널 모듈 로드

호스트의 컨테이너를 이스케이프하는 데 악용될 수 있는 커널 모듈의 설치를 모니터링합니다.

프로세스

- OS API 실행

mount 권한이 있는 컨테이너에서 호스트로 탈출하려는 시도를 나타낼 수 있는 예상치 못한 syscall 사용을 모니터링합니다  .

- 프로세스 생성

권한이 있는 컨테이너에서 호스트로 탈출하려는 시도를 나타낼 수 있는 프로세스 활동(예: 컨테이너 외부 및/또는 호스트에서 예기치 않은 프로세스가 생성되는 경우)을 모니터링합니다.

용량

- 볼륨 수정

컨테이너의 볼륨 구성 변경과 관련된 클러스터 수준(Kubernetes) 데이터 및 이벤트를 모니터링합니다.

 

 

 

 

이벤트 트리거 실행

공격자는 특정 이벤트에 따라 실행을 트리거하는 시스템 메커니즘을 사용하여 지속성을 확립하고/하거나 권한을 상승시킬 수 있습니다. 다양한 운영 체제에는 로그온이나 특정 애플리케이션/바이너리 실행과 같은 기타 사용자 활동과 같은 이벤트를 모니터링하고 구독할 수 있는 수단이 있습니다. 클라우드 환경은 또한 특정 클라우드 이벤트를 모니터링하고 이에 대한 응답으로 호출될 수 있는 다양한 기능과 서비스를 지원할 수 있습니다. 

공격자는 악성 코드를 반복적으로 실행하여 피해자에게 지속적으로 접근할 수 있는 수단으로 이러한 메커니즘을 남용할 수 있습니다. 피해자 시스템에 접근한 후 공격자는 이벤트 트리거를 생성/수정하여 이벤트 트리거가 호출될 때마다 실행될 악성 콘텐츠를 가리킬 수 있습니다. 

SYSTEM이나 서비스 계정 등 더 높은 권한이 있는 계정을 통해 실행을 프록시할 수 있으므로 공격자는 이러한 트리거 실행 메커니즘을 악용하여 자신의 권한을 확대할 수 있습니다.

 

 

절차

KV Botnet 활동 - libevent 실행 중인 프로세스가 경로에 다음 참조를 포함하고 있지만 biosetbusybox, 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 개체를 모니터링합니다.

 

 

 

권한 상승을 위한 악용

적대자는 권한을 상승시키려는 시도에서 소프트웨어 취약성을 악용할 수 있습니다. 소프트웨어 취약성 악용은 적대자가 프로그램, 서비스 또는 운영 체제 소프트웨어나 커널 자체의 프로그래밍 오류를 이용하여 적대자가 제어하는 ​​코드를 실행할 때 발생합니다. 권한 수준과 같은 보안 구성 요소는 종종 정보에 대한 액세스와 특정 기술의 사용을 방해하므로 적대자는 이러한 제한을 우회하기 위해 소프트웨어 악용을 사용하는 것을 포함하여 권한 상승을 수행해야 할 가능성이 높습니다.

시스템에 처음 액세스할 때, 공격자는 권한이 낮은 프로세스 내에서 작동할 수 있으며, 이는 공격자가 시스템의 특정 리소스에 액세스하지 못하게 합니다. 취약성은 일반적으로 운영 체제 구성 요소와 일반적으로 더 높은 권한에서 실행되는 소프트웨어에 존재할 수 있으며, 이를 악용하여 시스템에서 더 높은 수준의 액세스 권한을 얻을 수 있습니다. 이를 통해 누군가가 취약한 구성 요소에 따라 권한이 없는 또는 사용자 수준 권한에서 SYSTEM 또는 루트 권한으로 이동할 수 있습니다. 또한 공격자는 가상 머신이나 컨테이너와 같은 가상화된 환경에서 기본 호스트로 이동할 수 있습니다. 이는 공격자가 적절하게 구성되고 다른 권한 상승 방법을 제한하는 엔드포인트 시스템을 손상시키는 데 필요한 단계일 수 있습니다.

공격자는 취약한 서명된 드라이버를 손상된 시스템으로 가져와서 취약성을 악용하여 커널 모드에서 코드를 실행할 수 있습니다. 이 프로세스는 때때로 BYOVD(Bring Your Own Vulnerable Driver)라고도 합니다.공격자는 초기 액세스 중에 전달된 파일에 취약한 드라이버를 포함하거나 Ingress Tool Transfer 또는 Lateral Tool Transfer를 통해 손상된 시스템에 다운로드할 수 있습니다 .

 

 

절차

APT28 -  CVE-2014-4076, CVE-2015-2387, CVE-2015-1701, CVE-2017-0263을 악용하여 권한을 확대했습니다.

APT29 - CVE-2021-36934를 악용하여 손상된 호스트의 권한을 확대했습니다.

APT32 - CVE-2016-7255를 사용하여 권한을 확대했습니다.

APT33 - CVE-2017-0213에 대한 공개적으로 사용 가능한 악용을 사용하여 로컬 시스템의 권한을 확대했습니다.

BITTER - 권한 상승을 위해 CVE-2021-1732를 악용했습니다.

Carberp -  여러 Windows 취약점(CVE-2010-2743, CVE-2010-3338, CVE-2010-4398, CVE-2008-1084)과 권한 상승을 위한 .NET 런타임 최적화 취약점을 악용했습니다.

Cobalt Group - 익스플로잇을 사용하여 권리와 특권 수준을 높였습니다.

Cobalt Strike - MS14-058과 같은 취약점을 악용할 수 있습니다.

CosmicDuke - 권한 상승 취약점 CVE-2010-0232 또는 CVE-2010-4398을 악용하려고 시도합니다.

Empire - MS16-032 및 MS16-135와 같은 취약점을 악용할 수 있습니다.

FIN6 - 권한을 확대하기 위해 Windows 취약점을 악용하는 도구를 사용했습니다. 이 도구는 CVE-2013-3660, CVE-2011-2005, CVE-2010-4398을 대상으로 했습니다.

FIN8 - CVE-2016-0167 로컬 취약점을 악용했습니다.

Hildegard - CVE-2019-5736을 악용하는 BOTB 도구를 사용했습니다.

InvisiMole - speedfan.sys 드라이버의 CVE-2007-5633 취약점을 악용하여 커널 모드 권한을 얻었습니다.

JHUHUGIT - CVE-2015-1701 및 CVE-2015-2387을 악용하여 권한을 확대했습니다.

랩수스LAPSUS - JIRA, GitLab, Confluence를 포함한 내부적으로 접근 가능한 서버의 패치되지 않은 취약점을 악용하여 권한 상승을 시도했습니다.

MoustachedBouncer - CVE-2021-1732를 악용하여 권한이 상승된 맬웨어 구성 요소를 실행했습니다.

Pandora - CVE-2017-15303을 사용하여 Windows Driver Signature Enforcement(DSE) 보호를 우회하고 해당 드라이버를 로드할 수 있습니다.

PLATINUM - 제로데이 취약점을 이용해 권한을 확대했습니다.

PoshC2 - CVE-2016-9192 및 CVE-2016-0099와 같은 로컬 권한 상승 악용을 위한 모듈이 포함되어 있습니다.

ProLock - CVE-2019-0859를 사용하여 손상된 호스트의 권한을 확대할 수 있습니다.

Remsec - 커널 모드 권한을 얻기 위해 취약한 Outpost Sandbox 또는 avast! 가상화 드라이버를 삭제하고 실행하는 플러그인이 있습니다.

Scattered Spider - Windows용 Intel 이더넷 진단 드라이버(iqvw64.sys)의 CVE-2015-2291을 악용하여 악성 커널 드라이버를 배포했습니다.

Siloscape - Windows 컨테이너의 취약점을 활용하여 호스트로의 탈출을 수행했습니다.

Stuxnet - MS10-073 및 공개되지 않은 작업 스케줄러 취약성을 사용하여 로컬 Windows 컴퓨터의 권한을 확대했습니다.

위협 그룹 3390 - CVE-2014-6324 및 CVE-2017-0213을 사용하여 권한을 확대했습니다.

Tonto Team - CVE-2019-0803 및 MS16-032를 악용하여 권한을 확대했습니다.

Turla -VBoxDrv.sys 드라이버의 취약점을 악용하여 커널 모드 권한을 얻었습니다.

Volt Typhoon - 운영 체제나 네트워크 서비스의 권한 상승 취약점을 악용하여 초기 액세스 권한을 얻었습니다.

Whitefly - 패치되지 않은 컴퓨터에서 알려진 Windows 권한 상승 취약점(CVE-2016-0051)을 악용하기 위해 오픈 소스 도구를 사용했습니다.

Wingbird - CVE-2016-4117을 악용하여 실행 파일이 확대된 권한을 얻을 수 있도록 합니다.

XCSSET - ssh launchdaemon에서 제로데이 익스플로잇을 사용하여 권한을 상승시키고 SIP를 우회했습니다.

ZeroCleare - 취약한 서명된 VBoxDrv 드라이버를 사용하여 Microsoft Driver Signature Enforcement(DSE) 보호를 우회하고 이어서 서명되지 않은 RawDisk 드라이버를 로드했습니다.

ZIRCONIUM - 로컬 권한 상승을 위해 CVE-2017-0005를 악용했습니다.

Zox - 로컬 및 원격 익스플로잇을 활용하여 권한을 확대할 수 있는 기능을 가지고 있습니다.

 

 

완화책

애플리케이션 격리 및 샌드박싱

샌드박싱을 사용하여 발견되지 않았거나 패치되지 않은 취약성을 악용하여 적대자가 작업을 진행하기 어렵게 만드십시오. 다른 유형의 가상화 및 애플리케이션 마이크로세그먼테이션도 일부 유형의 악용의 영향을 완화할 수 있습니다. 이러한 시스템의 추가 악용 및 약점의 위험은 여전히 ​​존재할 수 있습니다.

실행 방지

적대자가 커널 모드에서 코드를 실행하기 위해 악용할 수 있는 알려진 취약 드라이버의 실행을 차단하는 것을 고려하세요. 프로덕션 배포 전에 안정성을 보장하기 위해 감사 모드에서 드라이버 차단 규칙을 검증하세요.

익스플로잇 보호

Windows Defender Exploit Guard(WDEG) 및 Enhanced Mitigation Experience Toolkit(EMET)와 같은 악용 중에 사용되는 동작을 찾는 보안 애플리케이션을 사용하면 일부 악용 동작을 완화할 수 있습니다. 제어 흐름 무결성 검사는 소프트웨어 악용을 잠재적으로 식별하고 발생을 중지하는 또 다른 방법입니다. 이러한 보호 기능 중 다수는 호환성을 위해 아키텍처와 대상 애플리케이션 바이너리에 따라 달라지며 권한 상승을 대상으로 하는 소프트웨어 구성 요소에는 작동하지 않을 수 있습니다.

위협 인텔리전스 프로그램

특정 조직을 대상으로 소프트웨어 익스플로잇과 0-day를 사용할 수 있는 위협 유형과 수준을 파악하기 위해 강력한 사이버 위협 인텔리전스 역량을 개발합니다.

소프트웨어 업데이트

패치 관리를 통해 내부 기업 엔드포인트와 서버를 대상으로 소프트웨어를 정기적으로 업데이트합니다.

 

 

발견

드라이버

- 드라이버 부하

소프트웨어 악용을 탐지하는 것은 사용 가능한 도구에 따라 어려울 수 있습니다. 소프트웨어 악용이 항상 성공하지 않거나 악용된 프로세스가 불안정해지거나 충돌할 수 있습니다. 또한 프로세스의 비정상적인 동작과 같이 성공적인 침해를 나타낼 수 있는 엔드포인트 시스템의 동작을 살펴보세요. 여기에는 디스크에 기록된 의심스러운 파일, 실행을 숨기려는 시도에 대한 프로세스 주입 증거 또는 Discovery 증거가 포함될 수 있습니다. 공격자가 커널 모드에서 코드를 실행하기 위해 삭제하고 악용할 수 있는 알려진 취약한 드라이버의 존재 또는 로딩(예: Sysmon 이벤트 ID 6)을 모니터링하는 것을 고려하세요. 일부 OS 자격 증명 덤프 방법과 같은 추가 작업을 수행하려면 더 높은 권한이 필요한 경우가 많습니다 . 공격자가 더 높은 권한을 얻었음을 나타낼 수 있는 추가 활동을 살펴보세요.

프로세스

-프로세스 생성

권한을 상승시키려는 시도에서 소프트웨어 취약성을 악용할 수 있는 새로 실행된 프로세스를 모니터링합니다. 위협 행위자는 시스템에 대한 초기 액세스를 얻은 후 보호된 정보에 액세스하거나 더 높은 권한이 필요한 작업을 수행할 수 없는 낮은 권한의 프로세스 내에서 작동할 수 있으므로 권한을 상승시키려고 시도합니다. 시스템에서 권한을 상승시키는 일반적인 방법은 합법적인 Windows 애플리케이션인 spoolsv 또는 connhost 실행 파일을 외부에서 호출하여 악용하는 것입니다. 이 쿼리는 사용자가 이러한 실행 파일 중 하나를 호출한 것을 검색하여 잠재적으로 악의적인 활동을 경고합니다.

참고: 이벤트 ID는 Sysmon(이벤트 ID 1 - 프로세스 생성) 및 Windows 보안 로그(이벤트 ID 4688 - 새 프로세스가 생성됨)를 위한 것입니다. 분석은 사용자가 spoolsv.exe 또는 conhost.exe를 호출하는 것을 찾는 데 중점을 두고 있으므로 잠재적으로 악의적인 활동을 경고합니다. 시스템에서 권한을 확대하는 일반적인 방법은 이러한 실행 파일을 외부에서 호출하여 악용하는 것입니다. 둘 다 합법적인 Windows 애플리케이션입니다.

분석 1 - spoolsv.exe 또는 connhost.exe에 대한 비정상적인 자식 프로세스

(source="WinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode="1") OR (source="WinEventLog:Security" EventCode="4688") (Image="C:\Windows\System32\spoolsv.exe" OR Image="C:\Windows\System32\conhost.exe") AND ParentImage= "C:\Windows\System32\cmd.exe")

 

 

 

 

하이재킹 실행 흐름

적대자는 운영 체제가 프로그램을 실행하는 방식을 하이재킹하여 자신의 악성 페이로드를 실행할 수 있습니다. 실행 흐름을 하이재킹하는 것은 지속성을 위한 목적일 수 있는데, 이 하이재킹된 실행은 시간이 지남에 따라 다시 발생할 수 있기 때문입니다. 적대자는 또한 이러한 메커니즘을 사용하여 권한을 상승시키거나 애플리케이션 제어 또는 실행에 대한 기타 제한과 같은 방어를 회피할 수 있습니다.

적대자가 실행 흐름을 하이재킹할 수 있는 방법에는 운영 체제가 실행할 프로그램을 찾는 방법을 조작하는 것을 포함하여 여러 가지가 있습니다. 운영 체제가 프로그램에서 사용할 라이브러리를 찾는 방법도 가로챌 수 있습니다. 운영 체제가 프로그램/리소스를 찾는 위치(예: 파일 디렉터리, 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를 로드하기 위해 악성 파일이 있는 경우 해당 파일을 사용합니다: slideshow.mp4, ntdll.dll.

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 레지스트리 키 및/또는 값의 변경 사항을 모니터링합니다.

 

 

프로세스 주입

적대자는 프로세스 기반 방어를 회피하고 권한을 상승시키기 위해 프로세스에 코드를 주입할 수 있습니다. 프로세스 주입은 별도의 라이브 프로세스의 주소 공간에서 임의의 코드를 실행하는 방법입니다. 다른 프로세스의 컨텍스트에서 코드를 실행하면 프로세스의 메모리, 시스템/네트워크 리소스 및 상승된 권한에 액세스할 수 있습니다. 프로세스 주입을 통한 실행은 합법적인 프로세스에서 실행이 마스크되므로 보안 제품의 감지를 피할 수도 있습니다.

프로세스에 코드를 주입하는 방법은 여러 가지가 있으며, 그 중 다수는 합법적인 기능을 남용합니다. 이러한 구현은 모든 주요 OS에 존재하지만 일반적으로 플랫폼에 따라 다릅니다.

더욱 정교한 샘플은 모듈을 분할하기 위해 여러 프로세스 주입을 수행하고 명명된 파이프나 기타 프로세스 간 통신(IPC) 메커니즘을 통신 채널로 활용하여 감지를 더욱 회피할 수 있습니다.

 

 

절차

2015년 우크라이나 전력 공격 동안 Sandworm Team은 BlackEnergy를 svchost.exe에 로드했고 이는 C2를 위해 iexplore.exe를 실행했습니다.

ABK  - svchost.exe에 셸코드를 주입하는 기능을 가지고 있습니다.

에이전트 테슬라 - 타겟 호스트의 알려진 취약한 바이너리에 주입할 수 있습니다.

ANDROMEDA - wuauclt.exe에 주입하여 C2 작업을 수행할 수 있습니다.

APT32 맬웨어 -  Rundll32.exe에 Cobalt Strike 비콘을 주입했습니다.

APT37 - 맬웨어 변종인 ROKRAT을 cmd.exe 프로세스에 주입합니다.

APT41 맬웨어 TIDYELF - iexplore.exe 프로세스에 주입하여 주요 WINTERLOVE 구성 요소를 로드했습니다.

APT5 - CLEANPULSE 유틸리티를 사용하여 대상 프로세스에 명령줄 문자열을 삽입하여 해당 기능을 변경했습니다.

Attor의 디스패처는 실행 중인 프로세스에 주입하여 더 높은 권한을 얻고 감지를 회피할 수 있습니다.

AuditCred - 파일에서 다른 실행 중인 프로세스로 코드를 삽입할 수 있습니다.

Avenger - svchost.exe에 셸코드를 주입하는 기능을 가지고 있습니다.

Backdoor.Oldrea는 explorer.exe에 자체적으로 주입됩니다.

BADHATCH - RtlCreateUserThread를 사용하여 기존 explorer.exe 프로세스에 주입할 수 있습니다.

Bazar를 호출하여 코드를 삽입할 수 있습니다: VirtualAllocExNuma.

BBK - svchost.exe에 셸코드를 주입할 수 있는 기능을 가지고 있습니다.

Bumblebee - 감염된 엔드포인트의 여러 프로세스에 코드를 삽입할 수 있습니다.

Cardinal RAT - 기본 Windows 실행 파일에서 생성된 새로 생성된 프로세스에 주입됩니다.\

클램블링 - svchost.exe 실행 프로세스에 주입될 수 있습니다.

COATHANGER authd - 실행 중인 프로세스에 라이브러리를 주입한 다음 해당 프로세스 내의 기존 함수를 해당 라이브러리의 새 함수로 연결할 수 있는 바이너리 레이블이 포함되어 있습니다.

Cobalt Group - 신뢰할 수 있는 프로세스에 코드를 삽입했습니다.

Cobalt Strike - 적대자가 동적으로 선택한 프로세스에 다양한 페이로드를 주입할 수 있습니다.

CostaBricks - 손상된 호스트의 메모리에 페이로드를 주입할 수 있습니다.

Cutting Edge 동안 위협 행위자는 악성 SparkGateway 플러그인을 사용하여 손상된 Ivanti Secure Connect VPN의 웹 프로세스 메모리에 공유 객체를 주입하여 백도어 배포를 활성화했습니다.

DonutTest - 셸코드를 대상 프로세스에 주입하는 하위 프로젝트가 포함되어 있습니다.

DUSTTRAP - 검색된 플러그인의 내용을 보관하기 위해 합법적인 시스템 DLL의 .text 섹션을 손상시킵니다.

Dyre - 웹 브라우저 프로세스에 직접 코드를 삽입할 수 있는 기능을 가지고 있습니다.

Egregor -  iexplore.exe 프로세스에 페이로드를 삽입할 수 있습니다.

Empire - 프로세스에 주입하기 위한 여러 모듈이 포함되어 있습니다: Invoke-PSInject.

Gazer - C2를 수행하는 인터넷 접근 가능한 프로세스에 통신 모듈을 주입합니다.

gh0st RAT - "Command_Create&Inject" 함수로 생성된 프로세스에 악성 코드를 주입할 수 있습니다.

GuLoader -  일시 중단된 상태에서 시작되는 도너 프로세스에 셸코드를 주입하는 기능을 가지고 있습니다. GuLoader는 이전에 RegAsm을 도너 프로세스로 사용했습니다.

HOPLIGHT가 실행 중인 프로세스에 주입되었습니다.

HTRAN - 실행 중인 프로세스에 주입될 수 있습니다.

HyperBro - 새로 생성된 프로세스에 삽입한 셸코드를 실행할 수 있습니다.

InvisiMole - ListView 구조에서 정렬 알고리즘을 사용자 정의하는 ListPlanting이라는 기술을 사용하는 것을 포함하여 감지를 피하기 위해 다른 프로세스에 자체를 주입할 수 있습니다.

IronNetInjector - IronPython 스크립트를 사용하여 .NET 인젝터를 로드하여 자체 프로세스나 원격 프로세스에 페이로드를 주입할 수 있습니다.

JHUHUGIT - 브라우저 프로세스에 자체 기능을 주입하여 코드 주입을 수행합니다.

JPIN - 모듈을 로드하기 위해 lsass.exe에 콘텐츠를 주입할 수 있습니다.

Kimsuky - Win7Elevate를 사용하여 explorer.exe에 악성 코드를 삽입했습니다.

Lizar - 로더를 다른 프로세스로 마이그레이션할 수 있습니다.

metaMain - 로더 파일 Speech02.db를 프로세스에 주입할 수 있습니다.

Mis-Type - 실행 중인 프로세스에 직접 주입되었습니다: explorer.exe.

Mispadu의 바이너리는 WriteProcessMemory를 통해 메모리에 삽입됩니다.

NavRAT - 감지를 피하기 위해 실행 중인 Internet Explorer 프로세스에 자체를 복사합니다.

NETWIRE - notepad.exe, svchost.exe 및 vbc.exe를 포함한 시스템 프로세스에 코드를 삽입할 수 있습니다.

닌자 - 새로운 프로세스에 에이전트 모듈을 주입하고 실행 중인 프로세스에 임의의 셸코드를 주입할 수 있는 기능을 갖고 있습니다.

Operation Sharpshooter 동안 위협 행위자는 내장된 셸코드를 활용하여 Word 메모리에 다운로더를 삽입했습니다.

Operation Wocao 동안 위협 행위자는 선택된 프로세스에 코드를 삽입했고, 이 프로세스는 원래 프로세스의 자식 프로세스로 명령을 실행했습니다.

Pandora - 새 svchost 프로세스를 시작하고 코드를 삽입할 수 있습니다.

PcShare 페이로드 - logagent.exe 및 rdpclip.exe 프로세스에 주입되었습니다.

PLATINUM - 핫패칭을 포함한 다양한 공정 주입 방법을 활용하고 있습니다.

PoshC2 - 프로세스에 주입하기 위한 여러 모듈이 포함되어 있습니다: Invoke-PSInject.

QakBot - explorer.exe, Iexplore.exe, Mobsync.exe, wermgr.exe를 포함한 프로세스에 자체를 주입할 수 있습니다.

Remcos - 다른 프로세스에 주입하여 자신을 숨기는 명령을 가지고 있습니다.

REvil - 손상된 호스트의 실행 중인 프로세스에 자체를 주입할 수 있습니다.

ROKRAT - VirtualAlloc, WriteProcessMemory, CreateRemoteThread를 사용하여 주소 공간 내에서 셸코드를 실행할 수 있습니다: Notepad.exe.

Ryuk - VirtualAlloc, WriteProcessMemory의 조합을 사용하여 파일을 암호화하기 위해 원격 프로세스에 자신을 주입했습니다: CreateRemoteThread.

ShadowPad가 새로 생성된 프로세스에 설치 모듈을 주입했습니다.

Silence - Trojan을 포함하는 DLL 라이브러리를 fwmain32.exe 프로세스에 주입했습니다.

SILENTTRINITY - 셸코드를 Excel.exe 또는 특정 프로세스에 직접 주입할 수 있습니다.

Sliver - 로컬 및 원격 프로세스에 코드를 삽입할 수 있습니다.

SLOTHFULMEDIA - 손상된 호스트의 실행 중인 프로세스에 주입될 수 있습니다. 

Smoke Loader -  Internet Explorer 프로세스에 주입됩니다.

StoneDrill - 피해자가 선호하는 브라우저의 프로세스 메모리에 직접 페이로드를 주입하는 데 의존했습니다. 

TA2541 - regsvcs.exe, msbuild.exe 및 installutil.exe를 포함한 합법적인 .NET 관련 프로세스에 악성 코드를 주입했습니다. 

TrickBot - 합법적인 프로세스에 코드를 삽입하기 위해 Nt* 네이티브 API 함수를 사용했습니다 wermgr.exe.

TSCookie - svchost.exe, iexplorer.exe, explorer.exe 및 기본 브라우저 프로세스에 코드를 삽입하는 기능을 가지고 있습니다. 

Turla는 또한 PowerSploit 를 사용하여 Invoke-ReflectivePEInjection.ps1피해자 시스템의 임의 프로세스에 PowerShell 페이로드를 반사적으로 로드했습니다.

WarzoneRAT - 권한 상승을 위해 특정 프로세스에 악성 DLL을 주입할 수 있는 기능을 가지고 있습니다.

Waterbear - 복호화된 셸코드를 LanmanServer 서비스에 주입할 수 있습니다.

Wiarp -원격 공격자가 실행 중인 프로세스에 파일을 삽입할 수 있는 백도어를 생성합니다.

Wingbird - 시스템 프로세스를 하이재킹하고 악성 코드를 실행하기 위해 여러 프로세스 주입을 수행합니다.

Wizard Spider - 프로세스 주입을 사용하여 권한을 확대하기 위해 페이로드를 실행했습니다.

Woody RAT - 감염된 시스템의 원격 메모리에 쓰고 원격 스레드를 생성하여 대상 프로세스에 코드를 주입할 수 있습니다.

 

 

 

완화책

엔드포인트에서의 행동 예방

일부 엔드포인트 보안 솔루션은 주입 프로세스 중에 발생하는 일반적인 동작 시퀀스를 기반으로 일부 유형의 프로세스 주입을 차단하도록 구성할 수 있습니다. 예를 들어 Windows 10에서 공격 표면 감소(ASR) 규칙은 Office 애플리케이션이 코드 주입되는 것을 방지할 수 있습니다.

특권 계정 관리

Yama(예: /proc/sys/kernel/yama/ptrace_scope)를 활용하여 ptrace 사용을 권한이 있는 사용자에게만 제한하여 ptrace 기반 프로세스 주입을 완화합니다. 다른 완화 제어에는 SELinux, grsecurity, AppArmor와 같은 고급 액세스 제어 및 프로세스 제한을 제공하는 보안 커널 모듈의 배포가 포함됩니다.

 

 

발견

파일

- 파일 메타데이터 

이름, 내용(예: 서명, 헤더 또는 데이터/미디어), 사용자/소유자, 권한 등과 같은 정보를 포함할 수 있는 파일의 컨텍스트 데이터를 모니터링합니다.

- 파일 수정

프로세스 기반 방어책을 회피하고 권한을 상승시키기 위해 프로세스에 코드를 주입할 수 있는 파일의 변경 사항을 모니터링합니다.

기준 치수

- 모듈 로드

DLL/PE 파일 이벤트, 특히 이러한 바이너리 파일의 생성과 프로세스로의 DLL 로딩을 모니터링합니다. 인식되지 않거나 프로세스로 정상적으로 로딩되지 않은 DLL을 찾습니다.

프로세스

- OS API 실행

양한 유형의 코드 주입을 나타내는 Windows API 호출을 모니터링하면 상당한 양의 데이터가 생성될 수 있으며, 알려진 잘못된 호출 시퀀스에 대해 특정 상황에서 수집하지 않는 한 방어에 직접적으로 유용하지 않을 수 있습니다. API 함수의 양성 사용이 흔하고 악의적인 동작과 구별하기 어려울 수 있기 때문입니다. CreateRemoteThread, SuspendThread/ SetThreadContext/ ResumeThread​​, QueueUserAPC/ 와 같은 Windows API 호출 NtQueueApcThread과 다른 프로세스 내에서 메모리를 수정하는 데 사용할 수 있는 호출(예: VirtualAllocEx/ WriteProcessMemory)은 이 기술에 사용할 수 있습니다. ptrace 시스템 호출과 같은 Linux 특정 호출을 모니터링하면 특수한 특성으로 인해 많은 양의 데이터가 생성되지 않으며 일반적인 프로세스 주입 방법 중 일부를 감지하는 매우 효과적인 방법이 될 수 있습니다.

-프로세스 접근

프로세스 기반 방어망을 회피하고 권한을 상승시키기 위해 프로세스에 코드를 주입할 수 있는 프로세스를 모니터링합니다.

-프로세스 메타데이터

합법적인 모듈의 알려진 사본과 메모리 범위를 확인하는 것과 같이 프로세스 메모리 불일치를 모니터링합니다.

- 프로세스 수정

프로세스 기반 방어망을 회피하고 권한을 상승시키기 위해 프로세스에 코드를 주입할 수 있는 프로세스의 변경 사항을 모니터링합니다.

 

 

 

 

예약된 작업/작업

적대자는 작업 스케줄링 기능을 남용하여 악성 코드의 초기 또는 반복 실행을 용이하게 할 수 있습니다. 모든 주요 운영 체제에는 프로그램이나 스크립트를 지정된 날짜와 시간에 실행되도록 스케줄링하는 유틸리티가 있습니다. 적절한 인증이 충족되는 경우(예: 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지속성을 확립했습니다. 

지구 루스카 - 지속성을 위해 명령을 사용했습니다 schtasks /Create /SC ONLOgon /TN WindowsUpdateCheck /TR "[file path]" /ru system

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"

 

 

 

유효한 계정

공격자는 기존 계정의 자격 증명을 획득하여 초기 액세스, 지속성, 권한 상승 또는 방어 회피를 얻는 수단으로 남용할 수 있습니다. 손상된 자격 증명은 네트워크 내 시스템의 다양한 리소스에 배치된 액세스 제어를 우회하는 데 사용될 수 있으며 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 - 초기 액세스 및 측면 이동에 유효한 계정을 사용했습니다. Indrik Spider는 또한 VPN 인프라를 통해 피해자 환경에 대한 액세스를 유지했습니다.

Industroyer - 제공된 사용자 자격 증명을 사용하여 프로세스를 실행하고 서비스를 중지할 수 있습니다.

Ke3chang - 신임장 덤퍼나 도용자를 이용해 합법적인 신임장을 얻었고 이를 이용해 피해자 계정에 접근했습니다.

Kinsing - 유효한 SSH 자격 증명을 사용하여 원격 호스트에 액세스했습니다.

랩수스LAPSUS - 손상된 자격 증명 및/또는 세션 토큰을 사용하여 피해자의 VPN, VDI, RDP 및 IAM에 액세스했습니다.

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 - 도난한 자격 증명을 사용하여 피해자의 이메일 계정에 로그인했습니다.

Volt Typhoon - 지속성을 위해 주로 유효한 자격 증명을 사용합니다.

Wizard Spider - 도메인 컨트롤러에 액세스하는 목표로 권한이 있는 계정에 대한 유효한 자격 증명을 사용했습니다.

 

 

완화책

계정 사용 정책

조건부 액세스 정책을 사용하여 규정을 준수하지 않는 장치나 정의된 조직 IP 범위 외부에서 로그인을 차단합니다.

Acticve Diretory 구성

MFA를 지원하지 않는 레거시 인증을 비활성화하고 대신 최신 인증 프로토콜을 사용하도록 요구합니다.

애플리케이션 개발자 지침

애플리케이션이 민감한 데이터나 자격 증명을 안전하지 않은 방식으로 저장하지 않도록 합니다(예: 코드의 일반 텍스트 자격 증명, 저장소에 게시된 자격 증명 또는 퍼블릭 클라우드 스토리지의 자격 증명).

다중 인증 요소

기본, 로컬, 도메인 및 클라우드 계정을 포함한 모든 계정 유형에 다중 요소 인증(MFA)을 구현하여 자격 증명이 손상된 경우에도 무단 액세스를 방지합니다. MFA는 비밀번호 이상의 여러 가지 검증 양식을 요구하여 중요한 보안 계층을 제공합니다. 이 조치는 적대자가 유효한 계정을 남용하여 초기 액세스 권한을 얻거나, 권한을 확대하거나, 지속성을 유지하거나, 네트워크 내의 방어를 회피할 위험을 크게 줄입니다.

비밀번호 정책

기본 사용자 이름 및 암호를 사용하는 애플리케이션과 어플라이언스는 설치 직후, 프로덕션 환경에 배포하기 전에 변경해야 합니다. 가능한 경우 SSH 키를 사용하는 애플리케이션은 주기적으로 업데이트하고 적절히 보호해야 합니다.

정책은 서로 다른 사용자 계정 간에 비밀번호 재사용을 최소화하거나 없애야 하며, 특히 기업 보안 리소스에서 보호되지 않는 개인 계정에 동일한 자격 증명을 사용하는 직원의 경우 더욱 그렇습니다.

특권 계정 관리

특권 계정의 자격 증명을 얻어서 적대자가 광범위한 액세스를 얻을 수 있는 상황을 찾기 위해 정기적으로 도메인 및 로컬 계정과 해당 권한 수준을 감사합니다. 이러한 감사에는 기본 계정이 활성화되었는지 또는 승인되지 않은 새 로컬 계정이 생성되었는지도 포함되어야 합니다. 관리 계층에서 특권 계정 사용을 제한하기 위해 엔터프라이즈 네트워크의 설계 및 관리 모범 사례를 따르세요.

사용자 계정 관리 

정기적으로 사용자 계정의 활동을 감사하고 더 이상 필요하지 않은 계정은 비활성화하거나 제거합니다.

사용자 교육

애플리케이션은 다중 요소 인증(MFA)의 한 형태로 로그인을 확인하기 위해 푸시 알림을 보낼 수 있습니다. 사용자에게 유효한 푸시 알림만 수락하고 의심스러운 푸시 알림을 보고하도록 교육합니다.

 

 

발견

로그온 세션

- 로그온 세션 생성

기존 계정의 자격 증명을 획득하고 이를 초기 액세스, 지속성, 권한 상승 또는 방어 회피 수단으로 남용할 수 있는 새로 구성된 로그인 동작을 모니터링합니다. 다른 보안 시스템을 로그인 정보와 연관시킵니다(예: 사용자가 활성 로그인 세션이 있지만 건물에 들어오지 않았거나 VPN 액세스 권한이 없음).

- 로그온 세션 메타데이터

사용자, 관리자 또는 서비스 계정 등 계정을 공유하는 시스템에서 의심스러운 계정 동작을 찾아보세요. 예: 한 계정이 여러 시스템에 동시에 로그인; 여러 계정이 동일한 컴퓨터에 동시에 로그인; 이상한 시간에 또는 영업 시간 외에 로그인한 계정. 활동은 대화형 로그인 세션에서 발생하거나 특정 계정으로 원격 시스템에서 바이너리를 실행하는 데 사용되는 계정의 프로세스 소유권에서 발생할 수 있습니다.

사용자 계정

- 사용자 계정 인증 

기존 계정의 자격 증명을 얻어 초기 액세스, 지속성, 권한 상승 또는 방어 회피 수단으로 악용하려는 사용자의 시도를 모니터링합니다.

 

 

 

 

'MITRE ATT&CK' 카테고리의 다른 글

발견  (0) 2025.02.18
자격 증명 엑세스  (0) 2025.02.18
권한 상승  (0) 2025.02.18
고집  (0) 2025.02.18
실행  (0) 2025.02.16