Home 침해사고 침투 방법 및 분석 방법
Post
Cancel

침해사고 침투 방법 및 분석 방법

APT 침해사고 분석

아티팩트에 근거한 악성코드 감염 경로 분석이 필요하다. 예를 들어 공격자가 작성했던 Exploit 명령어, 트래픽 등을 추적하고, 악성코드 감염 과정에서 삭제된 파일 탐색 및 복구를 하거나 유출된 파일을 아티팩트에 근거하여 파악해야한다.

1. 공격자의 공격 기법

각종 Exploit 기법으로 브라우저나 문서파일 악성코드 형식으로 들어온다. 이 각 Exploit 과정에서 아티팩트를 추출하고 분석해야 한다. 트래픽 분석을 통해서 침입 경로도 파악할 수 있다.

Dll injectoin

최초 침투 과정에서 브라우저 Exploit을 하고, 스피어 피싱 과정에서 문서 파일 취약점 및 Exploit을 한다. 파일 다운로드 및 실행 권한을 획득하여 사용하게 된다.

권한 상승 과정에서 UAC Bypass 가 있고, LPE Exploit -> Normal User -> System Account(Administrator)을 한다

공격 행위를 유지하기 위해 추가적으로 계정을 생성하고, 드로퍼를 활용하여 파일을 다운로드 힌다. Backdoor, RAT 설치 및 기타 악성코드를 실행하여 공격행위를 유지한다.

Injection

  • Process Spawning Point Injection : Process가 생성될 시점에 Injection 되는 것을 말한다
  • Process Entry Point INjection : Process 메모리 시작 부분에 Injection하는 것으로 가장 많이 사용된다.
  • True Process Injection : Process 구동 과정 중 Injection 된다
  • 윈도우에서는 프로세스 마다 권한을 갖고 있기 때문에 프로세스마다 점유된 메모리를 침범하여 A프로세스가 가지고 있던 권한을 B가 그대로 사용할 수 있게된다.

Windows 10에 도입된 Process Exploitation 방지책

  1. CFG(Control Flow Guard)
    • 컴파일에서 각각의 Call/JMP 명령을 _guard_check_incall()로 돌려 프로세스 자체의 유효성을 검증한다.
    • 유효성은 모듈마다 존재하는 16 바이트 정렬 리스트에서 탐색한다
    • 사용하려면 call 모듈로 call 되는 모듈 모두 CFG를 지원해야 한다.
  2. Dynamic Code Prevention
    • PAGE_EXECUTE_가 있는 VirtualAlloc(), FILE_MAP_EXECUTE 옵션이 있는 MapViewOfFile(), PAGE_EXECUTE_가 있는 VirtualProtect()의 call 프로세스와, SetProcessValidCallTargets()를 통한 CFG 비트맵 조작을 방지한다.
  3. Binary Signature Policey
    • Microsoft/Microsoft Store/WHQL에서 인증받은 모듈만 프로세스 메로리에 로드한다
  4. Extensions Point Disable Policy
    • Process Space로 DLL을 로드하는 확장자들을 비활성한다.

Process Injection 기법 시험

  • dll injection 은 다른 프로세스에 침투하는 방법으로 다른 프로세스에 특정 dll을 강제로 삽입시키는 것이다. 더 정확하게 표현하면 다른 프로세스에게 LoadLibrary() API를 호출하도록 명령하여 내가 원하는 DLL을 로딩 시키는 것이다. 로딩된 DLL은 프로세스 메모리에 대한 접근 권한이 생겼기 때문에 사용자가 원하는 어떤 일이라도 수행할 수 있다.
  1. Bypass Windows Protection Mechanism
    • Target Process 임의 주소를 Write Listening(CFG 관점)하기 위해 SetProcessVaildCallTargets() API를 사용한다.
    • Winodws 10 1803에서는 CFG를 제외한 다른 보안 방안들을 무력화 가능한 방법 존재
    • MS는 Process 자체에 이런 기능들을 On/Off 할 수 있는 SetProcessMitigationPolicy() API 제공,
    • SetProcessMitigationPolicy()는 파라미터 3개를 사용하는데, 이 API는 ntdll!NtQueueApcThread로 원격 작동시켜 CFG를 oFF 할 수 있다.
    1. 메모리 할당
    2. 메모리에 쓰기
    3. 실행 이 순서가 반드시 모두 실행되는 것이 아니며, 순서없이 실행되거나 여러번 실행될 수 있음
  2. Injection Exploit 기법
    • WriteProcessMemory() write prijmitive : 가장 오래되었으나 가장 많이 사용된다. a. Target address 가 할당되어 있어야 한다. b. 메모리에 코드나 데이터를 Write 한다
    • 사전 요구사항 없고, 한계도 없다. CFG/CIG 영향도 없고, 주소를 통제하고 안저적이다
  • Class DLL Injection (과거에 많이 쓰였고, 현재는 거의 쓰지 않는다) a. DLL을 만들어 디스크에 작성 : DllMain에는 bootstap payload가 있어야 한다
    b. Write primitive를 이용하여 DLL 경로 문자열을 메모리에 Write
    c. CreateRemoteThread()를 이용하여 DLL Load/Execute
    d. 변형1 : CreateRemoteThread() 대신 QueueUserAPC() 이용가능
    e. 변형2 : Null-terminated 문자열을 찾아 그곳에 DLL을 넣어서 실행
  • 사전요구사항은 디스크에 이미 존재하는 DLL, Memory write primitive
  • CIG에서 MS 인증이 없는 DLL 실행 시 Error 메시지를 띄운다
  • 레지스터에 대한 통제는 없지만 별 문제가 없다.

워터링홀

노조 홈페이지에 웹 쉘 업로드 후 메인 페이지에 악성 스크립트 삽입 (Active X 취약점을 이용한 워터링 홀 공격 )

pos 단말기 취약점


Refference

This post is licensed under CC BY 4.0 by the author.

리눅스 침해사고 분석

TTP 기반 공격 행위 분석에 대해서