# マルウェアで使用される一般的なAPI
htARTE(HackTricks AWS Red Team Expert)を使って、AWSハッキングをゼロからヒーローまで学ぶ!
HackTricksをサポートする他の方法:
- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](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)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリに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() |
### 反解析/VM
| 関数名 | アセンブリ命令 |
| ------------------------------------------------- | ------------- |
| 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を実行
1. 悪意のあるDLLをインジェクトするプロセスを特定する:CreateToolhelp32Snapshot、Process32First、Process32Next
2. プロセスを開く:GetModuleHandle、GetProcAddress、OpenProcess
3. DLLへのパスをプロセス内に書き込む:VirtualAllocEx、WriteProcessMemory
4. 悪意のあるDLLをロードするプロセス内のスレッドを作成する:CreateRemoteThread、LoadLibrary
その他の使用する関数:NTCreateThreadEx、RtlCreateUserThread
### 反射型DLLインジェクション
通常のWindows API呼び出しを行わずに悪意のあるDLLをロードする。\
DLLはプロセス内にマップされ、インポートアドレスを解決し、再配置を修正し、DllMain関数を呼び出す。
### スレッドハイジャッキング
プロセスからスレッドを見つけ、悪意のあるDLLをロードさせる
1. ターゲットスレッドを見つける:CreateToolhelp32Snapshot、Thread32First、Thread32Next
2. スレッドを開く:OpenThread
3. スレッドを一時停止する:SuspendThread
4. 被害者プロセス内に悪意のあるDLLへのパスを書き込む:VirtualAllocEx、WriteProcessMemory
5. ライブラリをロードするスレッドを再開する:ResumeThread
### PEインジェクション
Portable Execution Injection:実行可能ファイルが被害者プロセスのメモリに書き込まれ、そこから実行される。
### プロセスホローイング
マルウェアはプロセスのメモリから正規のコードをアンマップし、悪意のあるバイナリをロードする
1. 新しいプロセスを作成する:CreateProcess
2. メモリをアンマップする:ZwUnmapViewOfSection、NtUnmapViewOfSection
3. プロセスメモリに悪意のあるバイナリを書き込む:VirtualAllocEc、WriteProcessMemory
4. エントリポイントを設定して実行する:SetThreadContext、ResumeThread
## フック
* **SSDT**(**System Service Descriptor Table**)はカーネル関数(ntoskrnl.exe)またはGUIドライバ(win32k.sys)を指し示し、ユーザープロセスがこれらの関数を呼び出すことができるようにします。
* ルートキットはこれらのポインタを制御するアドレスに変更する可能性があります
* **IRP**(**I/O Request Packets**)はデータの断片を1つのコンポーネントから別のコンポーネントに転送します。カーネルのほとんどすべてが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で企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](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)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* **HackTricks** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。**