2024-03-09 13:20:56 +00:00
# マルウェアで使用される一般的なAPI
2024-07-19 16:28:25 +00:00
{% hint style="success" %}
AWSハッキングを学び、実践する: < img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
GCPハッキングを学び、実践する: < img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
2024-07-19 16:28:25 +00:00
< details >
2022-04-28 16:01:33 +00:00
2024-07-19 16:28:25 +00:00
< summary > HackTricksをサポートする< / summary >
2022-04-28 16:01:33 +00:00
2024-07-19 16:28:25 +00:00
* [**サブスクリプションプラン** ](https://github.com/sponsors/carlospolop )を確認してください!
2024-09-04 13:37:26 +00:00
* **💬 [**Discordグループ** ](https://discord.gg/hRep4RUj7f )または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**をフォローしてください。**
2024-07-19 16:28:25 +00:00
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
2022-04-28 16:01:33 +00:00
< / details >
2024-07-19 16:28:25 +00:00
{% endhint %}
2022-04-28 16:01:33 +00:00
2024-03-26 15:55:19 +00:00
## 一般的な
2022-05-01 16:32:23 +00:00
2024-03-09 13:20:56 +00:00
### ネットワーキング
2020-12-03 18:00:02 +00:00
2024-07-19 16:28:25 +00:00
| 生のソケット | WinAPIソケット |
2021-10-18 11:21:18 +00:00
| ------------- | -------------- |
| 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:56 +00:00
### 永続性
2020-12-03 18:00:02 +00:00
2024-07-19 16:28:25 +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:56 +00:00
### 暗号化
2020-12-03 18:00:02 +00:00
2024-02-09 02:33:52 +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-07-19 16:28:25 +00:00
### 逆解析/VM
2020-12-03 18:00:02 +00:00
2024-02-09 02:33:52 +00:00
| 関数名 | アセンブリ命令 |
2024-07-19 16:28:25 +00:00
| --------------------------------------------------- | --------------------- |
| IsDebuggerPresent() | CPUID() |
| GetSystemInfo() | IN() |
2024-09-04 13:37:26 +00:00
| GlobalMemoryStatusEx() | |
| GetVersion() | |
2024-07-19 16:28:25 +00:00
| CreateToolhelp32Snapshot \[プロセスが実行中か確認\] | |
| CreateFileW/A \[ファイルが存在するか確認\] | |
2020-12-03 18:00:02 +00:00
2024-03-09 13:20:56 +00:00
### ステルス
2020-12-03 18:00:02 +00:00
2024-02-09 02:33:52 +00:00
| 名前 | |
2021-10-18 11:21:18 +00:00
| ------------------------ | -------------------------------------------------------------------------- |
2024-07-19 16:28:25 +00:00
| VirtualAlloc | メモリを割り当てる(パッカー) |
| VirtualProtect | メモリの権限を変更する(パッカーがセクションに実行権限を与える) |
| ReadProcessMemory | 外部プロセスへの注入 |
| WriteProcessMemoryA/W | 外部プロセスへの注入 |
2021-10-18 11:21:18 +00:00
| NtWriteVirtualMemory | |
2024-07-19 16:28:25 +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:56 +00:00
### 実行
2020-12-03 18:00:02 +00:00
2024-02-09 02:33:52 +00:00
| 関数名 |
2024-07-19 16:28:25 +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:56 +00:00
### その他
2020-12-03 18:00:02 +00:00
2023-07-07 23:42:27 +00:00
* GetAsyncKeyState() -- キーロギング
* SetWindowsHookEx -- キーロギング
2024-07-19 16:28:25 +00:00
* GetForeGroundWindow -- 実行中のウィンドウ名を取得(またはブラウザからのウェブサイト)
* LoadLibrary() -- ライブラリをインポート
* GetProcAddress() -- ライブラリをインポート
* CreateToolhelp32Snapshot() -- 実行中のプロセスをリスト
2023-07-07 23:42:27 +00:00
* GetDC() -- スクリーンショット
* BitBlt() -- スクリーンショット
2024-07-19 16:28:25 +00:00
* InternetOpen(), InternetOpenUrl(), InternetReadFile(), InternetWriteFile() -- インターネットにアクセス
* FindResource(), LoadResource(), LockResource() -- 実行可能ファイルのリソースにアクセス
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
## マルウェア技術
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
### DLL注入
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
別のプロセス内で任意のDLLを実行する
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
1. 悪意のあるDLLを注入するプロセスを特定する: CreateToolhelp32Snapshot, Process32First, Process32Next
2. プロセスを開く: GetModuleHandle, GetProcAddress, OpenProcess
3. プロセス内にDLLのパスを書く: VirtualAllocEx, WriteProcessMemory
4. 悪意のあるDLLをロードするスレッドをプロセス内に作成する: CreateRemoteThread, LoadLibrary
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
使用する他の関数: NTCreateThreadEx, RtlCreateUserThread
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
### 反射DLL注入
2021-09-07 00:15:14 +00:00
2024-03-24 13:42:44 +00:00
通常のWindows API呼び出しを行わずに悪意のあるDLLをロードする。\
2024-07-19 16:28:25 +00:00
DLLはプロセス内にマッピングされ、インポートアドレスを解決し、リロケーションを修正し、DllMain関数を呼び出す。
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
### スレッドハイジャック
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
プロセスからスレッドを見つけて悪意のあるDLLをロードさせる
2024-01-09 13:00:50 +00:00
2024-09-04 13:37:26 +00:00
1. ターゲットスレッドを見つける: CreateToolhelp32Snapshot, Thread32First, Thread32Next
2024-02-09 02:33:52 +00:00
2. スレッドを開く: OpenThread
2024-03-24 13:42:44 +00:00
3. スレッドを一時停止する: SuspendThread
2024-07-19 16:28:25 +00:00
4. 被害者プロセス内に悪意のあるDLLのパスを書く: VirtualAllocEx, WriteProcessMemory
2024-03-24 13:42:44 +00:00
5. ライブラリをロードするスレッドを再開する: ResumeThread
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
### PE注入
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
ポータブル実行注入:実行可能ファイルは被害者プロセスのメモリに書き込まれ、そこから実行される。
2023-09-03 01:45:18 +00:00
2024-07-19 16:28:25 +00:00
### プロセスホロウイング
2021-09-07 00:15:14 +00:00
2024-07-19 16:28:25 +00:00
マルウェアはプロセスのメモリから正当なコードをアンマップし、悪意のあるバイナリをロードする
2024-02-09 02:33:52 +00:00
2024-03-24 13:42:44 +00:00
1. 新しいプロセスを作成する: CreateProcess
2024-07-19 16:28:25 +00:00
2. メモリをアンマップする: ZwUnmapViewOfSection, NtUnmapViewOfSection
3. プロセスメモリに悪意のあるバイナリを書く: VirtualAllocEc, WriteProcessMemory
4. エントリポイントを設定し、実行する: SetThreadContext, ResumeThread
2021-09-07 00:15:14 +00:00
2024-03-09 13:20:56 +00:00
## フック
2021-09-07 00:15:14 +00:00
2024-09-04 13:37:26 +00:00
* **SSDT**( **システムサービス記述子テーブル**) はカーネル関数( ntoskrnl.exe) またはGUIドライバ( win32k.sys) を指し、ユーザープロセスがこれらの関数を呼び出すことができる。
2024-07-19 16:28:25 +00:00
* ルートキットはこれらのポインタを制御するアドレスに変更することがある。
2024-09-04 13:37:26 +00:00
* **IRP**( **I/Oリクエストパケット**) は、あるコンポーネントから別のコンポーネントにデータの断片を送信する。カーネル内のほぼすべてのものがIRPを使用し、各デバイスオブジェクトにはフック可能な独自の関数テーブルがある: DKOM( ダイレクトカーネルオブジェクト操作)
2024-07-19 16:28:25 +00:00
* **IAT**( **インポートアドレステーブル**)は依存関係を解決するのに役立つ。このテーブルをフックして呼び出されるコードをハイジャックすることが可能。
* **EAT**( **エクスポートアドレステーブル**)フック。このフックは**ユーザーランド**から行うことができる。目的はDLLによってエクスポートされた関数をフックすること。
2024-09-04 13:37:26 +00:00
* **インラインフック**:このタイプは達成が難しい。関数自体のコードを修正することを含む。おそらく、最初にジャンプを置くことによって。
2024-03-14 23:41:41 +00:00
2024-07-19 16:28:25 +00:00
{% hint style="success" %}
AWSハッキングを学び、実践する: < img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > [**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)< img src = "/.gitbook/assets/arte.png" alt = "" data-size = "line" > \
GCPハッキングを学び、実践する: < img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > [**HackTricks Training GCP Red Team Expert (GRTE)**< img src = "/.gitbook/assets/grte.png" alt = "" data-size = "line" > ](https://training.hacktricks.xyz/courses/grte)
2024-03-14 23:41:41 +00:00
< details >
2024-07-19 16:28:25 +00:00
< summary > HackTricksをサポートする< / summary >
2024-03-14 23:41:41 +00:00
2024-07-19 16:28:25 +00:00
* [**サブスクリプションプラン** ](https://github.com/sponsors/carlospolop )を確認してください!
2024-09-04 13:37:26 +00:00
* **💬 [**Discordグループ** ](https://discord.gg/hRep4RUj7f )または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live** ](https://twitter.com/hacktricks\_live )**をフォローしてください。**
2024-07-19 16:28:25 +00:00
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
2024-03-14 23:41:41 +00:00
2024-07-19 16:28:25 +00:00
< / details >
{% endhint %}