首页
论坛
课程
招聘
[求助]内存dll的远程线程注入,如何使用MemoryModule开源库?
2018-2-4 21:03 6961

[求助]内存dll的远程线程注入,如何使用MemoryModule开源库?

2018-2-4 21:03
6961
思路:把dll文件放到exe的资源文件里,使用MemoryModule加载到内存,远程注入到其他软件的进程里,注射完exe关闭,这样本地和其他软件的进程中就不会查到dll,从而做到隐藏运行。
在VS2015中把DLL以资源的方式加入EXE工程文件,然后直接加载到内存,用CreateRemoteThread注入到远程进程中,使用的是开源库MemoryModule加载DLL到内存中的,不知道怎么使用MemoryLoadLibrary这个函数?
PTHREAD_START_ROUTINE  lpStartAddr = PTHREAD_START_ROUTINE((int)MemoryLoadLibrary);
if (!lpStartAddr)
{
MessageBox(NULL, TEXT("GetProcAddress失败!"), TEXT("LOG"), MB_OK);
return FALSE;
}
hThread = CreateRemoteThread(hProcess, NULL, 0, lpStartAddr, lpBufAddr, 0, &dwThreadID);
if (!hThread)
{
MessageBox(NULL, TEXT("CreateRemoteThread失败!"), TEXT("LOG"), MB_OK);
return FALSE;
}

第五届安全开发者峰会(SDC 2021)议题征集正式开启!

最后于 2018-8-11 22:17 被hayde编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (23)
雪    币: 51
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LYQINGYE 活跃值 2018-2-4 21:06
2
0
MemoryLoadLibrary(filedll_data,data_size)
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hayde 活跃值 2018-2-4 22:05
3
0
怎么和CreateRemoteThread结合使用呢?
雪    币: 5
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
夏船长 活跃值 2018-2-4 22:49
4
0
MemoryLoadLibrary返回的是HMODULE吧,不是函数地址
雪    币: 2200
活跃值: 活跃值 (188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
youxiaxy 活跃值 2018-2-5 10:40
5
1
远程 需要处理很多东西,比如重定位,之类的。这是 网上 流传的  提取出来的shellcode ,把shellcode和dll数据写入对方进程  然后远程线程 去 call shellcode。 load一个参数 内存地址,free 一个参数,    这俩可以直接 call,      getproc 俩参数 句柄,名字。注意名字  要写入对方进程 才行。  。需要构造 call 代码并写入 
上传的附件:
雪    币: 1689
活跃值: 活跃值 (499)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
StriveXjun 活跃值 2018-2-5 16:09
6
0
这个库好low啊,异常都不支持。
内存注入你可以用下github有个叫反射注入的
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hayde 活跃值 2018-2-5 22:22
7
0
StriveXjun 这个库好low啊,异常都不支持。 内存注入你可以用下github有个叫反射注入的
各有各的优点,反射式注入的DLL必须是自己特定编译,带自我加载功能的,而我说的这个是不需要对DLL做任何处理的,可以操作任意普通DLL
雪    币: 36
活跃值: 活跃值 (239)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
芃杉 活跃值 2018-2-5 22:39
8
0
mark
雪    币: 1689
活跃值: 活跃值 (499)
能力值: ( LV3,RANK:35 )
在线值:
发帖
回帖
粉丝
StriveXjun 活跃值 2018-2-6 20:20
9
0
hayde 各有各的优点,反射式注入的DLL必须是自己特定编译,带自我加载功能的,而我说的这个是不需要对DLL做任何处理的,可以操作任意普通DLL
如果不是自己的DLL,我有2种思路
1.去编译一份反射注入的DLL,把shellcode扣下来,做成一个区段,补到你要注入的DLL上去。    缺点不支持加壳程序
2.估计就是你想要的内存注入。  这个方法难点是  让目标进程加载起来  注入DLL的导入表依赖库。 
先申请远程内存,用这个地址,在本进程    镜像对齐、重定位、修复导入表这些就不用说把。
重点来了:  你要写一段shellcode在  调用dllmain前面载入这个DLL的依赖库,或者你用远程线程注入的方法把每个依赖库都加载起来(不推荐这种方法)。
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hayde 活跃值 2018-2-7 17:57
10
0
已删除
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hayde 活跃值 2018-2-7 17:58
11
0
hayde 其实我就是想知道我现在已经把EXE资源文件中的dll用MemoryModule加载到了内存,我该怎么使用CreateRemoteThread做线程注入
已删除
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hayde 活跃值 2018-2-7 17:59
12
0
已删除
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hayde 活跃值 2018-2-7 17:59
13
0
StriveXjun 如果不是自己的DLL,我有2种思路 1.去编译一份反射注入的DLL,把shellcode扣下来,做成一个区段,补到你要注入的DLL上去。 缺点不支持加壳程序 2.估计就是你想要的内存注入。 这个 ...
其实我就是想知道我现在已经把EXE资源文件中的dll用MemoryModule加载到了内存,我该怎么使用CreateRemoteThread做线程注入
雪    币: 51
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
LYQINGYE 活跃值 2018-2-7 18:47
14
0
那就用这个shellcode  吧  ,实在有其它需求就自己改改吧  http://www.mengwuji.net/thread-2825-1-1.html
雪    币: 211
活跃值: 活跃值 (403)
能力值: ( LV13,RANK:405 )
在线值:
发帖
回帖
粉丝
sudozhange 活跃值 5 2018-2-7 19:45
15
0
去找DLL的入口点地址,作为线程函数,MemoryModule这个库的实现,和反射式注入很像,不同的就在于映射到内存,前者是dropper本身,后者是payload本身,所以,你需要做的事找到入口点,或者更改库的代码,你可以看我最新的帖子里对于这个的分析
雪    币: 2523
活跃值: 活跃值 (200)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
FANTASYING 活跃值 2018-2-28 11:38
16
0
这种调用方式,你需要先注入一个loade  dll吧
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hayde 活跃值 2018-3-14 11:40
17
0
FANTASYING 这种调用方式,你需要先注入一个loade dll吧
不用,资源文件加载dll就可以了
雪    币: 49
活跃值: 活跃值 (168)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
化魔 活跃值 2018-4-16 15:51
18
0
我也想知道,有大牛在吗
雪    币: 31
活跃值: 活跃值 (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MaMy 活跃值 2018-5-6 13:10
19
0
要自己写shellcode loader
最后于 2018-5-6 13:10 被MaMy编辑 ,原因:
雪    币: 17
活跃值: 活跃值 (172)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
guotouck 活跃值 2018-6-15 14:02
20
0
楼主解决了吗  我也想实现中功能
雪    币: 4829
活跃值: 活跃值 (661)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
lononan 活跃值 2018-6-20 23:44
21
0
利用系统DLL模块基址都一样的"BUG",把该库里面所有的API调用都改成动态调用,然后抠出来shellcode,远程到目标进程,把动态调用的API地址当做参数传进去即可,为了方便抠shellcode,最好还是把MemoryModule里面的  重定位、修复导入表  等函数合并成一个函数,如果可以,把所有API全部改成NTDLL的API,这样注入CSRSS这进程都没毛病.
雪    币: 9
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hayde 活跃值 2018-8-19 16:17
22
0
顶一下!
雪    币: 1465
活跃值: 活跃值 (132)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ggggg 活跃值 2018-8-31 15:18
23
0
MemoryModule 仅做为当前进程内存加载用的,远程注入,你需要把这个MemoryModule弄成shellcode版本,扔到目标进程执行
雪    币: 3
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
剑气近 活跃值 2018-8-31 19:25
24
0
9楼说的很明白了,另外你还需要注意,在目标进程中开内存,开线程也要猥琐,要不然还是会被日。
游客
登录 | 注册 方可回帖
返回