mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
9 KiB
9 KiB
악성 소프트웨어에서 사용되는 일반 API
htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 영웅까지 AWS 해킹 배우기
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 PDF 형식의 HackTricks를 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 굿즈 구매
- The PEASS Family를 발견하세요. 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
일반
네트워킹
Raw Sockets | WinAPI Sockets |
---|---|
socket() | WSAStratup() |
bind() | bind() |
listen() | listen() |
accept() | accept() |
connect() | connect() |
read()/recv() | recv() |
write() | send() |
shutdown() | WSACleanup() |
지속성
레지스트리 | 파일 | 서비스 |
---|---|---|
RegCreateKeyEx() | GetTempPath() | OpenSCManager |
RegOpenKeyEx() | CopyFile() | CreateService() |
RegSetValueEx() | CreateFile() | StartServiceCtrlDispatcher() |
RegDeleteKeyEx() | WriteFile() | |
RegGetValue() | ReadFile() |
암호화
이름 |
---|
WinCrypt |
CryptAcquireContext() |
CryptGenKey() |
CryptDeriveKey() |
CryptDecrypt() |
CryptReleaseContext() |
안티-분석/가상 머신
함수 이름 | 어셈블리 명령어 |
---|---|
IsDebuggerPresent() | CPUID() |
GetSystemInfo() | IN() |
GlobalMemoryStatusEx() | |
GetVersion() | |
CreateToolhelp32Snapshot [프로세스 실행 여부 확인] | |
CreateFileW/A [파일 존재 여부 확인] |
은신
이름 | |
---|---|
VirtualAlloc | 메모리 할당 (패커) |
VirtualProtect | 메모리 권한 변경 (패커가 섹션에 실행 권한 부여) |
ReadProcessMemory | 외부 프로세스에 주입 |
WriteProcessMemoryA/W | 외부 프로세스에 주입 |
NtWriteVirtualMemory | |
CreateRemoteThread | DLL/프로세스 주입... |
NtUnmapViewOfSection | |
QueueUserAPC | |
CreateProcessInternalA/W |
실행
함수 이름 |
---|
CreateProcessA/W |
ShellExecute |
WinExec |
ResumeThread |
NtResumeThread |
기타
- GetAsyncKeyState() -- 키 로깅
- SetWindowsHookEx -- 키 로깅
- GetForeGroundWindow -- 실행 중인 창 이름(또는 브라우저의 웹사이트) 가져오기
- LoadLibrary() -- 라이브러리 가져오기
- GetProcAddress() -- 라이브러리 가져오기
- CreateToolhelp32Snapshot() -- 실행 중인 프로세스 목록
- GetDC() -- 스크린샷
- BitBlt() -- 스크린샷
- InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- 인터넷 액세스
- FindResource(), LoadResource(), LockResource() -- 실행 파일의 리소스 액세스
악성 소프트웨어 기법
DLL 주입
다른 프로세스 내에서 임의의 DLL을 실행
- 악성 DLL을 주입할 프로세스 찾기: CreateToolhelp32Snapshot, Process32First, Process32Next
- 프로세스 열기: GetModuleHandle, GetProcAddress, OpenProcess
- DLL 경로를 프로세스 내부에 쓰기: VirtualAllocEx, WriteProcessMemory
- 악성 DLL을 로드할 프로세스 내 스레드 생성: CreateRemoteThread, LoadLibrary
사용할 다른 함수: NTCreateThreadEx, RtlCreateUserThread
반사적 DLL 주입
일반 Windows API 호출을 하지 않고 악성 DLL을 로드합니다.
DLL은 프로세스 내에 매핑되며, 가져오기 주소를 해결하고 재배치를 수정하고 DllMain 함수를 호출합니다.
스레드 하이재킹
프로세스에서 스레드를 찾아 악성 DLL을 로드하도록 만듭니다.
- 대상 스레드 찾기: CreateToolhelp32Snapshot, Thread32First, Thread32Next
- 스레드 열기: OpenThread
- 스레드 일시 중지: SuspendThread
- 피해 프로세스 내 악성 DLL 경로 쓰기: VirtualAllocEx, WriteProcessMemory
- 라이브러리를 로드하는 스레드 재개: ResumeThread
PE 주입
포터블 실행 주입: 실행 파일이 피해 프로세스의 메모리에 작성되고 그곳에서 실행됩니다.
프로세스 할로잉
악성 코드를 메모리에서 합법적인 코드를 언매핑하고 로드합니다.
- 새 프로세스 생성: CreateProcess
- 메모리 언매핑: ZwUnmapViewOfSection, NtUnmapViewOfSection
- 악성 이진 파일을 프로세스 메모리에 쓰기: VirtualAllocEc, WriteProcessMemory
- 진입점 설정 및 실행: SetThreadContext, ResumeThread
후킹
- SSDT (System Service Descriptor Table)는 사용자 프로세스가 커널 함수 (ntoskrnl.exe) 또는 GUI 드라이버 (win32k.sys)를 호출할 수 있도록 하는 테이블을 가리킵니다.
- 루트킷은 이러한 포인터를 자신이 제어하는 주소로 수정할 수 있습니다.
- IRP (I/O Request Packets)는 데이터 조각을 한 구성 요소에서 다른 구성 요소로 전송합니다. 커널의 거의 모든 것이 IRP를 사용하며 각 장치 객체에는 후킹할 수 있는 자체 함수 테이블이 있습니다: DKOM (Direct Kernel Object Manipulation)
- IAT (Import Address Table)은 종속성을 해결하는 데 유용합니다. 호출될 코드를 탈취하기 위해 이 테이블을 후킹할 수 있습니다.
- EAT (Export Address Table) 후킹. 이러한 후킹은 사용자 공간에서 수행할 수 있습니다. 목표는 DLL에 의해 내보낸 함수를 후킹하는 것입니다.
- 인라인 후킹: 이 유형은 어렵습니다. 이는 함수 코드 자체를 수정하는 것을 포함합니다. 아마도 이를 위해 시작 부분에 점프를 넣는 것일 수 있습니다.
Try Hard Security Group
{% embed url="https://discord.gg/tryhardsecurity" %}
htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 영웅까지 AWS 해킹 배우기
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 PDF 형식의 HackTricks를 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 굿즈 구매
- The PEASS Family를 발견하세요. 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @carlospolopm를 팔로우하세요.