PowerShell로부터 실행되는 .NET Injector의 변형

남혜리·2022년 8월 13일
0

해킹기법

목록 보기
4/7

Delphi Loader 바이너리(인젝션 데이터) 저장 방식 변화

기존에는 다음과 같이 Delphi Loader 바이너리를 Base64 인코딩 후 거꾸로 뒤집은 값으로 저장했으나 2020년 10월 12일 확인된 변형에서는 단순 치환 방식을 사용하여 저장한다. “1000” 값을 “!@#” 등의 문자열로 치환하였다. 이후 치환 문자열은 “$%^” 등으로 변형되기도 하였다. (20.11.28)

인젝션 방식의 변형

.NET Injector가 인젝션하는 Delphi Loader 바이너리는 기존 DLL 포멧에서 EXE 포멧으로 변경되었다. 따라서 해당 바이너리를 인젝션하는 방식 또한 변경되었는데, 기존에는 Dll Injection 기법을 사용했다면 변형 이후에는 Process Hollowing 기법을 사용한다.

기존에는 자신이 로드된 프로세스(powershell.exe)에 가상 메모리를 할당하여 Delphi Loader 바이너리를 삽입하고 DllEntryPoint() 함수의 주소를 찾아 직접 실행하는 방식이었다. 2020년 10월 12일 확인된 변형에서는 별도의 프로세스를 Suspend 상태로 생성한 뒤 Delphi Loader의 프로세스 메모리 구조를 인젝션 후 Resume하는 전형적인 Process Hollowing 방식으로 변형되었다.

인젝션 대상 프로세스 변형

변형 초기에는 자신과 동일한 프로세스를 생성한 뒤 인젝션하였다. 따라서 인젝션 대상 프로세스는 powershell.exe 이었다. 현재는 SysWow64 디렉토리에 존재하는 특정 exe 파일을 실행 후 인젝션한다. 실행되는 프로세스의 Path는 하드코딩 되어있다. 인젝션 코드상으로는 x64 x86 아키텍처 별로 예외처리가 구성되어 있으나 프로세스 경로를 하드코딩하면서 x64 환경의 시스템만 감염 대상이 되었다. 인젝션 대상 프로세스는 아래와 같이 지속적으로 변형되고 있다. 프로세스 트리구조에 변화를 주기 위함으로 판단된다. V3 제품에서는 프로세스명과 상관 없이 차단 가능하다.

profile
고장나지 않은

0개의 댓글