实战DLL注入
2022-8-29 17:59:13 Author: 看雪学苑(查看原文) 阅读量:6 收藏


本文为看雪论坛优秀文章

看雪论坛作者ID:wx_Niatruc


摘要


直接注入

1、OpenProcess打开目标进程(一参为PROCESS_CREATE_THREAD|PROCESS_QUERY_INFORMATION|PROCESS_VM_OPERATION|PROCESS_VM_WRITE| PROCESS_VM_READ, 后面CreateRemoteThread才能执行)。

需要给进程提权, 得到SeDebug权限。


    反射式注入(reflective injection)

    // shellcode函数void shellcodeFunc(PMY_PARAMS pParams) {    // pParams保存LdrLoadDll等系统api的内存地址    // 用NtAllocateVirtualMemory在目标进程中开辟一块内存(需指定PAGE_EXECUTE_READWRITE权限)    // 将dll的文件内容写入开辟的内存    // 修复导入表; 重定位    // 执行dll的入口函数DLLMain} DWORD size = 0, ssss=0; // 获取jmp指令后的双字操作数(即jmp的目的地址偏移)DWORD* jmpAddr = (DWORD*) ((BYTE*) shellcodeFunc + 1); // 加5得到jmp指令的下一条指令地址, 然后加上jmp的目的地址偏移, 得到函数体的实际起始地址WORD* Memx0 = (WORD*) ((BYTE*) shellcodeFunc + 5 + *jmpAddr);LONG_PTR* Memx = (LONG_PTR*) Memx0; // 用0xCCCCCCCCCCCCCCCC作为函数体结束识别标识.while (*Memx != 0xCCCCCCCCCCCCCCCC) {    Memx++;    size += 8;} // 将shellcode写入文件HANDLE hFile = CreateFile(LOADECODE, GENERIC_ALL, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, NULL, NULL);if (hFile) {    WriteFile(hFile, Memx0, size, &ssss, NULL);    CloseHandle(hFile);}
    仅枚举进程模块列表并不能发现注入的dll。


    镂空(hollowing):

    看雪ID:wx_Niatruc

    https://bbs.pediy.com/user-home-873582.htm

    *本文由看雪论坛 wx_Niatruc 原创,转载请注明来自看雪社区

    # 往期推荐

    1.某车联网APP加固分析

    2.House of cat新型glibc中IO利用手法解析 & 第六届强网杯House of cat详解

    3.实现一个压缩壳,并给它加点“料”

    4.formbook脱壳记

    5.CVE-2021-1732提权漏洞学习笔记

    6.带加密字符串的.NET样本分析的一些技巧

    球分享

    球点赞

    球在看

    点击“阅读原文”,了解更多!


    文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458465984&idx=1&sn=81a0007f90a57434b1a78cbd508020f2&chksm=b18e064a86f98f5c98ea12c3d02efab9fceac732b444dd517e446839750304d98e3f6c637d42#rd
    如有侵权请联系:admin#unsafe.sh