본문 바로가기
보안/보안공부

23년 실전형사이버훈련장 - 위협이벤트 식별훈련(5일차)

by 보안매크로 2023. 6. 23.
728x90

오늘날의 악성코드는 프로세스 인젝션이라는 기법을 사용해 자신들의 존재를 숨기고 목표를 달성하고자 한다.

Top 10 공격 기법들 인터넷 검색하면 알 수 있다.

 

프로세스 인젝션

- 별도의 프로세스를 생성하지 않고 악성 행위를 위한 코드를 다른 프로세스에 주입하여 실행

많은 종류가 있다.

대표적으로 CreateRemoteThread, 

 

-CreateRemoteThread

CreateRemoteThread함수는 

악성코드가 VirtualAllocEX()함수를 호출해 타겟 프로세스 메모리에 새로운 메모리 영역 할당 ->  WriteProcessMemory()를 이용해 c2에서 네트워크에서, 레지스트리, 파일형태(미리 숨겨두거나 암호화 해둠) 등 에서 코드(파일을 가져옴)를 쓸 수 있다. 메모리에만 존재해 컴퓨터를 끄면 사라짐(하드디스크에 저장안됨) V3는 레지스트리 같은 곳은 조사 안함.

CreateRemoteThread()를 이용해  쓰레드에게 실행시킬 코드가 있는 곳의 주소를 알려주고 쓰레드(일꾼)가 실행 시킴.

즉, 메모리 할당, 파일 넣고, 실행 하는 것임.

 

-CreateRemoteThread를 이용한 DLL 인젝션

 DLL 주입해 실행시킴, 똑같이 메모리 할당 -> 코드를 주입하는게 아닌 삽입할 DLL의 이름을 메모리 영역에 기록 -> 쓰레드를 만들어 KERNEL32!lOADlIBRARY()를 실행(dll 로딩하는 함수임, DLL이름이 저장된 메모리 주소의 주소를 알려주면 쓰레드가 지정된 주소로가서 해당 dll파일을 로딩함(업로드됨)), 이 기법은 하드디스크에 악성DLL이 있어야만 가능. 하드디스크에 기록하면 탐지가 잘되니 다른방법 사용하기 시작

 메모리에 있는 dll 파일을 로딩해서 주입하기 시작. 리플렉티브 DLL 인젝션(Reflective DLL Injection)이다.

실행파일을 메모리에 로딩하는 애가 Roader임. Roader을 구현하는 ntdll.dll에 있는 Roader함수를 사용해 로딩작업을 하는것. 파일형태의 DLL을 메모리에 로딩하는 친구다. 메모리에 존재하는 DLL을 어떻게 로딩을 할 수 있냐(코드 짜야함)가 중요함.

 

CreateRemoteThread,

csrss.exe가 오탐유발. 기관총마냥 정상적인 놈인데 짱많음

 

프로세스 인젝션의 주된 목적 - 방어우회(탐지우회, 은닉, 접근통제 우회), 데이터 탈취

dllhost.exe - dll을 불러오는 등 호스팅해줌. 가끔 dll파일이 실행이 안되어 안정성을 높이기 위해 만들어짐. 짧게 자주 호출되고 종료되어 관리자 눈을 피하기 쉽다.

 

기능적으로 주입이 필요한 대상 - A에서 B를 컨트롤할려면 B의 일부가 되어야해서 코드를 주입해 그 일부가 되어 메모리 접근 등 시도한다. OS가 막고있어 B의 일부가 되어야함.

 

프린터 스풀 - 프린터는 메모리 용량등 한계가 있기에 내가 1,2,3,4,5,6,7를 프린트하라고해도 한번에 못한다. 그래서 이 순서를 접수하는 것이 스풀이다.

 

운영체제 관점에서 디버깅은, 프로세스 A(디버거)가 프로세스 B(디버기)를 확인하고, 점검하고, 조종함

 

우리가 메모리를 어느 주소에 할당하면, 운영체제를 거쳐 운영체제는 아무곳에나 두고(실제 그 주소가 아님) 표시만 그 주소라고 우리를 속이는 것.

 

exploror.exe가 있으면 더블클릭해서 실행한 것?

 

스타트 펑션 - loadlibrary

 

하야부시 명령

.\hayabusa.exe csv-timeline -f C:\Users\COMTREE\Downloads\apt10.evtx -r C:\Kim\6.23.yml -o C:\Users\COMTREE\Downloads\result\saved_1.csv

 

 

WMI(Windows Management Instrumentation)

- 윈도우 운영체제에서 시스템 관련 다양한 데이터의 관리 및 작업을 위해 사용하고 있는 인프라 기술

 

주요 공격 탐지

ActiveScriptEventConsumer

CommandLineEventConsumer

CommandLineTemplate

728x90