티스토리 뷰
Process Injection 는 악성코드에 의해서 사용되며 용도는 다음과 같다.
1. malware 가 더 강력한 은폐 능력을 얻기 위해서
2. AV 같은 보안 제품을 우회하기 위해(예를 들어 네트워크 접속에 대한 권한이 허용된 프로세스에 Injection을 한다면 우회가능)
이 문서의 타겟은 'Windows 10 x64 1803+ 64bit processes' / medium integrity process
(즉 권한 상승이필요한 경우는 제외함)
CFG 그리고 CIG 를 적용한 상태 그리고 적용하지 않은 상태에서 테크닉을 사용해보았음
Injection 기술의 분류
1. Process spawning
이 방식은 정상적인 실행 파일의 프로세스를 생성한 후 이 프로세스를 시작(running)하기 전에 변조하는 것이다. 이러한 방식은 많은 행위 정보를 많이 남길 것이고 이에 따라 은폐력은 별로 좋지 못하다.
2. process 초기화 단계에서 Injection
대표적으로 AppInit DLLs 이 있는데 프로세스가 실행되면서 공격자가 원하는 코드를 로드하게끔 한다. 이 방식은 보통 UAC elevation 이 필요하다. 또한 Extension Point Disable Policy 라는 mitigation에 의해서 차단된다.
3. 실행(running) 중인 프로세스에 Injection 하는 방식
가장 흥미로운 기술로 이 문서에서 다룰 내용
Windows 10 의 등장과 이로인한 지각변동
Windows 10 의 점유율이 높아짐에 따라 process Injection 기술에 큰 영향이 있었다.
x64으로 인한 영향
x86 에서 fastcall 이 아니라면 모든 argument 들은 stack 에 위치했다. 하지만 x64에서는 최초 4개의 인자 값은 레지스터(RCX, RDX, R8 그리고 R9) 에 존재한다. 이 때문에 x64 에서는 페이로드를 만드는 것이 더 힘들다. 함수 실행을 위해서 레지스터를 매번 바꿔줘야한다니 번거롭다! 게다가 POPA instruction 도 없다.
새로운 보안 기능
Win 10 은 새로운 Process Exploit 막는 기술을 소개했다(SetProcessMitigationPolicy API로 컨트롤)
1. CFG(Control Flow Guard)
MS 에서 제공하는 CFI 이다. call 하는 대상을 검증하기 위해 컴파일러가 Indirect CALL/JMP 을 호출하기 전에 _guard_check_icall 을 호출한다. 검증은 모듈별 16byte 길이의 리스트를 통해 이루어진다. 이 때 호출하는 모듈과 호출의 대상이 되는 모듈 둘다 CFG를 지원하는 상태여야 한다.
2. Dynamic Code prevention
이 기능은 process 가 VirtualAlloc 을 PAGE_EXECUTE 옵션을 사용해서 호출한다던가. MapViewOfFile 을 FILE_MAP_EXECUTE 옵션, VirtualProtect 를 PAGE_EXECUTE 옵션으로 호출하는 Native code를 가져오고자 하는 행위를 막는다.
3. Binary Signature Policy(CIG)
MS, MS Store, WHQL 가 서명한 모듈만을 메모리에 로드할 수 있다.
4. Extension Point Disable Policy
프로세스에 Dll 을 로드하는 AppInit Dlls, Winsock LSP, Global Windows Hooks 를 막는다.
또한 자주 injection 대상으로 사용한 explorer.exe와 몇몇 주요한 Windows 프로세스들은 CFG로 보호되고 있다.
본 글에서 다루는 타겟은 다음과 같다.
- Windows 10 x64 at recent build(1803/1809/1903)
- 64bit 프로세스.
- 모든 프로세스는 medium integrity
- 타겟은 이미 실행 중임 위에서 언급했던 '3. 실행(running) 중인 프로세스에 Injection 하는 방식'
- privilege elevation이 필요한 것은 논외로함
- 해당 기술에 대해 CFG, CIG 등 보호기법을 적용한 상태 안한 상태로 해볼 것임
참고자료 : Windows Process Injection in 2019 - Amit Klein, Itzik Kotler Safebreach Labs
'시스템 보안 > 취약점' 카테고리의 다른 글
Windows Process Injection - Evaluating Process injection techinque(Part2) (0) | 2020.06.18 |
---|---|
Heap Chunk (0) | 2018.02.27 |
powershell empire 설치법(ubuntu) (0) | 2017.02.10 |
유형별 정리 (0) | 2017.02.05 |
Format String Bug(포멧 스트링 버그) (0) | 2017.01.14 |
- Total
- Today
- Yesterday
- gdb 명령어
- BP
- module
- 루트킷
- VMware
- 드라이버
- breakpoint
- gdb intel 변환
- 리눅스 모듈
- gdb intel
- 디바이스
- 레거시 드라이버
- DriverEntry
- 모듈
- LKM
- gdb명령어
- backdoor
- Intel
- 변환
- PNP 드라이버
- rootkit
- vmware 오류
- IRP
- GDB
- vmware cannot connect to the virtual machine
- 백도어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |