免杀原理与实践

一、基础问题回答

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

  • 基于特征码的恶意软件检测:简单来说特征码就是一串代码段,只是由于这一串代码段可以表明某个软件或程序具有恶意功能(当然一般正常的程序是不会携带该代码段的),所以被杀软所记录保存在其数据库中(病毒库),每当机器需要运行或安装某程序或软件的时候杀软就会对程序或软件与病毒库中信息进行比对,如果发现特征码段就认定该程序为恶意软件。
  • 启发式恶意软件检测:在安装和运行开始都没有检测出某软件为恶意的,但在该软件提供服务的过程中出现恶意行为(如:连接恶意网站、开放端口、修改系统文件等),杀软就会提醒用户,认为该软件可能是恶意软件。
  • 基于行为的恶意软件检测:在程序运行期间杀软会对程序的行为进行记录,并保存在某个日志文件中,且不定期的检查该日志文件,如果查到有异常行为,就认定该软件可能为恶意软件。

2.免杀是做什么?

  • 简单来说免杀就是使用各种特殊手段改变程序的基本状态,使得一个原本能被杀软检测并杀掉的恶意软件能不被杀软所检测到,以达到渗透的目的。

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

  • 改变特征码:

    • 只有可执行文件——加壳处理(压缩壳、加密壳)
    • 有shellcode——使用编码器进行重新编码
    • 有源代码——更换语言重写源码
  • 改变行为
    • 通讯方式

      • 尽量使用反弹式连接
      • 使用隧道技
      • 加密通讯数据
    • 操作模式
      • 基于内存操作
      • 加入正常功能代码

二、实验内容

1. 正确使用msf编码器

使用msfvenom加基本反弹链接载荷生成exe文件:

使用VirusTotal扫描结果如下:

在原命令中加-e使用编码器加-i对进行多次编码后生成exe文件:

使用VirusTotal扫描结果如下:

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

使用msfvenom生成jar文件:

使用VirusTotal扫描结果如下:

3. veil-evasion安装和使用

Veil-Evasion是用其他语言如c,c#,phython,ruby,go,powershell

等重写了

meterperter

,然后再通过不同方式编译成exe,共性特征比较少,并且在生成可执行文件时还会给出源码。但是kali默认并没有安装该软件需要手动安装一下。

执行

apt-get install veil

就可以安装了,如果不行的话尝试换一下软件源或者更新一下软件源。

安装还是比较漫长的,安装好后输入veil命令进入软件界面

输入use Evasion进入Veil-Evasion

输入list可以看到所有可用模块

我们可以找一找自己想要使用的模块,使用use + 编号就可以选中该模块了,我选中的是7号模块,也就是Windows反弹链接tcp的模块,模块默认信息如下图:

使用set命令对其进行配置

使用option命令查看配置

使用generate命令准备生成文件,输入输出文件名

在如图所示目录中找到exe文件并上传检测如下图:

4. 加壳工具

使用upx给原程序添加压缩壳

检测如下:

使用Hyperion加密壳工具加壳

注:该程序需要将待加壳可执行文件拷贝到该程序目录中即/usr/share/windows-binaries/hyperion/

再执行wine hyperion.exe -v XXX.exe XXX.exe才可执行

结果如下:

5. 使用shellcode编程

使用msfvenom生成反弹链接模块的c语言代码如下:

然后使用vim编辑器,编写C语言代码

# include <stdio.h>

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

使用交叉编译工具生成可执行文件并检测:

6.总结

下图是我本机的杀软-->腾讯电脑管家检测结果,我把检测到病毒的都信任了

所以说腾讯电脑管家还是不太行。

三、异主机实测

我把在我的主机上未检测出威胁的程序拷贝给实验室的另外一个同学,让他帮忙测试———很不幸,被他的360成功截获:

我让他在杀软中对该软件添加信任,然后实测回连——成功:

可是当我想要再获取他的其他信息,比如摄像头,最高权限时他的360都会发出警告。

四、总结与体会

本实验通过让我们了解杀软的运作过程,让我们实践去做出可以防止杀软查杀的木马程序,这让我们知道了,杀软是不可能完全保护我们的电脑的,所以还是要注意上网安全,不随意下载未知软件。

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

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

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

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

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

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

    2018-2019-2 网络对抗技术 20165318 Exp3 免杀原理与实践 免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...

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

    2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...

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

    2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践 一.实践目标 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳 ...

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

    2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...

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

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

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

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

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

    2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 1.对某个文件的特征码进行分析,(特征码就是一类恶意文件中经常出现的一段代 ...

随机推荐

  1. input下拉带输入框

    html5 自带的datalist实现 html代码: <input list="students"> <datalist id="students&q ...

  2. Python appium搭建app自动化测试环境

    appium做app自动化测试,环境搭建是比较麻烦的. 也是很多初学者在学习app自动化之时,花很多时间都难跨越的坎. 但没有成功的环境,就没有办法继续后续的使用. 在app自动化测试当中,我们主要是 ...

  3. 通过scrollTop,使子元素滚动至指定位置

    想实现这样的一个功能,点击子元素,让元素滚动至指定位置,怎么实现呢? 在代码实现之前,先了解下相关关键点. 1.scrollHeight 属性 通过 scrollHeight 属性可获得子元素的滚动高 ...

  4. python3数学函数

    数 学 函 数 abs(x) 返回数字的绝对值,如abs(-10) 返回 10 ceil(x) 返回数字的上入整数,如math.ceil(4.1) 返回 5 cmp(x, y) 如果 x < y ...

  5. 20175315 《Java程序设计》第6周学习总结

    20175215 <Java程序设计>第6周学习总结 教材学习内容总结 第七章主要讲的是内部类,匿名类,异常类等等. 内部类:Java支持在一个类中定义另一个类,称作内部类,包含内部类的类 ...

  6. [转】Python--遍历列表时删除元素的正确做法

    转自:https://blog.csdn.net/cckavin/article/details/83618306   一.问题描述 这是在工作中遇到的一段代码,原理大概和下面类似(判断某一个元素是否 ...

  7. python学习之re (?P...)通过关键字获取组以及( P=name)

    和其他的RE表达式一样,但是匹配的子串可以通过group的名字 name来获取.即  result.group('name')  (提示,字符串数字都是常量,所以关键字都可以被视为整型(hash结果) ...

  8. C# 关于X86/X64/AnyCpu 的关系

    电脑硬件CPU可以分为x86与x64, x86的机器只能安装32位的操作系统,如XP, WIN7_86, x64的机器既可以安装32位的系统,又可以安装64位的系统,只是在x64的机器上安装32位的系 ...

  9. KVM 热迁移

    最终我们迁移的目的就是: ·简化系统维护管理 ·高系统负载均衡 ·增强系统错误容忍度 ·优化系统电源管理 热迁移 又叫动态迁移,实时迁移,即虚拟机保存( save )/恢复( restore ):将整 ...

  10. openpyxl使用sheet.rows或sheet.columns报TypeError: 'generator' object is not subscriptable解决方式

    解决方案: 因为新版本的openpyxl使用rows或者columns返回一个生成器所以可以使用List来解决报错问题 >>> sheet.columns[0] Traceback ...