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